Arquitectura de Software.
Ing. Milton E Escobar S
V1. Oct-2022
Arquitectura de Software.
Desarrollar software no es una tarea fácil. Es por ese motivo que muchos proyectos de
software fracasan durante su desarrollo o al obtener sus resultados. Entre esos malos
resultados, encontramos los que costaron mucho más dinero del presupuestado, los
proyectos incompletos y los que no solucionan los problemas como se deberían resolver.
No es fácil alcanzar un buen producto de software debido a la complejidad que envuelve
su proceso de desarrollo. Además de lidiar con la complejidad inherente al problema,
también nos debemos preocupar en como el software resuelve ese problema. Así, el
software debe, además de resolver el problema, resolverlo de la forma esperada.
O en otras palabras: Se espera que, además de su funcionalidad, el producto de software
posea los atributos de calidad esperados. El Diseño de Software puede ser dividido en dos
actividades: diseño de alto-nivel o arquitectural y diseño detallado, y ambas actividades
tienen un papel importante en el ciclo de desarrollo del software
Introducción a la AS
La arquitectura debería expresarse en una convención gráfica o en algún lenguaje
avanzado de alto nivel de abstracción.
Son NECESARIOS Modelos formales para describir una arquitectura de Software.
Los ADLs han sido propuestos como una posible alternativa(Architecture
Description Lenguaje).
Los ADLs se usan para satisfacer requerimientos descriptivos de alto nivel que las
notas basadas en objetos y UML no cumplen satisfactoriamente.
Contar con un ADL le permite al arquitecto razonar sobre propiedades del sistema
con precisión.
Definición de ADL.
Lenguaje que provee características para modelar un sistema de software a nivel
arquitectónico, se enfoca en la descripción de la estructura de la aplicación a alto
nivel, en lugar de la descripción de la implementación de cualquier módulo
específico.
Entidad Consistente en 4 Cs: Componentes, conectores, configuraciones y
restricciones (Wolf 97).
El problema: Los lenguajes formales son difíciles de entender y manejar en
aplicaciones industriales.
Reto: Convertir a UML en un lenguaje suficientemente preciso para especificar una
arquitectura.
Introducción a la AS
Lenguajes ADL
Introducción a la AS
1. Definición de Arquitectura de Software.
Es un conjunto de patrones que proporcionan un marco de referencia necesario
para guiar la construcción de un software, permitiendo a los programadores,
analistas y todo el conjunto de desarrolladores del software compartir una misma
línea de trabajo y cubrir todos los objetivos y restricciones de la aplicación. Es
considerada el nivel más alto en el diseño de la arquitectura de un sistema puesto
que establecen la estructura, funcionamiento e interacción entre las partes del
software.
X No existe una única definición.
“La Arquitectura de Software se refiere a las estructuras de un sistema,
compuestas de elementos con propiedades visibles de forma externa y las
relaciones que existen entre ellos.” Software Engineering Institute (SEI)
“La arquitectura se define como la organización fundamental de un sistema,
encarnada en sus componentes, sus relaciones entre sí y con el entorno, y los
principios que rigen su diseño y evolución”. ANSI/IEEE Std 1471-2000,
Recommended Practice for Architectural Description of Software Intensive
Systems
La arquitectura de software es un concepto abstracto que cada persona lo
interpreta de una forma diferente, dificultando con ello comprender y diseñar
con éxito una arquitectura de software.
X Un arquitecto no es aquella persona que tiene más tiempo en la empresa
o la que conoce todo el sistema, o el que desarrollo la solución.
Introducción a la AS
Conclusión:
La arquitectura de software se centra en la estructura del sistema, los
componentes que lo conforman y la relación que existe entre ellos.
Tarea en clase No1.
Realice una síntesis del articulo propuesto
y su propio concepto de Arquitectura de Sw. Para realizar dicha síntesis
utilice un organizador gráfico.
What Is Your Definition of Software Architecture (cmu.edu)
Arquitectura de Software
2. Rol del Arquitecto de Software.
Existen múltiples definiciones sobre el rol de los arquitectos de software.
X Un arquitecto no es aquella persona que tiene más tiempo en la empresa
o la que conoce todo el sistema, o el que desarrollo la solución.
X No existe una definición de arquitecto transversal a cualquier organización, y
definir un estereotipo de arquitecto que especifique cuáles son sus
responsabilidades y habilidades necesarias dentro de un proyecto.
Arquitecto viene de la palabra griega ἀǏχLjτέljτων(architécton) que define al
director de una construcción.
Arquitectura de Software
2. Rol del Arquitecto de Software.
Los arquitectos están la mayoría del tiempo escuchando los clientes, entendiendo
a profundidad sus necesidades y recursos, investigando y documentando
ordenadamente, creando una visión practica de una estructura y creando un mapa
de la misma.
El arquitecto interviene en favor del cliente, asegurando que el resultado sea
fiel al plan y guiando la visión del resultado entre la tempestad de los cambios
en el diseño, las crisis y las ambigüedades.
Un arquitecto deja de ser un verdadero apoyo al cliente si se encuentra atado a
un conjunto de tecnologías, herramientas o metodologías, restringiendo así las
soluciones disponibles al cliente.
X Un arquitecto es un Arquitecto, no un ingeniero, no un programador, no un
científico, no un webmaster o un director de proyecto.
“El arquitecto construye no desarrolla.”
Arquitectura de Software
2. Fases que definen el papel del Arquitecto de Software(construcción del software).
Prediseño
• Arquitecto escucha y entiende el alcance del proyecto, los puntos claves del
diseño según el cliente, los requisitos y las expectativas.
• Estudia el contexto del proyecto -la empresa entera de la que hace parte el
proyecto.
• Los recursos del cliente son determinados (los financieros y los intelectuales),
y los problemas y necesidades que el cliente desea resolver.
• Identifica las posibles soluciones disponibles usando tecnología y cambios
organizacionales, administrativos o de producto.
• Genera una interacción con el cliente generando una dirección administrativa
estableciéndose presupuesto y cronograma.
Arquitectura de Software
2. Fases que definen el papel del Arquitecto de Software(construcción del software).
Análisis del Dominio.
• El arquitecto se sumerge profundamente en el contexto y documenta el
dominio para el cual el sistema será construido, y aprende el detalle de cada
uno de los requisitos del cliente.
• Los comportamientos deseados del sistema son definidos.
• El arquitecto determina el entorno tecnológico del cliente y alcance de las
interacciones que requiere realizar.
• El glosario y los conceptos claves del dominio son adecuadamente definidos.
Arquitectura de Software
2. Fases que definen el papel del Arquitecto de Software(construcción del software).
Diseño Esquemático.
• El arquitecto prepara diseños de tipo arquitectónico que muestran las
características del dominio y la estructura tecnológica. Se definen los puntos
claves de la interfaz gráfica (la apariencia y sensación del sistema). En este
punto se construyen prototipos si son necesarios. Se estiman los riesgos de la
migración.
Desarrollo del Diseño.
• El arquitecto continúa con la profundización el detalle del tipo de solución a
generar y refina cada vez más los artefactos. Todos los documentos, glosarios y
diseños generados son finalizados en esta etapa, esto implica la muy importante
validación del cliente.
Documentación del proyecto.
• El arquitecto continúa con la profundización el detalle del tipo de solución a
generar y refina cada vez más los artefactos. Todos los documentos, glosarios y
diseños generados son finalizados en esta etapa, esto implica la muy importante
validación del cliente.
Selección y Contratación (staffing).
• El arquitecto acompaña la identificación y selección de los constructores o
desarrolladores concretos del sistema. Para proyectos que son subcontratados,
se solicitan ofertas a los contratistas y potenciales participantes, el arquitecto
toma parte activa en la elección de los oferentes. Los detalles de los costos del
proyecto, las secuencias de trabajo y la firma de los contratos, también son
asistidos por el arquitecto.
Arquitectura de Software
2. Fases que definen el papel del Arquitecto de Software(construcción del software).
Construcción.
La supervisión del arquitecto durante la construcción del producto asegura que la
visión del cliente sea entendida y ejecutada correctamente.
El arquitecto revisa los diseños detallados de la construcción, analiza problemas,
evalúa nuevos requisitos y plantea modificaciones cuando son necesarias.
El arquitecto diseña los cambios aceptados, calcula el impacto global en diseño y
costo, y define la secuencia de cambios que tienen que ser generados, para luego
participar en las actividades de pruebas y revisiones de usuario final para
asegurarse que cumplan con la expectativas del cliente.
Post Construcción.
• El arquitecto acompaña al cliente con la puesta en producción y la migración al
nuevo sistema.
• El arquitecto puede, si así lo desea, vincularse con la capacitación de los
operadores y usuarios del nuevo sistema.
• Posterior a esto, el arquitecto asiste al cliente en temas relacionados con
garantías y aplicación de procedimientos de mantenimiento.
• Y cuando todo ha finalizado el arquitecto y el cliente se reúnen para recordar
las dificultades y los triunfos
Arquitectura de Software
2. Fases que definen el papel del Arquitecto de Software(construcción del software).
Tarea en clase No2.
Realizar infografías de los roles o características del Arquitecto de software. Además
establecer las diferencias entre tres distintos enfoques como por ejemplo según: 1-
Microsoft, 2. Rup, 3. Software Engineering Institute, etc.
Tarea en clase No3.
Realizar una síntesis del documento :El humilde programador
http://rkka21.ru/docs/turing-award/ed1972e.pdf
Arquitectura de Software
2. Características de un Arquitecto Software
• Es un líder técnico. El arquitecto tiene competencias técnicas y de liderazgo, debe
tener la autoridad para tomar decisiones técnicas, ayuda a armar el equipo y a organizar
el trabajo, además constantemente comunica el valor de lo que se está haciendo.
• El arquitecto entiende el proceso de desarrollo de software. El arquitecto debería
tener conocimiento del proceso de desarrollo, ya que este garantiza que todos los
miembros del equipo trabajen de manera coordinada.
• Tiene conocimiento tecnológico, pero no necesariamente experticia profunda.
Dado que la tecnología cambia con cierta frecuencia, es esencial que el arquitecto se
mantenga actualizado con los cambios tecnológicos.
• Tiene competencias de diseño.
• Tiene suficiente competencia de desarrollo como para comunicarse con el equipo.
• Es un buen comunicador.
• Toma decisiones.
• Entiende la política de la empresa.
• Es un negociador, debe explicar a stakeholders del proyecto las consecuencias de
sus opciones o alternativas de arquitectura.
Arquitectura de Software
Aspectos importantes:
El rol del arquitecto es un rol crítico en los proyectos, se focaliza en la calidad de
servicio y lidera el proceso de definición y la implementación de la arquitectura.
• El arquitecto reutiliza implementaciones de arquitecturas exitosas, frameworks y
patrones de diseño.
• El arquitecto de software no es un diseñador.
• El arquitecto reutiliza implementaciones de arquitecturas exitosas, frameworks y
patrones de diseño.
• A diferencia de un programador, el Arquitecto de Software debe dominar la
mayor cantidad de tecnologías de software y prácticas de diseño, para así poder
tomar decisiones adecuadas para garantizar el mejor desempeño, reuso, robustez,
portabilidad, flexibilidad, escalabilidad y mantenibilidad de las aplicaciones. Estas
decisiones sobre la estructura y dinámica de la aplicación son plasmadas en una
notación formal estandarizada como lo es UML.
• El rol de los arquitectos suele comprender las tareas de: definición de las vistas de
la arquitectura de una aplicación, dar soporte técnico-tecnológico a
desarrolladores, clientes y expertos en negocios, conceptualizar y experimentar
con distintos enfoques arquitectónicos, crear documentos de modelos y
componentes y especificaciones de interfaces, validar la arquitectura contra
requerimientos, suposiciones y además tener una dosis de estrategia y política, o
sea, ser, en parte, un consultor.
Arquitectura de Software
La importancia de la arquitectura de software
1.Creamos una base sólida para el proyecto.
2.Conseguiremos que la plataforma creada sea escalable.
3.Aumenta el rendimiento de la plataforma.
4.Reduce considerablemente los costes y evita
duplicaciones del código.
5.Incrementa la calidad de la plataforma.
6.Minimizar los recursos humanos necesarios para
construir y mantener el sistema.
7.Reduce el costo de realizar cambios en el
software(buena arquitectura)
8.Reduce el daño en productividad (ej. Daños al cambiar
una función que afecta a varias clases)
Costo x línea
de código
Versiones del Software
• Nota: Al tener una mala arquitectura la misma línea de código se vuelve mas cara
poderla realizar. Afectando la rentabilidad de la empresa de Software.
Arquitectura de Software
´Cual es el nivel de pago por experiencia para arquitectos de
Software?
Según diferentes encuestas realizadas a personas que trabajan en el área de IT, los
arquitectos de software ganan entre un 50% a 100% más que un programador
normal en promedio, si bien el sueldo varía según la región, se mantiene una
correlación entre lo que gana un programador a un arquitecto.
La gráfica anterior muestra los sueldos promedios de un arquitecto de software en
dólares, donde se puede observar que un arquitecto obtiene ingresos superiores a los
88k desde el primer año, los cuales incrementan de forma constante a medida que los
años de experiencia aumenta.
Convertirse en arquitecto de software es una super inversión, tiene el gran reto de
que no es un camino fácil, pues no existe actualmente en el mercado ninguna guía
que te enseñe o te lleve de la mano hacia el camino de la arquitectura de software.
Arquitectura de Software
La importancia de la arquitectura de software
“LA UNICA MANERA DE HACERLO RÁPIDO , ES HACERLO BIEN ”
Patrones de Diseño.
1. Definición de Arquitectura de Software
II UNIDAD
1. MODELOS DE ARQUITECTURA DEL SOFTWARE
existen dos tipos de patrones, los patrones de diseño y
los patrones arquitectónicos, los cuales no son lo mismo
III UNIDAD
1. Definición de Arquitectura de Software
existen dos tipos de patrones, los patrones de diseño y
los patrones arquitectónicos, los cuales no son lo mismo
Cloud Computing
1. Definición de Arquitectura de Software
existen dos tipos de patrones, los patrones de diseño y
los patrones arquitectónicos, los cuales no son lo mismo
Arq. Cloud Computing
1. Definición de Arquitectura de Software
existen dos tipos de patrones, los patrones de diseño y
los patrones arquitectónicos, los cuales no son lo mismo
INICIO 20AA
Tablero
Título
Lorem ipsum dolor sit
Lorem ipsum dolor sit
amet, consectetur
amet, consectetur
adipiscing elit
adipiscing elit
Lorem ipsum dolor sit
15 amet, consectetur
adipiscing elit.
Lorum
QA Lorem ipsum dolor sit
Ipsum amet, consectetur
adipiscing elit
Lorem ipsum dolor sit
BETA
amet, consectetur
adipiscing elit
20
billones
23 billones
5 billones Lorem ipsum dolor sit
amet, consectetur
adipiscing elit
40 %60 %
FIN 20AA
Lorem ipsum dolor sit 20 %
amet, consectetur
adipiscing elit
LAMNA
Fuentes de información ** Nunc viverra imperdiet enim. Fusce est. *** Lorem ipsum dolor sit amet, consectetuer
* Lorem ipsum dolor sit amet, consectetuer Vivamus a tellus. Pellentesque habitant morbi adipiscing elit. Maecenas porttitor congue
www.lamnahealtcare.com
adipiscing elit. Maecenas porttitor congue tristique senectus et netus et malesuada fames massa. Fusce posuere, magna sed pulvinar info@lamnahealtcare.com
massa. Fusce posuere, magna sed pulvinar ac turpis egestas. Proin pharetra nonummy ultricies, purus lectus malesuada libero, sit
ultricies, purus lectus malesuada libero, sit. pede. Mauris et orci. amet. 208 555 0100
Empresa
sanitaria
INICIO 20AA
Tablero
Título
Lorem ipsum dolor sit
Lorem ipsum dolor sit
amet, consectetur
amet, consectetur
adipiscing elit
adipiscing elit
Lorem ipsum dolor sit
15 amet, consectetur
adipiscing elit.
Lorum
QA Lorem ipsum dolor sit
Ipsum amet, consectetur
adipiscing elit
Lorem ipsum dolor sit
BETA
amet, consectetur
adipiscing elit
20
billones
23 billones
5 billones Lorem ipsum dolor sit
amet, consectetur
adipiscing elit
40 %60 %
FIN 20AA
Lorem ipsum dolor sit 20 %
amet, consectetur
adipiscing elit
LAMNA
Fuentes de información ** Nunc viverra imperdiet enim. Fusce est. *** Lorem ipsum dolor sit amet, consectetuer
* Lorem ipsum dolor sit amet, consectetuer Vivamus a tellus. Pellentesque habitant morbi adipiscing elit. Maecenas porttitor congue
www.lamnahealtcare.com
adipiscing elit. Maecenas porttitor congue tristique senectus et netus et malesuada fames massa. Fusce posuere, magna sed pulvinar info@lamnahealtcare.com
massa. Fusce posuere, magna sed pulvinar ac turpis egestas. Proin pharetra nonummy ultricies, purus lectus malesuada libero, sit
ultricies, purus lectus malesuada libero, sit. pede. Mauris et orci. amet. 208 555 0100
Empresa
sanitaria