Está en la página 1de 27

Ingeniera de Software II

PNFI. Trayecto 3. Trimestre 2

Unidad V. Fundamentos de Diseo

Profesor: Lcdo. Luis Rigual

Qu es el diseo de software?
La Ingeniera de diseo abarca un conjunto de principios, conceptos y prcticas que conducen al desarrollo de un sistema o producto de alta calidad. Para Mitch Kapor, el diseo es el lugar donde una persona se puede parar con un pie en dos mundos, el mundo de la tecnologa y el de la gente y los propsitos humanos, e intentar unirlos

El diseo es el sitio donde manda la creatividad, donde los requisitos del cliente, las necesidades del negocio y las consideraciones tcnicas se unen en la formulacin de un producto o sistema.

Qu es el diseo de software?
El diseo crea una representacin o modelo del software, proporcionando detalles de las estructuras de datos, las arquitecturas, las interfaces y los componentes de software que son necesarios para implementar un sistema.

Tiene por meta producir un modelo de representacin que muestre firmeza, comodidad y placer; donde para lograr esto, se deben aplicar los principios de diversificacin y convergencia.

El diseo se aplica una vez que se analizan y especifican los requisitos, siendo la ltima tarea de modelado y por lo tanto establece una plataforma para la construccin.

Qu es el diseo de software?
Transformacin del modelo de anlisis a un modelo de diseo:
Elementos basados en escenarios: Casos de uso - texto Diagramas de caso de uso Diagramas de actividad Diagramas de carril

Elementos orientados al flujo: Diagramas de flujo de datos Diagramas de flujo de control Narrativas de procesamiento Diseo en el nivel de componentes Diseo de interfaz

Modelado de anlisis
Elementos basados en clases: Diagramas de clases Paquetes de anlsis Modelos CRC Diagramas de colaboracin Elementos de comportamiento: Diagramas de estado Diagramas de secuencia

Diseo arquitectnico

Diseo de datos/ clases

Modelado de diseo

Importancia del diseo de software


El diseo permite a un ingeniero de software modelar el sistema o producto que se va a construir. Este modelo puede evaluarse en relacin con su calidad y mejorarse antes de generar cdigo, de realizar pruebas y de que los usuarios finales se vean involucrados a gran escala.

En otras palabras el diseo es la etapa donde se fomentar la calidad del software; es decir, es la nica forma en que de manera exacta un requisito del cliente se puede convertir en un sistema o producto de software terminado y por tanto sirve como fundamento para todas las actividades subsecuentes de la ingeniera del software.

Importancia del diseo de software


En carencia de una fase de diseo se obtendra: Construir un sistema inestable Fallas al realizar cambios pequeos. Sistema difcil de probar.

Calidad que ser evaluada en etapas tardas.

Conceptos bsicos del diseo


Los conceptos fundamentales del diseo de software ofrecen el marco de trabajo necesario para hacer las cosas del modo correcto. Abstraccin Cuando de considera una solucin modular a cualquier problema se pueden exponer muchos grados de abstraccin. A un alto grado de abstraccin la solucin se establece en trminos generales con el lenguaje del entorno del problema; en un nivel menor de abstraccin se proporciona una descripcin ms detallada de la solucin. Abstraccin procedimental Abstraccin de datos

Conceptos bsicos del diseo


Arquitectura Este trmino alude a la estructura general de software y las formas en que la estructura proporciona una integridad conceptual para el sistema. En su forma mas simple es una organizacin de componentes, la forma de cmo estos interactan y la estructura de datos que utilizan.

Conceptos bsicos del diseo


Patrones Un patrn es una semilla de conocimiento, la cual tiene un nombre y transporta la esencia de una solucin probada a un problema recurrente de cierto contexto, y despus describe la solucin de tal forma que pueda ser usada muchas veces mas. La finalidad de cada patrn es determinar: Si el patrn es aplicable al trabajo actual. Si el patrn se puede reutilizar. Si el patrn puede servir como gua para desarrollar uno similar, pero en cuanto a funcionalidad o estructura.

Conceptos bsicos del diseo


Modularidad Con la modularidad el software se divide en componentes con nombres independientes y que es posible abordar en forma individual; stos se integran para satisfacer los requisitos del problema. Con este concepto se puede aplicar en algunos casos el dicho divide y vencers ya que cuando el software se descompone en partes de forma indefinida, el esfuerzo de desarrollo puede disminuir.

Conceptos bsicos del diseo


Ocultacin de informacin Esta implica que se puede conseguir una modularidad efectiva al definir un conjunto de mdulos independientes que se comuniquen entre s y que intercambien solo la informacin necesaria para lograr la funcin del software. La ocultacin define y fortalece las restricciones de acceso para los detalles de procedimiento dentro de un mdulo y para cualquier estructura de datos local que utilice el mdulo.

Conceptos bsicos del diseo


Independencia funcional
Independencia funcional = Modularidad + Abstraccin + Ocultacin de Informacin

Dicho de otra manera, se obtiene independencia funcional cuando se desea disear el software de tal modo que cada mdulo aborde una subfuncin especfica de requisitos y tenga una sola interfaz cuando se observe desde otras partes de la estructura del programa. Simplifica las interfaces, son ms fciles de mantener y probar, reduce la propagacin de errores y se puede utilizar mdulos reutilizables. Se evala aplicando los trminos cualitativos de cohesin y acoplamiento.

Conceptos bsicos del diseo


Refinamiento El desarrollo de un programa se realiza al refinar de manera sucesiva los niveles de detalle procedimentales. El refinamiento hace que el diseador trabaje sobre el enunciado original y que proporcione ms y ms detalles conforme se realiza el refinamiento sucesivo.

La abstraccin y refinamiento conceptos complementarios.

son

Conceptos bsicos del diseo


Refabricacin Es una tcnica de reorganizacin que simplifica el diseo de un componente sin cambiar su funcin o comportamiento. Se basa en buscar redundancias, elementos intiles de diseo, algoritmos innecesarios, estructuras de datos incorrectas o cualquier otra falla que se pueda corregir para mejorar el diseo.

Conceptos bsicos del diseo


Clases de diseo Las clases de un modelado de anlisis describe algn elemento del dominio del problema, con un grado de abstraccin relativamente alto, conforme evoluciona un modelado de diseo, se deben definir un conjunto de clases de diseo que:

Refine las clases de anlisis al proporcionar detalles de diseo que permitan la implementacin de las clases
Produzca un conjunto de nuevas clases que implementen infraestructura de software para soportar la solucin del negocio. una

Conceptos bsicos del diseo


Cases de diseo Los tipos de clases de diseo son: clases de interfaz con el usuario, clases de dominio de negocios, clases de proceso, clases persistentes y clases del sistema. Las caractersticas de las clases de diseo son:

Completa y suficiente
Primitivismo Cohesin alta Acoplamiento bajo

Proceso y calidad del diseo


El diseo de software es un proceso iterativo mediante el cual los requisitos se traducen en un plano para construir el software. A primera instancia el plano representa un alto grado de abstraccin, el cual puede rastrearse de manera directa hasta conseguir el objetivo especfico del sistema y requisitos ms detallados de comportamiento, funcionales y de datos.

A medida que transcurren las iteraciones del diseo, la calidad en evolucin de ste se evala con una serie de revisiones tcnicas formales.

Proceso y calidad del diseo


McGlaughlin sugiere tres caractersticas que sirven como gua en la evaluacin de un buen diseo: El diseo debe implementar todos los requisitos explcitos contenidos en el modelo de anlisis, y debe ajustarse a todos los requisitos implcitos que desea el cliente. El diseo debe ser una gua legible y compresible para quienes generan cdigo y quienes realizan pruebas y en consecuencia, dan soporte al software. El diseo debe proporcionar una imagen completa del software (dando direccin a los dominios de datos, funcionales y de comportamiento) desde una perspectiva de implementacin.

Atributos de calidad
Los atributos de calidad deben tomarse en cuenta para el diseo de software ya que siempre son parte del problema en conjunto con la problemtica a resolver.

Atributos de calidad

No todos los atributos de calidad del software tienen el mismo peso cuando se disea software. Sin importar el peso, es importante puntualizar que estos atributos de calidad deben considerarse desde el comienzo, no despus que el diseo est completo y haya comenzado la construccin.

Roles de desarrollo: El diseador


Es el encargado de generar el diseo del sistema. Entre sus funciones est: Generar el diseo arquitectnico y diseo detallado del sistema, basndose en los requisitos. Generar prototipos rpidos del sistema (con analistas y programadores) para chequear los requisitos. Generar el documento de diseo arquitectnico de software (DDA), y mantenerlo actualizado durante el proyecto. Velar porque el producto final se ajuste al diseo realizado (funciones de tster).

Roles de desarrollo: El diseador


El diseador interacta con los siguientes roles: Administrador de proyecto: Los diseadores trabajan bajo la coordinacin del administrador de proyecto para construir la arquitectura del sistema que cumpla con los requisitos bajo restricciones dadas de presupuesto y disponibilidad de recursos humanos. Adicionalmente, el administrador de proyecto utiliza las especificaciones de diseo para planificacin y estimacin de recursos. Analista: Los diseadores traducen la especificacin de requisitos establecida en la fase de anlisis de requisitos de software en un modelo de implementacin. Los diseadores deben interactuar con los analistas para determinar requisitos ambiguos del proyecto. Usualmente, los analistas apoyan a los diseadores, y vice-versa. Programador: Los diseadores crean la especificacin de la implementacin del sistema para los programadores, adems apoyan a los programadores en la seleccin del lenguaje de programacin, as como a la interpretacin de los documentos de diseo tales como diagramas, cartas, tablas, etc.

Roles de desarrollo: El diseador


El diseador interacta con los siguientes roles: Tster: Los diseadores deben coordinar esfuerzos con los tsters para asegurar que el diseo arquitectnico del sistema de software incluya especificaciones que ayuden en el ejercicio de casos de prueba. Adems, debe apoyarlos en la verificacin de requisitos.

Ingeniero de validacin y verificacin: Los ingenieros de validacin y verificacin evalan el nivel de concordancia entre los requisitos de usuario y el modelo del sistema diseado, buscando desentendimientos, as como caractersticas faltantes o errneamente implementadas. La relacin con los diseadores es de apoyo.

Administrador de configuracin: Durante el diseo, el administrador de la configuracin de software controla los cambios en el diseo y mantiene registros completos de cada cambio y de sus razones.

Roles de desarrollo: El diseador


El diseador interacta con los siguientes roles: Ingeniero de manutencin: Los diseadores deben apoyar al ingeniero de manutencin en administrar la evolucin de post-venta. Esta evolucin incluye arreglo de errores, mejoramiento de la funcionalidad del sistema, y modificacin de requisitos. Documentador: Los documentadores mantienen los documentos de diseo una vez que el proceso de diseo es completado, haciendo disponibles dichos documentos al resto del equipo de trabajo.

Estndares de Calidad en el diseo


El estndar ISO/IEC 25000: tiene como objetivo organizar, enriquecer y unificar series de normas que cubren la especificacin de requerimientos de calidad del software y evaluacin de la calidad, soportada por el proceso de medicin de calidad, remplaza a dos estndares relacionados ISO/IEC 9126 e ISO/IEC 14598. Con este estndar se puede validar la completitud de una definicin de requisitos, identificar requisitos de calidad del software, conseguir objetivos de diseo y prueba. ISO 9001: este es un estndar que describe el sistema de calidad utilizado para mantener el desarrollo de un producto que implique diseo.

Estndares de Calidad en el diseo


ISO 9004-2: este documento proporciona las directrices para el servicio de facilidades del software como soporte de usuarios, incluye el control de diseo especificando: Definir las actividades de Diseo en un plan de accin con responsables y fechas compromiso. Obtener y analizar datos de entrada y salida (voz del cliente). Revisar el diseo en todas las etapas.

Verificar el diseo contra especificaciones.


Validar el diseo con el cliente (segn su funcionalidad). Elaborar prototipos, muestras, etc. Controlar los cambios al diseo.

FIN