Académique Documents
Professionnel Documents
Culture Documents
Diseo de Software
Una vez que se han establecido los requisitos del software, el diseo es la primera de tres actividades tcnicas: diseo, codificacin y prueba El diseo es tcnicamente la parte central de la ingeniera del software Durante el diseo se desarrollan, revisan y se documentan los refinamientos progresivos de las estructuras de datos, de la estructura del programa y de los detalles procedimentales El diseo da como resultado representaciones cuya calidad puede ser evaluada Mediante la aplicacin de metodologas de diseo se realiza
El diseo de datos transforma el modelo de informacin creado durante el anlisis, en las estructuras de datos que se van a requerir para implementar el software. El diseo arquitectnico define las relaciones entre los principales elementos estructurales del programa. El diseo procedimental transforma los elementos estructurales en una descripcin procedimental del software
Finalmente, se genera el cdigo fuente y, para integrar y validar el software, se llevan a cabo las pruebas.
Desde el punto de vista de la gestin del proyecto, el diseo del software se realiza en dos etapas: el diseo preliminar y el diseo detallado
El diseo preliminar se centra en la transformacin de los requisitos en los datos y la arquitectura del software. El diseo detallado se ocupa del refinamiento y de la representacin arquitectnica que lleva a una estructura de datos refinada y a las representaciones algortimicas del software.
Adems del diseo de datos, del diseo arquitectnico y del desarrollo procedimental, muchas aplicaciones modernas requieren un diseo de la interfaz
Un diseo debe tener una organizacin jerrquica Un diseo debe ser modular, es decir, el software debe estar dividido en elementos que realicen funciones especficas Un diseo debe llevar a mdulos que exhiban caractersticas funcionales independientes Un diseo debe conducir a interfaces que reduzcan la complejidad de las conexiones entre los mdulos y el exterior
Los fundamentos del diseo ayudan al desarrollador de software a responder a estas preguntas:
Qu criterios puedo utilizar para dividir el software en componentes individuales? Cmo se separan los detalles de una funcin o de la estructura de los datos de la representacin conceptual del software? Existen criterios uniformes que definan la calidad tcnica de un diseo de software?
El principio de la sabidura de un programador est en reconocer la diferencia entre obtener un programa que funcione y uno que funcione correctamente
5
ABSTRACCIN
Cuando se considera una solucin modular para cualquier problema, pueden formularse varios niveles de abstraccin
En el nivel superior de abstraccin se establece una solucin en trminos generales, en lenguaje natural. En los niveles inferiores de abstraccin se utiliza una orientacin ms procedimental. Por ltimo, en el nivel ms bajo de abstraccin, se establece una solucin, de forma que pueda implementarse directamente.
REFINAMIENTO
La arquitectura de un programa se desarrolla en niveles sucesivos de refinamiento de los detalles procedimentales Se desarrolla una jerarqua descomponiendo una funcin de forma sucesiva hasta que se llega a las sentencias del lenguaje de programacin Comenzamos con una declaracin de la funcin (o una descripcin de la informacin) definida a un nivel superior de abstraccin. Es decir, la declaracin describe la funcin o la informacin conceptualmente, pero no proporciona informacin sobre el funcionamiento interno de la funcin o sobre la estructura interna de la informacin, sino que se va a realizando sucesivamente, dando cada vez ms detalles
El software se divide en componentes con nombres y ubicaciones determinados, que se denominan mdulos y que se integran para satisfacer los requisitos El software monoltico (es decir, un programa grande compuesto de un solo mdulo) no puede ser estudiado fcilmente, ya que el nmero de caminos de control, el nmero de variables y la complejidad global haran el cdigo prcticamente indescifrable
ARQUITECTURA DEL SOFTWARE, La arquitectura del software se refiere a dos caractersticas importantes del software:
JERARQUA DE CONTROL
Tambin se le conoce como estructura del programa, y representa la organizacin jerrquica de los mdulos de un programa e implica una jerarqua de control. La representacin de jerarqua se suele representar con diagramas de rbol
10
ESTRUCTURA DE DATOS
La estructura de datos es una representacin de la lgica que existe entre los elementos individuales de informacin. Debido a que la estructura de la informacin afectar de forma determinante al diseo procedimiental, la estructura de datos es tan importante como la estructura del programa en la representacin de la arquitectura del software. La estructura de datos dicta la organizacin, los mtodos de acceso, el grado de asociatividad y las alternativas para el tratamiento de la informacin. Las estructuras de datos clsicas son los elementos escalares, los arrays, las listas y los arboles
11
La estructura del programa define la jerarqua de control, independientemente de las decisiones y secuencias de procesamiento. El procedimiento del software se centra en los detalles de procesamiento de cada mdulo individual
12
OCULTAMIENTO DE INFORMACIN
El concepto de modularidad nos lleva a la pregunta: cmo descomponer una solucin de software en el mejor conjunto de mdulos? El principio de ocultamiento de la informacin sugiere que los mdulos deben especificarse de forma que la informacin (procedimientos y datos) contenida dentro de un mdulo sea inaccesible a otros mdulos que no necesiten tal informacin. Por tanto se trata de definir una serie de mdulos independientes que se comuniquen slo a travs de la informacin necesaria para realizar la funcin de software. El uso de ocultamiento de informacin en el diseo facilitar las modificaciones, prueba y mantenimiento del software, ya que como la mayora de los datos y de los procedimientos estn ocultos a otras partes del software, ser menos probable que los errores que se introduzcan durante la modificacin se propaguen a otros mdulos del software.
13
Diseo Modular
Independencia Funcional
La independencia funcional es una derivacin directa de la modularidad, de la abstraccin y del ocultamiento de informacin
La independencia se mide con dos criterios cualitativos que son la cohesin y el acoplamiento.
14
Cohesin
Grados de Cohesin
Cohesin.
Baja cohesin.
Cohesin coincidente. El mdulo hace muchas cosas sin relacin. Cohesin lgica. El mdulo hace muchas cosas relacionadas lgicamente. Cohesin temporal. El mdulo hace muchas cosas relacionadas por el hecho que deben hacerse al mismo tiempo. Cohesin procedimental. El mdulo hace varias cosas relacionadas que deben ejecutarse en cierto orden. Cohesin de comunicacin. El mdulo hace varias cosas que trabajan sobre una sola estructura de datos. Cohesin funcional. El mdulo hace una sola cosa.
Cohesin moderada.
Alta cohesin.
Grados de Cohesin
Funcional
17
Grados de Cohesin
Comunicacional
18
Grados de Cohesin
Procedimental
19
Grados de Cohesin
Temporal
20
Grados de Cohesin
Lgica
21
Grados de Cohesin
Coincidental
22
Acoplamiento
Grados de Acoplamiento
Grados de Acoplamiento
Grados de Acoplamiento
Grados de Acoplamiento
Tipo de acoplamiento.
Bajo acoplamiento.
Sin acoplamiento. El mdulo es independiente. Acoplamiento de datos. El mdulo recibe una lista de argumentos de quien lo llama. Acoplamiento de control. El mdulo recibe una bandera de quien lo llama y se comporta de una manera u otra dependiendo del valor de la bandera. Acoplamiento externo. El mdulo esta acoplado a un dispositivo de I/O externo. Este tipo de acoplamiento debe limitarse a unos pocos mdulos. Acoplamiento comn. El mdulo utiliza variables globales o comunes. Acoplamiento de contenido. El mdulo usa datos contenidos dentro de los lmites de otro mdulo.
Acoplamiento moderado.
Alto acoplamiento.
Grados de Acoplamiento
28
Grados de Acoplamiento
29
Grados de Acoplamiento
30
Grados de Acoplamiento
31
Grados de Acoplamiento
32