Diseño de software


El diseño de software es el proceso mediante el cual un agente crea una especificación de un artefacto de software destinado a lograr objetivos , utilizando un conjunto de componentes primitivos y sujeto a restricciones . [1] El diseño de software puede referirse a "toda la actividad involucrada en la conceptualización, estructuración, implementación, puesta en marcha y, en última instancia, modificación de sistemas complejos" o "la actividad que sigue a la especificación de requisitos y antes de la programación , como ... [en] un software estilizado proceso de ingeniería ". [2]

El diseño de software generalmente implica la resolución de problemas y la planificación de una solución de software . Esto incluye un diseño de algoritmos y componentes de bajo nivel y un diseño de arquitectura de alto nivel .

El diseño de software es el proceso de imaginar y definir soluciones de software para uno o más conjuntos de problemas. Uno de los componentes principales del diseño de software es el análisis de requisitos de software (SRA). SRA es una parte del proceso de desarrollo de software que enumera las especificaciones utilizadas en la ingeniería de software . Si el software es "semiautomático" o está centrado en el usuario , el diseño del software puede implicar un diseño de la experiencia del usuario que produzca un guión gráfico para ayudar a determinar esas especificaciones. Si el software está completamente automatizado (lo que significa que no hay usuario o interfaz de usuario), el diseño de un software puede ser tan simple como un diagrama de flujo o un texto que describa una secuencia planificada de eventos. También existen métodos semi-estándar como el Lenguaje de modelado unificado y los conceptos de modelado fundamental . En cualquier caso, parte de la documentación del plan suele ser producto del diseño. Además, un diseño de software puede ser independiente de la plataforma o específico de la plataforma , dependiendo de la disponibilidad de la tecnología utilizada para el diseño.

La principal diferencia entre el análisis y el diseño de software es que el resultado de un análisis de software consiste en problemas más pequeños para resolver. Además, el análisis no debe diseñarse de manera muy diferente entre los diferentes miembros del equipo o grupos. Por el contrario, el diseño se centra en las capacidades y, por lo tanto, pueden existir y existirán múltiples diseños para el mismo problema. Dependiendo del entorno, el diseño a menudo varía, ya sea creado a partir de marcos confiables o implementado con patrones de diseño adecuados . Los ejemplos de diseño incluyen sistemas operativos, páginas web, dispositivos móviles o incluso el nuevo paradigma de la computación en la nube.

El diseño de software es tanto un proceso como un modelo. El proceso de diseño es una secuencia de pasos que permite al diseñador describir todos los aspectos del software para la construcción. La habilidad creativa, la experiencia pasada, el sentido de lo que hace que un software sea "bueno" y un compromiso general con la calidad son ejemplos de factores críticos de éxito para un diseño competente. Sin embargo, es importante señalar que el proceso de diseño no siempre es un procedimiento sencillo; el modelo de diseño se puede comparar con los planos de un arquitecto para una casa. Comienza por representar la totalidad de la cosa que se va a construir (por ejemplo, una representación tridimensional de la casa); lentamente, la cosa se refina para proporcionar una guía para la construcción de cada detalle (por ejemplo, la instalación de plomería). Similar,el modelo de diseño que se crea para el software proporciona una variedad de vistas diferentes del software de la computadora. Los principios básicos de diseño permiten al ingeniero de software navegar por el proceso de diseño. Davis[3] sugiere un conjunto de principios para el diseño de software, que se han adaptado y ampliado en la siguiente lista:

Los conceptos de diseño proporcionan al diseñador de software una base a partir de la cual se pueden aplicar métodos más sofisticados. Ha evolucionado un conjunto de conceptos de diseño fundamentales. Son los siguientes: