Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Semana 1
1. Introducción al curso, presentación del silabo y acuerdos.
Semana 2
1. Etapas clasicas de la arquitectura de software
Análisis de requerimientos
Entender que se construirá, cubrir los requerimientos de negocios, de usuarios,
funcionales y no funcionales, dando como resultado una compresión muy clara a
resolver.
Diseño de la solución
Propuesta a nivel diseño de solución, se puede trabajar en conjunto con un analista para
plantear una posible solución, en modelo, documentación, la finalidad es un detalle de
solución.
Desarrollo y evaluación
La etapa en la que desarrollador se construye el Software, se debe contar con el set de
requerimientos necesarios.
Despliegue
La fase de operaciones, se requiere la infraestructura, roles de operación quienes se
asegurarán de llevar el producto a producción (a disponibilidad para el usuario final)
Mantenimiento y Evolución
Dependen nuevamente de regresar a las fases de desarrollo y despliegue, en esta etapa
se está atento a la detención de errores o mejoras simples, hasta llegar al producto final.
J.A.G.H Página 1
Teoría
Arquitectura de Software Empresarial IS-602
El proceso de desarrollo tradicional tiene etapas muy marcadas, que tienen entradas,
procesos y salidas que funcionan como entradas de la siguiente etapa.
Desarrollo de etapas:
Análisis de requerimientos: Todo nace de un disparador que nos crea la necesidad de
crear un artefacto o un sistema. Necesitamos entender cuál es el problema que
queremos resolver. Hay requerimientos de negocio, requerimientos funcionales,
requerimientos no funcionales. Al terminar esta etapa debemos tener una comprensión
bastante clara del problema que vamos a resolver.
Diseño de la solución: Análisis profundo de los problemas para trabajar en conjunto y
plantear posibles soluciones. El resultado de esto debe ser el detalle de la solución, a
través de requerimientos, modelado (UML), documentación. Resuelve preguntas tales
como:
¿Cómo va el usuario a utilizar la aplicación?
¿Como se va a implementar la aplicación en producción y como será esto
administrado?
¿Cuáles son los atributos requeridos por la aplicación? (rendimiento, seguridad,
concurrencia, internacionalización, configuración)
¿Cómo se puede diseñar la aplicación para que sea mantenible y flexible con el
paso del tiempo?
¿Cuáles son las tendencias a nivel de arquitectura que pueden afectar la
aplicación actualmente o una vez que ha sido implantada?
¿Cuáles son las partes fundamentales de la arquitectura que representan el
riesgo más grande si se hacen mal?
¿Cuáles son los principales supuestos y cómo van a ser probados?
¿Cuáles son las partes de la arquitectura que tienen más probabilidad de
cambiar?
¿Qué condiciones pueden llevar a que se tenga que refactorizar el diseño
realizado?
J.A.G.H PÁGINA 2
Teoría
Arquitectura de Software Empresarial IS-602
Los problemas accidentales nos traen ganancias cuando los resolvemos, incluso algunos
son solucionables con al alguna libreria, api, etc. Lo verdaderamente importante es
resolver los problemas esenciales.
Como solucionar dificultades esenciales:
Lo complejo de un desarrollo es lo esencial y no lo accidental. No hay ninguna bala de
plata que solucione el problema esencial del desarrollo de software. Para ello nos dan 4
formas de resolver las dificultades esenciales:
• No desarrollar: siempre que podamos primero ver si el problema se puede
solucionar con un software ya existente, con algo de open source, servicios,
integraciones y soluciones pequeñas que solucionen parte del probela etc.
• Proptotypado rapido: son la evolución de las metodologías agiles, la idea es
obtener e fedback lo mas rapido posible de si estamos resolviendo el problema
correcto. Para eso hay que ir evolucionando en pasos muy pequeños y siempre
obteniendo feedback. EL FEEBACK ES LA HERRAMIENTA DE DESARROLLO MAS
IMPORTANTE DENTRO DEL DESARROLLO DE SOFTWARE MODERNO.
• Desarrollo evolutivo: esta relacionado al tipiado rapido, consta de ir
desarrollando en pasos pequeños e ir evolucionando en ese sentido.
• Grandes diseñadores: personas que tengan la capacidad de diseñar una
solucion simple y que resuleva el problema de la mejor forma y con la mejor
calidad.
3. Roles
Metodología tradicional
Experto del dominio: Experto en necesidades de los requerimientos
Analista: Persona responsable a definir el problema y buscar la solución
Sysadmin(administrador del sistema): Encargado de toda la operación del
sistema
Equipos de desarrollos: Desarrolladores encargados de asegurar la calidad del
producto, se dividen en muchas áreas, QA, Tester, Desarrolladores, Arquitectos.
Gestor de proyectos: Administrador general de todo el proceso de desarrollo
J.A.G.H PÁGINA 4
Teoría
Arquitectura de Software Empresarial IS-602
Metodología ágil
Partes interesadas/stakeholders: Terceros expertos en el área del producto.
Dueño del producto: El cliente que conoce su producto y sabe sus problemas, él
puede realizas las historias y determinar cuál sería el mejor camino para priorizar
por etapas soluciones.
DevOps: Conecta el desarrollo y las operaciones de infraestructura
Equipos de desarrollos: Desarrolladores encargados de asegurar la calidad del
producto, los equipos son autogestionados para realizar ellos mismo dichas
funciones.
Facilitador: Administrador general del producto, generalmente se encuentra muy
atento a los nuevos cambios del día al día ya que irá cambiando todo el tiempo.
Semana 3
1. ¿Qué es arquitectura de software?
La arquitectura de software modela elementos de software, sus propiedades
visibles, etc. Es considerada un conjunto de desiciones princicpales de diseño para
llegar a un resultado de calidad en el sistema. La arquitectura puede emerger de
un equipo autogestionado o de un arquitecto externo, y está claramente
influenciada según el marco de referencia en el que se trabaje.
J.A.G.H PÁGINA 5
Teoría
Arquitectura de Software Empresarial IS-602
2. Ley de conway
“Las organizaciones que diseñan software están limitadas a producir diseños que
son copias de las estructuras de comunicación de estas organizaciones”
Osea que, una organización compleja y burocrática solo puede producir sistemas
complejos y burocráticos
La ley de Conway, explica que los diseño de software se dan de la misma manera
que se estructura la organización.
Es decir, Dos módulos o sistemas no pueden comunicarse entre si, a menos que
la comunicación de los lideres de ambos sistemas sea mutua.
Esto se refleja en la estructura de la interfaz diseñada.
J.A.G.H PÁGINA 6
Teoría
Arquitectura de Software Empresarial IS-602
• Que el sistema pueda ser modularizado y cada una destas partes pueda
ser probado de forma fácil (QA).
4. Arquitectura y metodologías
Metodologías Tradicionales: El arquitecto diseña una solución basada en los
Requerimientos, Restricciones y Riesgos. De este diseño resulta un Modelo y una
Documentación respectiva a su Implementación. Durante esta etapa de Diseño no
hay Implementación de Software.
J.A.G.H PÁGINA 7
Teoría
Arquitectura de Software Empresarial IS-602
Semana 4
1. Entender el problema
La parte más importante de entender el problema es: separar la comprensión del
problema de la propuesta de solución, si no se entiende la diferencia entre estos
dos puntos se tiende a solucionar problemas inexistentes y a hacer
sobreingeniería.
Espacio del problema:
Detalla ¿qué es lo que se va a resolver? (y qué no se va a resolver) sin entrar en
detalles del “cómo” (análisis del problema).
El espacio del problema nos ayuda a entender que es lo que vamos a resolver y
exactamente como imaginamos como esto va agregar un valor a nuestros usuarios
sin entrar en detalle de cómo lo va a resolver el sistema.
• Idea: ¿Qué queremos resolver?
• Criterios de éxito: ¿Cómo identificamos si estamos resolviendo el
problema?
• Historias de usuario: Supuestos de historias de lo que va a ganar el usuario
al utilizar la solución usando las características del problema a resolver.
Espacio de la solución:
Brinda el detalle del ¿“cómo” se va a resolver?, reflejando los detalles del
problema detectado y evitando resolver problemas que no se quiere o necesita
resolver (detalles técnicos).
Se refleja en el espacio del problema y trata de resolverlo teniendo en cuenta
todos los detalles técnicos necesarios.
Consta de:
Diseño: todo lo referente a la planificación del software, desde diseño UI, UX hasta
diseño de sistemas
Desarrollo: escribir el código, configuraciones y contrataciones de servicios
Evaluación: medir la eficiencia y eficacia del software frente al problema
Criterios de aceptación: medir el impacto del software, no importa lo bueno que
sea el problema si los usuarios no lo usan o no le ven uso
J.A.G.H PÁGINA 8
Teoría
Arquitectura de Software Empresarial IS-602
2. Requerimientos
Los dividimos en 2 grandes grupos: requerimientos del producto (los que vienen
fijados por las partes interesadas) y los requeremientos de proyecto (fechas de
entregas, planes, disponibilidad de recursos humanos, etc).
Requerimiento de producto:
Los separamos en tres capas: negocio, usuario y funcional
Negocio: reglas de negocios alimentadas por los requerimientos del mismo.
Ejemplo si quiero conectar a personas que venden con personas que compran en
un proyecto de market_place, el sistema deberia tener la posibilidad de que los
usuarios puedan subir artículos.
Usuario: tiene que ver con las funcionalidades que va a requerir el usuario del
sistema. Siguiendo con el ejemplo del Market-place
sería que el usuario tuviera un panel de control y pueda autogestionarse la cuenta.
Funcional: ¿qué cosas tienen que pasar operativamente? Ejempo que el sistema
pueda cobrar a una tarjeta de credito luego de concretar una venta.
Requerimientos significativos para la arquitectura:
Agrupan cualquier tipo de requerimiento que afecten a la hora de diseñar la
arquitectura correcta.
Requerimiento de proyecto:
Recursos – Capacitación – Certificaciones – Documentación de usuario –
Infraestructura – Licencias – Plan de despliegue – Plan de transición – Acuerdos de
servicio
J.A.G.H PÁGINA 9
Teoría
Arquitectura de Software Empresarial IS-602
3. Riesgos
Describir el riesgo
Usar escenarios de fracaso que sean medibles y accionables.
Ejemplo:
“En situaciones de carga pico, los clientes experimentan latencias mayores a
cinco segundos.”
“Un atacante podría obtener información confidencial a través de un Ataque de
intermediario (Man in the Middle).”
J.A.G.H PÁGINA 10
Teoría
Arquitectura de Software Empresarial IS-602
4. Restricciones
“Una restricción limita las opciones de diseño o de implementación disponibles al
desarrollador.”
Partes interesadas (Stakeholders)
Limitaciones quizás que tengan que ver con su ecosistema o contexto de negocio,
limitaciones de tipo de regulaciones o cuestiones legales.
Integraciones con otros sistemas
Si vamos a comunicarnos con un sistema por HTTP necesitamos tener internet,
eso nos va a limitar en el ciclo de despliegue, como ejemplo.
Ciclo de vida del producto
Un ejemplo común es que a medida que evoluciona la aplicación el modelo de
datos es más difícil de cambiar
Semana 5
1. Panorama arquitectonico
Hay muchas librerías, muchos frameworks y conocimiento arquitectónico
implícito en las comunidades. Por ejemplo, si hablamos de palabras como MVC o
FLUX (con React) estamos hablando de arquitectura, sin embargo, esta implícito
dentro del uso de una tecnología específica, y de repente si hablamos de FLUX
estando en Java o C# no tiene ningún sentido, ya que no es una arquitectura que
se suele encontrar en esa tecnología, sin embargo arquitectónicamente tiene el
mismo valor y podría ser implementado en otra tecnología. Asi también, hay
decisiones arquitectónicas tales como si empezar un proyecto con un monolito o
iniciarlo con una estructura de microservicio, que se dan por sentado que
cualquier cosa seria de mucho mas valor iniciarlo como un microservicio ¿Por qué?
Puede ser porque es la tendencia, porque es lo que se da más fácil para el equipo
de desarrollo o porque las herramientas mas modernas de hoy están orientados a
microservicios, sin embargo, falta un análisis más profundo de que es lo que define
ese estilo o patrón de arquitectura y cuáles son los payloads o sacrificios que
J.A.G.H PÁGINA 11
Teoría
Arquitectura de Software Empresarial IS-602
estamos pagando por usarlos y cuáles son los beneficios que esperamos que
traigan.
Ningún patrón tiene solo beneficios, cuando hablábamos de que no hay balas de
plata, recordemos que ninguno de estos patrones ni estilos nos va a solucionar
todos los softwares, siempre hay beneficios y consecuencias de las decisiones de
diseño que tomamos.
J.A.G.H PÁGINA 12
Teoría
Arquitectura de Software Empresarial IS-602
J.A.G.H PÁGINA 13
Teoría
Arquitectura de Software Empresarial IS-602
Tubos y Filtros:
Es un String o un flujo de datos continuo, en donde cada aplicación recibe esos
datos. los procesa. y los envía como salida a otra aplicación o quizás. ya hasta al
final de la ejecución.
J.A.G.H PÁGINA 14
Teoría
Arquitectura de Software Empresarial IS-602
Invocación explícita:
Se tienen componentes desarrollados individualmente pero que todos se conocen
entre sí, dichos componentes tiene que publicar que via de comunicación existirá
para comunicarse entre ellos y a que se dedica cada uno.
6. Comparando estilos
Estilos monolíticos
Estilos donde se despliegan un artefacto de software
J.A.G.H PÁGINA 15
Teoría
Arquitectura de Software Empresarial IS-602
Estilos distribuidos
Componentes que luego de ser desplegados se conectan de alguna forma.
J.A.G.H PÁGINA 16
Teoría
Arquitectura de Software Empresarial IS-602
J.A.G.H PÁGINA 17