it-is1. Práctica 1-1. Diseño arquitectónico

Anuncio
it-is1. Práctica 1-1. Diseño arquitectónico
“Todos los sistemas cambian durante sus ciclos de vida. Esto debe tenerse en
mente cuando se pretende que los sistemas desarrollados perduren más de la
primera versión”. Ivar Jacobson
Introducción
El diseño es la primera etapa técnica del proceso de Ingeniería del Software,
consiste en producir un modelo o representación del software que se va a
desarrollar. El diseño debe ser una guía que puedan leer y entender los que
programan y prueban el software.
En el diseño arquitectónico se definen las relaciones entre los elementos
estructurales o módulos de nuestro programa. Entendemos que los módulos son los
elementos básicos de programación y podemos pensar en ellos como las funciones,
procedimientos, tipos de datos o paquetes de un programa.
El diseño modular efectivo reduce la complejidad, facilita los cambios y produce
como resultado una implementación más sencilla, permitiendo el desarrollo paralelo
de las diferentes partes del sistema.
Un buen diseño se caracteriza por módulos con una clara función en los que se
evita una excesiva interacción con otros módulos: alta cohesión y bajo
acoplamiento.
Criterios de diseño modular
Descomposición Modular. Descomponer el problema de software en un pequeño
número de sub-problemas menos complejos, interconectados mediante una
estructura sencilla y suficientemente independientes para permitir que el trabajo
futuro pueda proseguir por separado en cada uno de ellos.
Composición Modular. Los módulos del software deben poderse combinar
libremente unos con otros para producir nuevos sistemas, posiblemente en un
entorno bastante diferente de aquel en que fueron desarrollados inicialmente.
Comprensibilidad Modular. Los módulos del software se deben entender sin
tener que conocer los otros, o en el peor caso, teniendo que examinar sólo unos
pocos de los restantes módulos.
Continuidad Modular. Un cambio en la especificación del problema provoca sólo
cambios en un solo módulo o en un pequeño número de módulos.
Protección Modular. Una situación anormal que se produzca dentro de un módulo
durante la ejecución queda confinado a dichos módulos o en el peor caso se
propaga sólo a unos pocos módulos vecinos.
Objetivos
En esta práctica, se pide realizar un diseño arquitectónico en el que se identifiquen
y definan claramente los módulos que deben ser implementados para el desarrollo
de una aplicación que permita realizar búsquedas de vuelos. Los requisitos son los
siguientes
1. Para realizar la búsqueda se debe poder indicar el número de pasajeros
(adultos y niños) que van a realizar el viaje, preferencias del vieja en cuanto
a la clase (turista, preferente o primera), horario (mañana, tarde, noche)
2. Los viajes pueden ser tanto de ida como de ida y vuelta.
3. Los resultados de la búsqueda deben ordenarse por el precio.
4. Los resultados de la búsqueda pueden ofrecer tanto vuelos directos como
vuelos con escalas.
5. Si el cliente es flexible en las fechas de salida o regreso, el sistema debiera
encontrar alternativas de vuelo más económicas.
El resultado que deberá se entregado debe ser un documento en el que se incluyan
los siguientes contenidos:

Diagrama de estructura modular, en el que se muestren claramente los
módulos y las dependencias entre estos módulos

Descripción de cada módulo (rutinas, tipos de datos o paquetes) explicando
respectivamente su funcionalidad, estructura o contenido
Consejos y recomendaciones
1. Diseñar no es escribir código.
2. Hay que identificar el lenguaje que se vaya a programar la aplicación. El
diseño es muy dependiente del lenguaje de programación.
3. El diseño debe presentar uniformidad.
4. Los nombres de los módulos deben reflejar claramente su funcionalidad y
contenido.
5. Debe estructurarse para ser reutilizado. Para potenciar la reutilización del
código, se deben crear paquetes en los que se incluyan las funciones que
puedan ser comunes a éstos programas.
6. Debe estructurarse para admitir cambios. Para facilitar los cambios, deben
preverse posibles ampliaciones o modificaciones de los programas que se
solicitan en primera instancia.
7. Debe estructurarse para permitir la portabilidad. Para garantizar la
portabilidad de las aplicaciones, se deben crear paquetes para incluir las
funciones que puedan ser dependientes de la plataforma.
Descargar