El diseo de software El diseo es crucial para el xito de la ingeniera de software 1990, Mitch Kapor, creador de Lotus 1-2-3
Es donde se est con un pie en dos mundos el de la tecnologa y el
de las perso-nas y los propsitos humanos que tratan de unificarse El diseo de software Qu es? El diseo es lo que casi todo ingeniero quiere hacer. Es el lugar en el que las reglas de la creatividad los requerimientos de los participantes, las necesidades del negocio y las consideraciones tcnicas se unen para formular un producto o sistema. El diseo crea una representacin o modelo del software, pero, a diferencia del modelo de los requerimientos (que se centra en describir los datos que se necesitan, la funcin y el comportamiento), el modelo de diseo proporciona detalles sobre arquitectura del software, estructuras de datos, interfaces y componentes que se necesitan para implementar el sistema. El diseo de software Quin lo hace? Ingenieros de software llevan a cabo cada una de las tareas del diseo El diseo de software Por qu es importante? El diseo permite modelar el sistema o producto que se va a construir. Este modelo se evala respecto de la calidad y su mejora antes de generar cdigo; despus, se efectan pruebas y se involucra a muchos usuarios finales. El diseo es el lugar en el que se establece la calidad del software. El diseo de software Cules son los pasos? El diseo representa al software de varias maneras. En primer lugar, debe representarse la arquitectura del sistema o producto. Despus se modelan las interfaces que conectan al software con los usuarios finales, con otros sistemas y dispositivos, y con sus propios componentes constitutivos. Por ltimo, se disean los componentes del software que se utilizan para construir el sistema. El diseo de software Cul es el producto final? El trabajo principal que se produce durante el diseo del software es un modelo de diseo que agrupa las representaciones arquitectnicas, interfaces en el nivel de componente y despliegue. El diseo de software Cmo me aseguro de que lo hice bien? El modelo de diseo es evaluado por el equipo de software en un esfuerzo por determinar si contiene errores, inconsistencias u omisiones, si existen mejores alternativas y si es posible implementar el modelo dentro de las restricciones, plazo y costo que se hayan establecido El diseo de software EL PROCESO DE DISEO El diseo de software es un proceso iterativo por medio del cual se traducen los requerimientos en un plano para construir el software. Al principio, el plano ilustra una visin holstica del software. Es decir, el diseo se representa en un nivel alto de abstraccin, en el que se rastrea directamente el objetivo especfico del sistema y los requerimientos ms detallados de datos, funcionamiento y comportamiento. A medida que tienen lugar las iteraciones del diseo, las mejoras posteriores conducen a niveles menores de abstraccin. EL PROCESO DE DISEO Lineamientos y atributos de la calidad del software
La evolucin del diseo del software
EL PROCESO DE DISEO Lineamientos y atributos de la calidad del software 1. Debe tener una arquitectura que: a. se haya creado con el empleo de estilos o patrones arquitectnicos reconocibles. b. Est compuesta de componentes con buenas caractersticas de diseo en forma evolutiva, de modo que faciliten la implementacin y las pruebas. EL PROCESO DE DISEO 2. Debe ser modular, es decir, el software debe estar dividido de manera lgica en elementos o subsistemas 3. Debe contener distintas representaciones de datos, arquitectura, interfaces y componentes. 4. Debe conducir a estructuras de datos apropiadas para las clases que se van a implementar y que surjan de patrones reconocibles de datos. 5. Debe llevar a componentes que tengan caractersticas funcionales independientes EL PROCESO DE DISEO 6. Debe conducir a interfaces que reduzcan la complejidad de las conexiones entre los componentes y el ambiente externo 7. Debe obtenerse con el empleo de un mtodo repetible motivado por la informacin obtenida durante el anlisis de los requerimientos del software. 8. Debe representarse con una notacin que comunique con eficacia su significado EL PROCESO DE DISEO La evolucin del diseo del software Conceptos de Diseo
Abstraccin Ocultamiento de informacin
Arquitectura Independencia Funcional Patrones Refinamiento Divisin de problemas Aspectos Modularidad Rediseo Conceptos de Diseo Abstraccin Cuando se considera una solucin modular para cualquier problema, es posible plantear muchos niveles de abstraccin. En el ms elevado se enuncia una solucin en trminos gruesos con el uso del lenguaje del ambiente del problema. En niveles ms bajos de abstraccin se da la descripcin ms detallada de la solucin. Conceptos de Diseo Arquitectura En su forma ms sencilla, la arquitectura es la estructura de organizacin de los componentes de un programa (mdulos), la forma en la que stos interactan y la estructura de datos que utilizan. Sin embargo, en un sentido ms amplio, los componentes se generalizan para que representen los elementos de un sistema grande y sus interacciones Conceptos de Diseo Patrones El objetivo de cada patrn de diseo es proporcionar una descripcin que permita a un diseador determinar: 1) si el patrn es aplicable al trabajo en cuestin. 2) si puede volverse a usar con lo que se ahorra tiempo de diseo 3) si sirve como gua para desarrollar un patrn distinto en funciones o estructura. Conceptos de Diseo Divisin de problemas La divisin de problemas es un concepto de diseo que sugiere que cualquier problema complejo puede manejarse con ms facilidad si se subdivide en elementos susceptibles de resolverse u optimizarse de manera independiente Conceptos de Diseo Modularidad La modularidad es la manifestacin ms comn de la divisin de problemas. El software se divide en componentes con nombres distintos y abordables por separado, en ocasiones llamados mdulos, que se integran para satisfacer los requerimientos del problema. Conceptos de Diseo Ocultamiento de informacin El concepto de modularidad lleva a una pregunta fundamental: Cmo descomponer una solucin de software para obtener el mejor conjunto de mdulos? El principio del ocultamiento de informacin sugiere que los mdulos se caractericen por decisiones de diseo que se oculten (cada una) de las dems Conceptos de Diseo Independencia Funcional La independencia funcional se logra desarrollando mdulos con funciones miopes que tengan aversin a la interaccin excesiva con otros mdulos. Dicho de otro modo, debe disearse software de manera que cada mdulo resuelva un subconjunto especfico de requerimientos y tenga una interfaz sencilla cuando se vea desde otras partes de la estructura del programa. Conceptos de Diseo Aspectos Un aspecto es una representacin de una preocupacin de interferencia entre mdulos DISEO DE LA ARQUITECTURA Qu es? El diseo arquitectnico representa la estructura de los datos y de los componentes del programa que se requieren para construir un sistema basado en computadora. Considera el estilo de arquitectura que adoptar el sistema, la estructura y las propiedades de los componentes que lo constituyen y las interrelaciones que ocurren entre sus componentes arquitectnicos
La arquitectura de un sistema es un marco general que describe su forma y
estructura: sus componentes y la manera en la que se ajustan entre s. Jerrold Grochow DISEO DE LA ARQUITECTURA Quin lo hace? Aunque es un ingeniero de software quien puede disear tanto los datos como la arquitectura, es frecuente que si deben construirse sistemas grandes y complejos, el trabajo lo realicen especialistas. El diseador de una base de datos o data warehouse crea la arquitectura de los datos para un sistema. El arquitecto del sistema selecciona un estilo arquitectnico apropiado a partir de los requerimientos obtenidos durante el anlisis de los datos. DISEO DE LA ARQUITECTURA Por qu es importante? El lector no intentara construir una casa sin un plano, o s? Tampoco comenzara los planos con el dibujo de la plomera del lugar. Antes de preocuparse por los detalles, necesitara tener el panorama general: la casa en s. Eso es lo que hace el diseo arquitectnico, da el panorama y asegura que sea el correcto. DISEO DE LA ARQUITECTURA Por qu es importante?
Las representaciones de la arquitectura del software permiten la
comunicacin entre todas las partes (participantes) interesadas en el desarrollo de un sistema basado en computadora. La arquitectura resalta las primeras decisiones que tendrn un efecto profundo en todo el trabajo de ingeniera de software siguiente y, tambin importante, en el xito ltimo del sistema como entidad operacional. La arquitectura constituye un modelo relativamente pequeo y asequible por la va intelectual sobre cmo est estructurado el sistema y la forma en la que sus componentes trabajan juntos DISEO DE LA ARQUITECTURA Cules son los pasos? El diseo de la arquitectura comienza con el diseo de los datos y contina con la obtencin de una o ms representaciones de la estructura arquitectnica del sistema. Se analizan alternativas de estilos o patrones arquitectnicos para llegar a la estructura ms adecuada para los requerimientos del usuario y para los atributos de calidad. Una vez seleccionada la alternativa, se elabora la arquitectura con el empleo de un mtodo de diseo. DISEO DE LA ARQUITECTURA Cul es el producto final? Durante el diseo arquitectnico se crea un modelo de arquitectura que incluye la arquitectura de los datos y la estructura del programa. Adems, se describen las propiedades y relaciones (interacciones) que hay entre los componentes DISEO DE LA ARQUITECTURA Gneros Arquitectnicos DISEO DE LA ARQUITECTURA Gneros Arquitectnicos DISEO DE LA ARQUITECTURA Desde el punto de vista del diseo arquitectnico, cada gnero representa un desafo nico. Por ejemplo, considere la arquitectura del software de un sistema de juego. Esta clase de sistemas, en ocasiones llamados aplicaciones interactivas de inmersin, requieren el cmputo de algoritmos intensivos, grficas avanzadas en computadora, fuentes de datos continuas en multimedios, interactividad en tiempo real a travs de dispositivos de entrada convencionales y no convencionales, y otras preocupaciones especializadas. DISEO DE LA ARQUITECTURA
La ASI (Arquitectura de Software de Inmerpresencia) es un modelo de
arquitectura de software para disear, analizar e implementar aplicaciones que realizan un procesamiento distribuido, asncrono y paralelo de flujos de datos generales. El objetivo de la ASI es proveer un marco universal para la implementacin distribuida de algoritmos y su fcil integracin en sistemas complejos DISEO DE LA ARQUITECTURA ------- ESTILOS ARQUITECTNICOS ESTILOS ARQUITECTNICOS Cuando un constructor usa la frase vestbulo central colonial para describir una casa, la mayor parte de personas familiarizadas con viviendas en Estados Unidos se har una imagen general de ella y de cul es su probable distribucin. El constructor us un estilo arquitectnico como mecanismo descriptivo para diferenciar la casa de otros estilos.
El estilo arquitectnico tambin es una plantilla para la
construccin DISEO DE LA ARQUITECTURA ------- ESTILOS ARQUITECTNICOS El software construido para sistemas basados en computadora tambin tiene uno de muchos estilos arquitectnicos. Cada estilo describe una categora de sistemas que incluye: 1. Un con-junto de componentes (como una base de datos o mdulos de cmputo) que realizan una funcin requerida por el sistema 2. Un conjunto de conectores que permiten la comunicacin, coordinacin y cooperacin entre los componentes 3. Restricciones que definen cmo se integran los componentes para formar el sistema 4. modelos semnticos que permiten que un diseador entienda las propiedades generales del sistema al analizar las propiedades conocidas de sus partes constituyentes DISEO DE LA ARQUITECTURA ------- ESTILOS ARQUITECTNICOS
Arquitecturas centradas en los datos.
Arquitecturas de flujo de datos. Arquitecturas de llamar y regresar. Arquitecturas orientadas a objetos. Arquitecturas en capas. DISEO DE LA ARQUITECTURA ------- ESTILOS ARQUITECTNICOS Arquitecturas centradas en los datos. En el centro de esta arquitectura se halla un almacenamiento de datos (como un archivo o base de datos) al que acceden con frecuencia otros componentes que actualizan, agregan, eliminan o modifican los datos de cierto modo dentro del almacenamiento. DISEO DE LA ARQUITECTURA ------- ESTILOS ARQUITECTNICOS Arquitecturas de flujo de datos. Esta arquitectura se aplica cuando datos de entrada van a transformarse en datos de salida a travs de una serie de componentes computacionales o manipuladores. DISEO DE LA ARQUITECTURA ------- ESTILOS ARQUITECTNICOS Arquitecturas de llamar y regresar. Este estilo arquitectnico permite obtener una estructura de programa que es relativamente fcil de modificar y escalar. Dentro de esta categora existen varios sub estilos : Arquitecturas de programa principal/subprograma. Esta estructura clsica de programa descompone una funcin en una jerarqua de control en la que un programa principal invoca cierto nmero de componentes de programa que a su vez invocan a otros. DISEO DE LA ARQUITECTURA ------- ESTILOS ARQUITECTNICOS Arquitecturas orientadas a objetos. Los componentes de un sistema incluyen datos y las operaciones que deben aplicarse para manipularlos. La comunicacin y coordinacin entre los componentes se consigue mediante la transmisin de mensajes. DISEO DE LA ARQUITECTURA Arquitecturas en capas