View
1.244
Download
4
Category
Preview:
Citation preview
Diseño de software
Clase 13
Arquitectura y estilos
Profesor: Juan José González Faúndez
Arquitectura de Software
• IEEE 1471 El nivel conceptual más alto de un sistema en su ambiente.
• Arquitectura es la organización fundamental de un sistema descrita en: – Sus componentes. – Relación entre ellos y con el
ambiente. – Principios que guían su diseño
y evolución.
+ Software Architecture in Practice - Kazman “La estructura de estructuras de un sistema, la cual abarca componentes de software, propiedades externas visibles de estos componentes y sus relaciones”.
Discusión
+ Definir la arquitectura en los proyectos actuales es crítico...
+ Es el “puente” entre los requerimientos del sistema y la
implementación.
+ Las actividades que culminan en la definición de la arquitectura
pueden ubicarse en las fases tempranas del ciclo de desarrollo del
sistema: luego del análisis de los requerimientos y el análisis de
riesgos, y justo antes del diseño detallado.
+ Sirve de MEDIO DE COMUNICACIÓN entre los miembros del equipo
de desarrollo, los clientes y usuarios finales, dado que contempla los
aspectos que interesan a cada uno.
Discusión
+ Existe alguna diferencia entre arquitectura y diseño de software?
Arquitectura Vs. Diseño
Arquitectura Diseño
Nivel de
Abstracción
Alto nivel Bajo nivel. Enfoque
específico en detalles
Entregables Planear subsistemas, interfaces
con sistemas externos,
servicios horizontales,
frameworks, componentes
reutilizables, prototipo
arquitectónico
Diseño detallado
componentes.
Especificaciones de
codificación
Áreas de
Enfoque
Selección de tecnologías,
Requerimientos no funcionales
(QoS),
Manejo de riesgos
Requerimientos
funcionales
+ La arquitectura y el diseño difieren en tres áreas:
Arquitectura Vs. Diseño
• La arquitectura envuelve un conjunto de decisiones estratégicas de diseño, lineamientos, reglas y patrones que restringen el diseño y la implementación de un software.
Las decisiones de arquitectura causan un alto impacto en los proyectos de IT
Arquitectura
Diseño
Implementación
Código
Discusión
+ Cuales son los principios fundamentales en los métodos de desarrollo
de software modernos?
Arquitectura y Procesos de Desarrollo
Principios Fundamentales de Procesos Modernos
+ Desarrollo iterativo e incremental.
+ Conducido por las calidades sistémicas.
+ Centrado en la arquitectura.
+ Dirigido por los casos de uso.
+ Basada en Modelos.
+ Mejores prácticas de diseño.
Arquitectura y Procesos de Desarrollo
• Que es un Proceso de Arquitectura?
• Rational Unified Process:
• Secuencia de actividades que conllevan a la producción de artefactos arquitectónicos:
– Descripción de arquitectura
– Prototipo arquitectónico
Arquitectura y Procesos de Desarrollo
Rational Unified Process:
En el proceso de definición de
arquitectura se producen:
+ Arquitectura Inicial.
+ Arquitectura de Referencia.
+ Documento de Descripción de
arquitectura (SAD):
– Subsistemas
– Componentes
– Arquitectura Runtime.
+ Guías para el proyecto y
estándares de Diseño.
SunTone AM:
Adicionalmente se producen:
+ Matriz Tecnológica de Layers
y Tiers
+ Template de Arquitectura
Arquitectura de Software - Introducción
11
Distribución del Costo del Software
Mantenimiento
Diseño
Programación
Test
Costos de Mantenimiento del Software
Arquitectura de Software - Introducción
Test y depuración
Implementar cambios
Rastrear lógica
Definir cambios
Analizar documentos
Actualizar documentos
Más del 50% del tiempo del programador encargado de mantenimiento está dedicado a comprender el código y la documentación del sistema.
Arquitectura en el proceso de desarrollo
Arquitectura de Software - Introducción
Requisitos
Arquitectura
Diseño Detallado
Programación
Test
Mantenimiento
– Aclarar intenciones.
– Hacer explícitas las decisiones.
– Permitir análisis a nivel de sistemas.
Reducir los costos de mantenimiento directa e
indirectamente. Diseño
¿Para qué la Arquitectura de Software?
Las personas necesitan pensar, diseñar, codificar, y comunicarse en términos de grandes bloques conceptuales.
– Abstracción
Es necesario escapar de los desarrollos excesivamente personalizados y estandarizar el diseño.
– Reutilización de patrones de arquitectura
Es necesario diseñar sistemas de larga vida.
– Reutilización de componentes particulares
Arquitectura de Software - Introducción
¿Para qué más? Productividad en el desarrollo:
actualmente solamente se reutiliza el código y las estructuras de datos.
Atacar otros problemas del ciclo de vida del software: Modificabilidad, portabilidad, escalabilidad,
seguridad. A medida que el tamaño del sistema crece, las
soluciones a estos problemas radican más en la arquitectura.
Tener un lenguaje común para diseñadores, desarrolladores y usuarios.
Arquitectura de Software - Introducción
Ciclo de Vida de la Arquitectura
• Los objetivos de la organización influencian los requisitos.
• Los requisitos nos llevan a un diseño de arquitectura.
• La arquitectura da como resultado un sistema.
• Los sistemas construidos sugieren nuevas oportunidades para la organización y nuevos requisitos.
Arquitectura de Software - Introducción
Influencias sobre el Arquitecto de Software
Arquitectura de Software - Introducción
Arquitecto
Administrador de la
organización desarrolladora
Bajos costos, mantener a la gente ocupada
Encargado de
Marketing
Elementos atractivos, corto tiempo para poner en el mercado, bajos costos, comparable con productos de la competencia
Usuario Final
Comportamiento apropiado, performance, seguridad, confiabilidad
Organización encargada del mantenimiento
Mantenibilidad
Cliente
Bajos costos, entrega a tiempo, sin cambios frecuentes
Influencias sobre la Arquitectura
Arquitectura de Software - Introducción
Arquitecto
Arquitectura
Sistema
•Cliente y usuario final •Organización desarrolladora •Ambiente técnico •Experiencia del arquitecto
Requisitos (cualidades)
Influencias del Arquitecto
Etapas de Desarrollo Basado en Arquitectura
1. Hacer un caso de negocio para el sistema
2. Comprender los requisitos
3. Crear o seleccionar una arquitectura
4. Representar y comunicar la arquitectura
5. Analizar o evaluar la arquitectura
6. Implementar el sistema basado en la arquitectura
7. Asegurar que la implementación se ajusta a la arquitectura
Arquitectura de Software - Introducción
¿Cómo se hace una buena arquitectura?
• La arquitectura debe ser producida por un solo arquitecto o un grupo pequeño.
• El arquitecto debe disponer de los requisitos técnicos del sistema y una lista priorizada de propiedades cualitativas que se espera que el software satisfaga.
• La arquitectura debe estar bien documentada usando una notación acordada que todos los interesados puedan comprender con poco esfuerzo.
• Se debe facilitar la arquitectura a los interesados, los cuales deben estar involucrados activamente en su revisión.
Arquitectura de Software - Introducción
¿Cómo se hace una buena arquitectura?
La arquitectura debe analizarse para comprobar sus medidas cuantitativas y propiedades cualitativas antes de que sea muy tarde para cambiarla.
La arquitectura debe permitir crear un esqueleto de sistema donde se reflejen todas las vías de comunicación pero con mínima funcionalidad.
El diseño de la arquitectura debe dar como resultado un conjunto específico de áreas críticas de consumo de recursos, cuya resolución estará claramente documentada y mantenida.
Arquitectura de Software - Introducción
¿Cómo es una buena arquitectura?
• Los módulos deben diseñarse con el principio de separación de intereses
– distintos grupos de trabajo pueden desarrollarlos independientemente
• La información oculta incluirá todo aquello dependiente de la infraestructura tecnológica.
• Cada módulo tendrá una interfaz definida que oculta a los otros módulos los aspectos cambiables.
• La arquitectura no debe depender de una versión particular de un producto comercial. De ser así, éste debe estar estructurado de modo que sea fácil y barato cambiarlo.
Arquitectura de Software - Introducción
¿Cómo es una buena arquitectura?
• Los módulos que producen y los que consumen datos deben estar separados: – esto tiende a aumentar la mantenibilidad porque en
general sólo una parte cambia.
• Cada tarea o proceso debe describirse de modo que su asignación a un procesador específico pueda ser fácilmente cambiada, aún durante su ejecución.
• La arquitectura debe seguir uno o unos pocos patrones de interacción: – mayor comprensión, menor tiempo de desarrollo, mayor
confiabilidad, mayor modificabilidad.
Arquitectura de Software - Introducción
Importancia de la Arquitectura
• comunicación entre las personas involucradas,
• documentación temprana de las decisiones de diseño,
• restricción de la implementación,
• la arquitectura dicta la estructura organizacional,
• facilita o inhibe propiedades del sistema,
• permite predecir cualidades del sistema,
• facilita la administración de la evolución,
• una abstracción transferible del sistema,
• las líneas de productos comparten arquitectura,
• puede usarse COTS (componentes software ya desarrollados y de índole comercial),
• base para el entrenamiento de nuevo personal.
Arquitectura de Software - Introducción
Ejemplo - Grabadora IP
Una empresa desea desarrollar un software de grabación de conversaciones sobre telefonía IP para un centro de llamados.
Existen soluciones comerciales para esta funcionalidad, pero tienen altos costos de licencias.
La empresa quiere hacer este desarrollo para – usarlo en sus instalaciones
– venderlo a otras empresas
Se desea que la aplicación tenga un módulo adicional para oír las conversaciones en tiempo real, eligiendo la operadora a través de una interfaz web.
Arquitectura de Software - Introducción
Grabadora IP: Stakeholders y Cualidades
• Usuarios: operadoras – Desean que la grabadora no
entorpezca su labor
– Debe consumir pocos recursos para no constituir un cuello de botella
• Cliente: dueño del centro de llamadas – Bajo costo y rápido desarrollo
– Flexible para adaptarse a distintos centros de llamados
– Escalable, portable
• Marketing: encargado de venderlo – Fácil de instalar
• Desarrolladores – Desarrollo en plataforma y
tecnología conocida
• Mantenedores – Desarrollo en plataforma y
tecnología estándar
Arquitectura de Software - Introducción
Grabadora IP Arquitectura de Software -
Introducción
Operadoras
Central IP
Red telefónica exterior Centro de
Llamadas
guardar
sniffer
Arquitectura:components, layers, client/server, dependencies, invocations, exchanged data.
Arquitectura:components, layers, client/server,
dependencies, invocations, exchanged data.
Arquitectura: .NET Remoting
Arquitectura: sistema empresarial en 3 capas. ¿Diagrama útil?
AUTOSAR Architecture. ¿Están las capas realmente aquí?
Otra arquitectura. ¿Es útil el diagrama?. (ciertamente, es muy bonito ☺)
Uno más. ¿Útil? (ciertamente, es muy feo)
Y usted no necesita una herramienta de lujo, se puede utilizar un rotafolio
(asumiendo que su escritura es legible!)
XWA architectural framework
Informatyka portal architecture
http://www.e-informatyka.pl/
http://cocoon.apache.org/
DAO Pattern
Transfer Object
Repository
cmp Components
Reserv aDAO
IReservaDAO
RequiredInterfaceReserv aBLL
RequiredInterface
com.mysql.jdbc
Connection
Librería de Java para
conectarse a Mysql
Connection conn =
DriverManager.getConnection(
"jdbc:mysql://localhost/database",
"myLogin",
"myPassword" );
Statement stmt =
conn.createStatement();
SELECT
INSERT
UPDATE
DELETE
Lógica de negocio
para una reserva
app.ejemplo.View
Reserv aView
app.ejemplo.controller
Reserv aController
Capa de presentación
getReservas() List<Reserva>
¿Preguntas?
Recommended