Está en la página 1de 4

FUNDAMENTOS DEL DISEO DE SOFTWARE

1. Ingeniera del software y diseo del software


El diseo es la nica forma mediante la que podemos traducir con
precisin los requisitos del cliente en un producto o sistema
acabado.
Figura 1. Importancia del diseo
Sin diseo, nos arriesgamos a construir un sistema inestable y que
falle.

2. El proceso de diseo
Desde el punto de vista de la gestin del proyecto, el diseo del
software se realiza en dos etapas:
El diseo preliminar.
El diseo detallado.
Figura 2. Relacin entre los puntos de vista de gestin y
tcnicos

2.1. DISEO Y CALIDAD DEL SOFTWARE
A lo largo del proceso de diseo, la calidad del diseo se evala mediante una serie de revisiones tcnicas formales (RTF).

2.2. CARACTERSTICAS COMUNES DE LAS METODOLOGAS DE DISEO
1) Mecanismo para la traduccin de requisitos en una representacin de diseo.
2) Notacin para representar los componentes funcionales y sus interfaces.
3) Heursticas para el refinamiento y la particin.
4) Criterios para la valoracin de la calidad.

3. Fundamentos del diseo
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?

Cita de Michael A. Jackson
El principio de la sabidura de un programador est en reconocer la diferencia entre obtener un programa que funcione y uno que funcione
correctamente.

3.1. 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 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.

3.2. 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.

3.3. MODULARIDAD
El software se divide en componentes con nombres y ubicaciones determinados, que se denominan mdulos y que se integran para satisfacer los
requisitos del proveedor.

Matemticamente, esto se explica de esta forma: Sea C(x) una funcin que defina la complejidad de un problema x, y E(x) una funcin que defina
el esfuerzo de desarrollo de un problema x.











Figura 3. Modularidad y coste del software

3.4. ARQUITECTURA DEL SOFTWARE
La arquitectura del software se obtiene mediante un proceso de
particin, que relaciona los problemas del mundo real con las
soluciones software para resolver los problemas software.
Figura 4. Evolucin de la estructura

3.5. 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.

Figura 5. Estructura de un programa
A continuacin definiremos los algunos trminos relacionados con la figura 5.
Profundidad: Nmero de niveles de control
Anchura: Amplitud global del control
Grado de salida: Nmero de mdulos que controla un mdulo
Grado de entrada: Nmero de mdulos que controlan a un mdulo
Visibilidad: Conjunto de componentes del programa que pueden ser invocados por un
mdulo.
Conectividad: Conjunto de componentes a los que se invoca directamente o se utilizan sus
datos.

3.6. 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 procedimental, la estructura de datos es tan importante como la estructura del
programa en la representacin de la arquitectura del software.

3.7. PROCEDIMIENTOS DEL SOFTWARE
El procedimiento del software se centra en los detalles de procesamiento de cada mdulo individual.
El procedimiento debe proporcionar una especificacin precisa del procesamiento.

3.8. OCULTAMIENTO DE INFORMACIN
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.

4. Diseo modular efectivo
Un diseo modular reduce la complejidad, facilita los cambios, implementacin ms sencilla y permite el desarrollo paralelo de partes diferentes
de un sistema
4.1. TIPOS DE MDULOS
4.1.1. Mdulos secuenciales
Ejecutan secuencialmente una tarea.
4.1.2. Mdulos incrementales
Pueden ser interrumpidos antes de que terminen por el software de la aplicacin, y restablecerse en el punto en que se interrumpi.
4.1.3. Mdulos paralelos
Un mdulo paralelo se ejecuta a la vez que otro mdulo en entornos multiprocesadores.

4.2. INDEPENDENCIA FUNCIONAL
La independencia funcional se adquiere desarrollando mdulos con una funcin clara y con pocas relaciones con otros mdulos, de forma que
cada mdulo se centra en una subfuncin especfica de los requerimientos y tenga una interfaz sencilla.

4.2.1. Cohesin
Un mdulo cohesivo ejecuta una tarea sencilla de un procedimiento de software y requiere poca
interaccin con procedimientos que ejecutan otras partes de un programa.
Figura 8. Representacin de la escala de cohesin

4.2.2 Acoplamiento
El acoplamiento es una medida de la interconexin entre los mdulos de una estructura de
programa. En el diseo de software buscamos el acoplamiento ms bajo posible.

5. Diseo de datos
El diseo de datos es la primera de las tres actividades de diseo realizadas durante la ingeniera del software.
Los datos bien diseados conducen a mejor estructura de programa, modularidad efectiva, y complejidad procedimental reducida.

5.1. PRINCIPIOS PARA LA ESPECIFICACIN DE DATOS
1. Los principios sistemticos de anlisis aplicados a la funcin y el comportamiento tambin deben aplicarse a los datos.
2. Se deben identificar todas las estructuras de datos y las operaciones que se han de realizar sobre cada una de ellas.
3. Debe establecerse y usarse un diccionario de datos para definir el diseo de los datos y del programa.
4. Se deben posponer las decisiones de diseo de datos de bajo nivel hasta ms adelante en el proceso de datos.
5. La representacin de una estructura de datos slo debe ser conocida por los mdulos que hagan uso directo de los datos contenidos en la
estructura.
6. Se debe desarrollar una librera de estructuras de datos tiles y de las operaciones que se le pueden aplicar.
7. El diseo de software y el lenguaje de programacin deben soportar la especificacin y realizacin de tipos abstractos de datos.

6. Diseo arquitectnico
El objetivo principal del diseo arquitectnico es desarrollar una estructura de programa modular y representar las relaciones de control entre los
mdulos. Adems el diseo arquitectnico mezcla la estructura de programas y la estructura de datos y define las interfaces que facilitan el flujo
de los datos a lo largo del programa.

7. Diseo procedimental
El diseo procedimental se realiza despus de que se ha establecido la estructura del programa y de los datos. La especificacin procedimental
que define los algoritmos, cabe pensar que se podra especificar en lenguaje natural, pero debido a la cantidad de ambigedades que este
lenguaje acarrea, es necesario utilizar una forma ms restringida de representacin.

7.1. PROGRAMACIN ESTRUCTURADA
A finales de los 60 se propuso la utilizacin de un conjunto de construcciones lgicas con las que poda formarse cualquier programa.
Cada construccin tena estructura lgica predecible. Se entra por ella por el principio, se sale por el final y facilita al lector el seguimiento del flujo
procedimental. Las construcciones estructuradas se propusieron para limitar el diseo procedimental del software a un nmero pequeo de
operaciones predecibles, lo que facilita la legibilidad, prueba y mantenimiento del software.

7.1.1. Notaciones para la representacin grfica en diseo procedimental
Para evitar desarrollar un software errneo, es fundamental que se utilicen correctamente las herramientas grficas para el diseo, como son los
diagramas de flujo y los diagramas de cajas.

Diagrama de flujo
Es la representacin grfica que ms se utiliza en el diseo procedimental.
Para representar un paso de procesamiento se utiliza un cuadro, para representar una condicin se utiliza un rombo, y para representar el flujo de
control se utilizan flechas. Las construcciones estructuradas pueden estar anidadas unas dentro de otras, cada una de estas puede realizar
llamadas a mdulos, teniendo entonces una disposicin por capas procedimentales en un diagrama de flujo estructurado.

Diagrama de cajas
Estos tienen las caractersticas siguientes:
El mbito funcional est bien definido y es claramente visible.
Es fcil determinar el mbito de los datos locales y globales
La recursividad es fcil de representar
Al igual que con los diagramas de flujo, se pueden crear diagramas de cajas por capas en mltiples pginas. Se puede representar una llamada a
un mdulo subordinado mediante una caja con el nombre del mdulo encerrado dentro de una circunferencia.


7.1.2. Notaciones tabulares de diseo
En muchas aplicaciones de software puede ser necesario que un mdulo evale una compleja combinacin de condiciones, y de acuerdo con
ellas, seleccione la opcin adecuada.

Las tablas de decisin constituyen una notacin que traduce las acciones y condiciones a una forma tabular.

Figura 13. Esqueleto de una tabla de decisin
La figura 13 muestra la organizacin de una tabla de decisin, que est dividida
en cuatro cuadrantes por las lneas gruesas.
El cuadrante superior izquierdo contiene una lista de todas las condiciones
El cuadrante inferior izquierdo contiene una lista de todas las acciones que se
pueden realizar en funcin de las condiciones
Los cuadrantes de la derecha forman una matriz que contienen las
combinaciones de las condiciones para producir las acciones.
Por tanto, cada columna de la matriz representa una regla de procesamiento.

Los pasos para la creacin de una tabla de decisin son los siguientes:
Listar todas las acciones que se pueden asociar a un mdulo.
Listar todas las condiciones necesarias para la ejecucin de un procedimiento.
Asociar conjuntos de condiciones especficas a acciones especficas, eliminando combinaciones imposibles. Desarrollar las posibles
combinaciones de condiciones.
Definir reglas indicando las acciones que ocurren para una serie de condiciones.

7.1.3. Lenguaje de diseo de programas
Un lenguaje de diseo de programas (LDP), tambin conocido como lenguaje estructurado o pseudocdigo es un lenguaje que utiliza el
vocabulario de un lenguaje y la sintaxis de otro.

Independientemente de su origen, un LDP tiene que tener las caractersticas siguientes:
Una sintaxis fija de palabras clave que permitan construir todas las construcciones estructuradas, declarar datos y establecer caractersticas de
modularidad. Una sintaxis libre en lenguaje natural para describir las caractersticas de procesamiento. Facilidades para la declaracin de datos,
incluyendo estructuras de datos simples y complejos. Un mecanismo de definicin de subprogramas y de llamada a stos.

También podría gustarte