Conceptos De Diseño Software

Conceptos De Diseño Software

conceptos de diseño
imaginacion

Conceptos de diseño

El diseño de software agrupa el conjunto de principios conceptos y prácticas que llevan al desarrollo de un sistema o producto de alta calidad, el objeto del diseño es producir un modelo  o representación que tenga resistencia funcionalidad y belleza
el modelo del diseño proporciona detalles sobre la arquitectura del software, estructuras de datos ,interfaces y componentes que se necesitan para  implementar el sistema también el diseño permite modelar el sistema o producto que  se va a construir por último el diseño es el lugar en el que se establece la calidad del software


Diseño en el contexto de la ingeniería de software

el diseño de software comienza una vez que se  han analizado y modelado los requerimientos ,el diseño de software siempre  debe  comenzar con el análisis de los  datos pues  son el fundamento de todos  los demás  elementos  del diseño , el diseño de  la arquitectura define la relación entre los elementos principales de la arquitectura de software , los estilos y patrones de diseño de la arquitectura que pueden usarse para alcanzar los requerimientos definidos  por el sistema y las restricciones que afectan la forma  en que se implementa  la arquitectura

El diseño de la interfaz describe  la forma en la que  el software se comunica con los sistemas que  interactúan con él  y  con los humanos que lo utilizan .una interfaz implica un flujo de información (por ejemplo, datos o control) y un tipo específico de comportamiento. Entonces los modelos de escenario de uso y de comportamiento dan mucha de  la información requerida para diseñar  la interfaz
La importancia del diseño del software se resume  en la palabra: calidad .el diseño es el sitio en el que se introduce calidad e la ingeniería de software .da representaciones del software que pueden evaluarse en su calidad

  
El proceso de diseño

El diseño de software es un proceso iterativo por  medio del cual se traducen los requerimientos en un “plano” para construir el software. El diseño se representa en un nivel alto de abstracción. En el que se rastrea directamente  el adjetivo especifico del sistema y  los requerimientos más detallados de  datos. Funcionamiento y comportamiento

ideas  imaginacion

 Lineamientos y atributos de la calidad del software
El proceso de diseño se evalúa la calidad de este de acuerdo con la serie de revisiones técnicas las cuales se sugieren tres  características que funcionan como guía para evaluar  un buen diseño
·         Se deben implementar todos los requerimientos explícitos contenidos en el modelo de requerimientos y dar cabida a todos  los requerimientos implícitos que desean los practicantes
·         Debe ser una guía legible y comprensible para quienes generan el código y para los que lo prueban y dan el apoyo posterior
·         Debe proporciona  el panorama completo del software y abordar  los dominios de los datos, las funciones y el comportamientos desde el punto de  vista de la implementación


Lineamientos de la calidad
Evaluar  la calidad del diseño el equipo de software debe establecer los criterios técnicos de un buen diseño y se ha de considerar  los siguientes lineamientos para  un buen diseño
·         Debe tener una arquitectura que se haya creado con el empleo de estilos y patrones arquitectónicos reconocibles que esté compuesta de componentes con buenas características de diseño y se implementen de forma evolutiva  de modo que faciliten la implementación y las pruebas
·         Debe ser modular es decir el software debe estar dividido de manera  lógica en elementos y subsistemas
·         Debe contener distintas representaciones de datos , arquitectura , interfaces y componentes
·         Debe conducir a estructuras de datos apropiadas para las clases que se van a implementar y que surjan  de patrones reconocibles de datos
·         Debe llevar componentes que tengan características funcionales independientes
·         Debe conducir a interfaces que reduzcan la complejidad  de las conexiones  entre los componentes y el ambientes extremo
·         Debe obtenerse con el empleo de un método repetible motivado por la información obtenida durante el análisis de los requerimientos del software
·         Debe representarse con una notación que  comunique con eficacia su significado





Evaluación de la calidad del diseño .la revisión técnica
el diseño es importante porque permite  que un equipo de software evalué la calidad, durante el diseño la calidad se evalúa por medio de la realización de una serie de revisiones técnicas ,una revisión técnica es una reunión celebrada por miembros del equipo de software que en función del alcance de  la información del diseño que se revisara cada persona tiene  un papel importante : el líder de la revisión planea la reunión ,establece la agenda y coordina la junta :el secretario toma notas para que no se pierda nada ; el productor es la persona cuyo trabajo está en constante revisión. Antes de la revisión se entrega a cada persona del equipo  una copia del producto del trabajo de diseño y se le pide que la lea y que busque errores .omisiones o ambigüedades el adjetivo en si al comenzar las reuniones es detectar todos los errores y problemas del producto de modo que puedan corregirse antes de que comience la implementación del mismo

Atributos de calidad

hewlett-packard desarrollo un conjunto de atributos de la calidad del software a los  que  se dio el acrónimo FURPS: FUNCIONALIDAD.USABILIDAD.CONFIABILIDAD.RENDIMIENTO Y MANTENIBILIDAD. Los atributos de calidad FURPS representan el adjetivo  de todo diseño  de software

·         La funcionalidad se califica de acuerdo con el conjunto de características y capacidades del programa , la generalidad de las funciones que se entregan y la seguridad general del sistema

·         La usabilidad se evalúa tomando en cuenta factores humanos ,la estética general ,la consistencia  y la documentación


·         La confiabilidad se evalúa con la medición de la frecuencia y gravedad de las fallas, la exactitud  de los resultados que salen, el tiempo medio para que ocurra una falla ,la capacidad de recuperación ante esta  y lo predecible  del programa

·         El rendimiento se mide con base en la velocidad de procesamiento, el tiempo de respuesta, el uso de recursos, el conjunto y la eficiencia


·         La mantebilidad combina la capacidad del programa para ser ampliable ,adaptable y servicial

La evolución del diseño del software

la evolución del software  que  ya lleva casi seis décadas muestra que  los  primeros trabajos de diseño trabajaban con criterios para el desarrollo de programas modulares y en métodos para mejorar estructuras de software, los aspectos de procedimiento del diseño evolucionaron hacia una filosofía llamada programación estructurada .los enfoque nuevos propusieron en un enfoque orientado a objeto para diseñar derivaciones .
 En la industria del software se aplican varios métodos de diseño no obstante todos estos métodos tienen algunas características en común
1.       Un mecanismo para traducir el modelo de requerimientos en una representación del diseño
2.       Una notación para representar los componentes funcionales y sus interfaces
3.       Una heurística para mejorar y hacer particiones
4.       Lineamientos para evaluar  la calidad

Conjunto de tareas generales para el diseño

1.       Estudiar el modelo de dominio de la información y diseñar las estructuras de datos apropiadas para los objetos de datos y sus atributos
2.       Seleccionar un estilo de arquitectura que sea adecuada para el software con el uso del modelo de análisis
3.       Hacer partición del modelo de análisis en subsistemas de diseño y asignar estos dentro de la arquitectura
4.       Crear un conjunto de clases de diseños  o componentes
5.       Diseñar cualquier interfaces requerida con sistemas o dispositivos externos
6.       Diseñar la interfaz de usuario
7.       Efectuar el diseño en el nivel de componente
8.       Desarrollar un nivel de despliegue

ideas originales
ideas originales


Conceptos de diseño

El principio de la sabiduría para ingeniero de software es reconocer la diferencia que hay entre hacer que un programa  funcione y lograr que lo hagan bien los conceptos fundamentales del diseño del software provee la estructura necesaria para hacerlo bien

Abstracción

Cuando se desarrollan niveles de abstracción distintos, se trabaja para crear abstracciones tanto de procedimiento como de datos .una abstracción de procedimiento es una secuencia de instrucciones que tienen una función específica y limitada

Arquitectura

La arquitectura del software alude a la estructura general de este y a las formas  en las que esta la integridad conceptual a un sistema, la arquitectura es la estructura de organización de los componentes de un programa en módulos dadas  por la siguientes propiedades
·         Propiedades estructurales
·         Propiedades extratucturales
·         Propiedades  de familias de sistemas relacionados
Dada la especificación de estas propiedades, el diseño arquitectónico se representa con el uso  de uno más  de varios modelos  diferentes los modelos estructurales representan la arquitectura  como un conjunto de organizado de componentes del programa
Los modelos de marco aumentan el nivel de abstracción del diseño, al tratar de identificar patrones de diseño arquitectónico repetibles que se encuentran en tipos similares de aplicaciones
Los modelos dinámicos abordan los aspectos estructurales del programa e indican como cambia la estructura o la configuración del  sistema en función de eventos externos
Los modelos del proceso se centran en el diseño del negocio o procesos técnico al que debe  dar acomodo el sistema
Los modelos  funcionales se usan para representar la jerarquía funcional de un sistema

Patrones

Un patrón de diseño describe una estructura de diseño que resuelve un problema particular del  diseño dentro de un contexto específico y entre  fuerzas  que  afectan la manera en la  que se aplica y en la que se utiliza dicho patrón
El objetivo de  cada patrón de diseño es proporcionar una descripción que permita a un diseñador determinar
1.       Si el patrón es aplicable al trabajo en cuestión
2.       Si  puede volverse a usar (con lo que se ahorra tiempo de diseño)
3.       Si sirve  como  guía  para desarrollar un patrón distinto en funciones y estructura

División de problemas
La división de problemas es un concepto de diseño  que sugiere que  cualquier problema complejo puede manejarse con más facilidad si se subdivide  el problema  a lo  que también hace referencia a la modularidad lo  que puede manejarse con más facilidad en problemas  mucho más pequeños  o subdivididos, un problema  es una característica o comportamiento que se especifica en el modelo de los requerimientos para el software, al separar un problema en sus piezas más pequeñas y por ello más manejables y con mayor facilidad de solución se requiere menos esfuerzo y tiempo para resolverlo

Modularidad

La modularidad es la manifestación más común de la  división de problemas. El software se divide en componentes  con nombres distintos y abordables por separado en ocasiones llamados módulos que se integran para satisfacer los requerimientos del problema

Ocultamiento de la información

El objetivo de ocultar información es esconder los detalles de las estructuras  de datos y el procesamiento tras una interfaz de modulo

Independencia funcional

La independencia funcional se logra desarrollando módulos, de manera que cada módulo resuelva un subconjunto especifico de requerimientos y tenga una interfaz sencilla cuando se vea desde otras partes de la estructura del programa.
Con módulos independientes es más fácil de desarrollar porque su función se subdivide y las interfaces se simplifican, los módulos independientes son más fáciles de mantener debido a que los efectos secundarios causados por el diseño o par la modificación del código son más limitados, se reduce la propagación del error y es posible obtener módulos reutilizables.
La independencia se evalúa con el uso de dos criterios cualitativos, la cohesión y el acoplamiento. La cohesión es un indicador de la fortaleza relativa funcional de un módulo. El acoplamiento lo es de la independencia relativa entre módulos.
Un módulo cohesivo debe hacer solo una cosa aunque siempre debe tratarse de lograr mucha cohesión, con frecuencia es necesario y aconsejable hacer que un componente de software realice funciones múltiples.

El acoplamiento es una indicación de la interacción entre módulos en una estructura de software y depende de la complejidad de la interfaz entre módulos del grado en el que se entra o se hace referencia a un módulo y de que datos pasan a través de la interfaz. La conectividad simple entre módulos da como resultado un software que es más fácil de entender y menos propenso al “efecto de oleaje” ocasionado cuando ocurren  errores en un sitio y se propagan por todo el sistema.

2 comentarios:

Son bienvenidos y escuchados todos tus comentarios