Diseño de Software

En sentido general, diseñar es una forma de resolución de problemas. Por ello, al diseñar se utilizan nociones como objetivos, restricciones, alternativas, representaciones y soluciones.

Diseñar es el esfuerzo para definir la arquitectura, componentes, interfaces y otras características de un sistema o componente [IEEE 610-1990]

El Diseño de Software es la actividad del ciclo de vida del software en la cual se analizan los requisitos para producir una descripción de la estructura interna del software que sirva de base para su construcción.
Un diseño de software describe  la arquitectura (cómo está descompuesto y organizado en componentes), las interfaces entre dichos componentes, y ; los componentes a un nivel de detalle qe permita su construcción.

El estándar ISO 12207 identifica dos tipos de Diseño de Software:

  • Arquitectural (alto nivel)
Describe la estructura y organización de alto nivel, es decir, los subsistemas o componentes y sus relaciones. Es el primer paso en el diseño de un sistema, previo al diseño detallado.
Su resultado se conoce como Arquitectura del Software y representa el enlace entre la especificación de requisitos y el diseño.
Puede llevarse a cabo en paralelo con actividades de especificación de requisitos e implica un esfuerzo creativo, de forma que las actividades a realizar pueden cambiar según la naturaleza del sistema a desarrollar.

  • Detallado
Describe cada componente y su comportamiento específico, de forma que puede procederse a su construcción

Principios del Diseño de Software
Son nociones clave consideradas fundamentales en muchas aproximaciones y conceptos de diseño diferentes.
  • Abstracción: Olvidar información que diferencia ciertas cosas y así poder tratarlas como si fueran similares. En software los mecanismos básicos de abstracción son Parametrización y Especificación (Abstracción procedural, de datos y de control (iteración)).
  • Acoplamiento y Cohesión: La fortaleza de las relaciones entre módulos (INTER) se llama acoplamientos y la cohesión es cómo están relacionados los elementos de un mismo módulo (INTRA).
  • Descomposición: Descomponer un software en diversas unidades más pequeñas, habitualmente con el fin de situar diferentes funcionalidades o responsabilidades en diferentes componentes.
  • Encapsulamiento: (ocultamiento de iinformación) Consiste en agrupar y empaquetar los elementos y detalles internos de una abstracción y hacer que dichos detalles sean inaccesibles desde fuera.
  • Separación de interfaz e Implementación: Definir un componente especificando una interfaz pública, conocida por otros componentes o clientes y separada de los detalles de cómo dicho componente está realizado (implementado).
  • Suficiencia y Completitud: Asegurar que un componente software captura todas las características importantes de una abstracción y ninguna más.

Comentarios