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. El diseño de software puede referirse a "toda la actividad involucrada en conceptualizar, enmarcar, implementar, encargar y finalmente modificar sistemas complejos" o "la actividad que sigue a la especificación de requisitos y antes de la programación, como ... [en] un proceso estilizado de ingeniería de software. "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.

Descripción general

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 (es decir, sin 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 que se cree a partir de marcos confiables o se implemente 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). De manera similar, el modelo de diseño que se crea para el software proporciona una variedad de vistas diferentes del software de computadora. Los principios básicos de diseño permiten al ingeniero de software navegar por el proceso de diseño. Davis sugiere un conjunto de principios para el diseño de software, que se han adaptado y ampliado en la siguiente lista: El proceso de diseño no debería verse afectado por la "visión de túnel". Un buen diseñador debe considerar enfoques alternativos, juzgando cada uno en función de los requisitos del problema, los recursos disponibles para hacer el trabajo. El diseño debe ser rastreable hasta el modelo de análisis. Debido a que un solo elemento del modelo de diseño a menudo se remonta a múltiples requisitos, es necesario tener un medio para rastrear cómo los requisitos han sido satisfechos por el modelo de diseño. El diseño no debe reinventar la rueda. Los sistemas se construyen utilizando un conjunto de patrones de diseño, muchos de los cuales probablemente se hayan encontrado antes. Estos patrones siempre deben