(c) P. Gomez-Gil, INAOEP. 2009 1 DISEÑO DE SOFTWARE 1ª. Parte NOTAS DEL CURSO Ingeniería de...

25
(c) P. Gomez-Gil, INAOEP. 2009 1 DISEÑO DE SOFTWARE 1ª. Parte NOTAS DEL CURSO Ingeniería de Software I DRA. MARIA DEL PILAR GÓMEZ GIL INAOEP Versión:25-10-2009

Transcript of (c) P. Gomez-Gil, INAOEP. 2009 1 DISEÑO DE SOFTWARE 1ª. Parte NOTAS DEL CURSO Ingeniería de...

Page 1: (c) P. Gomez-Gil, INAOEP. 2009 1 DISEÑO DE SOFTWARE 1ª. Parte NOTAS DEL CURSO Ingeniería de Software I DRA. MARIA DEL PILAR GÓMEZ GIL INAOEP Versión:25-10-2009.

(c) P. Gomez-Gil, INAOEP. 2009 1

DISEÑO DE SOFTWARE1ª. Parte

NOTAS DEL CURSO

Ingeniería de Software IDRA. MARIA DEL PILAR GÓMEZ GIL

INAOEP

Versión:25-10-2009

Page 2: (c) P. Gomez-Gil, INAOEP. 2009 1 DISEÑO DE SOFTWARE 1ª. Parte NOTAS DEL CURSO Ingeniería de Software I DRA. MARIA DEL PILAR GÓMEZ GIL INAOEP Versión:25-10-2009.

(c) P. Gomez-Gil, INAOEP. 2009 2

Pasando del Análisis al Diseño [Pressman 05]

Page 3: (c) P. Gomez-Gil, INAOEP. 2009 1 DISEÑO DE SOFTWARE 1ª. Parte NOTAS DEL CURSO Ingeniería de Software I DRA. MARIA DEL PILAR GÓMEZ GIL INAOEP Versión:25-10-2009.

(c) P. Gomez-Gil, INAOEP. 2009 3

Diseño

Es el proceso de aplicar varias técnicas y principios con el propósito de definir un dispositivo, proceso o sistema con suficiente detalle que permita su realización física.

Diseño es mas que programar o escribir código…

Page 4: (c) P. Gomez-Gil, INAOEP. 2009 1 DISEÑO DE SOFTWARE 1ª. Parte NOTAS DEL CURSO Ingeniería de Software I DRA. MARIA DEL PILAR GÓMEZ GIL INAOEP Versión:25-10-2009.

(c) P. Gomez-Gil, INAOEP. 2009 4

Guías para un Diseño de Calidad

. . .Hay una diferencia entre hacer que

un software trabaje, y hacerlo que

trabaje correctamente. . .

Page 5: (c) P. Gomez-Gil, INAOEP. 2009 1 DISEÑO DE SOFTWARE 1ª. Parte NOTAS DEL CURSO Ingeniería de Software I DRA. MARIA DEL PILAR GÓMEZ GIL INAOEP Versión:25-10-2009.

(c) P. Gomez-Gil, INAOEP. 2009 5

Guías para un Diseño de Calidad (cont.)

1. Un buen diseño debe tener una arquitectura que:1. Se ha creado utilizando estilos o patrones “reconocidos”2. Esta hecho de componentes3. Se puede implementar de una manera evolutiva, facilitando la

implementación y las pruebas

2. Un buen diseño es modular, es decir, puede partirse de manera lógica en elementos o subsistemas.

3. Un buen diseño contiene representaciones diferenciales de datos, arquitectura, interfaces y componentes.

Page 6: (c) P. Gomez-Gil, INAOEP. 2009 1 DISEÑO DE SOFTWARE 1ª. Parte NOTAS DEL CURSO Ingeniería de Software I DRA. MARIA DEL PILAR GÓMEZ GIL INAOEP Versión:25-10-2009.

(c) P. Gomez-Gil, INAOEP. 2009 6

Guías para un Diseño de Calidad (cont.)

4. Un buen diseño debe conducir a estructuras de datos que son apropiadas para las clases a implementarse, y que resultan de patrones reconocidos.

5. Un buen diseño debe llevar a componentes que presentan características funcionales independientes.

6. Un buen diseño debe conducir a interfaces que reducen la complejidad de las conexiones entre componentes y el medio externo.

Page 7: (c) P. Gomez-Gil, INAOEP. 2009 1 DISEÑO DE SOFTWARE 1ª. Parte NOTAS DEL CURSO Ingeniería de Software I DRA. MARIA DEL PILAR GÓMEZ GIL INAOEP Versión:25-10-2009.

(c) P. Gomez-Gil, INAOEP. 2009 7

Guías para un Diseño de Calidad (cont.)

Un buen diseño debe llevarse a cabo utilizando métodos repetibles y que es conducida por la información obtenida en el análisis.

Un buen diseño debe representarse usando una notación que es efectiva en la manera que comunica el significado del diseño.

Page 8: (c) P. Gomez-Gil, INAOEP. 2009 1 DISEÑO DE SOFTWARE 1ª. Parte NOTAS DEL CURSO Ingeniería de Software I DRA. MARIA DEL PILAR GÓMEZ GIL INAOEP Versión:25-10-2009.

(c) P. Gomez-Gil, INAOEP. 2009 8

Atributos de Calidad en el Diseño

Funcionalidad Usabilidad Confiabilidad Desempeño Sustentabilidad …y que significa todo esto??

Page 9: (c) P. Gomez-Gil, INAOEP. 2009 1 DISEÑO DE SOFTWARE 1ª. Parte NOTAS DEL CURSO Ingeniería de Software I DRA. MARIA DEL PILAR GÓMEZ GIL INAOEP Versión:25-10-2009.

Conceptos fundamentales de Diseño

1. Abstracción

2. Refinamiento

3. Arquitectura

4. Modularidad

5. Patrones

6. Clases del diseño

(c) P. Gomez-Gil, INAOEP. 2009 9

Page 10: (c) P. Gomez-Gil, INAOEP. 2009 1 DISEÑO DE SOFTWARE 1ª. Parte NOTAS DEL CURSO Ingeniería de Software I DRA. MARIA DEL PILAR GÓMEZ GIL INAOEP Versión:25-10-2009.

(c) P. Gomez-Gil, INAOEP. 2009 10

Conceptos fundamentales de diseño:Abstracción y Refinamiento

1. ABSTRACCIÓN

La solución a cualquier problema se presenta en varios niveles de abstracción. En el nivel mas alto se presenta una solución general. En el nivel mas bajo se presenta una solución que puede implementarse directamente.

 

2. REFINAMIENTO

La arquitectura de un programa se desarrolla a través del detallado sucesivo de niveles.

 

Page 11: (c) P. Gomez-Gil, INAOEP. 2009 1 DISEÑO DE SOFTWARE 1ª. Parte NOTAS DEL CURSO Ingeniería de Software I DRA. MARIA DEL PILAR GÓMEZ GIL INAOEP Versión:25-10-2009.

(c) P. Gomez-Gil, INAOEP. 2009 11

Conceptos fundamentales de diseño:3. Arquitectura La arquitectura de software se refiere a la estructura

global del software y la manera en que esta estructura proporciona integridad conceptual al sistema.

Representa los componentes que tiene el software, como interactúan y la estructura de los datos que usan estos componentes

El uso de patrones arquitectónicos permitirán a los diseñadores reutilizar componentes

La arquitectura del diseño se puede representar utilizando diferentes modelos: Estructurales, Plantillas, Dinámicos, de procesos, y funcionales.

Page 12: (c) P. Gomez-Gil, INAOEP. 2009 1 DISEÑO DE SOFTWARE 1ª. Parte NOTAS DEL CURSO Ingeniería de Software I DRA. MARIA DEL PILAR GÓMEZ GIL INAOEP Versión:25-10-2009.

Conceptos fundamentales de diseño:4. Modularidad

Es un atributo del software que permite que un programa sea manejable intelectualmente hablando.

Teóricamente el aumento en el número de módulos disminuye la complejidad, y por lo tanto el esfuerzo de resolver un problema; entonces con un número infinito de módulos tendríamos un problema de complejidad cero.

Sin embargo el aumento en el número de módulos genera un aumento en el costo por comunicación entre

módulos.

(c) P. Gomez-Gil, INAOEP. 2009 12

Page 13: (c) P. Gomez-Gil, INAOEP. 2009 1 DISEÑO DE SOFTWARE 1ª. Parte NOTAS DEL CURSO Ingeniería de Software I DRA. MARIA DEL PILAR GÓMEZ GIL INAOEP Versión:25-10-2009.

(c) P. Gomez-Gil, INAOEP. 2009 13

Número de módulos vs. costo

COSTO O ESFUERZO

NÚMERO DE MÓDULOS

costo porinterface

costo por módulo

Región demínimo costo

Page 14: (c) P. Gomez-Gil, INAOEP. 2009 1 DISEÑO DE SOFTWARE 1ª. Parte NOTAS DEL CURSO Ingeniería de Software I DRA. MARIA DEL PILAR GÓMEZ GIL INAOEP Versión:25-10-2009.

(c) P. Gomez-Gil, INAOEP. 2009 14

Otras características de modularidad

COHESIÓNEs la medida de la fuerza funcional de un módulo o clase. Se busca que la clase tenga la cohesión mas alta posible, lo cual ocurre cuando todos sus elementos contribuyen a la ejecución de una misma tarea.

  

ACOPLAMIENTOEs la medida de la interdependencia relativa entre clases. Se busca que exista el mínimo posible de acoplamiento entre clases, lo cual sucede cuando las clases se comunican solamente por medio de mensajes.

  

Page 15: (c) P. Gomez-Gil, INAOEP. 2009 1 DISEÑO DE SOFTWARE 1ª. Parte NOTAS DEL CURSO Ingeniería de Software I DRA. MARIA DEL PILAR GÓMEZ GIL INAOEP Versión:25-10-2009.

(c) P. Gomez-Gil, INAOEP. 2009 15

Conceptos fundamentales de diseño:5. Patrones

Un patrón de diseño describe una estructura de diseño que resuelve un problema de diseño particular, dentro de un contexto específico.

Un patrón de diseño provee información que permite al diseñador determinar si el patrón es aplicable, si puede re-usarse y si se puede usar como guía para desarrollar algún patrón similar con estructura diferente.

Page 16: (c) P. Gomez-Gil, INAOEP. 2009 1 DISEÑO DE SOFTWARE 1ª. Parte NOTAS DEL CURSO Ingeniería de Software I DRA. MARIA DEL PILAR GÓMEZ GIL INAOEP Versión:25-10-2009.

(c) P. Gomez-Gil, INAOEP. 2009 16

Conceptos Fundamentales del diseño (cont.)6. Clases de Diseño

Las clases generadas en el análisis definen el dominio del problema.

En el diseño, las clases se definen de manera que se refinan las clases obtenidas en el análisis a fin de que se puedan implementar,

El diseño crea un nuevo conjunto de clases que permiten implementar la infraestructura de software que va a sostener la solución.

Page 17: (c) P. Gomez-Gil, INAOEP. 2009 1 DISEÑO DE SOFTWARE 1ª. Parte NOTAS DEL CURSO Ingeniería de Software I DRA. MARIA DEL PILAR GÓMEZ GIL INAOEP Versión:25-10-2009.

(c) P. Gomez-Gil, INAOEP. 2009 17

Niveles de clases del diseño

Se sugieren 5 niveles de clases de diseño: Clases para el manejo de la interfaz con el

usuario Clases para el dominio del negocio Clases para el proceso Clases para la persistencia Clases de administración y control del sistema

Page 18: (c) P. Gomez-Gil, INAOEP. 2009 1 DISEÑO DE SOFTWARE 1ª. Parte NOTAS DEL CURSO Ingeniería de Software I DRA. MARIA DEL PILAR GÓMEZ GIL INAOEP Versión:25-10-2009.

Características de clases “bien formadas”

Completa y suficiente. Una clase de diseño debe tener todos los atributos y métodos razonablemente esperados para existir.

Primitividad. Los métodos se deben enfocar en resolver UN servicio de la clase. Una vez que se ha implementado un servicio a través de un método, la clase no debe proveer ninguna otra manera de hacer la misma cosa

Alta cohesión. Una clase con un diseño cohesivo tiene un conjunto pequeño y enfocado de responsabilidades y enfoca exclusivamente sus atributos y métodos a cumplir esas responsabilidades

Bajo acoplamiento. Aunque las clases tienen que colaborar entre sí, esta colaboración debe ser lo mínimo necesario

(c) P. Gomez-Gil, INAOEP. 2009 18

Page 19: (c) P. Gomez-Gil, INAOEP. 2009 1 DISEÑO DE SOFTWARE 1ª. Parte NOTAS DEL CURSO Ingeniería de Software I DRA. MARIA DEL PILAR GÓMEZ GIL INAOEP Versión:25-10-2009.

El modelo de diseño

Puede verse desde 2 posibles dimensiones: proceso y abstracción

La dimensión del proceso indica la evolución del modelo confirme se van ejecutado el proceso de desarrollo de software

La dimensión de abstracción representa el nivel de detalle que surge cuando cada elemento del modelo de análisis se va transformando en su equivalente de diseño, y posteriormente se va refinando iterativamente

La línea punteada en la figura indica la frontera (difusa) entre análisis y diseño

(c) P. Gomez-Gil, INAOEP. 2009 19

Page 20: (c) P. Gomez-Gil, INAOEP. 2009 1 DISEÑO DE SOFTWARE 1ª. Parte NOTAS DEL CURSO Ingeniería de Software I DRA. MARIA DEL PILAR GÓMEZ GIL INAOEP Versión:25-10-2009.

(c) P. Gomez-Gil, INAOEP. 2009 20

Dimensiones del modelo de diseño [Pressman 05]

Page 21: (c) P. Gomez-Gil, INAOEP. 2009 1 DISEÑO DE SOFTWARE 1ª. Parte NOTAS DEL CURSO Ingeniería de Software I DRA. MARIA DEL PILAR GÓMEZ GIL INAOEP Versión:25-10-2009.

Elementos de diseño de datos

Crea el modelo de datos e información, representado en un nivel de abstracción alto, y se va refinando progresivamente

En la implementación este modelo de datos se traduce en bases de datos, las cuales en un futuro formarán “warehouses” que permitirán el manejo de sistemas administradores de conocimiento de la empresa

(c) P. Gomez-Gil, INAOEP. 2009 21

Page 22: (c) P. Gomez-Gil, INAOEP. 2009 1 DISEÑO DE SOFTWARE 1ª. Parte NOTAS DEL CURSO Ingeniería de Software I DRA. MARIA DEL PILAR GÓMEZ GIL INAOEP Versión:25-10-2009.

Elementos de diseño de arquitectura

El modelo de arquitectura se obtiene principalmente de 3 fuentes:1. Información acerca del dominio de

aplicación del software a construirse

2. Elementos del modelo de análisis tales como diagramas de flujo o clases generadas en el análisis sus relaciones y colaboraciones

3. Disponibilidad de patrones de arquitectura

(c) P. Gomez-Gil, INAOEP. 2009 22

Page 23: (c) P. Gomez-Gil, INAOEP. 2009 1 DISEÑO DE SOFTWARE 1ª. Parte NOTAS DEL CURSO Ingeniería de Software I DRA. MARIA DEL PILAR GÓMEZ GIL INAOEP Versión:25-10-2009.

Elementos de diseño de interfaz Los elementos de diseño de interfaz describen

como la información fluye entrando y saliendo del sistema, y como se comunican a través de los componentes definidos como parte de la arquitectura

Hay 3 elementos importantes en el diseño de interfaces:1. Interfaz con el usuario2. Interfaces externas con otros sistemas, dispositivos,

redes u otros productores o consumidores de información

3. Interfaces internas entre los diferentes componentes de diseño

(c) P. Gomez-Gil, INAOEP. 2009 23

Page 24: (c) P. Gomez-Gil, INAOEP. 2009 1 DISEÑO DE SOFTWARE 1ª. Parte NOTAS DEL CURSO Ingeniería de Software I DRA. MARIA DEL PILAR GÓMEZ GIL INAOEP Versión:25-10-2009.

Diseño de interfaces externas

Requiere información definitiva sobre la entidad a la cual la información se manda o recibe.

Debe incluir pruebas de errores y características de seguridad

(c) P. Gomez-Gil, INAOEP. 2009 24

Page 25: (c) P. Gomez-Gil, INAOEP. 2009 1 DISEÑO DE SOFTWARE 1ª. Parte NOTAS DEL CURSO Ingeniería de Software I DRA. MARIA DEL PILAR GÓMEZ GIL INAOEP Versión:25-10-2009.

Diseño de interfaces internas Está fuertemente relacionado con el diseño a nivel

componentes (diseño detallado) En algunos casos, una interface se diseña de igual

manera que una clase. Según la OMG “una interfaz es un especificador

de operaciones externamente visibles (publicas) de una clase, componente u otro clasificador (incluyendo subsistemas) sin la especificación de una estructura interna”

Una interfaz es un conjunto de operaciones que describe alguna parte del comportamiento de un sistema y las operaciones necesarias para accesar esas operaciones

(c) P. Gomez-Gil, INAOEP. 2009 25