Está en la página 1de 19

El Diseño de Software

 Caracteristicas:
 Proceso Creativo
 Requiere de experiencia e ingenio
 Necesita del aprendizaje a través del estudio de sistemas existentes

 Etapas:
 Estudiar y entender el problema
 Conseguir mas de una solución factible
 Describir cada abstracción usada en la solución

1 Introducción a la Ingeniería del Software


El Proceso de Diseño

Primer Diseño
Diseño Diseño mas Diseño
Informal Formal terminado
Informal

2 Introducción a la Ingeniería del Software


Objetivos del Proceso de Diseño
 Formalizar la especificación
 Describir el sistema bajo distintos niveles de abstracción
 Especificar como se comporta el sistema y como ejecuta las funciones levantadas en la especificación

Errores y Omisiones
Descomposición son descubiertos en las
primeras etapas del
diseño.

3 Introducción a la Ingeniería del Software


Las Actividades del Proceso de Diseño
 Diseño Arquitectural. Se definen los subsistemas y sus relaciones y se documentan
 Especificación Abstracta. Para cada subsistema se definen sus funcionalidades y las restricciones sobre las cuales debe operar
 Diseño de la Interfaz. Para cada subsistema se diseña y documenta su interfaz con otros subsistemas
 Diseño de Componentes. Los servicios que provee el subsistema son particionados en componentes
 Diseño de la Estructura de Datos. La estructura de data a ser implementada en el sistema es diseñada en detalle y documentada
 Diseño Algorítmico. Los algoritmos usados para proveer los servicios son diseñados en detalles y documentados

4 Introducción a la Ingeniería del Software


Las Actividades del Proceso de Diseño

Estas Actividades son realizadas con cada subsistema, hasta que


los componentes identificados pueden ser llevados directamente
a un lenguaje de programación.

La práctica recomendada:

 Diseño Estructurado: TOP - DOWN


 Diseño Orientado a Objetos: Componentes Reusables

5 Introducción a la Ingeniería del Software


Métodos de Diseño

Los Métodos son notaciones estándar que incorporan una buena


práctica.

El Método Estructurado:

 Ampliamente usado.
 Reducción de Costos
 Usa Notación Estándar
 Asegura que el diseño sigue las formas estándar
 Envuelve documentación de diseño diagramatizada
 Es soportado por cantidad de herramientas CASE (Computer
Aided Software Engineering)

6 Introducción a la Ingeniería del Software


Métodos de Diseño

Existen un gran número de métodos, pero la mayoría soporta:

 Vistas del Flujo de la Data, en donde el sistema es modelado


usando la transformación de la data a través como esta es
procesada.
 Vista del Diagrama Entidad Relación, el cual es usado para
describir las estructuras de datos a ser usadas.
 Una Vista Estructural, donde los componentes del sistema y
sus relaciones son documentadas.

7 Introducción a la Ingeniería del Software


Métodos de Diseño

El diseño de Software es un modelo de un sistema del mundo


real en el cual participan entidades y relaciones
Hay tres tipos de notaciones básicas que son ampliamente
usadas para la documentación del diseño:

 Notación Gráfica
 Lenguajes de Descripción de Programas
 Texto Informal

8 Introducción a la Ingeniería del Software


Estrategias de Diseño
La estrategia mas usada para desarrollo de sw es la de
Funcional o Estructurada.

Información de
Descomposición
los Estados del
del diseño en
Sistema con un
Componentes
área de datos
Funcionales
compartidos

En 1972 Parnas sugiere una estrategia alternativa (diseño


Orientado a Objetos) con la versión de Smalltalk (Goldberg &
Robson). Pero esta estrategia es adoptada a mediados de los
80.

9 Introducción a la Ingeniería del Software


Características de las Estrategias de Diseño
Diseño Funcional o Estructurado:
 Es realizado a través de puntos de vistas funcionales
 Comienza con un alto nivel de abstracción que va siendo
progresivamente refinado

Diseño Orientado a Objetos:


 El sistema es visto como una colección de objetos mas que
como funciones.
 Cada objeto maneja su propia información
 Los Objetos poseen un conjunto de atributos que definen su
estado y las operaciones que actúan sobre ellos.
 Los objetos son miembros de una clase
 Existe la herencia y la composición
 Los objetos se comunican a través del paso de mensajes
10 Introducción a la Ingeniería del Software
Calidad del Diseño

Se dice que es un diseño con calidad, si es:


 Mantenible:facilidad de modificar o añadir funcionalidades
 Entendible
 Modular: los cambios tienen un efecto local
 Cohesivo: todas las partes de una componente del sistema
tienen relación lógica
 Acoplado: relación/unión entre los componentes. La cual
debe ser baja

“Los atributos de calidad no están atados a las


estrategias de diseño”.

11 Introducción a la Ingeniería del Software


Cohesión

La Cohesión es una medida de relación lógica entre las partes


de un componente, la cual contribuye con la implementación
Existen diferentes niveles de cohesión (Constantino y Yourdon):

 Cohesión Coincidencial, las partes de una componente no


están relacionadas pero están empaquetados dentro de una
única componente.
 Asociación Lógica, componentes que desarrollan similares
funciones como salidas, manejos de errores, etc. Son puestas
juntas en una misma componente.
 Cohesión Procedimental, los elementos en una componente
completan una única secuencia de control

12 Introducción a la Ingeniería del Software


Cohesión

 Cohesión Comunicacional, todos los elementos de una


componente operan sobre una misma data de entrada o
producen una misma data de salida.
 Cohesión Secuencial, la salida desde un elemento de la
componente sirve de entrada para cualquier otro
elemento.
 Cohesión Funcional, cada una de las partes de una
componentes son necesarias para la ejecución de una
función.

Por ser desarrollado por Constantine & Yourdon, la


naturaleza de estos niveles es funcional. Sin embargo,
existen niveles de cohesión para el enfoque Orientado a
Objetos.
13 Introducción a la Ingeniería del Software
Cohesión
Un objeto Cohesivo, es aquel en donde una entidad es
representada y todas las operaciones sobre la entidad están
incluidas dentro del objeto.

Una cohesión de clase puede ser definida como:

 Cohesión de Objeto, Cada operación provee funcionalidad la


cual permite a los atributos del objeto ser modificados,
inspeccionados o usados como base para proveer un servicio.

La cohesión es una característica deseable debido a que esta


significa que una unidad representa una parte de la solución del
problema

14 Introducción a la Ingeniería del Software


Acoplamiento

Está relacionado con la cohesión. Indica la fuerza de


interconexión entre las unidades de programa.
Como regla general, los módulos son altamente acoplados sí
hacen uso de variables compartidas o sí intercambian
información de control.
Alto Acoplamiento
Modulo
Modulo Modulo
Modulo
AA BB

Modulo
Modulo Modulo
Modulo
C
C DD

Area de Data Compartida


15 Introducción a la Ingeniería del Software
Acoplamiento
Bajo acoplamiento es ejecutado para asegurar que la
información de representación está atada a una
componente y que su interfaz de datos con otras unidades
es vía una lista de parámetros.

Modulo
Modulo AA
Data
Data de
de AA

Modulo
Modulo BB
Data
Data de
de BB Modulo
Modulo CC
Data
Data de
de CC

Modulo
Modulo DD
Data Bajo Acoplamiento
Data de
de DD

16 Introducción a la Ingeniería del Software


Ser Entendible
Los cambios en el diseño de una componente implican que la
persona responsable de hacer el cambio entienda la operación
de dicho componente.

Este entendimiento está atado a unas características:


 Cohesión, Puede el componente ser entendido sin referencias
de otro componentes?
 Nombre, Los nombres de los componentes son significativos?
 Documentación, La documentación de la componente
muestra una relación clara entre las entidades del mundo
real y la componente?
 Complejidad, Cuan complejos son los algoritmos para
implementar la componente?

17 Introducción a la Ingeniería del Software


Adaptabilidad

 Si un diseño va a ser mantenido, este debe ser adaptable.


Esto implica, que sus componentes deben ser de bajo
acoplamiento.
 La adaptabilidad significa, que el diseño debe estar muy
bien documentado, que la documentación sea entendible y
consistente con la implementación y la implementación debe
estar escrita en una forma leíble.
 Un diseño adaptable debe tener alto nivel de visibilidad y
deben estar determinada las relaciones entre los diferentes
niveles.

18 Introducción a la Ingeniería del Software


Adaptabilidad

 Debe ser fácil incluir modificaciones tanto al diseño como al


documento de diseño.

 Las componentes deben ser autocontenidos. Una


componente debe ser de bajo acoplamiento y solamente
cooperar con otras componentes bajo el paso de mensajes.

19 Introducción a la Ingeniería del Software

También podría gustarte