clase 06 diseno_arquitectura
TRANSCRIPT
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!