Fundamentos y Metodologías del Diseño de Software

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

Escrito el en español con un tamaño de 4,52 KB

Actividades del Diseño de Software

  • Diseño de Datos: Se centra en el diseño de archivos y estructuras de tablas.
  • Diseño Arquitectónico: Define una estructura modular para el sistema.
  • Diseño de Interfaz: Define cómo el software se comunica consigo mismo, con los sistemas que operan con él y con los usuarios u operadores que lo emplean.
  • Diseño Procedimental o de las Funciones: Se encarga del diseño detallado de los algoritmos.

Perspectivas desde la Gestión del Diseño

  • Diseño Preliminar: Se refiere a la transformación de los requisitos en datos y en la arquitectura general del software.
  • Diseño Detallado: Se enfoca en los refinamientos de la representación arquitectónica, lo que conduce a una estructura de datos detallada y a representaciones algorítmicas precisas del software.

Conceptos Fundamentales del Diseño

Abstracción

La abstracción es una herramienta intelectual que permite trabajar con conceptos independientemente de sus instancias particulares, facilitando la separación de los aspectos conceptuales de los procedimientos técnicos. Los tipos que podemos considerar son:

  • Funcional: Incluye el uso de subprogramas parametrizados.
  • De datos: Especificación de datos o de los objetos mediante la definición de las operaciones permitidas sobre ellos. En este nivel, se eliminan los detalles de la representación y manipulación interna.
  • De control: Se utiliza para establecer un efecto deseado sin necesidad de definir el mecanismo exacto de control.

Refinamiento

Es un proceso de elaboración que permite ampliar una declaración original, aportando cada vez más detalles. El refinamiento es una estrategia de diseño descendente (top-down) donde la arquitectura de un programa se desarrolla refinando sucesivamente los niveles de detalle procedimental.

Modularidad

Atributo del software que permite que sea intelectualmente manejable al estar dividido en componentes que se integran para satisfacer los requisitos establecidos.

Jerarquía de Control y Estructura del Programa

La estructura del programa representa la organización de los componentes e implica una jerarquía de control. Esta jerarquía representa dos características fundamentales de la arquitectura del programa:

  • La visibilidad: Indica el conjunto de componentes que pueden ser invocados o cuyos datos pueden ser utilizados por un componente dado (incluso de forma indirecta).
  • La conectividad: Indica el conjunto de componentes a los que se invoca directamente o cuyos datos son utilizados en un determinado módulo.

Métricas de la Estructura

  • La profundidad es el número de niveles de control.
  • La anchura es la amplitud global del control.
  • El grado de salida (fan-out) es el número de módulos controlados por otros módulos.
  • El grado de entrada (fan-in) es el número de módulos que controlan directamente a un módulo dado.

Clasificación de los Tipos de Módulos

  • Secuenciales: Se referencian y ejecutan sin interrupción aparente. Son los más frecuentes, como macros en tiempo de compilación, subprogramas convencionales, subrutinas, funciones o procedimientos.
  • Incrementales (corrutinas): Pueden ser interrumpidos antes de su terminación por el software de la aplicación. Mantienen un puntero que permite al módulo restablecer el punto de interrupción.
  • Paralelos (conrutinas): Se ejecutan simultáneamente con otros módulos en entornos de multiprocesadores paralelos. Se encuentran en cálculos de alta velocidad, como el procesamiento en cascada que necesita de dos o más CPUs trabajando en paralelo.

Niveles de Cohesión y Acoplamiento

Niveles de Cohesión (De menor a mayor)

  1. Coincidencial (Bajo)
  2. Lógica
  3. Temporal
  4. Procedimental
  5. Comunicativa
  6. Secuencial
  7. Funcional (Alto)

Niveles de Acoplamiento (De menor a mayor)

  1. Sin acoplamiento directo (Bajo/Deseable)
  2. De datos
  3. Por estampado (Stamp coupling)
  4. Externo
  5. Común
  6. Del contenido (Alto/Indeseable)

Entradas relacionadas: