SlideShare una empresa de Scribd logo
1 de 39
Descargar para leer sin conexión
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
exteriorCentro 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
ReservaDAO
IReservaDAO
RequiredInterface
ReservaBLL
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
ReservaView
app.ejemplo.controller
ReservaController
Capa de presentación
getReservas() List<Reserva>
¿Preguntas?

Más contenido relacionado

La actualidad más candente

Evaluacion de arquitecturas
Evaluacion de arquitecturasEvaluacion de arquitecturas
Evaluacion de arquitecturas
Samis Ambrocio
 
Vistas Arquitectonicas Ingenieria de Software
Vistas Arquitectonicas Ingenieria de SoftwareVistas Arquitectonicas Ingenieria de Software
Vistas Arquitectonicas Ingenieria de Software
Roberth Loaiza
 
Modelo Cascada y Espiral
Modelo Cascada y EspiralModelo Cascada y Espiral
Modelo Cascada y Espiral
juanksi28
 
Arquitectura de software
Arquitectura de softwareArquitectura de software
Arquitectura de software
Liliana Pacheco
 
Atributos de calidad en el desarrollo de software
Atributos de calidad en el desarrollo de software Atributos de calidad en el desarrollo de software
Atributos de calidad en el desarrollo de software
Joan Manuel Zabala
 
2 2 estilos arquitectonicos
2 2 estilos arquitectonicos2 2 estilos arquitectonicos
2 2 estilos arquitectonicos
landeta_p
 

La actualidad más candente (20)

Evaluacion de arquitecturas
Evaluacion de arquitecturasEvaluacion de arquitecturas
Evaluacion de arquitecturas
 
Aseguramiento de la Calidad del Software II
Aseguramiento de la Calidad del Software IIAseguramiento de la Calidad del Software II
Aseguramiento de la Calidad del Software II
 
Vistas Arquitectonicas Ingenieria de Software
Vistas Arquitectonicas Ingenieria de SoftwareVistas Arquitectonicas Ingenieria de Software
Vistas Arquitectonicas Ingenieria de Software
 
Estilos Arquitectonicos-Capas
Estilos Arquitectonicos-CapasEstilos Arquitectonicos-Capas
Estilos Arquitectonicos-Capas
 
Diseño de-la-arquitectura-de-software
Diseño de-la-arquitectura-de-softwareDiseño de-la-arquitectura-de-software
Diseño de-la-arquitectura-de-software
 
Gestión del Cambio del Software
Gestión del Cambio del SoftwareGestión del Cambio del Software
Gestión del Cambio del Software
 
Modelo Cascada y Espiral
Modelo Cascada y EspiralModelo Cascada y Espiral
Modelo Cascada y Espiral
 
Arquitectura de software
Arquitectura de softwareArquitectura de software
Arquitectura de software
 
Conceptos de diseño de software
Conceptos de diseño de softwareConceptos de diseño de software
Conceptos de diseño de software
 
Arquitectura de software
Arquitectura de softwareArquitectura de software
Arquitectura de software
 
Arquitectura software capitulo i
Arquitectura software capitulo iArquitectura software capitulo i
Arquitectura software capitulo i
 
Diseño arquitectónico
Diseño arquitectónicoDiseño arquitectónico
Diseño arquitectónico
 
Calidad Del Producto Software
Calidad Del Producto SoftwareCalidad Del Producto Software
Calidad Del Producto Software
 
Atributos de calidad en el desarrollo de software
Atributos de calidad en el desarrollo de software Atributos de calidad en el desarrollo de software
Atributos de calidad en el desarrollo de software
 
Metodologías de Desarrollo de Software Tradicionales y Emergentes
Metodologías de Desarrollo de Software Tradicionales y EmergentesMetodologías de Desarrollo de Software Tradicionales y Emergentes
Metodologías de Desarrollo de Software Tradicionales y Emergentes
 
Ingenieria de software - Unidad 3 arquitecturas de software
Ingenieria de software - Unidad 3 arquitecturas de softwareIngenieria de software - Unidad 3 arquitecturas de software
Ingenieria de software - Unidad 3 arquitecturas de software
 
Arquitecturas de software
Arquitecturas de softwareArquitecturas de software
Arquitecturas de software
 
Formato ieee830(srs lleno)
Formato ieee830(srs lleno)Formato ieee830(srs lleno)
Formato ieee830(srs lleno)
 
25 Estandares - IEEE Calidad de Software
25 Estandares - IEEE Calidad de Software25 Estandares - IEEE Calidad de Software
25 Estandares - IEEE Calidad de Software
 
2 2 estilos arquitectonicos
2 2 estilos arquitectonicos2 2 estilos arquitectonicos
2 2 estilos arquitectonicos
 

Similar a Arquitectura de Software

1_1 Introduccion
1_1 Introduccion1_1 Introduccion
1_1 Introduccion
landeta_p
 
PRESENTACION: PROYECTO DE SOFTWARE & ESTIMACION DE COSTE
PRESENTACION: PROYECTO DE SOFTWARE & ESTIMACION DE COSTEPRESENTACION: PROYECTO DE SOFTWARE & ESTIMACION DE COSTE
PRESENTACION: PROYECTO DE SOFTWARE & ESTIMACION DE COSTE
CAMILO
 
Presentacion de Software y Estimacion de Coste
Presentacion de Software y Estimacion de CostePresentacion de Software y Estimacion de Coste
Presentacion de Software y Estimacion de Coste
CAMILO
 
PROYECTOS DE SOFTWARE Y COSTOS
PROYECTOS DE SOFTWARE Y COSTOSPROYECTOS DE SOFTWARE Y COSTOS
PROYECTOS DE SOFTWARE Y COSTOS
CAMILO
 
Proyecto de Software y Estimacion de Costo
Proyecto de Software y Estimacion de CostoProyecto de Software y Estimacion de Costo
Proyecto de Software y Estimacion de Costo
CAMILO
 
presentacion de software y estimacion de doste
presentacion de software y estimacion de dostepresentacion de software y estimacion de doste
presentacion de software y estimacion de doste
CAMILO
 
Proyecto de Software y Coste
Proyecto de Software y CosteProyecto de Software y Coste
Proyecto de Software y Coste
CAMILO
 
Actividad remedial_Maria_Albarran
Actividad remedial_Maria_AlbarranActividad remedial_Maria_Albarran
Actividad remedial_Maria_Albarran
Marijoalbarranb
 
Proyecto de Software y Estimacion de Coste
Proyecto de Software y Estimacion de CosteProyecto de Software y Estimacion de Coste
Proyecto de Software y Estimacion de Coste
CAMILO
 

Similar a Arquitectura de Software (20)

1_1 Introduccion
1_1 Introduccion1_1 Introduccion
1_1 Introduccion
 
Fundamentos de ingenieria de software - metodologias.pdf
Fundamentos de ingenieria de software - metodologias.pdfFundamentos de ingenieria de software - metodologias.pdf
Fundamentos de ingenieria de software - metodologias.pdf
 
Arquitecturas de software exposicion
Arquitecturas de software   exposicionArquitecturas de software   exposicion
Arquitecturas de software exposicion
 
PRESENTACION: PROYECTO DE SOFTWARE & ESTIMACION DE COSTE
PRESENTACION: PROYECTO DE SOFTWARE & ESTIMACION DE COSTEPRESENTACION: PROYECTO DE SOFTWARE & ESTIMACION DE COSTE
PRESENTACION: PROYECTO DE SOFTWARE & ESTIMACION DE COSTE
 
Presentacion de Software y Estimacion de Coste
Presentacion de Software y Estimacion de CostePresentacion de Software y Estimacion de Coste
Presentacion de Software y Estimacion de Coste
 
PROYECTOS DE SOFTWARE Y COSTOS
PROYECTOS DE SOFTWARE Y COSTOSPROYECTOS DE SOFTWARE Y COSTOS
PROYECTOS DE SOFTWARE Y COSTOS
 
Proyecto de Software y Estimacion de Costo
Proyecto de Software y Estimacion de CostoProyecto de Software y Estimacion de Costo
Proyecto de Software y Estimacion de Costo
 
presentacion de software y estimacion de doste
presentacion de software y estimacion de dostepresentacion de software y estimacion de doste
presentacion de software y estimacion de doste
 
Proyecto de Software y Coste
Proyecto de Software y CosteProyecto de Software y Coste
Proyecto de Software y Coste
 
M.G.E-y-R.L.E.A-Diseño-Arquitectonico.pptx
M.G.E-y-R.L.E.A-Diseño-Arquitectonico.pptxM.G.E-y-R.L.E.A-Diseño-Arquitectonico.pptx
M.G.E-y-R.L.E.A-Diseño-Arquitectonico.pptx
 
Actividad remedial_Maria_Albarran
Actividad remedial_Maria_AlbarranActividad remedial_Maria_Albarran
Actividad remedial_Maria_Albarran
 
Sesión 3: Modelos prescriptivos de proceso de software
Sesión 3: Modelos prescriptivos de proceso de softwareSesión 3: Modelos prescriptivos de proceso de software
Sesión 3: Modelos prescriptivos de proceso de software
 
Sesión 3: Modelos prescriptivos de proceso
Sesión 3: Modelos prescriptivos de procesoSesión 3: Modelos prescriptivos de proceso
Sesión 3: Modelos prescriptivos de proceso
 
Arquitectura. de Software. en ambientes distribuidos.
Arquitectura. de Software. en ambientes distribuidos.Arquitectura. de Software. en ambientes distribuidos.
Arquitectura. de Software. en ambientes distribuidos.
 
3. modelos prescriptivos de proceso
3. modelos prescriptivos de proceso3. modelos prescriptivos de proceso
3. modelos prescriptivos de proceso
 
2017.10.16-senati-powerpoint sesion8.pptx
2017.10.16-senati-powerpoint sesion8.pptx2017.10.16-senati-powerpoint sesion8.pptx
2017.10.16-senati-powerpoint sesion8.pptx
 
Conceptosdemodelado.pdf
Conceptosdemodelado.pdfConceptosdemodelado.pdf
Conceptosdemodelado.pdf
 
Proyecto de Software y Estimacion de Coste
Proyecto de Software y Estimacion de CosteProyecto de Software y Estimacion de Coste
Proyecto de Software y Estimacion de Coste
 
Principios diseño del software
Principios diseño del software Principios diseño del software
Principios diseño del software
 
ingenieradesoftwareii-140115210933-phpapp01 (1).pptx
ingenieradesoftwareii-140115210933-phpapp01 (1).pptxingenieradesoftwareii-140115210933-phpapp01 (1).pptx
ingenieradesoftwareii-140115210933-phpapp01 (1).pptx
 

Más de Juan Jose Gonzalez Faundez (9)

Asp Net Architecture
Asp Net ArchitectureAsp Net Architecture
Asp Net Architecture
 
El embrion humano
El embrion humanoEl embrion humano
El embrion humano
 
Ejercicio UML simple
Ejercicio UML simpleEjercicio UML simple
Ejercicio UML simple
 
La antigua idea de un gobierno mundial Israelí
La antigua idea de un gobierno mundial IsraelíLa antigua idea de un gobierno mundial Israelí
La antigua idea de un gobierno mundial Israelí
 
Orígenes del orden mundial y lo que se viene
Orígenes del orden mundial y lo que se vieneOrígenes del orden mundial y lo que se viene
Orígenes del orden mundial y lo que se viene
 
Diseños estructurales usando uml con clases de análisis y modelos de diseño
Diseños estructurales usando uml con clases de análisis y modelos de diseñoDiseños estructurales usando uml con clases de análisis y modelos de diseño
Diseños estructurales usando uml con clases de análisis y modelos de diseño
 
Principales estilos arquitectónicos
Principales estilos arquitectónicosPrincipales estilos arquitectónicos
Principales estilos arquitectónicos
 
Un problema de diseño Orientado a Objetos
Un problema de diseño Orientado a ObjetosUn problema de diseño Orientado a Objetos
Un problema de diseño Orientado a Objetos
 
Fuerza Chile!4
Fuerza Chile!4Fuerza Chile!4
Fuerza Chile!4
 

Último

Proyecto de aprendizaje dia de la madre MINT.pdf
Proyecto de aprendizaje dia de la madre MINT.pdfProyecto de aprendizaje dia de la madre MINT.pdf
Proyecto de aprendizaje dia de la madre MINT.pdf
patriciaines1993
 
Concepto y definición de tipos de Datos Abstractos en c++.pptx
Concepto y definición de tipos de Datos Abstractos en c++.pptxConcepto y definición de tipos de Datos Abstractos en c++.pptx
Concepto y definición de tipos de Datos Abstractos en c++.pptx
Fernando Solis
 
6.-Como-Atraer-El-Amor-01-Lain-Garcia-Calvo.pdf
6.-Como-Atraer-El-Amor-01-Lain-Garcia-Calvo.pdf6.-Como-Atraer-El-Amor-01-Lain-Garcia-Calvo.pdf
6.-Como-Atraer-El-Amor-01-Lain-Garcia-Calvo.pdf
MiNeyi1
 
2 REGLAMENTO RM 0912-2024 DE MODALIDADES DE GRADUACIÓN_.pptx
2 REGLAMENTO RM 0912-2024 DE MODALIDADES DE GRADUACIÓN_.pptx2 REGLAMENTO RM 0912-2024 DE MODALIDADES DE GRADUACIÓN_.pptx
2 REGLAMENTO RM 0912-2024 DE MODALIDADES DE GRADUACIÓN_.pptx
RigoTito
 
PLAN DE REFUERZO ESCOLAR primaria (1).docx
PLAN DE REFUERZO ESCOLAR primaria (1).docxPLAN DE REFUERZO ESCOLAR primaria (1).docx
PLAN DE REFUERZO ESCOLAR primaria (1).docx
lupitavic
 

Último (20)

Proyecto de aprendizaje dia de la madre MINT.pdf
Proyecto de aprendizaje dia de la madre MINT.pdfProyecto de aprendizaje dia de la madre MINT.pdf
Proyecto de aprendizaje dia de la madre MINT.pdf
 
PINTURA DEL RENACIMIENTO EN ESPAÑA (SIGLO XVI).ppt
PINTURA DEL RENACIMIENTO EN ESPAÑA (SIGLO XVI).pptPINTURA DEL RENACIMIENTO EN ESPAÑA (SIGLO XVI).ppt
PINTURA DEL RENACIMIENTO EN ESPAÑA (SIGLO XVI).ppt
 
Concepto y definición de tipos de Datos Abstractos en c++.pptx
Concepto y definición de tipos de Datos Abstractos en c++.pptxConcepto y definición de tipos de Datos Abstractos en c++.pptx
Concepto y definición de tipos de Datos Abstractos en c++.pptx
 
PIAR v 015. 2024 Plan Individual de ajustes razonables
PIAR v 015. 2024 Plan Individual de ajustes razonablesPIAR v 015. 2024 Plan Individual de ajustes razonables
PIAR v 015. 2024 Plan Individual de ajustes razonables
 
SESION DE PERSONAL SOCIAL. La convivencia en familia 22-04-24 -.doc
SESION DE PERSONAL SOCIAL.  La convivencia en familia 22-04-24  -.docSESION DE PERSONAL SOCIAL.  La convivencia en familia 22-04-24  -.doc
SESION DE PERSONAL SOCIAL. La convivencia en familia 22-04-24 -.doc
 
OCTAVO SEGUNDO PERIODO. EMPRENDIEMIENTO VS
OCTAVO SEGUNDO PERIODO. EMPRENDIEMIENTO VSOCTAVO SEGUNDO PERIODO. EMPRENDIEMIENTO VS
OCTAVO SEGUNDO PERIODO. EMPRENDIEMIENTO VS
 
LABERINTOS DE DISCIPLINAS DEL PENTATLÓN OLÍMPICO MODERNO. Por JAVIER SOLIS NO...
LABERINTOS DE DISCIPLINAS DEL PENTATLÓN OLÍMPICO MODERNO. Por JAVIER SOLIS NO...LABERINTOS DE DISCIPLINAS DEL PENTATLÓN OLÍMPICO MODERNO. Por JAVIER SOLIS NO...
LABERINTOS DE DISCIPLINAS DEL PENTATLÓN OLÍMPICO MODERNO. Por JAVIER SOLIS NO...
 
Supuestos_prácticos_funciones.docx
Supuestos_prácticos_funciones.docxSupuestos_prácticos_funciones.docx
Supuestos_prácticos_funciones.docx
 
origen y desarrollo del ensayo literario
origen y desarrollo del ensayo literarioorigen y desarrollo del ensayo literario
origen y desarrollo del ensayo literario
 
Estrategia de prompts, primeras ideas para su construcción
Estrategia de prompts, primeras ideas para su construcciónEstrategia de prompts, primeras ideas para su construcción
Estrategia de prompts, primeras ideas para su construcción
 
6.-Como-Atraer-El-Amor-01-Lain-Garcia-Calvo.pdf
6.-Como-Atraer-El-Amor-01-Lain-Garcia-Calvo.pdf6.-Como-Atraer-El-Amor-01-Lain-Garcia-Calvo.pdf
6.-Como-Atraer-El-Amor-01-Lain-Garcia-Calvo.pdf
 
Lecciones 05 Esc. Sabática. Fe contra todo pronóstico.
Lecciones 05 Esc. Sabática. Fe contra todo pronóstico.Lecciones 05 Esc. Sabática. Fe contra todo pronóstico.
Lecciones 05 Esc. Sabática. Fe contra todo pronóstico.
 
2 REGLAMENTO RM 0912-2024 DE MODALIDADES DE GRADUACIÓN_.pptx
2 REGLAMENTO RM 0912-2024 DE MODALIDADES DE GRADUACIÓN_.pptx2 REGLAMENTO RM 0912-2024 DE MODALIDADES DE GRADUACIÓN_.pptx
2 REGLAMENTO RM 0912-2024 DE MODALIDADES DE GRADUACIÓN_.pptx
 
LA LITERATURA DEL BARROCO 2023-2024pptx.pptx
LA LITERATURA DEL BARROCO 2023-2024pptx.pptxLA LITERATURA DEL BARROCO 2023-2024pptx.pptx
LA LITERATURA DEL BARROCO 2023-2024pptx.pptx
 
Qué es la Inteligencia artificial generativa
Qué es la Inteligencia artificial generativaQué es la Inteligencia artificial generativa
Qué es la Inteligencia artificial generativa
 
Tema 8.- PROTECCION DE LOS SISTEMAS DE INFORMACIÓN.pdf
Tema 8.- PROTECCION DE LOS SISTEMAS DE INFORMACIÓN.pdfTema 8.- PROTECCION DE LOS SISTEMAS DE INFORMACIÓN.pdf
Tema 8.- PROTECCION DE LOS SISTEMAS DE INFORMACIÓN.pdf
 
Procedimientos para la planificación en los Centros Educativos tipo V ( multi...
Procedimientos para la planificación en los Centros Educativos tipo V ( multi...Procedimientos para la planificación en los Centros Educativos tipo V ( multi...
Procedimientos para la planificación en los Centros Educativos tipo V ( multi...
 
PLAN DE REFUERZO ESCOLAR primaria (1).docx
PLAN DE REFUERZO ESCOLAR primaria (1).docxPLAN DE REFUERZO ESCOLAR primaria (1).docx
PLAN DE REFUERZO ESCOLAR primaria (1).docx
 
Unidad 3 | Metodología de la Investigación
Unidad 3 | Metodología de la InvestigaciónUnidad 3 | Metodología de la Investigación
Unidad 3 | Metodología de la Investigación
 
2024 KIT DE HABILIDADES SOCIOEMOCIONALES.pdf
2024 KIT DE HABILIDADES SOCIOEMOCIONALES.pdf2024 KIT DE HABILIDADES SOCIOEMOCIONALES.pdf
2024 KIT DE HABILIDADES SOCIOEMOCIONALES.pdf
 

Arquitectura de Software

  • 1. Diseño de software Clase 13 Arquitectura y estilos Profesor: Juan José González Faúndez
  • 2. 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”.
  • 3. 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.
  • 4. Discusión + Existe alguna diferencia entre arquitectura y diseño de software?
  • 5. 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:
  • 6. 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
  • 7. Discusión + Cuales son los principios fundamentales en los métodos de desarrollo de software modernos?
  • 8. 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.
  • 9. 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
  • 10. 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
  • 11. Arquitectura de Software - Introducción 11 Distribución del Costo del Software Mantenimiento Diseño Programación Test
  • 12. 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.
  • 13. 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
  • 14. ¿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
  • 15. ¿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
  • 16. 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
  • 17. 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
  • 18. 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
  • 19. 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
  • 20. ¿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
  • 21. ¿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
  • 22. ¿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
  • 23. ¿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
  • 24. 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
  • 25. 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
  • 26. 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
  • 27. Grabadora IP Arquitectura de Software - Introducción Operadoras Central IP Red telefónica exteriorCentro de Llamadas guardar sniffer
  • 31. Arquitectura: sistema empresarial en 3 capas. ¿Diagrama útil?
  • 32. AUTOSAR Architecture. ¿Están las capas realmente aquí?
  • 33. Otra arquitectura. ¿Es útil el diagrama?. (ciertamente, es muy bonito ☺)
  • 35. Y usted no necesita una herramienta de lujo, se puede utilizar un rotafolio (asumiendo que su escritura es legible!)
  • 38. cmp Components ReservaDAO IReservaDAO RequiredInterface ReservaBLL 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 ReservaView app.ejemplo.controller ReservaController Capa de presentación getReservas() List<Reserva>