Ingeniería de software—Capítulo 5 Disposición general de los puntos de conocimiento del diseño

Esta columna son las notas personales del blogger, el objetivo principal es utilizar el tiempo fragmentado para memorizar los puntos de conocimiento de la ingeniería blanda, ¡declaro por la presente!

Directorio de artículos

1. ¿Cuál es el propósito básico del diseño general?

2. ¿La tarea de diseño general?

3. ¿Cuáles son las dos fases del proceso de diseño general?

4. ¿Los pasos del diseño general?

5. Escriba un documento para registrar los resultados del diseño general ¿Cuál es el contenido del documento?

6. ¿Qué es el método de diseño orientado al flujo de datos?

7. ¿Qué principios sigue el diseño general?

8. ¿Qué es la modularización?

9. ¿Cuáles son los beneficios de la modularización?

10. ¿Qué es la abstracción? ¿Cómo se relaciona con el proceso de ingeniería de software?

11. ¿Qué es el refinamiento paso a paso?

12. ¿Qué es la independencia del módulo?

13. ¿Por qué es importante la independencia de los módulos?

14. ¿Qué es el acoplamiento?

15. ¿Qué es la cohesión?

16. ¿Cuál es el criterio para la búsqueda del acoplamiento y la cohesión en el desarrollo de software?

17. ¿Ordenar el grado de acoplamiento de menor a mayor? y dar ejemplos

18. ¿Ordenar el grado de cohesión de mayor a menor? Y dar ejemplos respectivamente?

19. ¿Qué son las reglas heurísticas?

20. ¿Cuáles son el alcance y el dominio de control de un módulo?

21. ¿Qué son la profundidad, el ancho, el abanico de entrada y el abanico de salida?

22. ¿Cuál es la diferencia entre los significados representados por las líneas en el diagrama jerárquico y el diagrama de bloques jerárquico?

23. ¿Qué software de diseño es adecuado para los diagramas jerárquicos que se utilizarán en el proceso?

24. ¿Cuál es el significado de los símbolos en el diagrama de estructura?

25. ¿Pueden los diagramas jerárquicos y diagramas estructurales representar el orden de llamada entre módulos?

26. ¿Cuál es el objetivo del método de diseño orientado al flujo de datos? ¿Qué incluye el flujo de información?

27. ¿Es lo mismo desarrollar un plan de prueba que diseñar casos de prueba? Por qué

28. ¿La necesidad del diseño general?

Resumen al final del capítulo.


1. ¿Cuál es el propósito básico del diseño general?

El diseño general también se denomina diseño de esquema o diseño preliminar , que responde principalmente a la pregunta de " en pocas palabras, cómo se debe implementar el sistema " .

2. ¿La tarea de diseño general?

  1. A través de esta fase de trabajo se delimitan los elementos físicos que componen el sistema
  2. Diseñar la estructura del software , determinar de qué módulos se compone cada programa del sistema y la relación entre módulos

3. ¿Cuáles son las dos fases del proceso de diseño general?

Fase de diseño del sistema, fase de diseño de la estructura

4. ¿Los pasos del diseño general?

  1. imagina alternativas
  2. elegir una solución razonable
  3. Recomendar la mejor solución
  4. descomposición funcional
  5. Estructura del software de diseño
  6. base de datos de diseño
  7. Crear un plan de prueba
  8. escribir documentos
  9. revisar y revisar

5. Escriba un documento para registrar los resultados del diseño general ¿Cuál es el contenido del documento?

  1. instrucciones
  2. manual de usuario
  3. Plan de prueba
  4. plan de implementación detallado
  5. Resultados del diseño de la base de datos

6. ¿Qué es el método de diseño orientado al flujo de datos?

        El diagrama de flujo de datos obtenido en la etapa de análisis de requisitos es un excelente punto de partida para el diseño general Si el diagrama de flujo de datos se ha refinado a un nivel apropiado, la estructura del software se puede mapear directamente desde el diagrama de flujo de datos . método de diseño orientado al flujo.

7. ¿Qué principios sigue el diseño general?

  1. Modular
  2. abstracto
  3. refinamiento progresivo
  4. Ocultación y localización de información
  5. módulo independiente

8. ¿Qué es la modularización?

        La modularización consiste en dividir el programa en módulos con nombres independientes y accesibles de forma independiente , cada módulo completa una subfunción , y estos módulos se integran para formar un todo, que puede completar la función especificada para satisfacer las necesidades de los usuarios.

9. ¿Cuáles son los beneficios de la modularización?

  1. El uso del principio de modularización puede hacer que la estructura del software sea más clara , no solo fácil de diseñar sino también fácil de leer y comprender.
  2. Haga que el software sea fácil de probar y depurar
  3. Ayuda a mejorar la confiabilidad del software
  4. Ayuda a mejorar la modificabilidad del software .
  5. Contribuye a la gestión organizacional de los proyectos de desarrollo.

10. ¿Qué es la abstracción? ¿Cómo se relaciona con el proceso de ingeniería de software?

La abstracción se refiere a extraer las características esenciales de las cosas sin considerar sus detalles por el momento.

Cada paso en el proceso de ingeniería de software es un refinamiento del nivel de abstracción de la solución de software.

11. ¿Qué es el refinamiento paso a paso?

        El refinamiento gradual se refiere a "retrasar la consideración de los detalles del problema tanto como sea posible para concentrarse en resolver el problema principal ”. Es el método básico utilizado por los seres humanos para resolver problemas complejos, y también es la base de muchas técnicas de ingeniería de software. El refinamiento es en realidad un proceso de refinamiento , y la abstracción y el refinamiento son un par de conceptos complementarios .

[Nota] La solución paso a paso se puede considerar como una técnica para priorizar los diversos problemas que deben resolverse en un período de tiempo.

12. ¿Qué es la independencia del módulo?

El concepto de independencia del módulo es una consecuencia directa de los conceptos de modularidad, abstracción, ocultación de información y localización.

13. ¿Por qué es importante la independencia de los módulos?

  1. El software modular efectivo es relativamente fácil de desarrollar
  2. Los módulos independientes son más fáciles de probar y mantener

14. ¿Qué es el acoplamiento?

        El acoplamiento es una medida de cuán estrechamente dependen los diferentes módulos entre sí . La fuerza del acoplamiento depende de la complejidad de las interfaces entre los módulos , los puntos de entrada o acceso a un módulo y los datos que pasan a través de las interfaces.

15. ¿Qué es la cohesión?

La cohesión es una medida de cuán estrechamente se combinan entre sí los elementos de un módulo.

16. ¿Cuál es el criterio para la búsqueda del acoplamiento y la cohesión en el desarrollo de software?

El desarrollo de software persigue el principio de " bajo acoplamiento y alta cohesión ". La práctica demuestra que la cohesión es más importante

17. ¿Ordenar el grado de acoplamiento de menor a mayor? y dar ejemplos

  1. Acoplamiento de datos : dos módulos intercambian información a través de parámetros, y la información intercambiada son solo datos. Por ejemplo: dos módulos, el resultado de la operación del módulo A se pasa como parámetro al módulo B para participar en el cálculo
  2. Acoplamiento de control : hay información de control en la información de transmisión, y la descomposición adecuada de los módulos por acoplamiento de control puede reemplazarse por acoplamiento de datos. Por ejemplo: el acoplamiento entre el módulo de control remoto del aire acondicionado y el módulo de la unidad externa del aire acondicionado
  3. Acoplamiento de características : pasa toda la estructura de datos como un parámetro, y el módulo llamado solo usa algunos de sus elementos. Por ejemplo: un sistema necesita información de la tarjeta de identificación y el otro solo necesita información del nombre, pero si se pasa toda la información del usuario, se producirá el acoplamiento de funciones.
  4. Acoplamiento de entorno común : dos o más módulos interactúan a través de un entorno de datos común. Por ejemplo: Múltiples módulos comparten una matriz global, que puede ser leída y escrita por diferentes módulos
  5. Acoplamiento de contenido : si un módulo está relacionado con las propiedades internas de otro módulo, usar directamente el código del programa o los datos internos de otro módulo sin llamar se denomina acoplamiento de contenido. Para evitar resueltamente, como la declaración GOTO.

[Nota 1] Ningún acoplamiento de conexión tiene el grado más bajo de acoplamiento, pero es casi imposible de lograr

[Nota 2] Principios de diseño: use el acoplamiento de datos tanto como sea posible, use menos acoplamiento de control y acoplamiento de funciones, limite el alcance del acoplamiento del entorno de anuncios y evite por completo el acoplamiento de contenido

18. ¿Ordenar el grado de cohesión de mayor a menor? Y dar ejemplos respectivamente?

  1. Cohesión funcional : Todos los elementos de procesamiento de un módulo pertenecen a un todo y cumplen una sola función. Por ejemplo: todas las operaciones en un módulo son para calcular la edad de una persona
  2. Cohesión secuencial : los elementos de procesamiento en un módulo están estrechamente relacionados con la misma función, y el procesamiento debe ejecutarse secuencialmente. Por ejemplo: para calcular el puntaje promedio de las calificaciones, primero debe ingresar todas las calificaciones, calcular el puntaje total y luego hacer una división para calcular el puntaje promedio. La salida del cálculo de la puntuación total se utiliza como entrada del cálculo de la puntuación media, y es necesaria la transmisión de datos, lo que limita la relación de secuencia.
  3. Cohesión de la comunicación : todos los elementos de un módulo utilizan los mismos datos de entrada y/o producen los mismos datos de salida. Por ejemplo: hay una subrutina responsable de procesar la información de entrada para producir informes y, al mismo tiempo, actualizar los datos existentes con los datos de entrada, y las dos operaciones usan la misma fuente de datos.
  4. Cohesión del proceso : los elementos de procesamiento dentro de un módulo están relacionados y deben ejecutarse en un orden específico. Por ejemplo: Para calcular las calificaciones promedio de cada clase, se requiere generar las calificaciones de la clase 123 en orden.
  5. Agregación temporal : las tareas contenidas en un módulo deben ejecutarse en el mismo período de tiempo. Por ejemplo: poner la inicialización de múltiples variables en el mismo módulo.
  6. Cohesión lógica : Las tareas realizadas por un módulo pertenecen lógicamente a la misma categoría oa una similar. Por ejemplo: un módulo produce varios tipos de salida, imprime números, imprime nombres, imprime matrices, etc., todas sus funciones son imprimir información de salida y las funciones son las mismas.
  7. Cohesión accidental : un módulo completa un conjunto de tareas, e incluso si las tareas están relacionadas entre sí, la relación es muy laxa. Por ejemplo: hay n declaraciones en el módulo A, pero estas declaraciones no tienen relación entre sí.

19. ¿Qué son las reglas heurísticas?

  1. Mejore la estructura del software y mejore la independencia del módulo
  2. El tamaño del módulo debe ser moderado
  3. La profundidad, el ancho, el abanico de entrada y el abanico de salida deben ser apropiados
  4. El alcance del módulo debe estar dentro del alcance del control
  5. Esforzarse por reducir la complejidad de la interfaz del módulo.
  6. Diseño de módulos de entrada única y salida única
  7. La funcionalidad del módulo debe ser predecible

20. ¿Cuáles son el alcance y el dominio de control de un módulo?

Ámbito : el conjunto de todos los módulos afectados por un predicado dentro de ese módulo

Dominio de control : el módulo en sí y la colección de todos los módulos directamente o subordinados a él

 [Nota] La figura anterior es un ejemplo, el dominio de control del módulo A es A, B, C, D, E, F

21. ¿Qué son la profundidad, el ancho, el abanico de entrada y el abanico de salida?

  1. Profundidad: indica el número de capas de control en la estructura del software , que a menudo indica aproximadamente el tamaño y la complejidad de un sistema
  2. Ancho: Indica el valor máximo del número total de módulos en el mismo nivel dentro de la estructura del software . En general, cuanto mayor es el ancho, más complejo es el sistema. El factor que más afecta el ancho es el fan-out del módulo
  3. Fan-out: Indica el número de módulos que un módulo controla directamente (llamadas) . El fan-out promedio de un buen sistema es de 3~4
  4. Fan-in: Indica cuantos modulos de nivel superior lo llaman , fan-in multisuperficie, el modulo se llama mas veces, es mejor

22. ¿Cuál es la diferencia entre los significados representados por las líneas en el diagrama jerárquico y el diagrama de bloques jerárquico?

La línea de conexión en el diagrama jerárquico representa la relación de llamadas , mientras que la línea de conexión en el diagrama de bloques jerárquico representa la relación de composición.

 

 [Nota] La segunda imagen es un diagrama de bloques jerárquico, que se analiza desde la perspectiva de las entidades , mientras que el diagrama jerárquico se analiza desde la perspectiva de las funciones .

23. ¿Qué software de diseño es adecuado para los diagramas jerárquicos que se utilizarán en el proceso?

De arriba hacia abajo

24. ¿Cuál es el significado de los símbolos en el diagrama de estructura?

Los diagramas de estructura son otra poderosa herramienta para el diseño de software.

Un cuadro representa un módulo, las flechas entre ellos representan la relación de llamada del módulo y las flechas anotadas representan los mensajes que se pasan de un lado a otro durante el proceso de llamada del módulo.

25. ¿Pueden los diagramas jerárquicos y diagramas estructurales representar el orden de llamada entre módulos?

        Los diagramas jerárquicos y los diagramas estructurales no pueden representar estrictamente el orden de llamada entre módulos, no indican cuándo llamar a los módulos de nivel inferior, sino que solo indican a qué módulos llama un módulo.

26. ¿Cuál es el objetivo del método de diseño orientado al flujo de datos? ¿Qué incluye el flujo de información?

El objetivo de un enfoque de diseño orientado al flujo de datos es brindar un enfoque sistemático para diseñar estructuras de software.

El flujo de información incluye el flujo de transformación y el flujo de transacciones

27. ¿Es lo mismo desarrollar un plan de prueba que diseñar casos de prueba? Por qué

        Los dos son diferentes , porque el plan de prueba se formula en la etapa de diseño general, pero no hay una implementación de código específica en este momento , por lo que es imposible escribir cada caso de prueba de manera específica.

28. ¿La necesidad del diseño general?

        Es posible ubicarse a nivel global , gastar menos costos, analizar y comparar múltiples esquemas de implementación de sistemas y estructuras de software posibles desde un nivel más abstracto , y seleccionar el mejor esquema y la estructura de software más razonable de ellos , a fin de utilizar un costo relativamente bajo Desarrollar un sistema de software de mayor calidad.

Resumen al final del capítulo.

        El propósito básico de la fase de diseño general es determinar cómo el sistema completa las tareas predeterminadas de manera abstracta y general , es decir: se debe determinar el esquema de configuración física del sistema, y ​​luego la estructura de cada programa que lo realiza. hasta el sistema debe ser determinado. Por lo tanto, la fase de diseño general se compone principalmente de dos pequeñas fases. En primer lugar, es necesario llevar a cabo el diseño del sistema . A partir del diagrama de flujo de datos, imagine varios esquemas físicos razonables para completar las funciones del sistema. Los analistas deben analizar y comparar cuidadosamente estos esquemas, y seleccionar conjuntamente un esquema óptimo con los usuarios. Luego, se lleva a cabo el diseño de la estructura del software para determinar de qué módulos consta el software y la relación dinámica de llamadas entre estos módulos. Los diagramas de jerarquía y los diagramas de estructura son herramientas comunes para representar estructuras de software. El principio más importante
        que debe seguirse en el diseño de la estructura del software es el principio de independencia de los módulos , es decir, el software debe estar compuesto por un grupo de módulos que completan subfunciones relativamente independientes, y la relación de interfaz entre estos Los módulos deben ser lo más simples posible.         La abstracción y el refinamiento son un par de conceptos complementarios , y también son los métodos más utilizados y efectivos por los seres humanos para resolver problemas complejos. Un método efectivo en el diseño de estructuras de software es construir una jerarquía de software desde la abstracción hasta lo concreto.

        Los ingenieros de software han acumulado una gran experiencia en la práctica a largo plazo del desarrollo de software, sumando estas experiencias para dibujar algunas reglas heurísticas muy valiosas, que a menudo pueden brindar valiosas sugerencias sobre cómo mejorar el diseño del software. En el proceso de desarrollo de software, no solo debemos prestar total atención y hacer uso de estas reglas heurísticas, sino también evitar copiarlas mecánicamente de la situación real .

        El refinamiento paso a paso de arriba hacia abajo es un enfoque común para el diseño de la estructura del software; sin embargo, si ya tiene un diagrama de flujo de datos detallado, también puede usar el método de diseño orientado al flujo de datos para mapear el software a partir del flujo de datos. diagrama de forma formalizada estructura . Debe recordarse que lo que se mapea de esta manera es solo la estructura preliminar  del software, y la estructura preliminar del software debe analizarse y mejorarse cuidadosamente con base en los principios de diseño y refiriéndose a las reglas heurísticas para obtener módulos de mayor calidad. y una estructura de software más razonable.
        Antes de llevar a cabo el diseño y la programación detallados del proceso, la ventaja del diseño estructural es que la estructura del software se puede optimizar a nivel global en la etapa inicial del desarrollo del software. La optimización durante este período es económica y puede resultar en mejoras significativas en la calidad del software .

Siguiente capítulo: Ingeniería de software—Capítulo 6 Diseño detallado Disposición de puntos de conocimiento

 Repetidamente, con los pies en la tierra; nunca olvidar, ¡habrá ecos!

Supongo que te gusta

Origin blog.csdn.net/qq_52487066/article/details/131362367
Recomendado
Clasificación