Diseño del software

15
Diseño del Software Diseño de datos Diseño arquitectónico Diseño de interfaz

Transcript of Diseño del software

Page 1: Diseño del software

Diseño del Software

Diseño de datos

Diseño arquitectónico

Diseño de interfaz

Page 2: Diseño del software

Guía para evaluar un buen diseño

El diseño deberá implementar todos los requisitos explícitos del modelo de análisis, y deberán ajustarse a todos los requisitos implícitos que desea el cliente;

El diseño deberá ser una guía legible y comprensible para aquellos que generan código y para aquellos que comprueban y consecuentemente, dan soporte al software;

El diseño deberá proporcionar una imagen completa del software, enfrentándose a los dominios de comportamiento, funcionales y de datos desde una perspectiva de implementación.

Page 3: Diseño del software

Directrices sobre Calidad del Diseño

1. Un diseño deberá presentar una estructura arquitectónica que (1) se haya creado mediante patrones de diseño reconocibles, (2) que esté formada por componentes que exhiban características de buen diseño y (3) que se puedan implementar de manera evolutiva, facilitando así la implementación y la comprobación.

2. Un diseño deberá ser modular; ésto es, el software deberá dividirse lógicamente en elementos que realicen funciones y subfunciones específicas.

Page 4: Diseño del software

Directrices sobre Calidad del Diseño

3. Un diseño deberá contener distintas representaciones de datos, arquitectura, interfaces y componentes (módulos).

4. Un diseño deberá conducir a estructuras de datos adecuadas para los objetos que se van a implementar y que procedan de patrones de datos reconocibles.

5. Un diseño deberá conducir a componentes que presenten características funcionales independientes.

Page 5: Diseño del software

Directrices sobre Calidad del Diseño

6. Un diseño deberá conducir a interfaces que reduzcan la complejidad de las conexiones entre los módulos y con el entorno externo.

7. Un diseño deberá derivarse, mediante un método repetitivo y controlado, de la información obtenida durante el análisis de los requisitos del software.

Page 6: Diseño del software

Principios de Diseño del Software

En el proceso de diseño no deberá utilizarse «orejeras».

El diseño deberá poderse rastrear hasta el modelo de análisis.

El diseño no deberá inventar nada que ya esté inventado.

El diseño deberá «minimizar la distancia intelectual» entre el software y el problema como si de la misma vida real se tratara.

Page 7: Diseño del software

Principios de Diseño del Software

El diseño deberá presentar uniformidad e integración.

El diseño deberá estructurarse para admitir cambios.

El diseño deberá estructurarse para degradarse poco a poco, incluso cuando se enfrenta con datos, sucesos o condiciones de operación aberrantes.

El diseño no es escribir código y escribir código no es diseñar.

Page 8: Diseño del software

Principios de Diseño del Software

El diseño deberá evaluarse en función de la calidad mientras se va creando, no después de terminarlo.

El diseño deberá revisarse para minimizar los errores conceptuales (semánticos).

Page 9: Diseño del software

Heurísticas de Diseño para una modularidad efectiva

I. Evaluar la “primera iteración” de la estructura de programa para reducir al acoplamiento y mejorar la cohesión.

II. Intentar minimizar las estructuras con un alto grado de salida; esforzarse por la entrada a medida que aumenta la profundidad.

III. Mantener el ámbito del efecto de un módulo dentro del ámbito de control de ese módulo.

Page 10: Diseño del software

Heurísticas de Diseño para una modularidad efectiva

IV. Evaluar las interfaces de los módulos para reducir la complejidad y la redundancia, y mejorar la consistencia.

V. Definir módulos cuya función se pueda predecir, pero evitar módulos que sean demasiado restrictivos.

VI. Intentar conseguir módulos de «entrada controlada», evitando «conexiones patológicas».

Page 11: Diseño del software

Diseño de datos a nivel de Componentes

1. Los principios del análisis sistemático aplicados a la función y al comportamiento deberían aplicarse también a los datos.

2. Todas las estructuras de datos y las operaciones a llevar a cabo en cada una de ellas deberían estar claramente identificadas.

3. Se debería establecer un diccionario de datos y usarlo para definir el diseño de los datos y del programa.

4. Las decisiones de diseño de datos de bajo nivel deberían dejarse para el final del proceso de diseño.

Page 12: Diseño del software

Análisis de las Transformaciones

Pasos del diseño

1. Revisar el modelo fundamental del sistema. (DFD Nivel 0 y Nivel 1 del flujo de datos del software Hogar Seguro) .

2. Revisar y refinar los diagramas de flujo de datos del software. (DFD Nivel 2 ).

3. Determinar si el DFD tiene características de flujo de transformación o de transacción.

Page 13: Diseño del software

Análisis de las Transformaciones

4. Aislar el centro de transformación especificando los límites de los flujos de entrada y salida. (DFD Nivel 3).

5. Realizar una «descomposición de primer nivel». (Primer Nivel).

6. Realizar una «descomposición de segundo nivel». (Segundo Nivel).

7. Refinar la estructura inicial de la arquitectura usando heurísticas para mejorar la calidad del software. (Estructura Refinada).

Page 14: Diseño del software

Análisis de las transacciones

Pasos del diseño

1. Revisar el modelo fundamental del sistema.2. Revisar y refinar los diagramas de flujo de

datos para el software.3. Determinar si el DFD tiene características de

flujo de transformación o de transacción. (DFD Nivel 2).

4. Identificar el centro de transacción y las características de flujo a lo largo de cada camino de acción.

Page 15: Diseño del software

Análisis de las transacciones

5. Transformar el DFD en una estructura de programa adecuada al procesamiento de la transacción. (Análisis de transacción, Primer Nivel).

6. Descomponer y refinar la estructura de transacción y la estructura de todos los caminos de acción. (Estructura del programa).

7. Refinar la primera arquitectura del programa usando heurísticas de diseño para mejorar la calidad del software.