# Descripción del diseño del software

La Descripción del Diseño de Software (SDD por sus siglas en inglés) es una descripción escrita de un producto de software, que un diseñador de software escribe con el fin de dar un equipo de desarrollo de software orientación general para la arquitectura de un proyecto de software. Un SDD generalmente se acompaña de un diagrama de la arquitectura con punteros detallando las especificaciones de las características de los componentes del diseño. Para fines prácticos, la descripción es necesaria para coordinar un gran equipo bajo una sola visión, debe ser una referencia estable, y esboza todas las partes del software y cómo funcionan entre ellas.

## Composición

Normalmente el SDD contiene la siguiente información:
* El diseño de datos describe estructuras que residen dentro del software. Los atributos y las relaciones entre los objetos de datos dictan la elección de las estructuras de datos.
* El diseño de arquitectura usa características de flujos de información, y los relaciona o mapea dentro de la estructura del programa. El método de mapeo de la transformación es aplicado para marcar fronteras bien definidas entre datos de entrada y de salida. Los esquemas de flujo de datos ubican el control de entrada, procesamiento y salida de datos a lo largo de tres módulos separados.
* El diseño de interfaces describe tanto si son internas como si son externas del programa, así como el diseño de interfaces humanas. Los diseños de interfaces interna y externa están basados en la información obtenida del modelo de análisis.
* El diseño de procesos describe conceptos de programación estructurada utilizando gráficos, tablas de datos y notaciones textuales. Estos medios de diseño habilitan al diseñador para representar detalles de los procedimientos, lo que facilita la traducción a código. Este diagrama del proyecto para implementación es la base para todo trabajo de ingeniería de software subsequente.

## IEEE 1016

IEEE 1016-2009, titulado como Estándar del IEEE para Diseño de Sistemas—de Tecnología de Información—Descripciones de Diseño del Software (IEEE Standard for Information Technology—Systems Design—Software Design Descriptions en inglés), es un estándar de IEEE que especifica "el contenido de información requerido y organización" para un SDD. IEEE 1016 no especifica el medio de un SDD; es "aplicable a automatización de bases de datos y lenguajes de descripción de diseño, pero puede ser utilizado para documentos de papel y otro medios de descripción."
La edición 2009 fue una revisión importante a IEEE 1016-1998, elevándolo de práctica recomendable a estándar pleno. Esta revisión fue modelada después de que IEEE Std 1471-2000, Práctica Recomendable para Descripción Arquitectónica de Sistemas de Software intensivos, extendiendo los conceptos de vista, perspectiva, actores o roles, e intereses de la descripción de arquitectura para apoyar la documentación de alto-nivel, la construcción y diseño detallados de software. [IEEE 1016, Introducción]
Siguiendo el modelo conceptual de IEEE 1016, un SDD está organizado en una o más vistas del diseño. Cada vista del diseño sigue las convenciones de su perspectiva de diseño. IEEE 1016 define los puntos de vista o perspectivas de diseño siguientes para uso:
* Punto de vista del contexto
* Punto de vista de la composición
* Punto de vista lógico
* Punto de vista de las dependencias
* Punto de vista de la información
* Punto de vista de uso de patrones
* Punto de vista de las interfaces
* Punto de vista de las estructuras
* Punto de vista de las interacciones
* Punto de vista de la dinámica de estado
* Punto de vista del algoritmo
* Punto de vista del recurso
Además, los usuarios del estándar no están limitados a estos puntos de vista sino que pueden definir los suyos propios.