Clase 06 diseno_arquitectura

34
1 Arquitectura de Software (Arquitectura de Software para Practicantes) Universidad de los Andes Demián Gutierrez Marzo 2013

Transcript of Clase 06 diseno_arquitectura

Page 1: Clase 06 diseno_arquitectura

1

Arquitectura de Software(Arquitectura de Software para Practicantes)

Universidad de los AndesDemián Gutierrez

Marzo 2013

Page 2: Clase 06 diseno_arquitectura

2

¿Qué es Diseño de Software?

Diseño es el proceso creativo detransformar un problema en una solución.

La descripción de esa solucióntambién es llamada diseño. *

El diseño de software es el proceso deconcebir (modelar) y especificar los detalles

de como el sistema cumplirálas especificaciones de requerimientos

establecidas en el análisis

*Pfleeger, 1998

Page 3: Clase 06 diseno_arquitectura

3

¿Qué es Diseño de Software?

Diseño = Proceso Creativo

Diseño = Solución

No hay UNA única solución

No existe una solución completamente óptima

Sólo hay soluciones buenas, mediocres, malas...

La evaluación y elección depende del cliente, de los requerimientos, del criterio del diseñador, del

contexto, etcétera

Page 4: Clase 06 diseno_arquitectura

4

¿Qué es Diseño de Software?(Son muchas las cosas que se pueden diseñar)

Diseño de la Interfaz H/M

Diseño de los modelos de

datos

Diseño de las Interfaces con

otros Sistemas

Diseño de la Arquitectura del Software

¿cómo?

Requerimientos del Sistema

(¿qué?)

Diseño de Procesos / Interacción,

etcétera

El objetivo del diseño es“implementar”

los requerimientos del usuario

Page 5: Clase 06 diseno_arquitectura

5

¿Arquitectura?

¿arquitectura?

Page 6: Clase 06 diseno_arquitectura

6

¿Arquitectura?

La Arquitectura de un Sistema define la división y estructura de un sistema

en subsistemas y establece un marco de control, comunicación y

cooperación entre los distintos subsistemas

Page 7: Clase 06 diseno_arquitectura

7

¿Arquitectura?

La Arquitectura de Software es la organización fundamental de un

sistema encarnada en sus componentes, las relaciones entre ellos y el ambiente y los principios que orientan su diseño y evolución

*IEEE

Page 8: Clase 06 diseno_arquitectura

8

¿Arquitectura?

Un conjunto de conectores entre componentes (comunicación, coordinación, control, cooperación)

Restricciones que definen cómo se integran los componentes para formar el sistema

Un conjunto de elementos / componentes que conforman un sistema

(con sus responsabilidades)

Una Arquitectura de Software describe:

Adaptado de: Shaw M., Garland D., Software Architecture

Page 9: Clase 06 diseno_arquitectura

9

¿En que afecta una buena / malaArquitectura de Software?

¿cuál es el impactode la arquitecturaen un sistema?

Page 10: Clase 06 diseno_arquitectura

10

¿En que afecta una buena / malaArquitectura de Software?

¿propiedadesemergentes

de un sistema?

Page 11: Clase 06 diseno_arquitectura

11

¿En que afecta una buena / malaArquitectura de Software?

Portabilidad ReusabilidadDisponibilidad

EscalabilidadEficiencia

Memoria/EjecuciónSeguridad

RendimientoConfiabilidad Extensibilidad

¿qué falta aquí?

Page 12: Clase 06 diseno_arquitectura

12

¿En que afecta una buena / malaArquitectura de Software?

Facilidad dePrueba

Mantenibilidad

Estos dos aspectos están relacionadoscon un concepto que es muy importante

Page 13: Clase 06 diseno_arquitectura

13

¿En que afecta una buena / malaArquitectura de Software?

¿Calidad Interna?

Fácil de EntenderFácil de Cambiar

Barato de DesarrollarBarato de Mantener

Page 14: Clase 06 diseno_arquitectura

14

¿En que afecta una buena / malaArquitectura de Software?

¿Calidad Interna?

Son buenos para comer, pero nadie quiereque su aplicación se transforme en esto

Page 15: Clase 06 diseno_arquitectura

15

Modelar Arquitectura de Software

Una herramientamodelar

y pensar enArquitectura

Page 16: Clase 06 diseno_arquitectura

16

Diagramas de BloquesUna herramienta simple para modelar Arquitectura de Software

Bloque /Componente

1

Bloque /Componente

2

Bloque /Componente

3

Bloque /Componente

n

Bloque /Componente

4

Bloques: partes, módulos,

componentes, subsistemas, etc

Conexiones: relaciones

estructurales, dependencias,

comunicaciones, flujos de datos, etc

Page 17: Clase 06 diseno_arquitectura

17

Arquitectura de Software(Un Ejemplo)

Sistema de Visión

Sistema de Identificación de Objetos

Controlador de la Cinta

Transportadora

Sistema de Selección de Empaquetado

Sistema de Empaquetado

Controlador de la Mano

Articulada

Controlador del Brazo

Sistema robótico de control de empaquetado

Fuente: Sommerville / Ingeniería del Software

Page 18: Clase 06 diseno_arquitectura

18

Arquitectura de Software(Un Ejemplo)

Nos ayuda a pensar en términos abstractossin preocuparse mucho por la notación

Page 19: Clase 06 diseno_arquitectura

19

Componentes / Partes de un Sistema

¿acoplamiento?

¿cohesión?

¿responsabilidades?

Page 20: Clase 06 diseno_arquitectura

20

Distintos Niveles de Abstracción

¿en qué distintos niveles deabstracción se puede pensar

en términos dearquitectura / ingeniería

de software?

Page 21: Clase 06 diseno_arquitectura

21

Distintos Niveles de Abstracción

A

B

C

D

Más ce rca d

e la imp

l emen

ta ción

Objetivos de Negocio,Objetivos de la Organización

Propuesta de Valor

Page 22: Clase 06 diseno_arquitectura

22

Distintos Niveles de Abstracción

A

B

C

D

C

C.1 C.2

C.3 C.4

Más ce rca d

e la imp

l emen

ta ción

Page 23: Clase 06 diseno_arquitectura

23

Distintos Niveles de Abstracción

C.1 C.2

C.3 C.4

Más ce rca d

e la imp

l emen

ta ción

Page 24: Clase 06 diseno_arquitectura

24

¿Arquitectura?--INTERMEDIO: Otra Definición ---

Estructura y Componentes* del sistemadesde el punto de vista del programador

Jerarquía y funciones de cada componente* de software

Flujos de datos entre los componentes*

Estructuras de datos empleadas por cada componente*

* También se puede ver desde el punto de vista de Clases / Objetos

Page 25: Clase 06 diseno_arquitectura

25

Distintos Niveles de Abstracción

Más ce rca d

e la imp

l emen

ta ción

public class Producto { private String codigo; private String nombre;

private Money precio; public Producto(String codigo, String nombre, Money precio) { this.codigo = codigo; this.nombre = nombre; this.precio = precio; }

// ... más código ...}

Page 26: Clase 06 diseno_arquitectura

26

Distintos Niveles de Abstracción

En todos los niveleshay aspectos y decisiones

importantes deArquitectura de Software

¿decisiones?

Page 27: Clase 06 diseno_arquitectura

27

Distintos Niveles de Abstracción

Un Arquitecto / Ingenierode Software debería

sentirse cómodotrabajando a cualquier nivel

de abstracción, desde elmás alto, entendiéndose

con el negocio hasta el nivelmás bajo, es decir, codificando

¿por qué?

Page 28: Clase 06 diseno_arquitectura

28

Distintos Niveles de Abstracción

¿Puede existir un cargo deArquitecto Junior?

¿por qué?

Page 29: Clase 06 diseno_arquitectura

29

Diseño Arquitectónico

¿la arquitectura es una fasede un proyecto?

...

¿tiene un comienzo yun fin claramente definido?

Page 30: Clase 06 diseno_arquitectura

30

¿Qué es Diseño de Software?

Definición deRequerimientos

Diseño de Sistemay de Software

Implementacióny Pruebas de

Unidades

Integración yPrueba del

Sistema

Operación yMantenimiento

¿esto tieneNECESARIAMENTE que ser en cascada?

;-)

¿?

Page 31: Clase 06 diseno_arquitectura

31

¿Qué es Diseño de Software?

Definición deRequerimientos

Diseño de Sistemay de Software

Implementacióny Pruebas de

Unidades

Integración yPrueba del

Sistema

Operación yMantenimiento

¿esto tieneNECESARIAMENTE que ser en cascada?

;-)

La Arquitectura de Softwarees algo que se trabaja y refinacontinuamente a lo largo de

todo el ciclo de vidade un sistema de software

Page 32: Clase 06 diseno_arquitectura

32

Diseño Arquitectónico

un mapa del curso...

Page 33: Clase 06 diseno_arquitectura

33

Diseño Arquitectónico

Diseño Arquitectónico

Arquitectura del Software

Bibliotecas /Componentes

Patrones de Diseño

Clases / Funciones(SOLID)

Frameworks(Marcos)

Estilos Arquitectónicos

En general, estos elementos severán mas adelante

Page 34: Clase 06 diseno_arquitectura

34

Gracias

¡Gracias!