0% encontró este documento útil (0 votos)
24 vistas33 páginas

Capitulo 8

El capítulo 8 aborda el diseño de software como una fase crucial en la ingeniería de software, destacando la importancia de crear un modelo detallado que organice y estructure los componentes del sistema. Se presentan conceptos clave como abstracción, arquitectura, patrones de diseño y calidad en el diseño, junto con ejemplos prácticos que ilustran su aplicación. El capítulo 9 se centra en el diseño de arquitectura, describiendo estilos arquitectónicos, mapeo de modelos de flujo de datos, evaluación de la arquitectura y la importancia de la documentación.

Cargado por

Ramiro Chaparro
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PPTX, PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
24 vistas33 páginas

Capitulo 8

El capítulo 8 aborda el diseño de software como una fase crucial en la ingeniería de software, destacando la importancia de crear un modelo detallado que organice y estructure los componentes del sistema. Se presentan conceptos clave como abstracción, arquitectura, patrones de diseño y calidad en el diseño, junto con ejemplos prácticos que ilustran su aplicación. El capítulo 9 se centra en el diseño de arquitectura, describiendo estilos arquitectónicos, mapeo de modelos de flujo de datos, evaluación de la arquitectura y la importancia de la documentación.

Cargado por

Ramiro Chaparro
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PPTX, PDF, TXT o lee en línea desde Scribd

CAPITULO 8

CONCEPTOS DE DISEÑO
1.-Introduccion

 El diseño de software es una fase crucial en la ingeniería de


software donde se da forma a los requerimientos en un modelo
detallado de cómo funcionará el sistema. Esto va más allá de
solo programar, ya que implica pensar en la organización,
estructura y relaciones de los componentes del software.
Ejemplo

 El diseño de una casa. El arquitecto no comienza por colocar


ladrillos, sino que primero hace planos detallados. De manera
similar, en software, el diseño establece cómo interactuarán los
distintos módulos antes de escribir código.
2.- Proceso de Diseño

 El proceso de diseño es iterativo y se afina conforme se traduce


el modelo de requerimientos en un "plano" de construcción de
software. Este plano va desde una vista general del sistema
hasta detalles específicos de cada componente.
Ejemplo

 Si una empresa desarrolla una aplicación de banca en línea, el


proceso de diseño inicia con la creación de una arquitectura
general que organiza los módulos principales, como el manejo de
cuentas, transferencias y pagos. Luego, se desglosan en
componentes detallados que cubren funcionalidades específicas,
como autenticación y encriptación de datos.
3.-Lineamiento de Calidad en el
Diseño
 La calidad en el diseño se evalúa considerando lineamientos que
aseguren que el software sea funcional, modular y fácil de
mantener. Un buen diseño es legible, fácil de modificar, y permite
una visión completa del sistema.
Ejemplo

 En un sistema de reservas de hoteles, la calidad del diseño se


refleja en la manera en que se organizan los módulos. Un diseño
bien estructurado podría dividir el sistema en módulos de
reservaciones, pagos y administración de habitaciones, de modo
que cualquier cambio en una función (como los métodos de
pago) no afecte a los demás módulos.
4.-Conceptos de Diseño

 Abstracción: Simplificar la complejidad mediante niveles


jerárquicos, donde cada nivel muestra solo la información
esencial.
 Ejemplo: En una aplicación de control de inventario, la
abstracción permite dividir el proceso en módulos como "Agregar
productos", "Consultar productos" y "Actualizar inventario",
ocultando detalles internos de cada módulo al usuario.
 Arquitectura: La arquitectura define la estructura general de un
sistema, incluyendo sus componentes principales y la manera en
que se comunican.
 Ejemplo: En una aplicación de entrega de alimentos, la
arquitectura puede tener tres capas: base de datos (almacena
pedidos e información del cliente), lógica de negocio (gestiona el
flujo de pedidos), y la interfaz de usuario (pantallas de
visualización).
 Patrones de Diseño: Soluciones probadas para problemas
comunes en el diseño de software. Un patrón ayuda a resolver
problemas recurrentes de una forma estandarizada.
 Ejemplo: El patrón MVC (Modelo-Vista-Controlador) es común en
aplicaciones web. La "Vista" muestra datos al usuario, el
"Modelo" gestiona los datos de la aplicación y el "Controlador"
actúa como intermediario. En una tienda en línea, MVC permite
que los desarrolladores modifiquen solo la vista (por ejemplo, el
diseño) sin afectar la lógica de negocio o los datos.
 División de Problemas (o Modulación): Simplificar un
problema grande dividiéndolo en partes manejables.
 Ejemplo: Una aplicación de educación en línea puede dividirse
en módulos como "Gestión de cursos", "Registro de usuarios", y
"Evaluación", permitiendo que cada módulo se desarrolle y
mantenga por separado.
 Ocultamiento de Información: Limitar el acceso a los detalles
internos de cada módulo, permitiendo que solo la interfaz
expuesta esté disponible para otros módulos.
 Ejemplo: En un sistema bancario, el módulo de transacciones
oculta los detalles de seguridad y encriptación, de manera que el
resto del sistema solo conoce las funciones de "Depósito" y
"Retiro".
 Independencia Funcional: Cada módulo realiza una función
específica y tiene poca interacción con otros módulos, lo que
mejora la facilidad de prueba y mantenimiento.
 Ejemplo: En una app de clima, el módulo de "Geolocalización" se
encarga solo de obtener la ubicación del usuario y funciona
independientemente del módulo de "Pronóstico", que gestiona
los datos del clima.
 Refinamiento: Desarrollar detalles adicionales a partir de una
descripción general.
 Ejemplo: En un sistema de gestión hospitalaria, el diseño inicial
puede incluir "Pacientes", y luego este módulo se refina para
incluir secciones específicas como "Historia clínica" y "Pruebas de
laboratorio".
 Aspectos: Algunos requerimientos afectan varias partes del sistema
 (por ejemplo, la seguridad o el acceso de usuarios). Estos elementos deben
integrarse en todo el sistema de forma coherente.
 Ejemplo: En una aplicación de mensajería, el aspecto de "Seguridad" debe
aplicarse a cada módulo que transmite datos, asegurando que todas las
funciones sean seguras.
 Rediseño (Refactoring): Reorganizar el código o diseño sin
alterar su funcionalidad, haciéndolo más limpio o eficiente.
 Ejemplo: En una app de redes sociales, el módulo de búsqueda
puede simplificarse reorganizando el código para hacerlo más
rápido y entendible sin cambiar cómo funciona desde la
perspectiva del usuario.
5.-Clases de Diseño

 En un diseño orientado a objetos, se definen clases de diseño


específicas para distintos elementos del sistema. Estas clases
son refinamientos de las clases de análisis definidas en etapas
anteriores.
Ejemplo

Ejemplo: En un sistema de ventas, podría haber una clase Producto con atributos como nombre,
precio y cantidad. Estas clases son desarrolladas para cumplir funciones específicas y trabajar con
otros objetos del sistema.
6.-Modelo de Diseño

 El modelo de diseño final es la representación completa del


sistema de software y sus componentes. Incluye diagramas de
clases, modelos de interacción, y patrones específicos para
comunicar la estructura del sistema.
Ejemplo

 Un una app de entrega de paquetes, el modelo de diseño


incluiría todos los elementos mencionados (desde datos hasta la
arquitectura y componentes), representados con diagramas y
documentación detallada que guíen la implementación y futuras
modificaciones.
Capitulo 9

 Diseño de Arquitectura
Introduccion

 Diseño de la Arquitectura trata sobre cómo estructurar el


software desde un enfoque arquitectónico, estableciendo la base
sobre la cual se desarrollarán y organizarán los distintos
componentes del sistema. La arquitectura es fundamental
porque define cómo se organiza el sistema, cómo se
interrelacionan sus módulos y cómo se implementarán sus
componentes. Aquí tienes un desglose detallado de cada sección
del capítulo, junto con ejemplos para una mejor comprensión.
Ejemplo

 Una aplicación de gestión de recursos humanos. Su arquitectura


incluiría módulos básicos como "Gestión de Empleados", "Control
de Asistencias", y "Nómina". Cada módulo representa un
componente de la aplicación, y la arquitectura define cómo estos
componentes se comunican entre sí, permitiendo, por ejemplo,
que "Control de Asistencias" envíe datos a "Nómina" para
calcular el pago correspondiente.
2.-Estilos Arquitectonicos

Los estilos arquitectónicos son enfoques comunes que los


arquitectos de software usan para resolver problemas de diseño,
cada uno con sus propias ventajas y limitaciones. Este capítulo
cubre algunos estilos populares, que incluyen:
 Arquitectura de Flujo de Datos: Este estilo organiza el
software en una secuencia de pasos o componentes donde los
datos fluyen de uno a otro, transformándose a medida que
avanzan.
 Arquitectura Cliente-Servidor: En esta arquitectura, los
clientes (usuarios) interactúan con un servidor que maneja la
lógica de la aplicación y los datos. Es ideal para aplicaciones
donde muchos usuarios necesitan acceder al mismo sistema de
datos centralizado.
 Arquitectura Orientada a Objetos (OO): Este estilo organiza
el sistema en objetos que representan entidades del mundo real.
Los objetos pueden interactuar entre sí, y cada uno contiene
tanto datos como funciones relevantes.
 Arquitectura en Capas: Divide el sistema en capas jerárquicas,
donde cada capa cumple una función específica y se comunica
solo con las capas adyacentes. Es común en aplicaciones
empresariales complejas.
3. Mapeo de Modelos de Flujo
de Datos a Arquitecturas
 Contexto: El mapeo convierte el modelo de flujo de datos
(descripción de cómo los datos se mueven y transforman) en una
estructura arquitectónica que facilita la implementación. Los
diseñadores deben decidir qué componentes manejarán qué
partes del flujo de datos y cómo se integrarán.
Ejemplo

 En una aplicación de pedidos en línea, el flujo de datos podría


incluir los pasos: "selección de productos", "validación de stock",
"procesamiento de pago", y "confirmación de pedido". Al mapear
estos pasos en la arquitectura, se pueden asignar a componentes
específicos, como el "Módulo de Inventario" para validar stock, el
"Módulo de Pagos" para manejar el procesamiento del pago, y el
"Módulo de Confirmación" para gestionar la generación de
recibos.
4. Evaluación de la
Arquitectura
 Contexto: La evaluación de la arquitectura es el proceso de
analizar si la estructura propuesta satisface los requisitos del
sistema, incluyendo rendimiento, escalabilidad y seguridad.
Durante esta fase, se pueden identificar áreas problemáticas y
mejorar la estructura antes de la implementación.
Ejemplo

 En un sistema de videoconferencia, los diseñadores podrían


evaluar la arquitectura para asegurar que puede manejar
múltiples usuarios en simultáneo y tiene baja latencia. La
arquitectura se probaría en condiciones de alto uso para verificar
que los componentes están adecuadamente configurados y que
el servidor puede gestionar grandes volúmenes de datos sin
ralentizarse.
5. Uso de Patrones de
Arquitectura
 Los patrones de arquitectura son soluciones probadas para
problemas comunes en el diseño arquitectónico. Ayudan a
estructurar el sistema y a resolver desafíos específicos de la
arquitectura de software.
Ejemplo

 El patrón "Microservicios" es útil en aplicaciones donde cada


componente necesita ser independiente y escalable. En una
aplicación de redes sociales, el sistema podría dividirse en
microservicios como "Gestión de Usuarios", "Publicación de
Contenidos", y "Notificaciones". Este patrón permite que cada
componente se desarrolle y mantenga de forma independiente, y
se escale según la carga de uso.
6. Documentación y
Representación de la
Arquitectura

La documentación de la arquitectura es esencial para que todos
los miembros del equipo y futuros desarrolladores entiendan
cómo está estructurado el sistema. Incluye diagramas,
descripciones detalladas de los componentes y su interacción, y
los principios o patrones utilizados.
 En una aplicación de gestión de proyectos, la documentación
podría incluir diagramas de flujo que muestren cómo los módulos
de "Tareas", "Calendario", y "Usuarios" se relacionan entre sí,
diagramas de componentes que detallan cada módulo, y
descripciones de las APIs o protocolos utilizados para comunicar
los módulos.

También podría gustarte