SlideShare uma empresa Scribd logo
1 de 37
Presentadopor:
JoseLuisIturbide
Especificaciónde
ArquitecturadeSoftware
José Luis Iturbide
joseluis.iturbide@gmail.com
Ingeniero en Computación de la F.I, UNAM
Arquitecto de Software con experiencia en proyectos del
sector Bancario y de Seguros
Objetivo
• Aplicar conceptos de la Arquitectura de
Software en un caso real pero acotado.
• Que el participante tenga una referencia y
pueda mejorar su practica de arquitectura
actual.
• Introducción1
• Conceptos de
Arquitectura de Software
2
• Ejemplo3
• Conclusiones4
Contenido
1. INTRODUCCIÓN
La Practica de Diseño
• Objetivo: ¿Que?
 Crear un árbol navideño
• Análisis, ¿Para que?
– Será parte de una maqueta con motivo navideño
• Requerimientos funcionales
 Funciones, Colores, dimensiones, distribución.
• Requerimientos no funcionales
– Modular, fácil de ampliar, no toxico, durable, lavable
• Restricciones
 Tiempo, recursos (número de piezas), tipo de piezas.
La Practica de Diseño
 Diseño
 Propuesta de solución que dice como cubrirá los requerimientos y se
ajusta a las restricciones dadas.
• ¿Qué tan oportuno debe ser el Documento de Diseño?
A) Tan oportuno como una guía de construcción
B) Como un documento generado después de construir el árbol
Especificación
de Diseño
2. ALGUNOS CONCEPTOS DE
ARQUITECTURA DE
SOFTWARE
Objetivo principal de la arquitectura
• Definir la estructura de componentes, sus
relaciones que garanticen la sana operación del
sistema hoy y a futuro
En consecuencia
• Reducir los riesgos tecnológicos del proyecto.
• Diseñar los componentes de software adecuados
que cubran con los requerimientos no funcionales
Tipos de Arquitectura
Simon Brown
www.codingthearchitecture.com
Enterprise Architecture – Define
la estrategia tecnológica y de
negocio de la organización para
el desarrollo de sus sistemas.
System Architecture – Arquitectura de
software e infraestructura de un sistema de
principio a fin.
Application Architecture – Arquitectura de
software para una aplicación, subsistema o
componente.
Conceptos de Arquitectura de
Software
• Principios
• Requerimientos No Funcionales
• Riesgos
• Restricciones
• Consideraciones
¿Que cuidar?
• Requerimientos No Funcionales:
 Tiempos de respuesta
 Seguridad
 Usabilidad
 Mantenibilidad
• Redundancia, Profundidad,
Capacidad Volumen
• Concurrencia
• Transaccionalidad
• Capacity Planning
RNF y Caracteristicas operacionales Vs
Redundancia, Profundidad, Capacidad
¿Que contiene una especificación de
Arquitectura?
¿Qué resolver? Sección
¿De que se trata esto? Contextualización
¿Qué se puede ó no usar? Restricciones
¿Como esta estructurado el sistema? Diagramas de Solución
¿Cómo mostrar los detalles una audiencia
especifica?
Vistas /Diagramas por
audiencia
¿Con qué aplicaciones es necesario
interactuar?
Listado de sistemas y
subsistemas
¿Qué se intercambiara y de que forma con
las demás aplicaciones?
Lista de interfaces
¿Qué características no funcionales se
deben cubrir?
Requerimientos No
Funcionales
¿Que contiene una especificación de
Arquitectura?
¿Qué resolver? Contenido
¿Cómo debo nombrar a mis artefactos? Estándares de codificación,
nomenclatura
¿Qué estrategia seguir para detalles
transversales logging, auditoria, seguridad,
errores?
Especificaciones de
implementación
¿Qué módulos tendrá la aplicación? Diagramas de componentes
¿Qué productos , tecnologías, APIs se
usarán?
Matriz de Tecnologías, Tiers &
Layers
Otros
• Diagramas de infraestrucura
• Especificaciones GUI, Look & Feel
• Diseño Lógico y Físico de Base de Datos
• Especificaciones por entorno: DES, QA, PRO
3. EJEMPLO
Descripción del ejemplo
La compañía MiAutoSeguro es una Aseguradora creciente y
desea incrementar la venta de seguros de auto vía online
• Las operaciones que se harán desde la aplicación web serán
la cotización y contratación de seguro.
• Se quiere tener acceso a ella desde computadoras y
dispositivos móviles.
• El sistema sustituirá a otro y se integrara con varios sistemas
existentes
• La tecnología base de desarrollo es java.
¿Por donde iniciar?
Obtención de
Requerimientos
• Observa, pregunta,
entrevista
Analiza
• Contrasta
• Relaciona
Diseña
• Evalúa, valida,
decide,
registra
Habilidades valiosas
• Conocimiento del negocio
• Negociación,
• Comunicación,
• Validación,
• Ejecución
• Autoaprendizaje
Errores comunes
• Pensar primero en implementación
• Suponer, no preguntar.
• No identificar y mitigar riesgos
• Pensar solo en el Happy path
• Minimizar la complejidad.
Refina
• Corrige,
Detalla,
Completa
Diagrama de Contexto
Identificación de Sistemas
ID Sistema Objetos de negocio Mas info…
SisCot Sistema Cotizador Cotización
Cobertura
SisContr Sistema de Contratación Póliza
Portal Portal de la compañia
EGlobal Sistema de Cobro Pago, Tarjetahabiente
AutoSeguroW
eb
Sistema de Venta de
Seguros Online
Prospecto, Cotización,
Perfil, Auto
SMTP Server Subsistema para envío
masivo de correos
Mensaje, Cliente
Subsistemas:
LDAPs, Filesystems, Base de datos, Email servers, Sistema de Generación de
Documentos
Datos físicos:
IPs, puertos, dominio, Hardware, Instancias, tecnologías de integración, Ventanas
de servicio, responsables, entornos previos, convivencia con otras aplicaciones.
Identificación de Interfaces
Origen Destino Interfaz
Logico/Fisico
Parametros Condiciones de
error
Nombre físico
interfaz
AutoSeg
uroWeb
SisCot CotizarSeguro
Auto()
In: Prospecto, Datos
auto, Coberturs
elegidas
Out: Cotizacion[]
Código de retorno
y mensaje en xml
http://..../cotizarS
egAuto
SisCont SMTP Enviar póliza In: Destinatario,
Attachments,
500 Error de
server
Smtp:5020
Queue: cteQ
Otros datos de importancia:
• Tecnología de integración, códigos de error, frecuencia, horario, volumen de
datos, De escritura/Lectura.
• Tipo de comunicación: Online/Batch, Síncrona / Asíncrona,
• Nueva / A Reutilizar / A Modificar
• Restricciones de seguridad
Diagrama de solución
Ejemplo de Restricciones
De desarrollo
• El framework de desarrollo es Spring 3.0.1
• El código se versionará en un entorno dentro de la organización
De seguridad
• Los datos sensibles de clientes no deben registrarse en logs
De políticas internas
• La promoción de la aplicación, cambios por correcciones debe seguir la
secuencia de entornos DES -> QA -> PRO
De entorno
• No hay ambiente de pruebas para el Sistema de Procesamiento de Pago
Ejemplo de Riesgos
Riesgo Probabili
dad
Impacto Mitigación
01 - El entorno de QA no
quede habilitado a tiempo
BAJO MEDIO OP1: Realizar pruebas en entorno DES
con validez de integración
OP2: Incrementar el equipo de Test
02 - IT pide que la lógica
de cotización se
implemente como
servicios pero eso no se
estimo
ALTO MEDIO OP1: Dividir físicamente la capa de
presentación de la de negocio.
OP2: Negociar un cambio de alcance pero
por tiempos el switch se haría hasta una
2ª liberación
03 - No se podrán hacer
pruebas en Sistema
Eglobal (Problema)
ALTO MEDIO OP1. Crear sistema alterno
OP2: Crear objetos Mock
La mitigación de riesgos frecuentemente modifica la
solución, el plan y el alcance de la solución original
Toolkit del arquitecto
Experiencia
Principios de Diseño
• Composición, Inversión de Control, Modularidad, Bajo
acoplamiento, Alta cohesión, Open Closed
Patrones de Diseño y Arquitecturales
• Patrones GOF: Patrones JEE,
Ejemplo: Observer, Fachada
• Patrones de Integración, de Arquitectura
Ejemplo: Layers, Model-View-Controller
• Antipatrones,
Otros:
• Técnicas de descomposición funcional
• Técnicas de estimación de complejidad
• Matrices de Decisión
• Pantillas
Patrón Arquitectural de capas
Composición en lugar
de Herencia
Diagrama de componentes / deployment
Matriz de tecnologías por fila y capa de
AutoSeguroWeb
Tier
Layer
Capa Cliente Capa
Presentación y
Control
Capa de Negocio Capa de Integración
ó acceso a Datos
Sistemas
externos
APIs /
Framewor
ks
•HTML5
•Bootstrap
•Css
•Servlet 3.0
•JSP 2.5
•JSON
•Spring MVC
•WS REST
•Clases de Servicio
(POJOs)
•EHCache
•JPA 2.1 + Hibernate
3
•WS REST
BD: SQL
Sist: WS-REST
APIs
transversa
les
N.A. •Logging (SLF4J)
•Spring 3.0.3
•JEE 6.0
N.A.
Producto Firefox >= 32
Chrome >= 40
IE 10
JBoss 6.0.1 •RDBMS
SQLServer
Sistema
Operativo
Cualquiera Oracle Linux 6.0 •Oracle Linux,
5.0
Hardware PC Intel Server •Intel server
Ejemplo de cambios a mitad del camino
Cambio por mejora de performance
Problema: La consulta de Catálogos desde el front es tardada
¿Qué opciones de mejora se tienen?
Cambio por necesidad de negocio
Cambio: La lógica de Cotización y Contratación se requiere que pueda
ser consumida por otros sistemas sin depender del front actual.
Diagrama de componentes / deployment
Cambio en Diseño original por
necesidad de negocio
Modelo 4 + 1 vista
Buena practica:
• Crear una línea base del código
• Implementar un Caso de Uso representativo
Arquitectura Empresarial
¿Buscas el especificar
Arquitectura de un modo
formal?
• TOGAF es un framework que
ayuda a definir como se
debe desarrollar la
Arquitectura en una
organización
• Tiene plantillas que puedes
usar y adaptar
http://www.togaf.info/togafSlides91/TOGAF-V91-Sample-Catalogs-Matrics-Diagrams-
v3.pdf
Conclusión
• El Arquitecto de Software es responsable de elegir,
justificar y comunicar las tecnologías mas adecuadas
para satisfacer la operación sana del sistema.
• Es necesario tener experiencia y otras habilidades
además de las habilidades técnicas para lograr el
objetivo.
• El documento de especificación debe ser oportuno,
suficiente y claro para poder usarlo como una guía
del desarrollo.
Recursos
Software Architecture for Developers, Simon Brown
http://www.codingthearchitecture.com/
97 Things Every Software Architect Should Know
http://books.google.com.mx/books/about/97_Things_Every_Software_Architect_Shoul.html?id=HDknE
jQJkbUC&redir_esc=y
Software Design Principles and Guidelines
http://ebookily.net/pdf/software-design-principles-and-guidelines-design-principles-3965564.html
Preguntas?
Gracias
@jliturbide
j_iturbide@hotmail.com
JoseLuisIturbide
Siguelaconversaciónycomentaenredessocialesconelhashtag
#SGVirtual

Mais conteúdo relacionado

Mais procurados

Estandares y modelos de calidad del software
Estandares y modelos de calidad del softwareEstandares y modelos de calidad del software
Estandares y modelos de calidad del softwareaagalvisg
 
Ingeniería de requisitos
Ingeniería de requisitosIngeniería de requisitos
Ingeniería de requisitosZuleima
 
AUDITORIA DE BASE DE DATOS
AUDITORIA DE BASE DE DATOSAUDITORIA DE BASE DE DATOS
AUDITORIA DE BASE DE DATOSGRECIAGALLEGOS
 
Atributos de calidad en el desarrollo de software
Atributos de calidad en el desarrollo de softwareAtributos de calidad en el desarrollo de software
Atributos de calidad en el desarrollo de softwareGustavo Cuen
 
Diccionario de datos
Diccionario de datosDiccionario de datos
Diccionario de datosJorge Garcia
 
Unidad 1.3 Analisis De Requerimientos
Unidad 1.3 Analisis De RequerimientosUnidad 1.3 Analisis De Requerimientos
Unidad 1.3 Analisis De RequerimientosSergio Sanchez
 
Técnicas para la Obtención de Requerimientos
Técnicas para la Obtención de RequerimientosTécnicas para la Obtención de Requerimientos
Técnicas para la Obtención de RequerimientosJuan Carlos Olivares Rojas
 
Caso de uso de biblioteca
Caso de uso de bibliotecaCaso de uso de biblioteca
Caso de uso de bibliotecapersye
 
Modelo de desarrollo de software
Modelo de desarrollo de softwareModelo de desarrollo de software
Modelo de desarrollo de softwareYaskelly Yedra
 
Modelos y capas de la ingenieria de software
Modelos y capas  de la ingenieria de softwareModelos y capas  de la ingenieria de software
Modelos y capas de la ingenieria de softwarejhonatanalex
 

Mais procurados (20)

Diseño arquitectónico
Diseño arquitectónicoDiseño arquitectónico
Diseño arquitectónico
 
Estandares y modelos de calidad del software
Estandares y modelos de calidad del softwareEstandares y modelos de calidad del software
Estandares y modelos de calidad del software
 
Arquitectura de sistemas distribuidos
Arquitectura de sistemas distribuidosArquitectura de sistemas distribuidos
Arquitectura de sistemas distribuidos
 
Modelo relacional
Modelo relacionalModelo relacional
Modelo relacional
 
Ingeniería de requisitos
Ingeniería de requisitosIngeniería de requisitos
Ingeniería de requisitos
 
Metodología WEB UWE
Metodología WEB UWEMetodología WEB UWE
Metodología WEB UWE
 
AUDITORIA DE BASE DE DATOS
AUDITORIA DE BASE DE DATOSAUDITORIA DE BASE DE DATOS
AUDITORIA DE BASE DE DATOS
 
Atributos de calidad en el desarrollo de software
Atributos de calidad en el desarrollo de softwareAtributos de calidad en el desarrollo de software
Atributos de calidad en el desarrollo de software
 
Diccionario de datos
Diccionario de datosDiccionario de datos
Diccionario de datos
 
Unidad 1.3 Analisis De Requerimientos
Unidad 1.3 Analisis De RequerimientosUnidad 1.3 Analisis De Requerimientos
Unidad 1.3 Analisis De Requerimientos
 
Requerimientos norma ieee830
Requerimientos norma ieee830Requerimientos norma ieee830
Requerimientos norma ieee830
 
Modelo 4+1
Modelo 4+1Modelo 4+1
Modelo 4+1
 
Proyecto final de software
Proyecto final de softwareProyecto final de software
Proyecto final de software
 
Factores de calidad del software
Factores de calidad del softwareFactores de calidad del software
Factores de calidad del software
 
Técnicas para la Obtención de Requerimientos
Técnicas para la Obtención de RequerimientosTécnicas para la Obtención de Requerimientos
Técnicas para la Obtención de Requerimientos
 
Diseño de sistemas
Diseño de sistemasDiseño de sistemas
Diseño de sistemas
 
Caso de uso de biblioteca
Caso de uso de bibliotecaCaso de uso de biblioteca
Caso de uso de biblioteca
 
Rational rose
Rational roseRational rose
Rational rose
 
Modelo de desarrollo de software
Modelo de desarrollo de softwareModelo de desarrollo de software
Modelo de desarrollo de software
 
Modelos y capas de la ingenieria de software
Modelos y capas  de la ingenieria de softwareModelos y capas  de la ingenieria de software
Modelos y capas de la ingenieria de software
 

Semelhante a Especificación de Arquitectura de Software

Arquitectura de una aplicación
Arquitectura de una aplicaciónArquitectura de una aplicación
Arquitectura de una aplicaciónuniv of pamplona
 
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 CosteCAMILO
 
metodologias de desarrollo.ppt
metodologias de desarrollo.pptmetodologias de desarrollo.ppt
metodologias de desarrollo.pptCristianFlasher1
 
Ucv sesion 15 diseño optimiz -redes
Ucv sesion 15 diseño optimiz -redesUcv sesion 15 diseño optimiz -redes
Ucv sesion 15 diseño optimiz -redesTaringa!
 
Metodo top-down.pptx
Metodo top-down.pptxMetodo top-down.pptx
Metodo top-down.pptxoera28
 
Ingeniería de software
Ingeniería de softwareIngeniería de software
Ingeniería de softwaremat3matik
 
Ingeniería%20de%20 software[1], maryy
Ingeniería%20de%20 software[1], maryyIngeniería%20de%20 software[1], maryy
Ingeniería%20de%20 software[1], maryynelly
 
Ingeniería de software16
Ingeniería de software16Ingeniería de software16
Ingeniería de software16Ramon
 
Ingenier%c3%ada de software
Ingenier%c3%ada de softwareIngenier%c3%ada de software
Ingenier%c3%ada de softwareMarilupe
 
Ingeniería de software
Ingeniería de softwareIngeniería de software
Ingeniería de software142918
 
Ingen de software
Ingen de softwareIngen de software
Ingen de softwareerikapoh
 
Ingeniería de software
Ingeniería de softwareIngeniería de software
Ingeniería de softwaresamantha
 
Software y Coste
Software y CosteSoftware y Coste
Software y CosteCAMILO
 
Clase 2 - Construccion de los SI.ppt
Clase 2 - Construccion de los SI.pptClase 2 - Construccion de los SI.ppt
Clase 2 - Construccion de los SI.pptrogergrefa1
 
Analisis de requerimientos, Ingenieria de Software
Analisis de requerimientos, Ingenieria de SoftwareAnalisis de requerimientos, Ingenieria de Software
Analisis de requerimientos, Ingenieria de SoftwareMarvin Romero
 

Semelhante a Especificación de Arquitectura de Software (20)

Arquitectura de una aplicación
Arquitectura de una aplicaciónArquitectura de una aplicación
Arquitectura de una aplicación
 
Espoch
EspochEspoch
Espoch
 
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
 
metodologias de desarrollo.ppt
metodologias de desarrollo.pptmetodologias de desarrollo.ppt
metodologias de desarrollo.ppt
 
Ucv sesion 15 diseño optimiz -redes
Ucv sesion 15 diseño optimiz -redesUcv sesion 15 diseño optimiz -redes
Ucv sesion 15 diseño optimiz -redes
 
Metodo top-down.pptx
Metodo top-down.pptxMetodo top-down.pptx
Metodo top-down.pptx
 
Ingeniería de software
Ingeniería de softwareIngeniería de software
Ingeniería de software
 
Ingeniería%20de%20 software[1], maryy
Ingeniería%20de%20 software[1], maryyIngeniería%20de%20 software[1], maryy
Ingeniería%20de%20 software[1], maryy
 
Ingeniería de software16
Ingeniería de software16Ingeniería de software16
Ingeniería de software16
 
Ingenier%c3%ada de software
Ingenier%c3%ada de softwareIngenier%c3%ada de software
Ingenier%c3%ada de software
 
Clase 11
Clase 11Clase 11
Clase 11
 
Ingeniería de software
Ingeniería de softwareIngeniería de software
Ingeniería de software
 
Ingen de software
Ingen de softwareIngen de software
Ingen de software
 
Ingeniería de software
Ingeniería de softwareIngeniería de software
Ingeniería de software
 
Arquitectura de Software
Arquitectura de SoftwareArquitectura de Software
Arquitectura de Software
 
Software y Coste
Software y CosteSoftware y Coste
Software y Coste
 
Clase 2 - Construccion de los SI.ppt
Clase 2 - Construccion de los SI.pptClase 2 - Construccion de los SI.ppt
Clase 2 - Construccion de los SI.ppt
 
Ciclo de Vida y roles
Ciclo de Vida y roles Ciclo de Vida y roles
Ciclo de Vida y roles
 
Sistemas de información
Sistemas de informaciónSistemas de información
Sistemas de información
 
Analisis de requerimientos, Ingenieria de Software
Analisis de requerimientos, Ingenieria de SoftwareAnalisis de requerimientos, Ingenieria de Software
Analisis de requerimientos, Ingenieria de Software
 

Mais de Software Guru

Hola Mundo del Internet de las Cosas
Hola Mundo del Internet de las CosasHola Mundo del Internet de las Cosas
Hola Mundo del Internet de las CosasSoftware Guru
 
Estructuras de datos avanzadas: Casos de uso reales
Estructuras de datos avanzadas: Casos de uso realesEstructuras de datos avanzadas: Casos de uso reales
Estructuras de datos avanzadas: Casos de uso realesSoftware Guru
 
Building bias-aware environments
Building bias-aware environmentsBuilding bias-aware environments
Building bias-aware environmentsSoftware Guru
 
El secreto para ser un desarrollador Senior
El secreto para ser un desarrollador SeniorEl secreto para ser un desarrollador Senior
El secreto para ser un desarrollador SeniorSoftware Guru
 
Cómo encontrar el trabajo remoto ideal
Cómo encontrar el trabajo remoto idealCómo encontrar el trabajo remoto ideal
Cómo encontrar el trabajo remoto idealSoftware Guru
 
Automatizando ideas con Apache Airflow
Automatizando ideas con Apache AirflowAutomatizando ideas con Apache Airflow
Automatizando ideas con Apache AirflowSoftware Guru
 
How thick data can improve big data analysis for business:
How thick data can improve big data analysis for business:How thick data can improve big data analysis for business:
How thick data can improve big data analysis for business:Software Guru
 
Introducción al machine learning
Introducción al machine learningIntroducción al machine learning
Introducción al machine learningSoftware Guru
 
Democratizando el uso de CoDi
Democratizando el uso de CoDiDemocratizando el uso de CoDi
Democratizando el uso de CoDiSoftware Guru
 
Gestionando la felicidad de los equipos con Management 3.0
Gestionando la felicidad de los equipos con Management 3.0Gestionando la felicidad de los equipos con Management 3.0
Gestionando la felicidad de los equipos con Management 3.0Software Guru
 
Taller: Creación de Componentes Web re-usables con StencilJS
Taller: Creación de Componentes Web re-usables con StencilJSTaller: Creación de Componentes Web re-usables con StencilJS
Taller: Creación de Componentes Web re-usables con StencilJSSoftware Guru
 
El camino del full stack developer (o como hacemos en SERTI para que no solo ...
El camino del full stack developer (o como hacemos en SERTI para que no solo ...El camino del full stack developer (o como hacemos en SERTI para que no solo ...
El camino del full stack developer (o como hacemos en SERTI para que no solo ...Software Guru
 
¿Qué significa ser un programador en Bitso?
¿Qué significa ser un programador en Bitso?¿Qué significa ser un programador en Bitso?
¿Qué significa ser un programador en Bitso?Software Guru
 
Colaboración efectiva entre desarrolladores del cliente y tu equipo.
Colaboración efectiva entre desarrolladores del cliente y tu equipo.Colaboración efectiva entre desarrolladores del cliente y tu equipo.
Colaboración efectiva entre desarrolladores del cliente y tu equipo.Software Guru
 
Pruebas de integración con Docker en Azure DevOps
Pruebas de integración con Docker en Azure DevOpsPruebas de integración con Docker en Azure DevOps
Pruebas de integración con Docker en Azure DevOpsSoftware Guru
 
Elixir + Elm: Usando lenguajes funcionales en servicios productivos
Elixir + Elm: Usando lenguajes funcionales en servicios productivosElixir + Elm: Usando lenguajes funcionales en servicios productivos
Elixir + Elm: Usando lenguajes funcionales en servicios productivosSoftware Guru
 
Así publicamos las apps de Spotify sin stress
Así publicamos las apps de Spotify sin stressAsí publicamos las apps de Spotify sin stress
Así publicamos las apps de Spotify sin stressSoftware Guru
 
Achieving Your Goals: 5 Tips to successfully achieve your goals
Achieving Your Goals: 5 Tips to successfully achieve your goalsAchieving Your Goals: 5 Tips to successfully achieve your goals
Achieving Your Goals: 5 Tips to successfully achieve your goalsSoftware Guru
 
Acciones de comunidades tech en tiempos del Covid19
Acciones de comunidades tech en tiempos del Covid19Acciones de comunidades tech en tiempos del Covid19
Acciones de comunidades tech en tiempos del Covid19Software Guru
 
De lo operativo a lo estratégico: un modelo de management de diseño
De lo operativo a lo estratégico: un modelo de management de diseñoDe lo operativo a lo estratégico: un modelo de management de diseño
De lo operativo a lo estratégico: un modelo de management de diseñoSoftware Guru
 

Mais de Software Guru (20)

Hola Mundo del Internet de las Cosas
Hola Mundo del Internet de las CosasHola Mundo del Internet de las Cosas
Hola Mundo del Internet de las Cosas
 
Estructuras de datos avanzadas: Casos de uso reales
Estructuras de datos avanzadas: Casos de uso realesEstructuras de datos avanzadas: Casos de uso reales
Estructuras de datos avanzadas: Casos de uso reales
 
Building bias-aware environments
Building bias-aware environmentsBuilding bias-aware environments
Building bias-aware environments
 
El secreto para ser un desarrollador Senior
El secreto para ser un desarrollador SeniorEl secreto para ser un desarrollador Senior
El secreto para ser un desarrollador Senior
 
Cómo encontrar el trabajo remoto ideal
Cómo encontrar el trabajo remoto idealCómo encontrar el trabajo remoto ideal
Cómo encontrar el trabajo remoto ideal
 
Automatizando ideas con Apache Airflow
Automatizando ideas con Apache AirflowAutomatizando ideas con Apache Airflow
Automatizando ideas con Apache Airflow
 
How thick data can improve big data analysis for business:
How thick data can improve big data analysis for business:How thick data can improve big data analysis for business:
How thick data can improve big data analysis for business:
 
Introducción al machine learning
Introducción al machine learningIntroducción al machine learning
Introducción al machine learning
 
Democratizando el uso de CoDi
Democratizando el uso de CoDiDemocratizando el uso de CoDi
Democratizando el uso de CoDi
 
Gestionando la felicidad de los equipos con Management 3.0
Gestionando la felicidad de los equipos con Management 3.0Gestionando la felicidad de los equipos con Management 3.0
Gestionando la felicidad de los equipos con Management 3.0
 
Taller: Creación de Componentes Web re-usables con StencilJS
Taller: Creación de Componentes Web re-usables con StencilJSTaller: Creación de Componentes Web re-usables con StencilJS
Taller: Creación de Componentes Web re-usables con StencilJS
 
El camino del full stack developer (o como hacemos en SERTI para que no solo ...
El camino del full stack developer (o como hacemos en SERTI para que no solo ...El camino del full stack developer (o como hacemos en SERTI para que no solo ...
El camino del full stack developer (o como hacemos en SERTI para que no solo ...
 
¿Qué significa ser un programador en Bitso?
¿Qué significa ser un programador en Bitso?¿Qué significa ser un programador en Bitso?
¿Qué significa ser un programador en Bitso?
 
Colaboración efectiva entre desarrolladores del cliente y tu equipo.
Colaboración efectiva entre desarrolladores del cliente y tu equipo.Colaboración efectiva entre desarrolladores del cliente y tu equipo.
Colaboración efectiva entre desarrolladores del cliente y tu equipo.
 
Pruebas de integración con Docker en Azure DevOps
Pruebas de integración con Docker en Azure DevOpsPruebas de integración con Docker en Azure DevOps
Pruebas de integración con Docker en Azure DevOps
 
Elixir + Elm: Usando lenguajes funcionales en servicios productivos
Elixir + Elm: Usando lenguajes funcionales en servicios productivosElixir + Elm: Usando lenguajes funcionales en servicios productivos
Elixir + Elm: Usando lenguajes funcionales en servicios productivos
 
Así publicamos las apps de Spotify sin stress
Así publicamos las apps de Spotify sin stressAsí publicamos las apps de Spotify sin stress
Así publicamos las apps de Spotify sin stress
 
Achieving Your Goals: 5 Tips to successfully achieve your goals
Achieving Your Goals: 5 Tips to successfully achieve your goalsAchieving Your Goals: 5 Tips to successfully achieve your goals
Achieving Your Goals: 5 Tips to successfully achieve your goals
 
Acciones de comunidades tech en tiempos del Covid19
Acciones de comunidades tech en tiempos del Covid19Acciones de comunidades tech en tiempos del Covid19
Acciones de comunidades tech en tiempos del Covid19
 
De lo operativo a lo estratégico: un modelo de management de diseño
De lo operativo a lo estratégico: un modelo de management de diseñoDe lo operativo a lo estratégico: un modelo de management de diseño
De lo operativo a lo estratégico: un modelo de management de diseño
 

Último

investigación de los Avances tecnológicos del siglo XXI
investigación de los Avances tecnológicos del siglo XXIinvestigación de los Avances tecnológicos del siglo XXI
investigación de los Avances tecnológicos del siglo XXIhmpuellon
 
Generaciones de las Computadoras..pdf...
Generaciones de las Computadoras..pdf...Generaciones de las Computadoras..pdf...
Generaciones de las Computadoras..pdf...solanocortezluisalfr
 
Guia Basica para bachillerato de Circuitos Basicos
Guia Basica para bachillerato de Circuitos BasicosGuia Basica para bachillerato de Circuitos Basicos
Guia Basica para bachillerato de Circuitos BasicosJhonJairoRodriguezCe
 
presentacion_desamblado_de_una_computadora_base_a_las_normas_de_seguridad.pdf
presentacion_desamblado_de_una_computadora_base_a_las_normas_de_seguridad.pdfpresentacion_desamblado_de_una_computadora_base_a_las_normas_de_seguridad.pdf
presentacion_desamblado_de_una_computadora_base_a_las_normas_de_seguridad.pdfaxelv9257
 
How to use Redis with MuleSoft. A quick start presentation.
How to use Redis with MuleSoft. A quick start presentation.How to use Redis with MuleSoft. A quick start presentation.
How to use Redis with MuleSoft. A quick start presentation.FlorenciaCattelani
 
presentación del desensamble y ensamble del equipo de computo en base a las n...
presentación del desensamble y ensamble del equipo de computo en base a las n...presentación del desensamble y ensamble del equipo de computo en base a las n...
presentación del desensamble y ensamble del equipo de computo en base a las n...axelv9257
 
Avances tecnológicos del siglo XXI 10-07 eyvana
Avances tecnológicos del siglo XXI 10-07 eyvanaAvances tecnológicos del siglo XXI 10-07 eyvana
Avances tecnológicos del siglo XXI 10-07 eyvanamcerpam
 
Avances tecnológicos del siglo XXI y ejemplos de estos
Avances tecnológicos del siglo XXI y ejemplos de estosAvances tecnológicos del siglo XXI y ejemplos de estos
Avances tecnológicos del siglo XXI y ejemplos de estossgonzalezp1
 
redes informaticas en una oficina administrativa
redes informaticas en una oficina administrativaredes informaticas en una oficina administrativa
redes informaticas en una oficina administrativanicho110
 
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...JohnRamos830530
 
Innovaciones tecnologicas en el siglo 21
Innovaciones tecnologicas en el siglo 21Innovaciones tecnologicas en el siglo 21
Innovaciones tecnologicas en el siglo 21mariacbr99
 
Buenos_Aires_Meetup_Redis_20240430_.pptx
Buenos_Aires_Meetup_Redis_20240430_.pptxBuenos_Aires_Meetup_Redis_20240430_.pptx
Buenos_Aires_Meetup_Redis_20240430_.pptxFederico Castellari
 
infor expo AVANCES TECNOLOGICOS DEL SIGLO 21.pptx
infor expo AVANCES TECNOLOGICOS DEL SIGLO 21.pptxinfor expo AVANCES TECNOLOGICOS DEL SIGLO 21.pptx
infor expo AVANCES TECNOLOGICOS DEL SIGLO 21.pptxgustavovasquezv56
 
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptx
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptxEVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptx
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptxJorgeParada26
 

Último (14)

investigación de los Avances tecnológicos del siglo XXI
investigación de los Avances tecnológicos del siglo XXIinvestigación de los Avances tecnológicos del siglo XXI
investigación de los Avances tecnológicos del siglo XXI
 
Generaciones de las Computadoras..pdf...
Generaciones de las Computadoras..pdf...Generaciones de las Computadoras..pdf...
Generaciones de las Computadoras..pdf...
 
Guia Basica para bachillerato de Circuitos Basicos
Guia Basica para bachillerato de Circuitos BasicosGuia Basica para bachillerato de Circuitos Basicos
Guia Basica para bachillerato de Circuitos Basicos
 
presentacion_desamblado_de_una_computadora_base_a_las_normas_de_seguridad.pdf
presentacion_desamblado_de_una_computadora_base_a_las_normas_de_seguridad.pdfpresentacion_desamblado_de_una_computadora_base_a_las_normas_de_seguridad.pdf
presentacion_desamblado_de_una_computadora_base_a_las_normas_de_seguridad.pdf
 
How to use Redis with MuleSoft. A quick start presentation.
How to use Redis with MuleSoft. A quick start presentation.How to use Redis with MuleSoft. A quick start presentation.
How to use Redis with MuleSoft. A quick start presentation.
 
presentación del desensamble y ensamble del equipo de computo en base a las n...
presentación del desensamble y ensamble del equipo de computo en base a las n...presentación del desensamble y ensamble del equipo de computo en base a las n...
presentación del desensamble y ensamble del equipo de computo en base a las n...
 
Avances tecnológicos del siglo XXI 10-07 eyvana
Avances tecnológicos del siglo XXI 10-07 eyvanaAvances tecnológicos del siglo XXI 10-07 eyvana
Avances tecnológicos del siglo XXI 10-07 eyvana
 
Avances tecnológicos del siglo XXI y ejemplos de estos
Avances tecnológicos del siglo XXI y ejemplos de estosAvances tecnológicos del siglo XXI y ejemplos de estos
Avances tecnológicos del siglo XXI y ejemplos de estos
 
redes informaticas en una oficina administrativa
redes informaticas en una oficina administrativaredes informaticas en una oficina administrativa
redes informaticas en una oficina administrativa
 
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
 
Innovaciones tecnologicas en el siglo 21
Innovaciones tecnologicas en el siglo 21Innovaciones tecnologicas en el siglo 21
Innovaciones tecnologicas en el siglo 21
 
Buenos_Aires_Meetup_Redis_20240430_.pptx
Buenos_Aires_Meetup_Redis_20240430_.pptxBuenos_Aires_Meetup_Redis_20240430_.pptx
Buenos_Aires_Meetup_Redis_20240430_.pptx
 
infor expo AVANCES TECNOLOGICOS DEL SIGLO 21.pptx
infor expo AVANCES TECNOLOGICOS DEL SIGLO 21.pptxinfor expo AVANCES TECNOLOGICOS DEL SIGLO 21.pptx
infor expo AVANCES TECNOLOGICOS DEL SIGLO 21.pptx
 
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptx
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptxEVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptx
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptx
 

Especificación de Arquitectura de Software

  • 2. José Luis Iturbide joseluis.iturbide@gmail.com Ingeniero en Computación de la F.I, UNAM Arquitecto de Software con experiencia en proyectos del sector Bancario y de Seguros
  • 3. Objetivo • Aplicar conceptos de la Arquitectura de Software en un caso real pero acotado. • Que el participante tenga una referencia y pueda mejorar su practica de arquitectura actual.
  • 4. • Introducción1 • Conceptos de Arquitectura de Software 2 • Ejemplo3 • Conclusiones4 Contenido
  • 6. La Practica de Diseño • Objetivo: ¿Que?  Crear un árbol navideño • Análisis, ¿Para que? – Será parte de una maqueta con motivo navideño • Requerimientos funcionales  Funciones, Colores, dimensiones, distribución. • Requerimientos no funcionales – Modular, fácil de ampliar, no toxico, durable, lavable • Restricciones  Tiempo, recursos (número de piezas), tipo de piezas.
  • 7. La Practica de Diseño  Diseño  Propuesta de solución que dice como cubrirá los requerimientos y se ajusta a las restricciones dadas. • ¿Qué tan oportuno debe ser el Documento de Diseño? A) Tan oportuno como una guía de construcción B) Como un documento generado después de construir el árbol Especificación de Diseño
  • 8. 2. ALGUNOS CONCEPTOS DE ARQUITECTURA DE SOFTWARE
  • 9. Objetivo principal de la arquitectura • Definir la estructura de componentes, sus relaciones que garanticen la sana operación del sistema hoy y a futuro En consecuencia • Reducir los riesgos tecnológicos del proyecto. • Diseñar los componentes de software adecuados que cubran con los requerimientos no funcionales
  • 10. Tipos de Arquitectura Simon Brown www.codingthearchitecture.com Enterprise Architecture – Define la estrategia tecnológica y de negocio de la organización para el desarrollo de sus sistemas. System Architecture – Arquitectura de software e infraestructura de un sistema de principio a fin. Application Architecture – Arquitectura de software para una aplicación, subsistema o componente.
  • 11. Conceptos de Arquitectura de Software • Principios • Requerimientos No Funcionales • Riesgos • Restricciones • Consideraciones
  • 12. ¿Que cuidar? • Requerimientos No Funcionales:  Tiempos de respuesta  Seguridad  Usabilidad  Mantenibilidad • Redundancia, Profundidad, Capacidad Volumen • Concurrencia • Transaccionalidad • Capacity Planning
  • 13. RNF y Caracteristicas operacionales Vs Redundancia, Profundidad, Capacidad
  • 14. ¿Que contiene una especificación de Arquitectura? ¿Qué resolver? Sección ¿De que se trata esto? Contextualización ¿Qué se puede ó no usar? Restricciones ¿Como esta estructurado el sistema? Diagramas de Solución ¿Cómo mostrar los detalles una audiencia especifica? Vistas /Diagramas por audiencia ¿Con qué aplicaciones es necesario interactuar? Listado de sistemas y subsistemas ¿Qué se intercambiara y de que forma con las demás aplicaciones? Lista de interfaces ¿Qué características no funcionales se deben cubrir? Requerimientos No Funcionales
  • 15. ¿Que contiene una especificación de Arquitectura? ¿Qué resolver? Contenido ¿Cómo debo nombrar a mis artefactos? Estándares de codificación, nomenclatura ¿Qué estrategia seguir para detalles transversales logging, auditoria, seguridad, errores? Especificaciones de implementación ¿Qué módulos tendrá la aplicación? Diagramas de componentes ¿Qué productos , tecnologías, APIs se usarán? Matriz de Tecnologías, Tiers & Layers Otros • Diagramas de infraestrucura • Especificaciones GUI, Look & Feel • Diseño Lógico y Físico de Base de Datos • Especificaciones por entorno: DES, QA, PRO
  • 17. Descripción del ejemplo La compañía MiAutoSeguro es una Aseguradora creciente y desea incrementar la venta de seguros de auto vía online • Las operaciones que se harán desde la aplicación web serán la cotización y contratación de seguro. • Se quiere tener acceso a ella desde computadoras y dispositivos móviles. • El sistema sustituirá a otro y se integrara con varios sistemas existentes • La tecnología base de desarrollo es java.
  • 18. ¿Por donde iniciar? Obtención de Requerimientos • Observa, pregunta, entrevista Analiza • Contrasta • Relaciona Diseña • Evalúa, valida, decide, registra Habilidades valiosas • Conocimiento del negocio • Negociación, • Comunicación, • Validación, • Ejecución • Autoaprendizaje Errores comunes • Pensar primero en implementación • Suponer, no preguntar. • No identificar y mitigar riesgos • Pensar solo en el Happy path • Minimizar la complejidad. Refina • Corrige, Detalla, Completa
  • 20. Identificación de Sistemas ID Sistema Objetos de negocio Mas info… SisCot Sistema Cotizador Cotización Cobertura SisContr Sistema de Contratación Póliza Portal Portal de la compañia EGlobal Sistema de Cobro Pago, Tarjetahabiente AutoSeguroW eb Sistema de Venta de Seguros Online Prospecto, Cotización, Perfil, Auto SMTP Server Subsistema para envío masivo de correos Mensaje, Cliente Subsistemas: LDAPs, Filesystems, Base de datos, Email servers, Sistema de Generación de Documentos Datos físicos: IPs, puertos, dominio, Hardware, Instancias, tecnologías de integración, Ventanas de servicio, responsables, entornos previos, convivencia con otras aplicaciones.
  • 21. Identificación de Interfaces Origen Destino Interfaz Logico/Fisico Parametros Condiciones de error Nombre físico interfaz AutoSeg uroWeb SisCot CotizarSeguro Auto() In: Prospecto, Datos auto, Coberturs elegidas Out: Cotizacion[] Código de retorno y mensaje en xml http://..../cotizarS egAuto SisCont SMTP Enviar póliza In: Destinatario, Attachments, 500 Error de server Smtp:5020 Queue: cteQ Otros datos de importancia: • Tecnología de integración, códigos de error, frecuencia, horario, volumen de datos, De escritura/Lectura. • Tipo de comunicación: Online/Batch, Síncrona / Asíncrona, • Nueva / A Reutilizar / A Modificar • Restricciones de seguridad
  • 23. Ejemplo de Restricciones De desarrollo • El framework de desarrollo es Spring 3.0.1 • El código se versionará en un entorno dentro de la organización De seguridad • Los datos sensibles de clientes no deben registrarse en logs De políticas internas • La promoción de la aplicación, cambios por correcciones debe seguir la secuencia de entornos DES -> QA -> PRO De entorno • No hay ambiente de pruebas para el Sistema de Procesamiento de Pago
  • 24. Ejemplo de Riesgos Riesgo Probabili dad Impacto Mitigación 01 - El entorno de QA no quede habilitado a tiempo BAJO MEDIO OP1: Realizar pruebas en entorno DES con validez de integración OP2: Incrementar el equipo de Test 02 - IT pide que la lógica de cotización se implemente como servicios pero eso no se estimo ALTO MEDIO OP1: Dividir físicamente la capa de presentación de la de negocio. OP2: Negociar un cambio de alcance pero por tiempos el switch se haría hasta una 2ª liberación 03 - No se podrán hacer pruebas en Sistema Eglobal (Problema) ALTO MEDIO OP1. Crear sistema alterno OP2: Crear objetos Mock La mitigación de riesgos frecuentemente modifica la solución, el plan y el alcance de la solución original
  • 25. Toolkit del arquitecto Experiencia Principios de Diseño • Composición, Inversión de Control, Modularidad, Bajo acoplamiento, Alta cohesión, Open Closed Patrones de Diseño y Arquitecturales • Patrones GOF: Patrones JEE, Ejemplo: Observer, Fachada • Patrones de Integración, de Arquitectura Ejemplo: Layers, Model-View-Controller • Antipatrones, Otros: • Técnicas de descomposición funcional • Técnicas de estimación de complejidad • Matrices de Decisión • Pantillas Patrón Arquitectural de capas Composición en lugar de Herencia
  • 26. Diagrama de componentes / deployment
  • 27. Matriz de tecnologías por fila y capa de AutoSeguroWeb Tier Layer Capa Cliente Capa Presentación y Control Capa de Negocio Capa de Integración ó acceso a Datos Sistemas externos APIs / Framewor ks •HTML5 •Bootstrap •Css •Servlet 3.0 •JSP 2.5 •JSON •Spring MVC •WS REST •Clases de Servicio (POJOs) •EHCache •JPA 2.1 + Hibernate 3 •WS REST BD: SQL Sist: WS-REST APIs transversa les N.A. •Logging (SLF4J) •Spring 3.0.3 •JEE 6.0 N.A. Producto Firefox >= 32 Chrome >= 40 IE 10 JBoss 6.0.1 •RDBMS SQLServer Sistema Operativo Cualquiera Oracle Linux 6.0 •Oracle Linux, 5.0 Hardware PC Intel Server •Intel server
  • 28. Ejemplo de cambios a mitad del camino Cambio por mejora de performance Problema: La consulta de Catálogos desde el front es tardada ¿Qué opciones de mejora se tienen? Cambio por necesidad de negocio Cambio: La lógica de Cotización y Contratación se requiere que pueda ser consumida por otros sistemas sin depender del front actual.
  • 29. Diagrama de componentes / deployment Cambio en Diseño original por necesidad de negocio
  • 30. Modelo 4 + 1 vista Buena practica: • Crear una línea base del código • Implementar un Caso de Uso representativo
  • 31. Arquitectura Empresarial ¿Buscas el especificar Arquitectura de un modo formal? • TOGAF es un framework que ayuda a definir como se debe desarrollar la Arquitectura en una organización • Tiene plantillas que puedes usar y adaptar http://www.togaf.info/togafSlides91/TOGAF-V91-Sample-Catalogs-Matrics-Diagrams- v3.pdf
  • 32. Conclusión • El Arquitecto de Software es responsable de elegir, justificar y comunicar las tecnologías mas adecuadas para satisfacer la operación sana del sistema. • Es necesario tener experiencia y otras habilidades además de las habilidades técnicas para lograr el objetivo. • El documento de especificación debe ser oportuno, suficiente y claro para poder usarlo como una guía del desarrollo.
  • 33. Recursos Software Architecture for Developers, Simon Brown http://www.codingthearchitecture.com/ 97 Things Every Software Architect Should Know http://books.google.com.mx/books/about/97_Things_Every_Software_Architect_Shoul.html?id=HDknE jQJkbUC&redir_esc=y Software Design Principles and Guidelines http://ebookily.net/pdf/software-design-principles-and-guidelines-design-principles-3965564.html