El diseño de software incluye el diseño de la estructura del software, el diseño de datos, el diseño de interfaces y el diseño de procesos.
El diseño estructural se refiere a definir la relación entre los componentes principales de un sistema de software.
El diseño de datos se refiere a la definición de convertir modelos en estructuras de datos.
El diseño de interfaz se refiere a cómo comunicarse dentro del software, entre el software y el sistema operativo, y entre el software y las personas.
El diseño de procesos se refiere a la descripción del proceso de conversión de componentes estructurales del sistema en software.
Diseño de software - Principios de diseño
(Imagen) Diseño de software Diseño de software
En primer lugar, el diseño debe ser rastreable hasta el modelo de análisis: los módulos de software pueden ser asignado a múltiples necesidades.
En segundo lugar, la estructura de diseño debe simular los problemas reales tanto como sea posible.
En tercer lugar, el diseño debe mostrar coherencia.
En cuarto lugar, no trate el diseño como si fuera escritura de código.
5. Cuando creas un diseño, debes poder evaluar la calidad.
En sexto lugar, revisar el diseño para reducir errores semánticos.
Diseño de software - proceso de diseño
El diseño de software es el proceso de convertir requisitos en declaraciones (expresiones) de software. Esta declaración da una visión global del software. A través de un refinamiento progresivo, el sistema acerca las declaraciones de diseño al código fuente.
Hay dos pasos básicos: El primer paso es diseñar el diseño preliminar, centrándose en cómo transformar los requisitos en datos y marco de software.
El segundo paso es el diseño detallado, que se centra en refinar gradualmente el marco en estructuras de datos específicas y expresiones de algoritmos de software. Las acciones de diseño, los datos, los algoritmos y la programación que ocurren deben combinarse mediante el comportamiento explícito del diseño de interfaz que requieren los programas modernos. Diseño de interfaz El diseño de interfaz establece el diseño del programa y los mecanismos de interacción persona-computadora. La calidad de todo el proceso de diseño se evalúa mediante una serie de revisiones técnicas formales o recorridos de diseño.
Guía de diseño de software
(Imagen) Diseño de software Diseño de software
1. El diseño debe mostrar una estructura jerárquica para hacer más inteligente el control entre los componentes del software.
2. El diseño debe ser modular; es decir, el software debe estar dividido lógicamente en partes que implementen funciones y subfunciones específicas.
3. El diseño debe consistir en datos y expresiones de proceso claramente separables.
4. El diseño debe permitir que el módulo muestre características funcionales independientes.
5. El diseño de la interfaz debe reducir la complejidad de la conexión entre el módulo y el entorno externo.
6. El diseño debe derivarse de un enfoque repetible determinado utilizando información obtenida durante el análisis de requisitos de software.
Tener buenas características de diseño no ocurre por accidente, pero mediante la aplicación integral de principios básicos de diseño, metodologías sistemáticas y una evaluación y revisión exhaustivas en el proceso de diseño, se puede lograr un buen diseño. Los métodos de diseño de software evolucionan todos los días. Como enfoque probado y verdadero, un buen diseño debe tener las siguientes cuatro características y ser consistente en todas ellas.
1. El mecanismo para convertir la expresión del campo de información en expresión de diseño de software.
2. Símbolos que representan componentes funcionales y sus interfaces.
3. Exploración del refinamiento y subdivisión gradual.
4. Guía de evaluación de la calidad.
Al desarrollar software, sin importar qué método de diseño se utilice, debe poder aplicar hábilmente un conjunto de principios básicos sobre datos, algoritmos y diseño de programas.
Diseño de software: conceptos básicos de diseño
(Imagen) Diseño de software Diseño de software
Este principio básico del método de diseño de software se ha desarrollado durante muchos años. Cada concepto tiene distintos grados de influencia, pero todos han experimentado el bautismo del tiempo. Con base en estos principios básicos, los diseñadores pueden adoptar métodos de diseño cada vez más sofisticados.
Estos principios básicos ayudan a los diseñadores a responder las siguientes preguntas:
1. ¿Qué criterios se utilizarán al dividir el software en componentes independientes?
2. ¿Cómo dividir en detalle la representación principal del software en funciones o estructuras de datos?
3. ¿Existe un estándar unificado para la calidad técnica del diseño de software?
M.A. Jackson dijo una vez: "Para un programador de computadoras, un buen comienzo es distinguir la diferencia entre hacer que el programa se ejecute y lograr que el programa se ejecute correctamente". "Los principios básicos de diseño proporcionan el marco necesario.
Abstracción La abstracción, en el nivel más alto, se refiere a una solución descrita en términos del dominio del problema a resolver. Las abstracciones de nivel relativamente bajo están más orientadas a programas, y las abstracciones de nivel más bajo son formas directamente implementables de describir soluciones. Cada paso en el diseño de software es un refinamiento progresivo de la abstracción del nivel correspondiente de solución.
El refinamiento, también llamado refinamiento gradual, se refiere a la estrategia de desarrollar un sistema de programa refinando continuamente los detalles del programa. El proceso de descomponer gradualmente la abstracción de un programa hasta convertirlo en un lenguaje de programación también crea la jerarquía del programa. En este punto, deberíamos prestar más atención a los detalles, lo que también demuestra que el refinamiento es en realidad un proceso minucioso.
Modularidad significa que el software se puede dividir en componentes con nombre y direccionables (también llamados módulos), y los módulos se pueden integrar para satisfacer las necesidades del problema. "La modularidad del software es la única propiedad que permite una gestión inteligente de los programas". En otras palabras, cuando se divide un problema complejo en otros más pequeños, es más fácil resolverlo. Cabe señalar que incluso si un sistema debe implementarse como un "microcontrolador", también puede adoptar un diseño modular.
(Figura) Diseño de software sistema de diseño de software (arquitectura)
La arquitectura del software involucra dos características importantes del programa: 1) La estructura jerárquica del módulo. 2) Estructura de datos. Esto surge del proceso de segmentación en el análisis de requisitos que relaciona la definición implícita del problema del mundo real con los elementos de la solución de software. La evolución del software y las estructuras de datos consistentes con la definición y solución del problema comienza cuando cada parte del problema es resuelta por uno o más elementos de software. Este proceso representa la posición entre el análisis y el diseño de requisitos de software.
La jerarquía de control, también conocida como estructura del programa, describe la organización de los componentes del programa, es decir, jerarquía de control. No describe los aspectos procedimentales del software, como secuencias de procesos, eventos/comandos determinados o ciclos de trabajo. El siguiente diagrama jerárquico muestra el flujo de comunicación entre módulos y muestra qué módulos están duplicados. Este diagrama muestra cómo se puede leer un archivo, calcular el valor de cada registro y escribir un informe que muestre la información registrada y los cálculos completados.
Estructura de datos La estructura de datos describe la relación lógica entre varios datos. Las estructuras de datos especifican la organización de los datos, los métodos de acceso, las correlaciones y la selección y el procesamiento de la información. La organización y complejidad de las estructuras de datos están limitadas únicamente por la flexibilidad del diseñador. La única limitación es la cantidad de estructuras de datos clásicas que impide que surjan estructuras más probadas.
El programa de software se centra en los detalles de cada módulo y debe proporcionar especificaciones de procesamiento precisas, incluida la secuencia de eventos, puntos de decisión precisos, operaciones repetidas e incluso estructuras de datos. La expresión del programa de software es jerárquica y el método de procesamiento debe incluir referencias a todos sus submódulos.
Las reglas de ocultación de información establecen que las características de un módulo caracterizado por una decisión de diseño deben ser invisibles para el resto del módulo. En otras palabras, un módulo debe diseñarse y especificarse de manera que el contenido contenido dentro de ese módulo e inaccesible para otros módulos sea innecesario para otros módulos. Ocultar significa que se puede lograr una modularización efectiva definiendo un conjunto de módulos independientes, y la comunicación entre estos módulos solo contiene la información necesaria para realizar la función del software. El mayor beneficio proviene del uso de la ocultación de información como criterio de diseño cuando el sistema requiere modificación durante pruebas o mantenimiento futuro.
Diseño de software - Metodología de diseño
(Imagen) Diseño de software Diseño de software
En el proceso de diseño, se utilizan cuatro áreas para promover el diseño modular: Módulo, datos , arquitectura y programación de sistemas.
El diseño modular reduce la complejidad, es fácil de modificar y facilita el soporte del desarrollo paralelo de diferentes partes del sistema. Las características operativas proporcionadas por el tipo de módulo se expresan a través de una combinación de historial temporal, mecanismos de activación y modos de control. En la estructura del programa, los módulos se pueden dividir en:
1. Módulos secuenciales, a los que el programa de aplicación hace referencia y ejecutan, pero no pueden interrumpirse significativamente.
2. La aplicación puede interrumpir los módulos incrementales primero y luego reiniciarlos desde el punto de interrupción.
3. Los módulos paralelos se pueden ejecutar simultáneamente con otros módulos en un entorno multiprocesador.
Los módulos individuales son más fáciles de desarrollar porque las funciones se pueden dividir y las interfaces solo se utilizan para garantizar la independencia de las funciones. La independencia funcional se puede medir utilizando dos criterios cualitativos: cohesión, una medida de la correlación de las fortalezas funcionales de los módulos, y acoplamiento, una medida de la correlación de las interdependencias entre módulos.
Diseño de datos El diseño de datos es la primera y más importante actividad de diseño, y algunas personas lo creen firmemente. El impacto de la estructura de datos y la complejidad del programa genera un profundo impacto del diseño de datos en la calidad del software. Esta calidad se logra a través de los siguientes principios:
1. Los mismos principios de análisis de sistemas que se aplican al análisis funcional y de comportamiento también deben aplicarse a los datos.
2. Se deben identificar todas las estructuras de datos y sus respectivas operaciones.
3. Cree un diccionario de datos y utilícelo para explicar los datos y el diseño del programa en detalle.
4. Las decisiones de diseño de datos subyacentes deben posponerse para una etapa posterior del proceso de diseño.
5. La declaración (especificación) de una estructura de datos debe ser conocida sólo por aquellos módulos que utilizan directamente los datos contenidos en la estructura.
6. Utilice estructuras de datos útiles y bibliotecas de operaciones cuando sea necesario.
7. Los lenguajes de programación y diseño de software deben soportar la especificación e implementación de tipos de datos abstractos.
El objetivo principal del diseño arquitectónico es desarrollar una estructura de programa modular y expresar las relaciones de control entre módulos. Además, el diseño del sistema integra la estructura del programa y las estructuras de datos, así como definiciones de interfaz que permiten que los datos fluyan dentro del programa. Este enfoque anima a los diseñadores a centrarse en el diseño general del sistema en lugar de en los componentes individuales dentro del sistema. Elegir diferentes métodos abordará el origen del sistema de diferentes maneras, pero todas ellas deben reconocer la importancia de tener un concepto global del software.
Diseño de programación La programación se determina después de que los datos, la estructura del programa y las descripciones detalladas de los algoritmos se hayan presentado en un lenguaje natural similar al inglés. La razón para usar lenguaje natural para las declaraciones es que cuando la mayoría del equipo de desarrollo se comunica en lenguaje natural, es más fácil para un novato fuera del equipo entender las instrucciones sin aprender. Aquí hay un problema: la programación debe explicar el programa en detalle sin ambigüedades, pero todos sabemos que el lenguaje natural sin ambigüedades no es natural.
Diseño de software - Documentos de diseño
(Imagen) Diseño de software
En cualquier sistema, los documentos de desarrollo son cosas valiosas. Ahora existen muchos planes de documentación de desarrollo diferentes entre los que puede elegir al crear su sistema. Uno de los modelos bastante buenos es la llamada Especificación de diseño (Nota del traductor: el hipervínculo original aquí no es válido y no se puede obtener la plantilla original. Pero CKER también tiene un conjunto de plantillas de documentos llamado APM, que se ve bien. Tal vez lo haga Se lo mostraré más tarde..._). Al observar el esquema de este documento, preste atención a los distintos niveles de detalle. La primera sección muestra el alcance general de los resultados del diseño derivados de la descripción del sistema y otros documentos de definición. La segunda sección muestra una descripción detallada de la documentación de soporte. La tercera parte, también llamada descripción del diseño, se completa durante la fase de diseño preliminar. Las partes 4 y 5 desarrollan el contenido desde la etapa de diseño preliminar hasta la etapa de diseño detallado. La sección 6 presenta una matriz de referencias cruzadas para garantizar los dos principios siguientes:
1. Se cumplen todos los requisitos para el diseño de software.
2. Señalar los módulos clave para alcanzar necesidades específicas.
En la Parte 7, se debe probar la funcionalidad y corrección del sistema en el primer paso (paso) del desarrollo del programa de prueba. Si se han desarrollado especificaciones detalladas del procedimiento de prueba al mismo tiempo que las especificaciones de diseño, esta sección puede eliminarse. La Parte 8 detalla las precauciones y requisitos para el embalaje y transporte del sistema al sitio del usuario. Los documentos restantes de las Partes 9 y 10 incluyen descripciones de algoritmos, procedimientos de selección, listas de datos, diagramas de flujo, pseudocódigo y diagramas de flujo de datos. Toda la información relevante utilizada en el desarrollo de especificaciones de diseño se puede colocar aquí.
Diseño de software orientado a objetos
(Imagen) Diseño de software Diseño de software
El diseño orientado a objetos (OOD) utiliza información modular y métodos de procesamiento, no solo Es simplemente un método de procesamiento que asocia objetos de datos con operaciones de procesamiento. Este proceso se basa en tres conceptos de diseño extremadamente importantes: abstracción, ocultación de información y modularidad.
Todos los métodos de diseño se esfuerzan por exhibir estas características; pero sólo los mecanismos de OOD permiten a los diseñadores lograr las tres características sin agregar complejidad ni compromiso. En OOD tenemos objetos, operaciones y mensajes. Los objetos, también llamados clases, pueden ser personas, máquinas, comandos, archivos, coches, casas, etc. Operaciones, incluidos métodos para procesar estructuras de datos privadas y transformar estructuras de datos. Los mensajes se utilizan para activar estructuras de programas que llaman a controles y objetos operativos. En otras palabras, la * * * parte compartida de un objeto es su interfaz. Los mensajes se mueven entre interfaces, especificando qué operaciones desea realizar con el objeto, pero no sabe cómo se implementa la operación. El objeto decide cómo ejecutar el mensaje después de recibirlo. Ahora veamos cómo se utilizan algunas herramientas en los sistemas orientados a objetos:
1. Pseudocódigo: instrucciones cercanas a un lenguaje de programación de computadoras, pero en un lenguaje similar al inglés en lugar de un lenguaje de programación real. Para facilitar la visualización de la lógica del programa. El siguiente es un ejemplo de procesamiento de registros en un archivo:
Inicio (Inicio)
Inicializador (Inicializador)
Leer registros (Leer registros)
p>Procesar Registro (Process Record)
Mover el registro al área de impresión.
Escribe una línea (escribe una línea)
Finaliza el trabajo (finaliza la tarea)
No huyas. (dejar de ejecutar)
2. Prototipo: el paso en el desarrollo de una primera versión o modelo de un paquete de software, o el paso en el que se prepara el hardware de la computadora para las pruebas de preproducción. Por lo general, se puede crear utilizando su herramienta RAD favorita.
El diagrama 3.TOE (tarea tarea, Objeto, Diagrama de eventos) se utiliza para mostrar la tarea o trabajo a completar, el objeto que realiza el trabajo y los eventos o acciones que completan el proceso. Mire el diagrama TOE, que suma dos números:
Tarea, Objeto, Evento
Iniciar el formulario principal del programa al inicio
Ingrese el primer número .
Ingrese el segundo número ingresado por el usuario.
Suma EdtResult OnClick
El programa sale de BtnExit OnClick.
Como puedes ver en el ejemplo anterior, esto explica correctamente qué se hace, quién lo hace y cuándo.
Diseño de software: campos de aplicación
(Imagen) Software de diseño software de diseño de gabinetes kd
En la sociedad moderna, el software se utiliza en muchos aspectos. El software típico incluye sistemas integrados de correo electrónico, interfaces hombre-computadora, suites ofimáticas, sistemas operativos, compiladores, bases de datos, juegos, etc.
Software de diseño de gabinetes Kd
Casi todas las industrias tienen aplicaciones de software, como la industria, la agricultura, la banca, la aviación, los departamentos gubernamentales, etc. Estas aplicaciones promueven el desarrollo económico y social, mejoran la eficiencia laboral de las personas y mejoran la calidad de vida.
El diseño de software existe en diversas aplicaciones y en todos los aspectos del desarrollo de software. La programación normalmente implica un proceso iterativo de programación y codificación, que es una fase del desarrollo de software.
La ingeniería de software intenta guiar todos los aspectos de un proyecto de software, desde el análisis de viabilidad del software hasta su mantenimiento una vez finalizado. La ingeniería de software cree que el desarrollo de software está estrechamente relacionado con diversas actividades del mercado. Como ventas de software, capacitación de usuarios, instalación de software y hardware relacionados, etc. La metodología de la ingeniería de software cree que un programador independiente no debe desarrollarse sin un equipo, y la programación no debe separarse de los requisitos, el diseño y los intereses del cliente del software.
El desarrollo de la ingeniería del software es la encarnación de la industrialización de la programación informática.
Diseño de software - Dirección de desarrollo
(Imagen) Diseño de software Diseño de software
El proceso de desarrollo de software mejora con el desarrollo de la tecnología de desarrollo. Desde el modelo de desarrollo en cascada inicial hasta el desarrollo iterativo en espiral posterior e incluso los métodos de desarrollo ágiles emergentes recientemente, todos muestran diferentes comprensiones del proceso de desarrollo en diferentes épocas, así como formas de entender diferentes tipos de proyectos en la industria del software.
Tenga en cuenta la importante diferencia entre el proceso de desarrollo de software y la mejora del proceso de software.
Términos como ISO 15504, ISO 9000, CMM, CMMI, etc. describen algunos marcos de mejora de procesos de software, que proporcionan una serie de estándares y estrategias para guiar a las organizaciones de software a mejorar la calidad del proceso de desarrollo de software y las capacidades de la organización de software. , en lugar de dar desarrollo Definición específica de proceso.
El desarrollo ágil es un avance importante en la ingeniería de software. Enfatiza que el desarrollo de software debería poder hacer frente adecuadamente a posibles cambios e incertidumbres futuros.
El desarrollo ágil se considera un enfoque "ligero". El método ligero más famoso debería ser la "Programación extrema" (XP para abreviar). Al método ligero corresponde la existencia del "método pesado". El enfoque de peso pesado enfatiza el enfoque centrado en el proceso de desarrollo más que en las personas. Ejemplos de métodos pesados son CMM, PSP y TSP.
La programación orientada a aspectos (AOP) se considera otro avance importante en la ingeniería de software de los últimos años. Aspecto aquí se refiere a una colección de objetos y funciones que completan una función. En este sentido, existen procedimientos y plantillas generales. [1]