ARQUITECTURA DE
SOFTWARE
HISTORIA
■ Inicios en los años 1960 basado en mainframes.
■ Sistemas basados en arquitectura monolítica.
■ Ventajas
– Fáciles de desplegar.
– Fáciles desarrollar.
– Fáciles desplegar.
– Desarrollo centralizado.
– Depuración completa.
– Pruebas y seguimiento de errores en un solo lugar.
– Fácil incorporación de nuevos miembros del equipo.
– Dificultad para actualizar una aplicación.
– Falta de flexibilidad.
– No se puede trabajar en distintos ambientes.
– Falta de flexibilidad – no se puede adoptar un nuevo tipo de tecnología.
■ Auge de Microservicios y contenedores(año 2010).
Desventajas
Conceptos básicos
■ Arquitectura de software: Es la organización del software con todos los componentes
están relacionados para cumplir un objetivo en especifico.
■ Es un concepto que se refiere a la planificación fundamentada en patrones, modelos y
abstracciones teóricas, cuando es necesario desarrollar un proyecto de software con
algún grado de complejidad. Es el paso previo a la implementación.
■ En la arquitectura de software se cuentan con patrones, que son soluciones
reutilizables y generales para resolver problemas repetitivos en la ingeniería del
software, en un contexto específico. Se puede ver cierta similitud con los patrones de
programación, pero en este caso, más dirigidos hacia una estructura de nivel superior
y genérica.
CICLOS DE DESARROLLO DE SISTEMAS
1.- Identificaci
ó
n de los problemas,
oportunidades y objetivos.
2.- Determinaci
ó
n de los requerimientos
humanos de informaci
ó
n.
3.- An
á
lisis de las necesidades
del sistema.
4.- Dise
ñ
o del sistema recomendado.
5.- Desarrollo y documentaci
ó
n del
software.
6.- Prueba y mantenimiento del sistema.
7.-Implementaci
ó
n y
evaluación
del sistema.
Identificaci
ó
n de los problemas,
oportunidades y objetivos
■ Un analista se encarga de identificar las tres fases:
■ Problemas: Identificar de manera correcta el problema para evitar el desperdicio de tiempo al momento de
plantear las correcciones.
■ Oportunidades: Aprovechar la empresa puede tener una ventaja competitiva, estableciendo un estándar en la
industria.
■ Objetivos: Colaborar con los objetivos de la empresa mediante los sistemas de información.
■ Personas involucradas.
■ Usuarios.
■ Analista.
■ Administradores de sistemas.
■ Resultado:
■ Presentación de un informe de viabilidad - contiene la definición del problema y los objetivos.
Determinaci
ó
n de los requerimientos
humanos de informaci
ó
n
■ Un analista empleara diferentes métodos para identificar los requerimientos.
■ Entrevistas.
■ Muestreos.
■ Investigación de datos duros.
■ Preguntas relacionadas con la interacción humano - computadora.
■ ¿Como puede diseñarse el nuevo sistema para que sea fácil de usar, aprender y recordar?.
■ ¿Como puede el sistema ser agradable o incluso divertido de usar?.
■ Personas involucradas:
■ Analista, usuarios, gerentes y trabajadores de operaciones.
■ El analista debe conocer el funcionamiento total de la empresa para poder brindar mejores ideas al
momento de diseñar el nuevo sistema.
Análisis de las necesidades del
sistema
■ Un analista empleara diferentes métodos para realizar un análisis de las
necesidades.
■ Diagrama de flujo de datos(DFD).
■ Agregar un diccionario de datos.
■ El analista debe estudiar las decisiones estructuradas mediante un árbol de
decisiones, tablas de decisión.
■ El resultado en el proceso de SDLC (Software Development Life Cicle) entregar
una propuesta de los usuarios y la capacidad de uso de los sistemas actuales, se
incluye análisis costo beneficio de las alternativas.
Análisis de las necesidades del
sistema
Practica: Investigar que es una tabla de decisión y
realizar un ejemplo para su explicación.
Diseño del sistema recomendado
■ Un analista empleara toda la información recolectada para realizar un diseño de propuesta y debe
presentar lo siguiente.
■ Ejemplos de interfaces.
■ Diseño de bases de datos.
■ Controles y procedimientos de respaldo para proteger el sistema.
■ El objetivo es llegar a diseñar la HCI(Human Computer Interaction)
■ Se puede incluir varios profesionales para mejorar la experiencia de usuario.
■ Diseñadores de interfaz.
■ Ingenieros de usabilidad.
■ Psicólogos cognitivos.
Desarrollo y documentación de
software
■ Un analista trabaja directamente con los programadores para desarrollar el
software original requerido.
■ Durante el proceso el analista debe elaborar la documentación en conjunto con
los usuarios, la misma debe ser lo mas efectiva posible para resolver todas las
dudas de los usuarios, convirtiéndose en una guía practica del uso.
■ Los programadores desempeñan un rol calve ya que diseñan codifican y
resuelven errores sintácticos de los programas de computadora.
Desarrollo y documentación de
software
Preguntas y conocimientos básicos
■ ¿Que son los microservicios?
■ ¿Porque es útil implementar un desarrollo segmentado en microservicios?
■ ¿Que es DevOps y como funciona?
Roles en Desarrollo de Software
■ Arquitecto de software:
■ Realizar los diseños de solución, y contar con los conocimientos técnicos
en los patrones de diseño.
■ Supervisar la implementación.
■ Toma de decisiones.
■ Desarrollador de Software:
■ Comprensión de los principios de desarrollo de software.
■ Conocer los lenguajes de programación.
■ Escribir código.
■ Implementar funciones, corregir errores.
Roles en Desarrollo de Software
■ Ingeniero de pruebas :
■ Escribir y generar los planes de pruebas.
■ Garantizar la calidad del sistema.
■ Capacidad para crear planes de pruebas efectivos.
■ Gestor de proyecto:
■ Asegurar que se cumpla los plazos y presupuestos.
■ Coordinar y supervisar el proyecto.
■ Toma de decisiones.
Roles en Desarrollo de Software
■ Diseñador de interfaz de Usuario(UX/UI) :
■ Diseñar interfaz eficaz y amigable con el usuario.
■ Conocimientos con diseño grafico.
■ Especialista de seguridad de la Información :
■ Evaluar y mitigar riesgos de seguridad.
■ Garantizar la protección de la información del usuario.
■ Conocimientos en manejo de riesgos.
Tipos de Arquitectura de Software
■ Monolitica:
■ Aplicación unica y completa en una sola estructura de software.
■ Cliente - Servidor:
■ Divide la aplicación en dos partes cliente(Interfaz de usuario) y servidor
(lógica de la aplicación y base de datos).
■ Arquitectura en capas:
■ Divide la arquitectura de la siguiente manera:
■ Interfaz de usuario.
■ Lógica de negocio.
■ Capa de datos.
Tipos de Arquitectura de Software
■ Microservicios:
■ Divide la arquitectura en servicios independientes y pequeños que se
ejecutan en su propio proceso y se comunican mediante APIs.
■ Arquitectura orientada a servicios(SOA):
■ Organiza la aplicación como un conjunto de servicios interconectados que
pueden ser reutilizados para necesidades especificas.
■ Arquitectura sin servidor:
■ Desarrolla aplicaciones sin preocuparse de la infraestructura ya que la nube
provee automáticamente los recursos necesarios:
Tipos de Arquitectura de Software
■ Arquitectura orientada a eventos:
■ Es un tipo de arquitectura que reacciona algún tipo de evento en especifico(Detección de
eventos).
■ Arquitectura Peer to Peer:
■ Cada nodo mantiene comportamientos y responsabilidades similares y se comparte los
recursos entre si, es decir entre cliente y servidor.
■ Descentralización.
■ Eficiencia en la distribución.
■ Mayor disponibilidad.
■ Desafios:
■ Seguridad.
■ Gestión de recursos.
Diseño por Niveles de Abstracción
■ Permite generar sistemas separados por capas y ayuda para que cada nivel represente un
grado de abstracción, en donde se proporciona una interfaz clara para cada capa.
■ Nivel 1: Requisitos y especificaciones:
■ Se centra en documentar todo lo relacionado con los requisitos del sistema.
■ Artefactos : Casos de uso, Diagramas.
■ Nivel 2: Arquitectura:
■ Se define como la arquitectura a alto nivel.
■ Estructura de los componentes y interacciones.
■ Nivel 3: Diseñó detallado:
■ Desglose de la arquitectura en componentes mas pequeños y detallados.
■ Artefactos: Diagramas de clases, diagramas de secuencia, especificaciones de
interfaces.
Diseño por Niveles de Abstracción
■ Nivel 4: Implementación:
■ Traducción del código en un sistema funcional.
■ Artefactos: Configuraciones, scripts, código fuente.
■ Nivel 5: Pruebas:
■ Verificación de la funcionalidad del sistema y que se garantirse el
cumplimiento de los objetivos establecidos.
■ Artefactos: set de pruebas, resultados de las pruebas.
■ Nivel 6: Integración:
■ Combinación de componentes individuales para su funcionamiento.
■ Artefacto: Diagramas de despliegue.
Diseño por Niveles de Abstracción
■ Nivel 7: Despliegue:
■ Implementación en un entorno de producción.
■ Artefactos: Planes de implementación.
■ Nivel 8: Operación y Mantenimiento:
■ Estabilización y mantenimiento del sistema en producción.
■ Artefactos: Informes de mantenimiento.
Diseño por Niveles de Abstracción
■ Beneficios:
■ Modularidad.
■ Entendimiento Gradual.
■ Reutilización.
■ Colaboración.

Breve Introducción a la Arquitectura de software

  • 1.
  • 2.
    HISTORIA ■ Inicios enlos años 1960 basado en mainframes. ■ Sistemas basados en arquitectura monolítica. ■ Ventajas – Fáciles de desplegar. – Fáciles desarrollar. – Fáciles desplegar. – Desarrollo centralizado. – Depuración completa. – Pruebas y seguimiento de errores en un solo lugar. – Fácil incorporación de nuevos miembros del equipo.
  • 3.
    – Dificultad paraactualizar una aplicación. – Falta de flexibilidad. – No se puede trabajar en distintos ambientes. – Falta de flexibilidad – no se puede adoptar un nuevo tipo de tecnología. ■ Auge de Microservicios y contenedores(año 2010). Desventajas
  • 5.
    Conceptos básicos ■ Arquitecturade software: Es la organización del software con todos los componentes están relacionados para cumplir un objetivo en especifico. ■ Es un concepto que se refiere a la planificación fundamentada en patrones, modelos y abstracciones teóricas, cuando es necesario desarrollar un proyecto de software con algún grado de complejidad. Es el paso previo a la implementación. ■ En la arquitectura de software se cuentan con patrones, que son soluciones reutilizables y generales para resolver problemas repetitivos en la ingeniería del software, en un contexto específico. Se puede ver cierta similitud con los patrones de programación, pero en este caso, más dirigidos hacia una estructura de nivel superior y genérica.
  • 6.
    CICLOS DE DESARROLLODE SISTEMAS 1.- Identificaci ó n de los problemas, oportunidades y objetivos. 2.- Determinaci ó n de los requerimientos humanos de informaci ó n. 3.- An á lisis de las necesidades del sistema. 4.- Dise ñ o del sistema recomendado. 5.- Desarrollo y documentaci ó n del software. 6.- Prueba y mantenimiento del sistema. 7.-Implementaci ó n y evaluación del sistema.
  • 7.
    Identificaci ó n de losproblemas, oportunidades y objetivos ■ Un analista se encarga de identificar las tres fases: ■ Problemas: Identificar de manera correcta el problema para evitar el desperdicio de tiempo al momento de plantear las correcciones. ■ Oportunidades: Aprovechar la empresa puede tener una ventaja competitiva, estableciendo un estándar en la industria. ■ Objetivos: Colaborar con los objetivos de la empresa mediante los sistemas de información. ■ Personas involucradas. ■ Usuarios. ■ Analista. ■ Administradores de sistemas. ■ Resultado: ■ Presentación de un informe de viabilidad - contiene la definición del problema y los objetivos.
  • 8.
    Determinaci ó n de losrequerimientos humanos de informaci ó n ■ Un analista empleara diferentes métodos para identificar los requerimientos. ■ Entrevistas. ■ Muestreos. ■ Investigación de datos duros. ■ Preguntas relacionadas con la interacción humano - computadora. ■ ¿Como puede diseñarse el nuevo sistema para que sea fácil de usar, aprender y recordar?. ■ ¿Como puede el sistema ser agradable o incluso divertido de usar?. ■ Personas involucradas: ■ Analista, usuarios, gerentes y trabajadores de operaciones. ■ El analista debe conocer el funcionamiento total de la empresa para poder brindar mejores ideas al momento de diseñar el nuevo sistema.
  • 9.
    Análisis de lasnecesidades del sistema ■ Un analista empleara diferentes métodos para realizar un análisis de las necesidades. ■ Diagrama de flujo de datos(DFD). ■ Agregar un diccionario de datos. ■ El analista debe estudiar las decisiones estructuradas mediante un árbol de decisiones, tablas de decisión. ■ El resultado en el proceso de SDLC (Software Development Life Cicle) entregar una propuesta de los usuarios y la capacidad de uso de los sistemas actuales, se incluye análisis costo beneficio de las alternativas.
  • 10.
    Análisis de lasnecesidades del sistema Practica: Investigar que es una tabla de decisión y realizar un ejemplo para su explicación.
  • 11.
    Diseño del sistemarecomendado ■ Un analista empleara toda la información recolectada para realizar un diseño de propuesta y debe presentar lo siguiente. ■ Ejemplos de interfaces. ■ Diseño de bases de datos. ■ Controles y procedimientos de respaldo para proteger el sistema. ■ El objetivo es llegar a diseñar la HCI(Human Computer Interaction) ■ Se puede incluir varios profesionales para mejorar la experiencia de usuario. ■ Diseñadores de interfaz. ■ Ingenieros de usabilidad. ■ Psicólogos cognitivos.
  • 12.
    Desarrollo y documentaciónde software ■ Un analista trabaja directamente con los programadores para desarrollar el software original requerido. ■ Durante el proceso el analista debe elaborar la documentación en conjunto con los usuarios, la misma debe ser lo mas efectiva posible para resolver todas las dudas de los usuarios, convirtiéndose en una guía practica del uso. ■ Los programadores desempeñan un rol calve ya que diseñan codifican y resuelven errores sintácticos de los programas de computadora.
  • 13.
  • 14.
    Preguntas y conocimientosbásicos ■ ¿Que son los microservicios? ■ ¿Porque es útil implementar un desarrollo segmentado en microservicios? ■ ¿Que es DevOps y como funciona?
  • 15.
    Roles en Desarrollode Software ■ Arquitecto de software: ■ Realizar los diseños de solución, y contar con los conocimientos técnicos en los patrones de diseño. ■ Supervisar la implementación. ■ Toma de decisiones. ■ Desarrollador de Software: ■ Comprensión de los principios de desarrollo de software. ■ Conocer los lenguajes de programación. ■ Escribir código. ■ Implementar funciones, corregir errores.
  • 16.
    Roles en Desarrollode Software ■ Ingeniero de pruebas : ■ Escribir y generar los planes de pruebas. ■ Garantizar la calidad del sistema. ■ Capacidad para crear planes de pruebas efectivos. ■ Gestor de proyecto: ■ Asegurar que se cumpla los plazos y presupuestos. ■ Coordinar y supervisar el proyecto. ■ Toma de decisiones.
  • 17.
    Roles en Desarrollode Software ■ Diseñador de interfaz de Usuario(UX/UI) : ■ Diseñar interfaz eficaz y amigable con el usuario. ■ Conocimientos con diseño grafico. ■ Especialista de seguridad de la Información : ■ Evaluar y mitigar riesgos de seguridad. ■ Garantizar la protección de la información del usuario. ■ Conocimientos en manejo de riesgos.
  • 18.
    Tipos de Arquitecturade Software ■ Monolitica: ■ Aplicación unica y completa en una sola estructura de software. ■ Cliente - Servidor: ■ Divide la aplicación en dos partes cliente(Interfaz de usuario) y servidor (lógica de la aplicación y base de datos). ■ Arquitectura en capas: ■ Divide la arquitectura de la siguiente manera: ■ Interfaz de usuario. ■ Lógica de negocio. ■ Capa de datos.
  • 19.
    Tipos de Arquitecturade Software ■ Microservicios: ■ Divide la arquitectura en servicios independientes y pequeños que se ejecutan en su propio proceso y se comunican mediante APIs. ■ Arquitectura orientada a servicios(SOA): ■ Organiza la aplicación como un conjunto de servicios interconectados que pueden ser reutilizados para necesidades especificas. ■ Arquitectura sin servidor: ■ Desarrolla aplicaciones sin preocuparse de la infraestructura ya que la nube provee automáticamente los recursos necesarios:
  • 20.
    Tipos de Arquitecturade Software ■ Arquitectura orientada a eventos: ■ Es un tipo de arquitectura que reacciona algún tipo de evento en especifico(Detección de eventos). ■ Arquitectura Peer to Peer: ■ Cada nodo mantiene comportamientos y responsabilidades similares y se comparte los recursos entre si, es decir entre cliente y servidor. ■ Descentralización. ■ Eficiencia en la distribución. ■ Mayor disponibilidad. ■ Desafios: ■ Seguridad. ■ Gestión de recursos.
  • 21.
    Diseño por Nivelesde Abstracción ■ Permite generar sistemas separados por capas y ayuda para que cada nivel represente un grado de abstracción, en donde se proporciona una interfaz clara para cada capa. ■ Nivel 1: Requisitos y especificaciones: ■ Se centra en documentar todo lo relacionado con los requisitos del sistema. ■ Artefactos : Casos de uso, Diagramas. ■ Nivel 2: Arquitectura: ■ Se define como la arquitectura a alto nivel. ■ Estructura de los componentes y interacciones. ■ Nivel 3: Diseñó detallado: ■ Desglose de la arquitectura en componentes mas pequeños y detallados. ■ Artefactos: Diagramas de clases, diagramas de secuencia, especificaciones de interfaces.
  • 22.
    Diseño por Nivelesde Abstracción ■ Nivel 4: Implementación: ■ Traducción del código en un sistema funcional. ■ Artefactos: Configuraciones, scripts, código fuente. ■ Nivel 5: Pruebas: ■ Verificación de la funcionalidad del sistema y que se garantirse el cumplimiento de los objetivos establecidos. ■ Artefactos: set de pruebas, resultados de las pruebas. ■ Nivel 6: Integración: ■ Combinación de componentes individuales para su funcionamiento. ■ Artefacto: Diagramas de despliegue.
  • 23.
    Diseño por Nivelesde Abstracción ■ Nivel 7: Despliegue: ■ Implementación en un entorno de producción. ■ Artefactos: Planes de implementación. ■ Nivel 8: Operación y Mantenimiento: ■ Estabilización y mantenimiento del sistema en producción. ■ Artefactos: Informes de mantenimiento.
  • 24.
    Diseño por Nivelesde Abstracción ■ Beneficios: ■ Modularidad. ■ Entendimiento Gradual. ■ Reutilización. ■ Colaboración.