S OFTWARE D ESIGN
ChikisEli5 de Junio de 2013
4.022 Palabras (17 Páginas)313 Visitas
C APÍTULO 3
S OFTWARE D ESIGN
SIGLAS
ADL: Arquitectura lenguajes de descripción de
CRC: Tarjeta Colaborador Clase Responsabilidad
ERD: diagrama entidad-relación
IDL: Interface Description Language
DFD: Diagrama de flujo de datos
PDL: Pseudo-código y el diseño de programas de idiomas
CBD: Diseño basado en componentes
INTRODUCCIÓN
Diseño se define en [IEEE610.12-90] ya que tanto "el proceso de definición de la arquitectura, componentes, interfaces y otras características de un sistema o componente" y "el resultado de [esta] proceso". Visto como un proceso, diseño de software es la ingeniería de la actividad del ciclo de vida del software en el que se analizan los requisitos de software con el fin de producir una descripción de la estructura interna del software que va a servir de base para su construcción. Más precisamente, un diseño de software (el resultado) debe describir la arquitectura de software - es decir, cómo se descompone y se divide en componentes de software - y las interfaces entre los componentes. También debe describir los componentes en un nivel de detalle que permiten su construcción.
El diseño de software juega un papel importante en el desarrollo de software: permite a los ingenieros de software para producir diversos modelos que forman una especie de plano de la solución que se aplicará. Podemos analizar y evaluar estos modelos para determinar si son o no nos permitirán cumplir con los diversos requisitos. También podemos examinar y evaluar varias soluciones alternativas y compensaciones. Finalmente, podemos usar los modelos resultantes de planificar las actividades de desarrollo posteriores, además de utilizarlos como entrada y el punto de partida de la construcción y las pruebas.
En una lista estándar de los procesos del ciclo de vida del software, tales como 12.207 Procesos del Ciclo de Vida de Software IEEE / EIA [IEEE12207.0-96], diseño de software consta de dos actividades que se ajustan entre el software de análisis de requerimientos y construcción de software:
Diseño de la arquitectura del software (a veces llamado diseño de nivel superior): descripción de la estructura y organización de alto nivel de software y la identificación de los distintos componentes
Software de diseño detallado: describir cada componente suficientemente para permitir su construcción.
En cuanto al alcance del Diseño Área de Conocimiento Software (KA), la descripción actual KA no trata todos los temas cuyo nombre contiene la palabra "diseño". En la terminología de Tom DeMarco (DeM99), el KA discutido en este capítulo se ocupa principalmente de D-design (diseño de descomposición, software de mapas en piezas de componentes). Sin embargo, debido a su importancia en el creciente campo de la arquitectura del software, también vamos a abordar FPdesign (patrón de diseño de la familia, cuyo objetivo es establecer puntos en común explotables en una familia de software). Por el contrario, el diseño KA Software no aborda-diseño (diseño de invención, generalmente se realiza durante el proceso de requisitos de software con el objetivo de conceptualizar y especificando software para satisfacer las necesidades y requerimientos descubiertas), ya que este tema debe ser considerado como parte del análisis de las necesidades y la especificación.
El Software Design description KA se relaciona específicamente con los requisitos de software, Construcción de Software, Gestión de Ingeniería de Software, Calidad de Software, y disciplinas afines de la Ingeniería del Software.
DESGLOSE DE TEMAS PARA EL DISEÑO DE SOFTWARE
1. Fundamentos del diseño de software
Los conceptos, nociones y terminología introducidas aquí constituye una base fundamental para la comprensión de la función y el alcance del diseño de software.
1.1. Conceptos generales de diseño
El software no es el único campo en el que el diseño está involucrado. En el sentido más general, podemos ver el diseño como una forma de resolución de problemas. [Bud03: c1] Por ejemplo, el concepto de un problema complejo - un problema sin solución definitiva - es interesante en cuanto a la comprensión de los límites de diseño. [Bud04: c1] Un número de otras nociones y conceptos son también de interés en la comprensión del diseño en su sentido general: objetivos, limitaciones, alternativas, representaciones y soluciones. [Smi93]
1.2. Contexto del Diseño de Software
Para entender el papel de diseño de software, es importante comprender el contexto en el que se inserta, el ciclo de vida de ingeniería de software. Por lo tanto, es importante comprender las principales características de software de análisis de los requisitos de diseño de software vs vs vs construcción de software de pruebas de software. [IEEE12207.0-96]; Lis01: c11; Mar02; Pfl01: c2; Pre04: c2]
1.3. Proceso de Diseño de Software
El diseño de software es generalmente considerado como un proceso de dos pasos: [Bas03; Dor02: v1c4s2; Fre83: I; IEEE12207.0-96]; Lis01: c13; Mar02: D]
1.3.1. Diseño arquitectónico
El diseño arquitectónico se describe cómo se descompone software y organizada en componentes (la arquitectura de software) [IEEEP1471-00]
1.3.2. Diseño detallado
El diseño detallado se describe el comportamiento específico de estos componentes. La salida de este proceso es un conjunto de modelos y artefactos que registran las principales decisiones que han sido tomadas. [Bud04: c2; IEE1016-98; Lis01: c13; Pre04: c9]
1.4. Técnicas de Activación
Según el Diccionario Inglés de Oxford, el principio es "una verdad básica o una ley general ... que se utiliza como base de razonamiento o una guía para la acción." Principios de diseño de software, también llamado permitiendo técnicas [Bus96], son nociones claves considerados fundamentales para muchos diferentes enfoques y conceptos de diseño de software. Las técnicas que permiten son los siguientes: [Bas98: C6; Bus96: C6; IEEE1016-98; Jal97: C5, C6; Lis01: C1, C3; Pfl01: C5; Pre04: c9]
1.4.1. Abstracción
La abstracción es "el proceso de olvido de información para que las cosas que son diferentes pueden ser tratados como si fueran lo mismo." [Lis01] En el contexto del diseño de software, dos mecanismos clave de abstracción son parametrización y especificación. Abstracción por especificación conduce a tres grandes tipos de abstracción: abstracción procedimental, la abstracción de datos y de control (iteración) abstracción. [Bas98: C6; Jal97: C5, C6; Lis01: C1, C2, C5, C6; Pre04: c1]
1.4.2. Acoplamiento y cohesión
El acoplamiento se define como la fuerza de las relaciones entre los módulos, mientras que la cohesión se define por cómo se relacionan los elementos que componen un módulo. [Bas98: c6; Jal97: c5; Pfl01: c5; Pre04: c9]
1.4.3. La descomposición y la modularización
Descomposición de modularización y software de gran tamaño en un número de los independientes más pequeños, por lo general con el objetivo de la colocación de diferentes funcionalidades o responsabilidades en diferentes componentes. [Bas98: c6; Bus96: c6; Jal97: c5; Pfl01: c5; Pre04: c9]
1.4.4. Encapsulación / ocultación de información
Encapsulación / ocultación de información significa agrupar y empaquetar los elementos y detalles internos de una abstracción y hacer esos detalles inaccesible. [Bas98: c6; Bus96: c6; Jal97: c5; Pfl01: c5; Pre04: c9]
1.4.5. Separación de la interfaz y la implementación
La separación de interfaz y la implementación implica la definición de un componente mediante la especificación de una interfaz pública, conocido por los clientes, separado de los detalles de cómo se realiza el componente. [Bas98: c6; Bos00: c10; Lis01: c1, c9]
1.4.6. Suficiencia, exhaustividad y primitivismo
El logro de la suficiencia, integridad y primitivismo significa asegurar que un componente de software captura todas las características importantes de una abstracción, y nada más. [Bus96: C6; Lis01: c5]
2. Aspectos clave en el diseño de software
Una serie de cuestiones fundamentales deben abordarse en el diseño de software. Algunos son problemas de calidad que todo el software debe enfrentar - por ejemplo, el rendimiento. Otra cuestión importante es cómo se desglosa, organizar y componentes de software del paquete. Esto es tan fundamental que todos los enfoques de diseño deben tener en cuenta que de una manera u otra (ver tema 1.4 Habilitación Técnicas y subzona 6 Estrategias y métodos de diseño de software). Por el contrario, otras cuestiones "acuerdo con algún aspecto del comportamiento del software que no está en el dominio de aplicación, sino que se ocupa de algunas de las áreas de apoyo." [Bos00] Estas cuestiones, que suelen cruzar a cortar la funcionalidad del sistema, se ha hecho referencia como aspectos: "[aspectos] no suelen ser unidades de descomposición funcional del software, sino más bien a ser propiedades que afectan al rendimiento o la semántica de los componentes en formas sistémicas "(Kic97). Algunas de estas cuestiones fundamentales y transversales son los siguientes (se presentan en orden alfabético):
2.1. Concurrencia
Cómo descomponer el software en los procesos, tareas y subprocesos y tratar con eficacia relacionada, atomicidad, sincronización y problemas de programación. [Bos00: c5; Mar02: CSD; Mey97: c30; Pre04: c9]
2.2. Control y Manejo de Eventos
Cómo organizar los datos y el flujo de control, la forma de
...