+ All Categories
Home > Documents > Introducción a la Ingeniería de Software Diseño. 2 Bibliografía An Integrated Approach to...

Introducción a la Ingeniería de Software Diseño. 2 Bibliografía An Integrated Approach to...

Date post: 29-Jan-2016
Category:
Upload: guadalupe-carias
View: 215 times
Download: 0 times
Share this document with a friend
Popular Tags:
41
Introducción a la Ingeniería de Software Diseño
Transcript
Page 1: Introducción a la Ingeniería de Software Diseño. 2 Bibliografía An Integrated Approach to Software Engineering 3ed Springer Pankaj Jalote Capítulos 6.

Introducción a la Ingeniería de Software

Diseño

Page 2: Introducción a la Ingeniería de Software Diseño. 2 Bibliografía An Integrated Approach to Software Engineering 3ed Springer Pankaj Jalote Capítulos 6.

2

Bibliografía• An Integrated Approach to Software Engineering 3ed

SpringerPankaj JaloteCapítulos 6 (no completo) y 7

• Software Engineering 7ed Addison WesleyIan Sommerville

Page 3: Introducción a la Ingeniería de Software Diseño. 2 Bibliografía An Integrated Approach to Software Engineering 3ed Springer Pankaj Jalote Capítulos 6.

3

Diseño

• Durante el diseño se refina la arquitectura

• El diseño es un “plano” de una solución para el sistema

• Diseño Orientado a Objetos y Diseño Orientado a Funciones

Page 4: Introducción a la Ingeniería de Software Diseño. 2 Bibliografía An Integrated Approach to Software Engineering 3ed Springer Pankaj Jalote Capítulos 6.

4

Objetivos

• El diseño de un sistema es correcto si un sistema construido de acuerdo a ese diseño satisface los requerimientos del sistema

• Pero el objetivo del diseño no es encontrar el diseño correcto sino Encontrar el mejor diseño posible dentro de las limitaciones impuestas por

• los requerimientos,• el ambiente físico del sistema• y el ambiente social donde el mismo va a operar• ¿otras limitaciones?

Page 5: Introducción a la Ingeniería de Software Diseño. 2 Bibliografía An Integrated Approach to Software Engineering 3ed Springer Pankaj Jalote Capítulos 6.

5

El Diseño Debe Ser

• Un diseño claramente debe ser: Verificable Completo (implementa toda la especificación) “Rastreable”. Se puede rastrear hacia los

requerimientos que diseña (“traceable”)

• Sin embargo, las dos cosas más importantes concernientes a los diseñadores es que el diseño sea: Eficiente Simple ¿Por qué?

Estas dos propiedades están normalmente encontradas. Soluciones de compromiso.

Y normalmente, ¿por cuál se inclinarían?

Page 6: Introducción a la Ingeniería de Software Diseño. 2 Bibliografía An Integrated Approach to Software Engineering 3ed Springer Pankaj Jalote Capítulos 6.

6

La Tarea de Diseño

• Crear un diseño simple y eficiente de un sistema “grande” puede ser una tarea extremadamente compleja Actividad básicamente creativa No puede reducirse a una serie de pasos a seguir Sin embargo, se pueden dar guías

• Si se logra manejar la complejidad Se reducen los costos del diseño Se reduce la posibilidad de introducir defectos

durante el diseño

Page 7: Introducción a la Ingeniería de Software Diseño. 2 Bibliografía An Integrated Approach to Software Engineering 3ed Springer Pankaj Jalote Capítulos 6.

7

Principios de Diseño

• Algunos principios de diseño a tener en cuenta: Dividir y conquistar

Abstracción

Modularidad

Page 8: Introducción a la Ingeniería de Software Diseño. 2 Bibliografía An Integrated Approach to Software Engineering 3ed Springer Pankaj Jalote Capítulos 6.

8

Dividir y Conquistar

• Debido a la complejidad de los grandes problemas y las limitaciones de la mente humana estos no se pueden atacar como una unidad monolítica Aplicar dividir y conquistar Dividir en piezas que pueden ser “conquistadas” por

separado. Sino se hizo una división poco inteligente

• Dividir en piezas con esta propiedad es una tarea compleja para el diseño de software

Page 9: Introducción a la Ingeniería de Software Diseño. 2 Bibliografía An Integrated Approach to Software Engineering 3ed Springer Pankaj Jalote Capítulos 6.

9

Dividir y Conquistar (2)

• Las piezas Están relacionadas. Juntas forman el sistema Entonces, existe comunicación y cooperación entre

las mismas Esto agrega complejidad, que surge de la propia

partición Cuando el costo de particionar sumado la

complejidad agregada supera los ahorros logrados por particionar se debe detener el proceso

Page 10: Introducción a la Ingeniería de Software Diseño. 2 Bibliografía An Integrated Approach to Software Engineering 3ed Springer Pankaj Jalote Capítulos 6.

10

Dividir y Conquistar (3)

• ¿De qué sirve lograr la mayor cantidad de piezas independientes respecto a otras?

Page 11: Introducción a la Ingeniería de Software Diseño. 2 Bibliografía An Integrated Approach to Software Engineering 3ed Springer Pankaj Jalote Capítulos 6.

11

Abstracción

• Permite al diseñador considerar una componente a un cierto nivel de abstracción sin preocuparse por los detalles de implementación de dicha componente Se describe el comportamiento exterior sin describir

los detalles internos

• ¿Cómo se relaciona con el proceso de partición?

Page 12: Introducción a la Ingeniería de Software Diseño. 2 Bibliografía An Integrated Approach to Software Engineering 3ed Springer Pankaj Jalote Capítulos 6.

12

Modularidad

• Un sistema se considera modular si El sistema consiste de componentes y estas se pueden implementar separadamente y el cambio en una tiene mínimos impactos en otras

componentes

• La modularidad es donde se juntan la abstracción y la partición

Page 13: Introducción a la Ingeniería de Software Diseño. 2 Bibliografía An Integrated Approach to Software Engineering 3ed Springer Pankaj Jalote Capítulos 6.

Diseño

Diseño Orientado a Objetos

Page 14: Introducción a la Ingeniería de Software Diseño. 2 Bibliografía An Integrated Approach to Software Engineering 3ed Springer Pankaj Jalote Capítulos 6.

14

Orientación a Objetos

• Clases y objetos• Diagramas de clases• Diagramas de interacción entre objetos• Patrones de diseño• Herencia, polimorfismo, sobrecarga de operadores• Etc.

• Repasemos. ¿Qué me pueden decir de diseño OO?

PROGRAMACIÓN 4

Se considera dado y conocido

Page 15: Introducción a la Ingeniería de Software Diseño. 2 Bibliografía An Integrated Approach to Software Engineering 3ed Springer Pankaj Jalote Capítulos 6.

15

Diseño en Relación a la Arquitectura de Software

• Preservar la arquitectura durante el diseño

• Diseño de componentes por distintos grupos de personas ¿Qué hay que tener en cuenta?

• Diseño de casos de uso por distintos grupos de personas ¿Qué hay que tener en cuenta?

Page 16: Introducción a la Ingeniería de Software Diseño. 2 Bibliografía An Integrated Approach to Software Engineering 3ed Springer Pankaj Jalote Capítulos 6.

16

Ventajas de Sistemas OO

• Un modelo OO representa bastante el domino del problema Esto facilita el entendimiento del diseño

• Es más sencillo impactar cambios en los requerimientos (comparado con otros enfoques)

• Facilita la reutilización• Se cree que este enfoque es más natural

Entonces, provee estructuras más ricas para pensar y poder hacer abstracciones

Page 17: Introducción a la Ingeniería de Software Diseño. 2 Bibliografía An Integrated Approach to Software Engineering 3ed Springer Pankaj Jalote Capítulos 6.

17

Conceptos de Diseño

• Tres conceptos claves para la calidad de un diseño (además de ser correcto, claro) Acoplamiento (bajo)

Cohesión (alta)

Principio abierto-cerrado (cumplir con el principio)

Page 18: Introducción a la Ingeniería de Software Diseño. 2 Bibliografía An Integrated Approach to Software Engineering 3ed Springer Pankaj Jalote Capítulos 6.

18

Acoplamiento

• Captura la fuerza de interconexión entre módulos

• Cuánto más acoplados más dependientes entre si Entonces, más difícil comprenderlos y modificarlos

• El grado de acoplamiento entre módulos depende de: Cuánta información se necesita sobre el otro módulo

para entenderlo Y qué tan compleja Y explícita es esta información

La menor posible

Simple

Fácilmente visible o identificable

Page 19: Introducción a la Ingeniería de Software Diseño. 2 Bibliografía An Integrated Approach to Software Engineering 3ed Springer Pankaj Jalote Capítulos 6.

19

Tipos de Acoplamiento

• Interacción Métodos de una clase que invocan a métodos de otra

clase La peor forma es si se interactúa con partes internas

del método La del “medio” es si se accede directamente a

atributos del objeto La menor es si se accede al método mediante

intercambio de parámetros

Page 20: Introducción a la Ingeniería de Software Diseño. 2 Bibliografía An Integrated Approach to Software Engineering 3ed Springer Pankaj Jalote Capítulos 6.

20

Tipos de Acoplamientos (2)

• Componente Una clase tiene variables de otra clase Tres formas:

• Existe un atributo de la clase que es de otra clase• Existe un método que recibe como parámetro otra clase• Existe un método con una variable local de otra clase. Esta

es la menos deseada

• Herencia

Page 21: Introducción a la Ingeniería de Software Diseño. 2 Bibliografía An Integrated Approach to Software Engineering 3ed Springer Pankaj Jalote Capítulos 6.

21

Cohesión

• Se focaliza en conocer porqué los elementos de un módulo están juntos en ese módulo

• El objetivo es tener en un mismo módulo elementos que están fuertemente vinculados Entonces, módulos más fáciles de entender y más fáciles de modificar

Page 22: Introducción a la Ingeniería de Software Diseño. 2 Bibliografía An Integrated Approach to Software Engineering 3ed Springer Pankaj Jalote Capítulos 6.

22

Tipos de Cohesión

• Sin entrar en mucho detalle• Método

Más alta cohesión cuando el método implementa una única función claramente definida

y todas las sentencias contribuyen a esa función

• Clase Se focaliza en porqué distintos atributos y métodos

están en una misma clase Una clase implementando un único concepto o

abstracción Y todos sus elementos contribuyendo a soportar ese

concepto o abstracción

Page 23: Introducción a la Ingeniería de Software Diseño. 2 Bibliografía An Integrated Approach to Software Engineering 3ed Springer Pankaj Jalote Capítulos 6.

23

Tipos de Cohesión (2)

• Herencia Se focaliza en conocer porqué las clases están

agrupadas en una jerarquía Se considera que la cohesión es baja si la jerarquía

es usada sólo por reuso de código y no existe una relación de generalización-

especialización

Page 24: Introducción a la Ingeniería de Software Diseño. 2 Bibliografía An Integrated Approach to Software Engineering 3ed Springer Pankaj Jalote Capítulos 6.

24

Principio Abierto-Cerrado

• Objetivo (otra vez): promover la construcción de sistemas que sean fáciles de modificar

• Módulos abiertos para la extensión El comportamiento puede ser extendido

• Módulos cerrados para la modificación Extremo: cuando se hacen mejoras no es necesario

tocar el código existente La interfaz no debe cambiar y se debe asegurar que

se mantiene el comportamiento

Page 25: Introducción a la Ingeniería de Software Diseño. 2 Bibliografía An Integrated Approach to Software Engineering 3ed Springer Pankaj Jalote Capítulos 6.

25

Principio Abierto-Cerrado (2)

• En OO el principio se puede alcanzar con un buen uso de la herencia Este permite extender una clase sin modificar el

código de esa clase

Cliente Impresora 1

Cliente Impresora

Impresora 1 Impresora 2

Page 26: Introducción a la Ingeniería de Software Diseño. 2 Bibliografía An Integrated Approach to Software Engineering 3ed Springer Pankaj Jalote Capítulos 6.

26

UML – Diagrama de Clases

• Parte central del diseño• Relación muy cercana con el código final

Herramientas que generan el esqueleto del código de forma automática

• Se evitan defectos propios de la conversión manual

• Se describen Clases (nombre, atributos, métodos) Asociaciones entre clases Relaciones de herencia

Page 27: Introducción a la Ingeniería de Software Diseño. 2 Bibliografía An Integrated Approach to Software Engineering 3ed Springer Pankaj Jalote Capítulos 6.

27

UML – Diagrama de Clases (2)

Page 28: Introducción a la Ingeniería de Software Diseño. 2 Bibliografía An Integrated Approach to Software Engineering 3ed Springer Pankaj Jalote Capítulos 6.

28

UML – Secuencia y Colaboración

• Comportamiento dinámico del sistema• Muestra las interacciones entre los objetos para

cumplir con cierta funcionalidad (normalmente un Caso de Uso)

Page 29: Introducción a la Ingeniería de Software Diseño. 2 Bibliografía An Integrated Approach to Software Engineering 3ed Springer Pankaj Jalote Capítulos 6.

29

UML – Diagrama de Paquetes

• Permite agrupar otros elementos de UML• Mecanismo de agrupación

Page 30: Introducción a la Ingeniería de Software Diseño. 2 Bibliografía An Integrated Approach to Software Engineering 3ed Springer Pankaj Jalote Capítulos 6.

30

UML - Componentes

• Piezas independientes• Estas piezas es bueno que sean actualizables

(upgradeable)

Page 31: Introducción a la Ingeniería de Software Diseño. 2 Bibliografía An Integrated Approach to Software Engineering 3ed Springer Pankaj Jalote Capítulos 6.

31

UML - Despliegue

• Qué hardware usan los distintos elementos de software

• Nodo – Algo que puede alojar (host) software Se identifica con un cubo Dos tipos

• Dispositivo – Representa hardware• Ambiente de ejecución – Representa software que aloja otro

software

Dentro se pone lo que se despliega en ese nodo Nodos que se comunican se representa mediante

líneas

Page 32: Introducción a la Ingeniería de Software Diseño. 2 Bibliografía An Integrated Approach to Software Engineering 3ed Springer Pankaj Jalote Capítulos 6.

32

UML – Despliegue (2)

Page 33: Introducción a la Ingeniería de Software Diseño. 2 Bibliografía An Integrated Approach to Software Engineering 3ed Springer Pankaj Jalote Capítulos 6.

33

Metodología de Diseño

• Existen varias Siempre es una actividad creativa por lo que no es un

conjunto de pasos que mágicamente produce un diseño

• Se asume que: Durante el diseño de la arquitectura se partió el

sistema en varios subsistemas Se va a producir un diseño orientado a objetos

• Entonces, el problema que se ataca es cómo producir un diseño orientado a objetos de un subsistema

Page 34: Introducción a la Ingeniería de Software Diseño. 2 Bibliografía An Integrated Approach to Software Engineering 3ed Springer Pankaj Jalote Capítulos 6.

34

Metodología de Diseño (2)

• Un DOO completo es tal que en la fase de implementación sólo se agregan detalles La mayoría de las clases y sus relaciones se

identifican durante el diseño

• ¿Ustedes cómo diseñan?

Page 35: Introducción a la Ingeniería de Software Diseño. 2 Bibliografía An Integrated Approach to Software Engineering 3ed Springer Pankaj Jalote Capítulos 6.

35

Medidas de Diseños OO

• Algunas medidas para evaluar la calidad y complejidad de diseños OO

S. R. Chidamber and C. F. Kemerer. A metrics suite for object-oriented design.

IEEE Transactions on Software Engineering, June 1994

Page 36: Introducción a la Ingeniería de Software Diseño. 2 Bibliografía An Integrated Approach to Software Engineering 3ed Springer Pankaj Jalote Capítulos 6.

36

Medidas de Diseños OO (2)

Page 37: Introducción a la Ingeniería de Software Diseño. 2 Bibliografía An Integrated Approach to Software Engineering 3ed Springer Pankaj Jalote Capítulos 6.

37

Medidas de Diseños OO (3)

Page 38: Introducción a la Ingeniería de Software Diseño. 2 Bibliografía An Integrated Approach to Software Engineering 3ed Springer Pankaj Jalote Capítulos 6.

38

Medidas de Diseños OO (4)

• Estas métricas predicen de una manera “bastante” buena las clases con más defectos Todas menos esta Esto se presenta en:

V. R. Basili, L. Briand, and W. L. Melo. A validation of object-oriented design metrics as quality indicators. IEEE Transactions on Software Engineering, Oct 1996.

Page 39: Introducción a la Ingeniería de Software Diseño. 2 Bibliografía An Integrated Approach to Software Engineering 3ed Springer Pankaj Jalote Capítulos 6.

39

Frameworks (Marcos de Trabajo)

• Abstracciones de mayor granularidad que los objetos

• Colección de clases abstractas y concretas• Es un subsistema reusable y semi-completo

Que puede ser extendido un subsistema específico o una aplicación

• Forma de extensión Escribir clases concretas de clases abstractas del

Framework Escribir métodos que serán llamados por eventos o

estados reconocidos por el Framework (callbacks)

• Tienen asociada una curva de aprendizaje alta

Page 40: Introducción a la Ingeniería de Software Diseño. 2 Bibliografía An Integrated Approach to Software Engineering 3ed Springer Pankaj Jalote Capítulos 6.

40

Frameworks (2)

biblioteca

aplicación

Framework

Biblioteca de Clases

biblioteca

aplicación

Page 41: Introducción a la Ingeniería de Software Diseño. 2 Bibliografía An Integrated Approach to Software Engineering 3ed Springer Pankaj Jalote Capítulos 6.

41

Desarrollo Basado en Componentes

• Surgimiento a fines de los ’90 originado por el no cumplimiento de las expectativas de

reutilización que había prometido el desarrollo OO, debido a:• Clases demasiado detalladas, específicas y ligadas a las

aplicaciones• Muchas veces hacía necesario disponer del código fuente

=> dificultades en comercialización

• Visión de componente: proveedor de servicios Entidad ejecutable e independiente Publica la interfaz de servicios suministrados y las

interacciones son a través de ésta Generalmente también define interfaz de servicios

que debe proveer el sistema que lo utiliza


Recommended