Arquitectura de Software   (Arquitectura de Software para Practicantes)           Universidad de los Andes                ...
¿Qué es Diseño de Software?            Diseño es el proceso creativo de        transformar un problema en una solución.   ...
¿Qué es Diseño de Software?               Diseño = Proceso Creativo                    Diseño = Solución               No ...
¿Qué es Diseño de Software?(Son muchas las cosas que se pueden diseñar)                                  Diseño de        ...
¿Arquitectura?            ¿arquitectura?                             5
¿Arquitectura?   La Arquitectura de un Sistema define  la división y estructura de un sistema      en subsistemas y establ...
¿Arquitectura?      La Arquitectura de Software es la     organización fundamental de un          sistema encarnada en sus...
¿Arquitectura?   Una Arquitectura de Software describe:      Un conjunto de elementos / componentes que                 co...
¿En que afecta una buena / malaArquitectura de Software?       ¿cuál es el impacto        de la arquitectura         en un...
¿En que afecta una buena / malaArquitectura de Software?            ¿propiedades             emergentes           de un si...
¿En que afecta una buena / malaArquitectura de Software?      Confiabilidad     Rendimiento       Extensibilidad          ...
¿En que afecta una buena / malaArquitectura de Software?                                  Facilidad de      Mantenibilidad...
¿En que afecta una buena / malaArquitectura de Software?         ¿Calidad Interna?       Fácil de Entender       Fácil de ...
¿En que afecta una buena / malaArquitectura de Software?         ¿Calidad Interna? Son buenos para comer, pero nadie quier...
Modelar Arquitectura de Software          Una herramienta              modelar            y pensar en           Arquitectu...
Diagramas de BloquesUna herramienta simple para modelar Arquitectura de Software                  Bloque /                ...
Arquitectura de Software(Un Ejemplo)    Sistema de       Visión                                            Controlador de ...
Arquitectura de Software(Un Ejemplo)         Nos ayuda a pensar en términos abstractos          sin preocuparse mucho por ...
Componentes / Partes de un Sistema                  ¿cohesión?            ¿responsabilidades?               ¿acoplamiento?...
Distintos Niveles de Abstracción   ¿en qué distintos niveles de   abstracción se puede pensar          en términos de     ...
Distintos Niveles de Abstracción    Objetivos de Negocio,                                           Más cerca de la implem...
Distintos Niveles de Abstracción           B             D                                             Más cerca de la imp...
Distintos Niveles de Abstracción  C.1           C.2                                   Más cerca de la implementación      ...
¿Arquitectura?--INTERMEDIO: Otra Definición ---         Estructura y Componentes* del sistema        desde el punto de vis...
Distintos Niveles de Abstracción                                                                                Más cerca ...
Distintos Niveles de Abstracción        En todos los niveles     hay aspectos y decisiones          importantes de      Ar...
Distintos Niveles de Abstracción       Un Arquitecto / Ingeniero         de Software debería           sentirse cómodo    ...
Distintos Niveles de Abstracción       ¿Puede existir un cargo de          Arquitecto Junior?                   ¿por qué? ...
Diseño Arquitectónico        ¿la arquitectura es una fase              de un proyecto?                        ...         ...
¿Qué es Diseño de Software?   Definición de  Requerimientos             Diseño de Sistema               y de Software     ...
¿Qué es Diseño de Software?   Definición de                   La Arquitectura de Software  Requerimientos                 ...
Diseño Arquitectónico        un mapa del curso               ...                            32
Diseño Arquitectónico                                              Arquitectura                                           ...
Gracias   ¡Gracias!               34
Upcoming SlideShare
Loading in …5
×

Clase 06 diseno_arquitectura

738 views
648 views

Published on

Published in: Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
738
On SlideShare
0
From Embeds
0
Number of Embeds
6
Actions
Shares
0
Downloads
84
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Clase 06 diseno_arquitectura

  1. 1. Arquitectura de Software (Arquitectura de Software para Practicantes) Universidad de los Andes Demián Gutierrez Marzo 2013 1
  2. 2. ¿Qué es Diseño de Software? Diseño es el proceso creativo de transformar un problema en una solución. La descripción de esa solución también es llamada diseño. * El diseño de software es el proceso de concebir (modelar) y especificar los detalles de como el sistema cumplirá las especificaciones de requerimientos establecidas en el análisis *Pfleeger, 1998 2
  3. 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 3
  4. 4. ¿Qué es Diseño de Software?(Son muchas las cosas que se pueden diseñar) Diseño de Procesos / Interacción, etcétera Diseño de los Diseño de la modelos de Interfaz H/M datos Requerimientos del Sistema (¿qué?) Diseño de las ¿cómo? Diseño de la Interfaces con Arquitectura otros El objetivo del diseño es del Software Sistemas “implementar” los requerimientos del usuario 4
  5. 5. ¿Arquitectura? ¿arquitectura? 5
  6. 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 6
  7. 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 7
  8. 8. ¿Arquitectura? Una Arquitectura de Software describe: Un conjunto de elementos / componentes que conforman un sistema (con sus responsabilidades) 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 Adaptado de: Shaw M., Garland D., Software Architecture 8
  9. 9. ¿En que afecta una buena / malaArquitectura de Software? ¿cuál es el impacto de la arquitectura en un sistema? 9
  10. 10. ¿En que afecta una buena / malaArquitectura de Software? ¿propiedades emergentes de un sistema? 10
  11. 11. ¿En que afecta una buena / malaArquitectura de Software? Confiabilidad Rendimiento Extensibilidad Eficiencia Seguridad Escalabilidad Memoria/Ejecución Portabilidad Disponibilidad Reusabilidad ¿qué falta aquí? 11
  12. 12. ¿En que afecta una buena / malaArquitectura de Software? Facilidad de Mantenibilidad Prueba Estos dos aspectos están relacionados con un concepto que es muy importante 12
  13. 13. ¿En que afecta una buena / malaArquitectura de Software? ¿Calidad Interna? Fácil de Entender Fácil de Cambiar Barato de Desarrollar Barato de Mantener 13
  14. 14. ¿En que afecta una buena / malaArquitectura de Software? ¿Calidad Interna? Son buenos para comer, pero nadie quiere que su aplicación se transforme en esto 14
  15. 15. Modelar Arquitectura de Software Una herramienta modelar y pensar en Arquitectura 15
  16. 16. Diagramas de BloquesUna herramienta simple para modelar Arquitectura de Software Bloque / Bloque / Componente Componente 1 3 Conexiones: Bloques: partes, Bloque / relaciones módulos, Componente estructurales, componentes, 4 dependencias, subsistemas, etc comunicaciones, flujos de datos, etc Bloque / Bloque / Componente Componente 2 n 16
  17. 17. Arquitectura de Software(Un Ejemplo) Sistema de Visión Controlador de Controlador del la Mano Brazo Articulada Sistema de Identificación Sistema de de Objetos Selección de Empaquetado Controlador de Sistema robótico de control Sistema de la Cinta de empaquetado Empaquetado Transportadora Fuente: Sommerville / Ingeniería del Software 17
  18. 18. Arquitectura de Software(Un Ejemplo) Nos ayuda a pensar en términos abstractos sin preocuparse mucho por la notación 18
  19. 19. Componentes / Partes de un Sistema ¿cohesión? ¿responsabilidades? ¿acoplamiento? 19
  20. 20. Distintos Niveles de Abstracción ¿en qué distintos niveles de abstracción se puede pensar en términos de arquitectura / ingeniería de software? 20
  21. 21. Distintos Niveles de Abstracción Objetivos de Negocio, Más cerca de la implementación Objetivos de la Organización Propuesta de Valor B D A C 21
  22. 22. Distintos Niveles de Abstracción B D Más cerca de la implementación A C C C.1 C.2 C.3 C.4 22
  23. 23. Distintos Niveles de Abstracción C.1 C.2 Más cerca de la implementación C.3 C.4 23
  24. 24. ¿Arquitectura?--INTERMEDIO: Otra Definición --- Estructura y Componentes* del sistema desde el punto de vista del programador Jerarquía y funciones de cada componente* de software Estructuras de datos empleadas por cada componente* Flujos de datos entre los componentes* * También se puede ver desde el punto de vista de Clases / Objetos 24
  25. 25. Distintos Niveles de Abstracción Más cerca de la implementació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 ... } 25
  26. 26. Distintos Niveles de Abstracción En todos los niveles hay aspectos y decisiones importantes de Arquitectura de Software ¿decisiones? 26
  27. 27. Distintos Niveles de Abstracción Un Arquitecto / Ingeniero de Software debería sentirse cómodo trabajando a cualquier nivel de abstracción, desde el más alto, entendiéndose con el negocio hasta el nivel más bajo, es decir, codificando ¿por qué? 27
  28. 28. Distintos Niveles de Abstracción ¿Puede existir un cargo de Arquitecto Junior? ¿por qué? 28
  29. 29. Diseño Arquitectónico ¿la arquitectura es una fase de un proyecto? ... ¿tiene un comienzo y un fin claramente definido? 29
  30. 30. ¿Qué es Diseño de Software? Definición de Requerimientos Diseño de Sistema y de Software ¿? Implementación y Pruebas de Unidades Integración y Prueba del ¿esto tiene Sistema NECESARIAMENTE que ser en cascada? ;-) Operación y Mantenimiento 30
  31. 31. ¿Qué es Diseño de Software? Definición de La Arquitectura de Software Requerimientos es algo que se trabaja y refina continuamente a lo largo de Diseño de Sistema todo el ciclo de vida y de Software de un sistema de software Implementación y Pruebas de Unidades Integración y Prueba del ¿esto tiene Sistema NECESARIAMENTE que ser en cascada? ;-) Operación y Mantenimiento 31
  32. 32. Diseño Arquitectónico un mapa del curso ... 32
  33. 33. Diseño Arquitectónico Arquitectura del Software Diseño Arquitectónico Estilos Frameworks Arquitectónicos (Marcos) Patrones de Bibliotecas / Diseño Componentes Clases / Funciones En general, estos elementos se (SOLID) verán mas adelante 33
  34. 34. Gracias ¡Gracias! 34

×