28
R I T Software Engineering Dr. J. Fernando Naveda Department of Software Engineering Rochester Institute of Technology Rochester New York, USA [email protected] Architectural Design: Designing before Design Buenos Aires, Argentina Junio de 2006

Architectural Design: Designing before Design · 9Partes de esta charla están basadas en el libro Software Architecture in Practice (2nd Ed.) by L. Bass, P. Clements, and R. Kazman

  • Upload
    vuhuong

  • View
    214

  • Download
    0

Embed Size (px)

Citation preview

R I T

Software Engineering

Dr. J. Fernando NavedaDepartment of Software EngineeringRochester Institute of TechnologyRochester New York, USA

[email protected]

Architectural Design: Designing before Design

Buenos Aires, Argentina Junio de 2006

Buenos Aires, Argentina Junio del 2006© 2006 by J. Fernando Naveda, Department of Software Engineering, Rochester Institute of Technology

R I T

2

AgendaUna corta historia del software

¿Por que arquitecturas?

“Stakeholders”

Dependencias y calidad

Líneas de producto

Arquitecturas en pre-grado y post-grado

Conclusiones

Preguntas

Buenos Aires, Argentina Junio del 2006© 2006 by J. Fernando Naveda, Department of Software Engineering, Rochester Institute of Technology

R I T

3

ReconocimientoPartes de esta charla están basadas en el libro Software Architecture in Practice (2nd Ed.) by L. Bass, P. Clements, and R. Kazman.

SEI Series in Software Engineering, Addison Wesley, 2003

Buenos Aires, Argentina Junio del 2006© 2006 by J. Fernando Naveda, Department of Software Engineering, Rochester Institute of Technology

R I T

4

Una corta historia del software

1 of 6

¡El plan es que ustedes

comiencen a escribir el

programa mientras yo voy a averiguar

se que se trata!

¡Okay!

Buenos Aires, Argentina Junio del 2006© 2006 by J. Fernando Naveda, Department of Software Engineering, Rochester Institute of Technology

R I T

5

Una corta historia del software

2 of 6

¡Necesitamos estándares de programación!

Quien escribió este programa???!!!

¡Okay!

Buenos Aires, Argentina Junio del 2006© 2006 by J. Fernando Naveda, Department of Software Engineering, Rochester Institute of Technology

R I T

6

Una corta historia del software

3 of 6

¡Necesitamosabstract data

types!Quien organizó esta información???!!!

¡Okay!

Buenos Aires, Argentina Junio del 2006© 2006 by J. Fernando Naveda, Department of Software Engineering, Rochester Institute of Technology

R I T

7

Una corta historia del software

4 of 63 of 6

¡Necesitamos objetos!

Quien organizó este sistema???!!!

¡Okay!

Buenos Aires, Argentina Junio del 2006© 2006 by J. Fernando Naveda, Department of Software Engineering, Rochester Institute of Technology

R I T

8

Una corta historia del softwareAbstracción

Encapsulación de información y función

Diseño de la interfase

Re-uso

Nos permiten documentar las ideas que funcionan (o no)

5 of 6

¡Nos gustan los objetos!

Buenos Aires, Argentina Junio del 2006© 2006 by J. Fernando Naveda, Department of Software Engineering, Rochester Institute of Technology

R I T

9

Una corta historia del software

6 of 6

¡Necesitamos patrones de

diseño!Pueden uds. diseñar

sistemas!!!???

¡Okay!

Buenos Aires, Argentina Junio del 2006© 2006 by J. Fernando Naveda, Department of Software Engineering, Rochester Institute of Technology

R I T

10

Una corta historia del software¡Nos gustan los

patrones de diseño!

Facilitan el re-uso y comunicación de ideas de diseño que funcionan

Facilitan la decisión de escoger el diseño mas adecuado

No tenemos que adivinar

Previenen la re-invención de lo que ya se ha inventado

Buenos Aires, Argentina Junio del 2006© 2006 by J. Fernando Naveda, Department of Software Engineering, Rochester Institute of Technology

R I T

11

Una corta historia del software

¡Ustedes no pueden hacer nada bien!

¡Necesitamos diseños

arquitectónicos!

¡Okay!

Buenos Aires, Argentina Junio del 2006© 2006 by J. Fernando Naveda, Department of Software Engineering, Rochester Institute of Technology

R I T

12

De lo concreto a lo abstractoPrácticas de programación

Lenguajes de programación• ADTs (Información)• Función

Lenguajes de programación• Orientados a objetos• Orientados a aspectos

Práctica del diseño• Patrones de diseño

Diseños arquitectónicos

Buenos Aires, Argentina Junio del 2006© 2006 by J. Fernando Naveda, Department of Software Engineering, Rochester Institute of Technology

R I T

13

¿Por que arquitecturas?Sistemas software son cada día mas complejos

Buenos diseños son difíciles de producir• ¿Por que tenemos que re-inventar y re-

analizar diseños?

• Requieren una inversión fuerte de recursos tanto económicos como de tiempo

Buenos Aires, Argentina Junio del 2006© 2006 by J. Fernando Naveda, Department of Software Engineering, Rochester Institute of Technology

R I T

14

Diseño arquitectónico

Concierne con al estructura de sistemas software suficientemente grandes

La perspectiva de la arquitectura es abstracta:• Detalles de la implementación no son

importantes

• Detalles algorítmicos no son importantes

• Representación de la información se concentra en el comportamiento y la interacción entre los componentes

Buenos Aires, Argentina Junio del 2006© 2006 by J. Fernando Naveda, Department of Software Engineering, Rochester Institute of Technology

R I T

15

“Stakeholders” y prioridades

Costo y tiempo de lanzamiento al

mercado

Usabilidad y rendimiento

Mantenibilidad

Tendencias técnicas

Buenos Aires, Argentina Junio del 2006© 2006 by J. Fernando Naveda, Department of Software Engineering, Rochester Institute of Technology

R I T

16

ConflictosTiempo al mercado

Mantenibilidad

Usabilidad

Rendimiento

Costo

Tendencias técnicas

Confiabilidad

Adaptabilidad

Seguridad

Buenos Aires, Argentina Junio del 2006© 2006 by J. Fernando Naveda, Department of Software Engineering, Rochester Institute of Technology

R I T

17

DependenciasModificabilidad (modifiability)• Como se dividen las funciones del sistema

entre sus componentes (arquitectural)

• Selección de algoritmos y técnicas de programación (no-arquitectural)

Usabilidad (usability)• Selección de artefactos de la interacción con

el usuario (no-arquitectural)

• Habilidad del usuario de cancelar o deshacer operaciones (arquitectural)

Buenos Aires, Argentina Junio del 2006© 2006 by J. Fernando Naveda, Department of Software Engineering, Rochester Institute of Technology

R I T

18

Arquitectura y calidad del sistema

Hablar de arquitecturas es hablar de los atributos cualitativos del sistema

• Disponibilidad (Availability)• Seguridad (Security)• Modificabilidad (Modifiability)• Rendimiento (Performance)• Habilidad de conducir pruebas (Testability)• Usabilidad (Usability)• Etc. (Etc.)

Buenos Aires, Argentina Junio del 2006© 2006 by J. Fernando Naveda, Department of Software Engineering, Rochester Institute of Technology

R I T

19

Arquitecturas y calidad del negocio

Hablar de arquitecturas es hablar del aspecto cualitativo del negocio de producir software

• Tiempo de lanzamiento al mercado• Costo y beneficio• Vida proyectada del sistema• Mercado• Calendario de lanzamiento• Integración con sistemas ya existentes• Etc.

Buenos Aires, Argentina Junio del 2006© 2006 by J. Fernando Naveda, Department of Software Engineering, Rochester Institute of Technology

R I T

20

Calidad de la arquitecturaIntegridad conceptual

Correcto y completo

Constructibilidad (Buildability)

La integridad conceptual del sistema es la consideración mas importante durante la etapa del diseño.

Fred Brooks, 1975

Buenos Aires, Argentina Junio del 2006© 2006 by J. Fernando Naveda, Department of Software Engineering, Rochester Institute of Technology

R I T

21

¿Entonces que paso?¿Como

medimos la calidad?

“Algo que no se puede medir, no se puede mejorar”

Lord Kelvin

Buenos Aires, Argentina Junio del 2006© 2006 by J. Fernando Naveda, Department of Software Engineering, Rochester Institute of Technology

R I T

22

Midiendo mantenibilidadFuerza de interacción entre módulos• ¿Hay módulos que dependen mucho de

otros?Integridad conceptual de los módulos• ¿Cada modulo captura un concepto de

diseño único?

Probabilidad de cambios específicos

Costo estimado de implementación de cambios

Buenos Aires, Argentina Junio del 2006© 2006 by J. Fernando Naveda, Department of Software Engineering, Rochester Institute of Technology

R I T

23

La calidad se inyecta al sistemaCalidad no es algo que es simplemente agregado en algún momento dado

• Es inyectada (o no) a medida que el producto se desarrolla

Decisiones tácticas se deben tomar a través del ciclo de desarrollo

• Bass, Clements, Kazman hablan de “tactics”

Buenos Aires, Argentina Junio del 2006© 2006 by J. Fernando Naveda, Department of Software Engineering, Rochester Institute of Technology

R I T

24

Líneas de productoLa arquitectura del sistema representa una inversión significativa

Re-usar la arquitectura puede ayudar a la organización:

• Incremento de ingresos• Reducción de costos de

producción• Incremento de oferta de

productos• Incremento de número

de clientes

¡Ja, Ja, Ja! Y la competencia ni

se imagina!

Buenos Aires, Argentina Junio del 2006© 2006 by J. Fernando Naveda, Department of Software Engineering, Rochester Institute of Technology

R I T

25

Manéjese con cuidadoNo hay tal cosa como la arquitectura perfecta

La arquitectura esta íntimamente ligada al aspecto de negocios y a los requerimientos de los “stakeholders”

El arquitecto debe aprender a balancear los requerimientos del sistema contra las metas y recursos de la organización

Buenos Aires, Argentina Junio del 2006© 2006 by J. Fernando Naveda, Department of Software Engineering, Rochester Institute of Technology

R I T

26

¿Donde enseñar arquitecturas?A nivel de graduados• El libro completo de Bass, Clements y

Kazman en un semestre• Un curso exclusivo de líneas de producto

A nivel de pre-grado• En la parte alta del programa• No es posible cubrir el libro completo• Líneas de producto: Solo una introducción• Uso de viejos proyectos como malos

ejemplos• Re-implementación de sistemas existentes

Buenos Aires, Argentina Junio del 2006© 2006 by J. Fernando Naveda, Department of Software Engineering, Rochester Institute of Technology

R I T

27

ConclusionesHemos caminado un largo trecho desde enfocarnos en lo concreto a identificar el valor de la arquitectura de los sistemas software

Desarrollar la arquitectura vale la pena si el sistema es suficientemente grande y se espera una vida útil suficientemente larga

Es importante enseñar este material en la escuela

Buenos Aires, Argentina Junio del 2006© 2006 by J. Fernando Naveda, Department of Software Engineering, Rochester Institute of Technology

R I T

28

¿Preguntas?