El documento trata sobre el tema de la arquitectura de software. Explica que la arquitectura de software proporciona lineamientos y patrones para guiar la construcción de un programa y permitir que los desarrolladores compartan una misma línea de trabajo. También describe los componentes, características e importancia de la arquitectura de software, así como el rol del arquitecto de software.
2. Semana 01
Temas de la clase: Arquitectura de software
• Concepto
• Historia
• Importancia
• Características
• Componentes
• Rol del arquitecto de software
• Ventajas y desventajas
IES WERNHER VON BRAUN 2
3. Objetivo de la clase
Reconocer la estructura e importancia de la arquitectura de software en
la implementación de un proyecto.
IES WERNHER VON BRAUN 3
5. IES WERNHER VON BRAUN 5
“la arquitectura de software son patrones o
lineamientos que ayudan a la construcción de un
programa (aplicación). Estos patrones permiten
tener una guía para los desarrolladores, analistas y
todos los cargos relacionados para lograr cumplir
con los requerimientos de la aplicación.”
6. IES WERNHER VON BRAUN 6
“La arquitectura del software por tanto define
la estructura que debe de tener un software,
las piezas que debemos construir y el modo en
el que se deben de juntar y trabajar entre
ellas. Se define a alto nivel mediante una serie
de patrones y abstracciones que seguir para el
desarrollo del software y para la interacción
entre sus diversas piezas.”
7. IES WERNHER VON BRAUN 7
“La 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.”
9. IES WERNHER VON BRAUN 9
https://www.timetoast.com/timelines/historia-de-la-arquitectura-de-
software-3dc6abaf-5e53-42c5-a2f6-25e14457d856
10. IES WERNHER VON BRAUN 10
La arquitectura de software nos traza un
camino por el cual seguir para lograr cumplir
con los requerimientos de la aplicación, por lo
tanto tenemos que analizar cada uno de estos
requerimientos para definir qué se va a hacer y
cómo se va a hacer, aquí se comienza a definir
temas como servidores, tecnologías, bases de
datos entre otras cosas.
El definir las tecnologías es uno los puntos más
importantes de la arquitectura de software pero
no quiere decir que si se toma una decisión sea
algo definitivo que no se pueda modificar en el
futuro.
11. IES WERNHER VON BRAUN 11
• Uno de los objetivos de la arquitectura de
software es crear una estructura de la
aplicación que sea fácilmente escalable,
que no esté fuertemente acoplada (que
todo dependa de todo, lo que evita hacer
cambios de manera sencilla).
• El objetivo principal de la Arquitectura del
Software es aportar elementos que ayuden
a la toma de decisiones y, al mismo tiempo,
proporcionar conceptos y un lenguaje
común que permitan la comunicación entre
los equipos que participen en un proyecto.
12. IES WERNHER VON BRAUN 12
Una arquitectura de sistema es
una representación de un
sistema en la que hay una
correlación de funciones con
componentes de hardware y
software, una correlación de la
arquitectura de software con la
arquitectura de hardware, e
interacción humana con estos
componentes.
13. IES WERNHER VON BRAUN 13
En resumen, el desarrollo de software
es el proceso de resolver problemas con
el uso de una computadora. En el
mundo moderno, con la cantidad de
problemas y su complejidad cada vez
mayor, el desarrollo de aplicaciones, es
una herramienta para obtener
soluciones precisas, dándole las tareas
repetitivas a la computadora y
logrando así cubrir las necesidades del
usuario.
14. IES WERNHER VON BRAUN 14
Contar con la arquitectura de software
cierra la brecha entre los
desarrolladores, las partes interesadas
y los demás involucrados en el
proyecto, ya que les permite tener un
entendimiento común del proceso.
Esto también representa la
implementación de una visión.
15. IES WERNHER VON BRAUN 15
La arquitectura del software se basa en las
necesidades del cliente. Su diseño requiere
la mayor atención posible con muchos
criterios a considerar, incluyendo, por
ejemplo, ergonomía, flexibilidad, facilidad
de uso o economía.
El objetivo es dar a los usuarios de la
aplicación la mayor satisfacción posible.
Además, el trabajo colaborativo está
ganando más y más seguidores con el
advenimiento de la nube, que amplía aún
más el área de intervención de los
arquitectos de software.
16. IES WERNHER VON BRAUN 16
A partir de ahora, también es
necesario garantizar la seguridad de
los datos de sus clientes frente a las
amenazas de malware y spyware que
inundan la web. Un criterio
completamente diferente que cada
cliente debe exigir a su desarrollador
de aplicaciones.
17. IES WERNHER VON BRAUN 17
1. Requerimientos: En esta etapa se recolecta la
información y se documentan los requerimientos
que influyen en la arquitectura de la aplicación,
por ejemplo que lenguaje se utilizara, que marcos
de trabajo se requerirán, en que especificaciones
de equipos esta destinado a funcionar el sistema o
sistemas.
2. Análisis: En esta etapa se profundiza en los
procesos de negocio que están involucrados en el
sistema, y se procede a generar los casos de uso a
nivel de borrador hasta tener la información
necesaria para cada caso.
18. IES WERNHER VON BRAUN 18
3. Diseño: Es la etapa más crucial, aquí se define el
uso de tecnologías adecuadas para resolver el
problema y no solo porque una tecnología está de
moda.También se tienen en cuenta los patrones de
diseño como por ejemplo MVC (Modelo,Vista,
Controlador) o arquitectura de microservicios,
Directorios de datos.
4. Documentación: Una vez se ha definido el diseño
es necesario comunicarlo de manera eficiente y
eficaz a todos los involucrados, es importante crear
documentación que sirva como referencia a todos
y sea el marco de trabajo para todos, esta parte
incluye el documento Arquitectura General del
sistema.
19. IES WERNHER VON BRAUN 19
5. Desarrollo: En esta etapa los programadores
tienen asignadas tareas especificas y el arquitecto
de software estará probando los diferentes
módulos para poder hacer mejoras, o correcciones
al sistema final.
6. Pruebas: Es importante luego de tener la
documentación evaluar, esto se puede hacer
incluso sin haber hecho una línea de código y ver
con todos los involucrados si hay algo en el diseño
que pueda no funcionar y reformarlo, esta
evaluación se debería hacer posterior teniendo
métricas por ejemplo del rendimiento de la
aplicación y saber si un cambio mejora o no dicho
rendimiento.
20. IES WERNHER VON BRAUN 20
7. Implementación: en esta etapa se realiza el
montar el sistema en producción y evaluar
su comportamiento, verificando qué
funciona correctamente.
Los arquitectos de Software son parte clave de
los proyectos de Software de las compañías,
puede llegar a tener casos donde varios
arquitectos de software trabajan en el
desarrollo de secciones o aplicaciones
especificas que trabajaran en conjunto, con lo
que se tendrá un LíderArquitecto para llevar el
control general del proyecto.
22. IES WERNHER VON BRAUN 22
• El arquitecto de software se encarga de seleccionar qué
tecnología se va a utilizar en la creación de un
determinado software, de realizar continuos procesos
de evaluación para determinar si cumple las
expectativas de los usuarios y de estar abierto a
modificar la arquitectura utilizando para ello el
feedback de otros miembros del equipo o de los
propios usuarios.
• El desarrollador de software, también denominado
analista-programador, es un especialista en
informática capaz de crear los sistemas (paquetes de
software), implementarlos y hacer una puesta a punto
para que puedan ser funcionales, todo ello a través de
determinados lenguajes de programación.
23. IES WERNHER VON BRAUN 23
1. Gestión de los requisitos no funcionales y definición de la
arquitectura de software:
• Los requerimientos no funcionales tienen que ser
específicos, medibles, alcanzables y comprobables, para
poder satisfacerlos (no basta con algo subjetivo como: «el
sistema debe ser rápido»), y además hay que saber
priorizarlos de manera que todos sean tomados en cuenta.
• La definición de la arquitectura se trata de la introducción
de la estructura, directrices, principios y liderazgo de los
aspectos técnicos de un proyecto de software. Por lo tanto
se requiere de una figura dedicada a pensar en estos
aspectos, es decir, alguien tiene que asumir la propiedad
del proceso de definición de la arquitectura y esto es sin
duda, parte de las competencias del Arquitecto de
Software.
24. IES WERNHER VON BRAUN 24
2. Selección de laTecnología:
La selección de la tecnología suele ser un ejercicio
con una serie de desafíos interesantes y en el cual
se debe tomar en cuenta un universo de factores
como el coste, las licencias, la relación con los
proveedores, la estrategia de la tecnología, la
compatibilidad e interoperabilidad, política de
actualizaciones, etc.
Adicionalmente hay que conocer si las tecnologías
funcionan realmente y se adaptan o no a los
requerimientos del software.
El Arquitecto de Software debe asumir la propiedad
del proceso de selección de la tecnología y por
tanto es responsable del riesgo técnico.
25. IES WERNHER VON BRAUN 25
3. Mejora continua:
El Arquitecto de Software debe encargarse
de la mejora continua de la Arquitectura y
a su vez estar abierto a modificarla
utilizando las sugerencias o feedback que
se pueda obtener de otros miembros del
equipo.
4. Facilitador:
Es función del Arquitecto de Software
servir de facilitador para la colaboración
entre estos grupos de interés de manera de
garantizar que la arquitectura se integrará
con éxito en el entorno empresarial.
26. IES WERNHER VON BRAUN 26
5. Líder y Formador:
El Arquitecto de Software debe asumir la
dirección técnica, para asegurar que
todos los aspectos de la arquitectura se
estén implementando de manera
correcta.
De igual manera el Arquitecto de
Software debe proporcionar orientación
técnica y dar apoyo al equipo de
desarrollo; debe estar preparado para
entrenar al equipo en las tecnologías
seleccionadas (Formador) y también debe
estar abierto a sugerencias.
27. IES WERNHER VON BRAUN 27
6. Aseguramiento de la Calidad
Garantizar la calidad es parte fundamental
del rol de un Arquitecto de Software, el cual
debe apoyarse en procesos de integración
continua que utilicen herramientas
automatizadas de análisis de código fuente,
pruebas unitarias y cobertura de código,
para asegurar el cumplimiento de las
normas, políticas y mejores prácticas
establecidas.