Clase 06 diseno_arquitectura

Post on 28-Jun-2015

540 views 0 download

Transcript of Clase 06 diseno_arquitectura

1

Arquitectura de Software(Arquitectura de Software para Practicantes)

Universidad de los AndesDemián Gutierrez

Marzo 2013

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

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

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

5

¿Arquitectura?

¿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

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

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

9

¿En que afecta una buena / malaArquitectura de Software?

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

10

¿En que afecta una buena / malaArquitectura de Software?

¿propiedadesemergentes

de un sistema?

11

¿En que afecta una buena / malaArquitectura de Software?

Portabilidad ReusabilidadDisponibilidad

EscalabilidadEficiencia

Memoria/EjecuciónSeguridad

RendimientoConfiabilidad Extensibilidad

¿qué falta aquí?

12

¿En que afecta una buena / malaArquitectura de Software?

Facilidad dePrueba

Mantenibilidad

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

13

¿En que afecta una buena / malaArquitectura de Software?

¿Calidad Interna?

Fácil de EntenderFácil de Cambiar

Barato de DesarrollarBarato de Mantener

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

15

Modelar Arquitectura de Software

Una herramientamodelar

y pensar enArquitectura

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

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

18

Arquitectura de Software(Un Ejemplo)

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

19

Componentes / Partes de un Sistema

¿acoplamiento?

¿cohesión?

¿responsabilidades?

20

Distintos Niveles de Abstracción

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

en términos dearquitectura / ingeniería

de software?

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

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

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

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

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 ...}

26

Distintos Niveles de Abstracción

En todos los niveleshay aspectos y decisiones

importantes deArquitectura de Software

¿decisiones?

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é?

28

Distintos Niveles de Abstracción

¿Puede existir un cargo deArquitecto Junior?

¿por qué?

29

Diseño Arquitectónico

¿la arquitectura es una fasede un proyecto?

...

¿tiene un comienzo yun fin claramente definido?

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?

;-)

¿?

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

32

Diseño Arquitectónico

un mapa del curso...

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

34

Gracias

¡Gracias!