Ensayo Software II

Descargar como docx, pdf o txt
Descargar como docx, pdf o txt
Está en la página 1de 18

UNIVERSIDAD LAICA ELOY ALFARO DE MANABÍ EXTENSIÓN CHONE

CARRERA
TECNOLOGÍA DE LA INFORMACIÓN Y COMUNICACIÓN

SEMESTRE
SEXTO NIVEL

MATERIA
INGENIERIA DE SOFTWARE II

DOCENTE
FABRICIO ROLANDO RIVADENEIRA ZAMBRANO

ESTUDIANTE
ADRIANA JAMILETH CEDEÑO ORTEGA

TEMA

ENSAYO

PERIODO ACADEMICO
2024(2)
Patrones de Arquitectura en el Desarrollo de Software

Introducción

Los patrones de arquitectura son soluciones probadas y reutilizables para


problemas comunes en el diseño de software a nivel de sistema. Estos patrones
proporcionan un marco conceptual para organizar los componentes de un sistema,
definir sus relaciones y gestionar sus interacciones. En este ensayo, exploraremos en
profundidad los patrones de arquitectura, su importancia, categorías principales y
ejemplos concretos.

Los patrones arquitectónicos son soluciones generales a problemas de ingeniería


de software que se repiten a menudo. Se trata de un marco de referencia que utiliza un
equipo de de desarrolladores para construir y diseñar un determinado sistema.

Tomemos como ejemplo una aplicación que funciona como una tienda virtual.
El funcionamiento de los elementos de la app como el carrito de compra, el algoritmo
que sugiere productos o algo tan simple como un mensaje de bienvenida, dependen por
completo de la arquitectura del software.

Definición y Propósito de los Patrones de Arquitectura

Un patrón de arquitectura es una solución general y reutilizable para un


problema recurrente en la arquitectura de software dentro de un contexto dado. Estos
patrones abordan diversos aspectos del diseño de sistemas, como la organización
estructural, la distribución de responsabilidades y la gestión de la complejidad.

Propósitos principales:

 Proporcionar un vocabulario común para los diseñadores de software.


 Ofrecer soluciones probadas a problemas recurrentes.
 Facilitar la reutilización de diseños y arquitecturas exitosas.
 Capturar la experiencia en diseño de software de forma que pueda ser fácilmente
aplicada por otros.

Clases de Patrones Arquitecnicos


Los patrones arquitectónicos pueden categorizarse en diversas categorías
dependiendo de su principal enfoque:

Patrones Estructurales Estos patrones se enfocan en la estructura y la interconexión


entre los elementos del sistema.

Modelos de Comunicación Se centran en la manera en que los elementos comparten


información y coordinan sus acciones.

Modelos de Despliegue

Trata sobre la disposición de los elementos del sistema en el ambiente de ejecución.

Patrones de Dominio Se enfocan en la estructuración de la lógica empresarial en el


sistema.

Patrones de Arquitectura Comunes

Modelo-Vista-Controlador (MVC)

Descripción: Separa la lógica de la aplicación en tres componentes interconectados.

Componentes: Modelo (datos), Vista (interfaz de usuario), Controlador (lógica de


control).

Ventajas: Facilita la modularidad, la reutilización y el mantenimiento del código.

Uso común: Aplicaciones web y de escritorio.

Arquitectura en Capas

Descripción: Organiza el sistema en capas con responsabilidades específicas.


Capas típicas: Presentación, Lógica de Negocio, Acceso a Datos.

Ventajas: Separación de preocupaciones, facilita el desarrollo y mantenimiento.

Uso común: Aplicaciones empresariales y sistemas de información.

Arquitectura de Microservicios

Descripción: Divide la aplicación en servicios pequeños e independientes.

Características: Servicios autónomos, despliegue independiente, APIs bien definidas.

Ventajas: Alta escalabilidad, flexibilidad en tecnologías, desarrollo y despliegue ágiles.

Uso común: Aplicaciones web a gran escala, sistemas distribuidos.


Arquitectura Orientada a Eventos

Descripción: Basa el diseño del sistema en la producción, detección y reacción a


eventos.

Componentes: Productores de eventos, consumidores, canales de eventos.

Ventajas: Desacoplamiento, escalabilidad, flexibilidad.

Uso común: Sistemas de tiempo real, aplicaciones reactivas.

Arquitectura Hexagonal (Ports and Adapters)

Descripción: Aísla la lógica central de la aplicación de las interacciones externas.

Componentes: Núcleo de aplicación, puertos, adaptadores.

Ventajas: Alta testabilidad, independencia de frameworks y UI.

Uso común: Aplicaciones empresariales complejas, sistemas con múltiples interfaces.


Selección e Implementación de Patrones de Arquitectura

 La elección del patrón de arquitectura adecuado depende de varios factores:


 Requisitos funcionales y no funcionales del sistema.
 Escala y complejidad del proyecto.
 Tecnologías disponibles y preferencias del equipo.
 Consideraciones de rendimiento y escalabilidad.

Proceso de selección:

 Analizar los requisitos del sistema.


 Identificar los desafíos arquitectónicos clave.
 Evaluar los patrones que podrían abordar estos desafíos.
 Considerar las compensaciones de cada patrón.
 Seleccionar y adaptar el patrón más adecuado.

Mejores prácticas en la implementación:

 Comprender a fondo el patrón seleccionado.


 Adaptar el patrón a las necesidades específicas del proyecto.
 Mantener la consistencia en la aplicación del patrón.
 Documentar las decisiones arquitectónicas y sus razones.
 Revisar y refinar la arquitectura a medida que evoluciona el proyecto.

Ventajas y Desafíos de los Patrones de Arquitectura

Ventajas:

 Proporcionan soluciones probadas a problemas comunes.


 Facilitan la comunicación entre los miembros del equipo.
 Mejoran la calidad y la mantenibilidad del software.
 Reducen el tiempo de desarrollo al ofrecer estructuras predefinidas.

Desafíos:

 La aplicación incorrecta puede llevar a una complejidad innecesaria.


 Algunos patrones pueden no adaptarse bien a todos los contextos.
 Existe el riesgo de "sobre-arquitectura" si se aplican patrones innecesariamente.
 Requieren tiempo y esfuerzo para ser aprendidos y aplicados correctamente.

Tendencias Futuras en Patrones de Arquitectura

El campo de los patrones de arquitectura continúa evolucionando:

 Patrones para arquitecturas serverless y computación en la nube.


 Integración de inteligencia artificial y aprendizaje automático en la arquitectura.
 Patrones para sistemas de IoT (Internet de las Cosas) y edge computing.
 Evolución de patrones para soportar mejor la seguridad y la privacidad por
diseño.

Conclusión

 Los patrones de arquitectura son herramientas fundamentales en el diseño de


software moderno.
 Proporcionan soluciones probadas a problemas comunes, facilitando el
desarrollo de sistemas robustos, escalables y mantenibles.
 En la arquitectura de software radica en la capacidad de seleccionar, adaptar y
aplicar estos patrones de manera efectiva

BIBLIOGRAFIA
Eykkon (19 de octubre del 2022) ¿Qué es un patrón de arquitectura de software?

LinkedIn (28 de febrero del 2023) Patrones en la arquitectura de software

yapiko.com (22 de junio del 2023) Patrones de arquitectura de software


ARQUITECTURA ORIENTADA A SERVICIOS (SOA)

Introducción

La Arquitectura Orientada a Servicios (SOA, por sus siglas en inglés) ha


emergido como un paradigma fundamental en el diseño de sistemas de software
empresariales. Este enfoque arquitectónico propone una manera de organizar y utilizar
capacidades distribuidas que pueden estar bajo el control de diferentes dominios de
propiedad. En este ensayo, exploraremos los principios fundamentales de SOA, sus
beneficios, desafíos y su impacto en el desarrollo de software moderno.

SOA permite el desarrollo de aplicaciones manejables y más seguras, ya que


proporciona una infraestructura y documentación común para desarrollar servicios con
la posibilidad de añadir nuevas funcionalidades. Gracias a SOA es posible minimizar la
pérdida de datos, esto ya que ofrece seguridad y alta disponibilidad.

Fundamentos de SOA

Definición y Principios

SOA se define como un estilo arquitectónico que enfatiza la implementación de


componentes de aplicaciones como servicios modulares con interfaces bien definidas.

La arquitectura orientada a servicios es un estilo de arquitectura de TI que se


apoya en la orientación a servicios. La orientación a servicios es una forma de pensar en
servicios, su construcción y sus resultados

Diseño y desarrollo de SOA

La metodología de modelado y diseño para aplicaciones SOA se conoce como


análisis y diseño orientado a servicios. La arquitectura orientada a servicios es tanto un
marco de trabajo para el desarrollo de software como un marco de trabajo de
implementación.

El desarrollo de sistemas usando SOA requiere un compromiso con este modelo


en términos de planificación, herramientas e infraestructura.
Los principios clave de SOA incluyen:

1. Modularidad: Los servicios son unidades independientes de funcionalidad.

2. Interoperabilidad: Los servicios pueden comunicarse entre sí


independientemente de su plataforma o tecnología.

3. Reutilización: Los servicios pueden ser reutilizados en diferentes contextos y


aplicaciones.

4. Descubrimiento: Los servicios pueden ser descubiertos y utilizados


dinámicamente.

Componentes Principales

Los componentes esenciales de una arquitectura SOA incluyen:

 Servicios: Unidades de funcionalidad que realizan tareas específicas.

 Registro de Servicios: Un directorio centralizado que contiene información


sobre los servicios disponibles.

 Bus de Servicios Empresariales (ESB): Infraestructura que facilita la


comunicación entre servicios.

 Orquestación de Servicios: Mecanismos para coordinar y gestionar múltiples


servicios.

Beneficios de SOA

La implementación de SOA ofrece numerosas ventajas:

 Permite a las organizaciones adaptar rápidamente sus sistemas a los cambios del
negocio.
 Facilita la integración de sistemas heterogéneos y aplicaciones heredadas.
 Promueve la reutilización de servicios, reduciendo los costos de desarrollo y
mantenimiento.
 Permite escalar componentes individuales sin afectar todo el sistema.
 La modularidad facilita el testing y la mejora continua de los servicios.
Desafíos en la Implementación de SOA

A pesar de sus beneficios, SOA también presenta desafíos:

1. Complejidad: La gestión de múltiples servicios distribuidos puede ser compleja.

2. Seguridad: Asegurar la comunicación entre servicios requiere estrategias


robustas.

3. Rendimiento: La comunicación entre servicios puede introducir latencia.

4. Gobernanza: Se necesitan políticas y estándares claros para gestionar


eficazmente los servicios.

5. Inversión Inicial: La transición a SOA puede requerir una inversión significativa


en infraestructura y formación.

SOA en la Era de los Microservicios

Con el surgimiento de los microservicios, muchos cuestionan la relevancia


actual de SOA. Sin embargo, es importante entender que los microservicios son una
evolución de los principios de SOA, no su reemplazo. Los microservicios adoptan
muchos de los conceptos de SOA, pero con un enfoque en servicios más pequeños y
autónomos.

Conclusión

 La Arquitectura Orientada a Servicios representa un enfoque poderoso para el


diseño de sistemas empresariales flexibles y escalables.
 Los principios de SOA continúan siendo relevantes, adaptándose y
evolucionando para satisfacer las demandas cambiantes del desarrollo de
software moderno.
 SOA proporciona un marco sólido para construir sistemas que puedan adaptarse
y crecer con las necesidades del negocio.

Bibliografía

Oracle (28 de marzo del 2024) ¿Qué es la SOA (arquitectura orientada a servicios)?

Red Hat ( 4 de agosto del 2023) ¿Qué es la arquitectura orientada a los servicios
(SOA)?
WordPress.com (21 de agosto del 2016) VENTAJAS Y DESVENTAJAS DEL SOA -
WordPress.com

Modelos de calidad de software (colocar todos los modelos de software que encuentre)

Modelos de Calidad de Software

Introducción

La calidad del software es un aspecto crítico en el desarrollo de sistemas


informáticos. Los modelos de calidad de software proporcionan marcos de referencia
para evaluar y mejorar la calidad de los productos de software. Este informe presenta
una visión general de los principales modelos de calidad de software, sus características
y aplicaciones.

2. Importancia de los Modelos de Calidad de Software

Los modelos de calidad de software son esenciales por las siguientes razones:

 Proporcionan un marco estandarizado para evaluar la calidad del software.


 Ayudan a identificar áreas de mejora en el proceso de desarrollo.
 Facilitan la comunicación entre desarrolladores, gestores y clientes sobre los
aspectos de calidad.
 Permiten establecer objetivos de calidad medibles y alcanzables.

1. Modelo ISO/IEC 9126

Desarrollado por la Organización Internacional de Normalización (ISO) y la


Comisión Electrotécnica Internacional (IEC).

Características principales:

 Funcionalidad

 Fiabilidad

 Usabilidad

 Eficiencia
 Mantenibilidad

 Portabilidad

2. Modelo ISO/IEC 25010 (SQuaRE)

Sucesor del ISO/IEC 9126, parte del proyecto Software product Quality Requirements
and Evaluation (SQuaRE).

Características:

 Adecuación funcional

 Eficiencia de desempeño

 Compatibilidad

 Usabilidad

 Fiabilidad

 Seguridad

 Mantenibilidad

 Portabilidad

3. Modelo FURPS+

Desarrollado por Robert Grady en Hewlett-Packard.

Características:

 Functionality (Funcionalidad)

 Usability (Usabilidad)

 Reliability (Fiabilidad)

 Performance (Rendimiento)

 Supportability (Capacidad de
soporte)

 Plus: Requisitos adicionales


4. Modelo de McCall

Uno de los primeros modelos de calidad, propuesto por Jim McCall.

Factores de calidad:

 Corrección

 Fiabilidad

 Eficiencia

 Integridad

 Usabilidad

 Mantenibilidad

 Flexibilidad

 Pruebas

 Portabilidad

 Reusabilidad

 Interoperabilidad

5. Modelo de Boehm

Desarrollado por Barry Boehm y sus colegas.

Características principales:

 Portabilidad Fiabilidad

 Eficiencia

 Ingeniería humana (Usabilidad)


 Pruebas

 Comprensibilidad

 Modificabilidad

6. Modelo CMMI (Capability Maturity Model Integration)

Desarrollado por el Software Engineering Institute (SEI).

Niveles de madurez:

1. Inicial

2. Gestionado

3. Definido

4. Gestionado cuantitativamente

5. Optimizado

7. Modelo GQM (Goal Question Metric)

Enfoque de medición orientado a objetivos desarrollado por Victor Basili.

Pasos:

1. Definir objetivos

2. Generar preguntas

3. Especificar métricas

8. Modelo de Dromey

Propuesto por R. Geoff Dromey, se centra en la relación entre calidad y


subcaracterísticas del producto.

Atributos de calidad:

 Corrección

 Consistencia interna

 Fiabilidad
 Integridad

9. Modelo CISQ (Consortium for IT Software Quality)

Desarrollado por el Consorcio para la Calidad del Software de TI.

Características:

 Fiabilidad

 Eficiencia

 Seguridad

 Mantenibilidad

 Tamaño

10. Modelo WebQEM (Web Quality Evaluation Method)

Específico para la evaluación de calidad de aplicaciones web.

Características:

 Usabilidad

 Funcionalidad

 Confiabilidad

 Eficiencia

11. Modelo Quint2

Extensión del modelo ISO 9126, desarrollado en los Países Bajos.

Añade características como:

 Traceability (Trazabilidad)
 Customisability (Personalización)

12. Modelo QMOOD (Quality Model for Object-Oriented Design)

Enfocado en la calidad del diseño orientado a objetos.

Atributos de calidad:

 Reusabilidad

 Flexibilidad

 Comprensibilidad

 Funcionalidad

 Extensibilidad

 Efectividad

Comparación de Modelos

Modelo Enfoque Principal Ventajas Desventajas

Puede ser demasiado


Simple y fácil de
McCall Perspectiva del usuario simplista para sistemas
entender
complejos

Estandarización Ampliamente Puede requerir adaptación


ISO 9126
internacional aceptado y utilizado para proyectos específicos

Características Puede ser complejo de


Cubre una amplia
FURPS+ funcionales y no implementar
gama de atributos
funcionales completamente

Enfoque en
Utilidad y Puede ser menos detallado
Boehm características de alto
mantenibilidad en algunos aspectos
nivel
Modelo Enfoque Principal Ventajas Desventajas

Enfocado en procesos más


Mejora continua del
CMMI Madurez del proceso que en el producto final
proceso

Conclusión

 Los modelos de calidad de software proporcionan marcos valiosos para evaluar


y mejorar la calidad del software.
 El enfoque en la calidad del software es crucial para el éxito a largo plazo de
cualquier proyecto de desarrollo de software.
 Estos modelos proporcionan diferentes enfoques y perspectivas para evaluar y
mejorar la calidad del software, adaptándose a diversas necesidades y contextos
en el desarrollo de software.

Bibliografía

Testing IT (2 de Agosto del 2022) https://www.testingit.com.mx/blog/modelos-


calidad-software

También podría gustarte