Fin de Ciclo Fundamentos
Fin de Ciclo Fundamentos
Fin de Ciclo Fundamentos
COMUNICACIÓN PLANEACIÓN
MODELADO
Inicio del proyecto Estimación
Análisis
Recabar los Programación
requerimientos Diseño
Seguimiento
DESPLIEGUE
CONSTRUCCIÓN
Entrega
Código
Asistencia
Prueba
Retroalimentación
Traducción del modelo de requerimientos al modelo de
diseño
Importancia
del Diseño
El proceso de diseño
Al principio, el diseño se
representa en un nivel alto de
El diseño de software es un abstracción, en el que se
proceso iterativo por medio rastrea directamente el
del cual se traducen los objetivo específico del
requerimientos en un “plano” sistema y los requerimientos
para construir el software. mas detallados de datos,
funcionamiento y
comportamiento.
Diseño de la interfaz
Main Program
PASOS
Se centra en:
•La capacidad de la interfaz para implementar correctamente
todas las tareas del usuario.
•El grado en el que la interfaz es fácil de usar y de aprender.
•La aceptación que tiene por parte del usuario como
herramienta útil en su trabajo.
DISEÑO EN EL NIVEL DE COMPONENTES
Iniciartrabajo
DISEÑO A NIVEL DE COMPONENTES
Se elabora los detalles del componente Imprimirtrabajo.
Las estructuras de los datos internas que se requieren para implantar la lógica del
procesamiento y una interfaz que permite la invocación del componente y el paso
de los datos.
Cada transformación
(burbuja) representada en
los niveles mas bajo del
diagrama de flujo de datos
se mapea en una jerarquía
de módulos.
ANÁLISIS. EJEMPLO
Durante el DISEÑO
Sistema de DISEÑO DE LA ARQUITECTURA.
modelado del administración del
análisis se obtiene En el diseño de la arquitectura
trabajo
un conjunto de DFD. cada transformación de los DFD
representa un componente de
software.
Seleccionar función de
Leer datos del trabajo de administración del
impresión trabajo
Pasar el
Verificar
trabajo o
prioridad
producción
Calcular Calcular Calcular el
costo por costo del costo de
pagina papel producción
AccederBDdecostos
Modulo elaborado
costoporpagina
Entra: numerodepaginas
Entra: numerode documento
Entra: tamañodepagina
Entra: costodepagina
…..
Sale: costodebaseporpagina Tamañodeltrabajo=numerodepagina
Obtenerdatosdeltrabajo(numer s*numero de documentos
odepaginas…………) accederBDdatos(TT,color);
accederBDcostos(tamañodeltra …...........
bajo………………….)
…….
calcularcostoporpagina()
3.- Visión relacionada con el proceso
Un componente de
webapps es:
Las funciones de la
webapps se entrega como
Brindan consultas y una serie de componentes
acceso avanzado a una desarrollados en paralelo
base de datos. con la arquitectura de la
información que garantice
que sean consistentes.
Refinamiento
El refinamiento es un proceso de elaboración. Se comienza con un
enunciado de la función, definida en un nivel de abstracción alto.
La abstracción y el refinamiento son conceptos complementarios.
La primera permite especificar internamente el procedimiento y los
datos, pero elimina la necesidad de que los “extraños” conozcan los
detalles de bajo nivel. El refinamiento ayuda a revelar estos detalles
a medida que avanza el diseño. Ambos conceptos permiten crear
un modelo completo del diseño conforme este evoluciona.
Arquitectura
Es la estructura jerárquica de los componentes del programa (módulos), la
manera en que los componentes interactúan y la estructura de datos que
van a utilizar los componentes.
Patrones
Un patrón de diseño describe una estructura de diseño que resuelve un
problema particular. El objetivo de cada patrón de diseño es permitir al
diseñador determinar
1) Si el patrón es aplicable al trabajo en cuestión
2) Si puede volverse a usar
3) Si sirve como guía para desarrollar un patrón distinto en funciones o
estructura.
Elementos:
El nombre del patrón
El problema
La solución
Las consecuencias-resultados
División de problemas
La división de problemas es un concepto de diseño que sugiere que
cualquier problema complejo puede manejarse con más facilidad si se
subdivide en elementos susceptibles de resolver u optimizarse de manera
independiente. Un problema es una característica o comportamiento que
se especifica en el modelo de los requerimientos para el software. Al
separar un problema en sus piezas más pequeñas y por ello más
manejables, se requiere menos esfuerzo y tiempo para resolverlo.
Modularidad
La modularidad es la manifestación más común de la división de
problemas. El software se divide en componentes con nombres distintos y
abordables por separado, en ocasiones llamados módulos, que se integran
para satisfaces los requerimientos del problema.
Guías de modularidad:
Pocas interfaces.
Interfaces estrechas.
Interfaces explícitas.
Modularidad
Pocas interfaces:
“En un sistema formado por N módulos, el número de conexiones entre
ellos debe acercarse más al número mínimo que al máximo”
Modularidad
Interfaces estrechas:
Si dos módulos se comunican deben de intercambiar el mínimo de
información posible.
Interfaces explícitas:
La comunicación entre dos módulos debe poder deducirse a partir del
texto de ambos.
Ocultamiento de información
Deben especificarse y diseñarse módulos, de forma que la información
(algoritmos y datos) contenida en un módulo sea inaccesible para todos
aquellos módulos que no necesiten tal información.
Independencia funcional
La independencia funcional se logra diseñando el software de manera que
cada módulo resuelva su subconjunto específico de requerimientos y
tenga una interfaz sencilla cuando se vea desde otras partes de la
estructura del programa.
Los módulos independientes son más fáciles de mantener (y probar)
debido a que los efectos secundarios causados por el diseño o por la
modificación del código son limitados, se reduce la propagación del error y
es posible obtener módulos reutilizables. En resumen, la independencia
funcional es una clave para el buen diseño y éste es la clave de la calidad
del software.
Independencia funcional
La independencia se evalúa con el uso de dos criterios cualitativos: la
cohesión y el acoplamiento.
Un módulo cohesivo debe (idealmente) hacer solo una cosa. Sin
embargo, para lograr un buen diseño hay que evitar los componentes
“esquizofrénicos” (módulos que llevan a cabo funciones no relacionadas).
El acoplamiento es una indicación de la interconexión entre módulos en
una estructura de software y depende de la complejidad de la interfaz
entre módulos, del grado en el que se entra o se hace referencia a un
módulo y de que datos pasan a través de la interfaz. En el diseño de
software, debe buscarse el mínimo acoplamiento posible. La conectividad
simple entre modulo da como resultado un software que es más fácil de
entender y menos propenso al “efecto de oleaje” [Ste 74], ocasionado
cuando ocurren errores en un sitio y se propagan por todo el sistema.
Aspectos
Un aspecto es una representación de una preocupación de interferencia.
En un contexto ideal, un aspecto se implementa como módulo (componente)
separado y no como fragmentos de software “dispersos” o “regados” en
muchos componentes.
Rediseño
Es el proceso de cambiar un sistema de software en forma tal que no se
altere el comportamiento externo del código [diseño], pero si se mejore su
estructura interna.
Cuando se rediseña el software, se examina el diseño existente en busca de
redundancias, elementos de diseño no utilizados, algoritmos ineficientes o
innecesarios, estructura de datos mal construidas o inapropiadas y cualquier
otra falla del diseño que pueda corregirse para obtener un diseño mejor.
Por ejemplo, una primera iteración de diseño tal vez genere un componente
con poca cohesión (realiza tres funciones que tienen poca relación entre sí).
Después de un análisis cuidadoso, se decide rediseñar el componente en tres
componentes separados, cada uno con mucha cohesión. El resultado será un
software más fácil de integrar, de probar y de mantener.