Está en la página 1de 21

Introducción a la

arquitectura de
software
D I S EÑO Y CO N ST RU C C I Ó N D E P RO D U C TO S D E S O F T WA RE
CR I STI AN D. AT E HORTÚA B.
2 0 1 7- 01
El ciclo de vida del desarrollo
de software
Análisis de
requisitos

Operación y
Diseño
mantenimiento

Pruebas y
Construcción
validación
Diseño arquitectónico del
software
Establecimiento de una estructura básica para
el sistema.
Se pretende identificar los principales
componentes del sistema y la comunicación
entre estos.
Permite conocer si el sistema podrá cumplir
reglas del negocio y los requisitos críticos.
Toda esta etapa es llevada a cabo por el
arquitecto de software.
Implementación

Diseño
Decisiones del diseño
¿Qué estilo ¿Cómo
¿Aplicación web o
arquitectónico es documentar la
stand-alone?
apropiado para el arquitectura del
¿Ambas?
sistema? sistema?
¿Cómo sincronizar
¿Cómo responder a estas
¿Qué lenguaje de
la información de
los pagos?¿Cómo estructurar
programación y almacenar los
preguntas? ¿Cómo
usar? ¿Cómo lucirán las
se
datos del sistema?
autenticará el
interfaces del
La clave es la experiencia.
sistema?usuario en el
sistema?
¿Hay patrones de ¿Cómo se ¿Cómo sacar la
arquitectura que descompondrán los información de la
se adapten? unidades estructurales temperatura de la
¿Frameworks? del sistema? caldera?
Resultados del diseño
Documentos de diseño arquitectónico con texto
descriptivo asociado.
Por lo general indica como se divide el sistema en
subsistemas y como se divide cada subsistema en
módulos.
Puede desarrollarse: utilizando notación UML,
diagramas de procesos, interfaces, diagrama de
robustez de Jacobson, diagramas de secuencias.
Ejemplos de
resultados de
diseño
Patrones de software
Según la RAE un patrón es un modelo que
sirve de muestra para sacar otra cosa igual.
Un patrón de software busca resolver
problemas recurrentes.
Sirven para evitar reinventar la rueda.
Ventajas: Ya están probados, son
reutilizables, reducen el esfuerzo y las
líneas de código.
Patrones de software
Se dividen en:
Patrones de arquitectura
◦ Definen una manera estructural de como se
creará o trabajará el sistema (a nivel de
subsistemas o módulos y sus relaciones).
Patrones de diseño:
◦ Son soluciones reutilizables generales a
problemas que ocurren comúnmente en el
desarrollo de software en contextos similares.
Frameworks
Es un marco (un esqueleto, un patrón) para el
desarrollo y/o la implementación de una aplicación. Se
rige por un patrón de arquitectura pre-establecido.
Ventajas:
◦ Mayor seguridad, agrupa prácticas y criterios para solucionar
problemas comunes.
◦ Reutilización de código (no hay que reinventar la rueda).
◦ Acceso a tutoriales y documentación sobre como crear
aplicaciones.
◦ El programador no necesita plantearse una estructura global
de la aplicación, sino que el framework le proporciona un
esqueleto que hay que "rellenar".
Frameworks
Poseen un árbol de carpetas
estructurado.
Poseen patrones de diseño y de
arquitectura integrados.
Poseen componentes y librerías pre-
instaladas que facilitan la
programación.
Evolucionan continuamente para
adaptarse a las nuevas necesidad o
corregir errores de versiones
anteriores.
Frameworks verticales
Son útiles en el desarrollo de
aplicaciones de cierto dominio.
Proveen funcionalidades de
este dominio implementadas
desde el principio.
Están compuestos de múltiples
módulos apropiados para el
dominio que se trabaja
Frameworks horizontales
Útiles en el desarrollo de
aplicaciones de cualquier
dominio.
No proveen
funcionalidades
implementadas desde el
principio.
Cuentan con grandes
comunidades y gran
cantidad de
documentación.
¿Qué framework escoger?
La mayoría comparten los
mismos componentes para Yii - Error Handling
Yii - URL Management
el desarrollo de Yii - Data Caching

aplicaciones. Codeigniter - Error Handling


Codeigniter - URI Routing
Codeigniter - Caching

Ruby on rails - Exception Handling


Analizar la comunidad: Ruby on rails - Rails routes
Ruby on rails - Caching
actualizaciones,
componentes disponibles.
Arquitectura de una aplicación
web
Tarea para el viernes
Traer instalado uno de los siguientes:
◦ WampServer (si tienen Windows sugiero este)
◦ XAMPP
Si instalan WampServer instalar también vc_redist x86/64
(dependiendo de si eligen wamp x86 o x64)
Tener instalado un editor de textos o un entorno de
desarrollo integrado (IDE):
◦ Editores de texto (si optan por un editor de texto, yo recomendaría
uno de los dos primeros): SublimeText, Code, Notepad++, Bloc de
Notas, etc.
◦ IDE: eclipse PHP, Netbeans PHP (seleccionar la opción ‘PHP' o la
opción 'All‘), etc.