Fundamentos del Diseño de Software: Principios, Proceso y Componentes Clave

Enviado por Chuletator online y clasificado en Informática y Telecomunicaciones

Escrito el en español con un tamaño de 5,35 KB

Fundamentos del Diseño de Software

Conceptos de Diseño:

El diseño de software agrupa el conjunto de principios, conceptos y prácticas que llevan al desarrollo de un sistema o producto de alta calidad.

Manifiesto del Diseño de Software

Mitch Kapor, en su "manifiesto del diseño de software", decía lo siguiente:

“¿Qué es el diseño? Es estar con un pie en dos mundos: el de la tecnología y el de las personas y los propósitos humanos, tratando de unificarlos... Vitruvio, crítico romano de arquitectura, afirmaba que los edificios bien diseñados eran aquellos que tenían resistencia, funcionalidad y belleza.

  • Resistencia: un programa no debe tener ningún error que impida su funcionamiento.
  • Funcionalidad: un programa debe ser apropiado para los fines que persigue.
  • Belleza: la experiencia de usar el programa debe ser placentera. Éstos son los comienzos de una teoría del diseño de software.”

El objetivo del diseño es producir un modelo o representación que tenga resistencia, funcionalidad y belleza.

Para lograrlo, debe practicarse la diversificación y luego la convergencia.

La diversificación es la adquisición de un repertorio de alternativas, materia prima del diseño: componentes, soluciones con los componentes y conocimiento, todo lo cual está contenido en catálogos.

Luego se deben escoger aquellos elementos del repertorio que cumplan los requerimientos definidos, se converge en “una configuración particular de componentes y, con ello, en la creación del producto final.

¿Qué es el Diseño?

Diseño - qué es: Proceso por el que se genera una solución a un problema, descripción de la solución.

Diseño en la Ingeniería de Software

Diseño en el contexto de la ingeniería de software: El diseño del software comienza una vez que se han analizado y modelado los requerimientos. Es la última acción de la ingeniería de software dentro de la actividad de modelado y prepara la etapa de construcción.

El resultado es el diseño de los datos o clases, de la arquitectura, de la interfaz y de los componentes.

Traducción del Modelo de Requerimientos al Modelo de Diseño

Traducción del modelo de requerimientos al modelo de diseño - flujo de la información durante el diseño de software:

Diseño de Datos

Diseño de datos: El diseño de datos o clases transforma los modelos de clases en realizaciones de clases de diseño y en las estructuras de datos que se requieren para implementar el software. Los objetos y relaciones definidos en el diagrama CRC y el contenido detallado de los datos ilustrado por los atributos de clase y otros tipos de notación dan la base para el diseño de los datos.

Diseño de la Arquitectura

Diseño de la arquitectura: El diseño de la arquitectura define la relación entre los elementos principales de la estructura del software, los estilos y patrones de diseño de la arquitectura que pueden usarse para alcanzar los requerimientos definidos por el sistema y las restricciones que afectan la forma en la que se implementa la arquitectura.

Diseño de la Interfaz

Diseño de la interfaz: El diseño de la interfaz describe la forma en la que el software se comunica con los sistemas que interactúan con él y con los humanos que lo utilizan. Una interfaz implica un flujo de información (por ejemplo, datos o control) y un tipo específico de comportamiento.

Diseño de los Componentes

Diseño de los componentes: El diseño en el nivel de componente transforma los elementos estructurales de la arquitectura del software en una descripción de sus componentes en cuanto a procedimiento.

El Proceso de Diseño

El proceso de diseño: El diseño de software es un proceso iterativo por medio del cual se traducen los requerimientos en un “plano” para construir el software.

Características de un Buen Diseño

Características que funcionan como guía para evaluar un buen diseño:

  • Debe implementar todos los requerimientos explícitos contenidos en el modelo de requerimientos y dar cabida a todos los requerimientos implícitos que desean los participantes.
  • Debe ser una guía legible y comprensible para quienes generan el código y para los que lo prueban y dan el apoyo posterior.
  • Debe proporcionar el panorama completo del software, y abordar los dominios de los datos, las funciones y el comportamiento desde el punto de vista de la implementación.

Lineamientos para el Diseño del Software

Lineamientos para el diseño del software:

  1. Debe tener una arquitectura que:
    1. Se haya creado con el empleo de estilos o patrones arquitectónicos reconocibles.
    2. Esté compuesta de componentes con buenas características de diseño (éstas se analizan más adelante, en este capítulo).
    3. Se implemente en forma evolutiva, de modo que facilite la implementación y las pruebas.
  2. Debe ser modular, es decir, el software debe estar dividido de manera lógica en elementos o subsistemas.

Entradas relacionadas: