Este documento describe los fundamentos del diseño de software, incluyendo la importancia del diseño para traducir los requisitos en un producto funcional, el proceso de diseño preliminar y detallado, y los principios como la abstracción, modularidad, arquitectura, jerarquía de control y diseño de datos y procedimientos que ayudan a lograr un diseño efectivo de alta calidad. Explica que el diseño es crucial para construir sistemas estables que satisfagan los requisitos del cliente.
0 calificaciones0% encontró este documento útil (0 votos)
407 vistas4 páginas
Este documento describe los fundamentos del diseño de software, incluyendo la importancia del diseño para traducir los requisitos en un producto funcional, el proceso de diseño preliminar y detallado, y los principios como la abstracción, modularidad, arquitectura, jerarquía de control y diseño de datos y procedimientos que ayudan a lograr un diseño efectivo de alta calidad. Explica que el diseño es crucial para construir sistemas estables que satisfagan los requisitos del cliente.
Este documento describe los fundamentos del diseño de software, incluyendo la importancia del diseño para traducir los requisitos en un producto funcional, el proceso de diseño preliminar y detallado, y los principios como la abstracción, modularidad, arquitectura, jerarquía de control y diseño de datos y procedimientos que ayudan a lograr un diseño efectivo de alta calidad. Explica que el diseño es crucial para construir sistemas estables que satisfagan los requisitos del cliente.
Este documento describe los fundamentos del diseño de software, incluyendo la importancia del diseño para traducir los requisitos en un producto funcional, el proceso de diseño preliminar y detallado, y los principios como la abstracción, modularidad, arquitectura, jerarquía de control y diseño de datos y procedimientos que ayudan a lograr un diseño efectivo de alta calidad. Explica que el diseño es crucial para construir sistemas estables que satisfagan los requisitos del cliente.
Descargue como PDF, TXT o lea en línea desde Scribd
Descargar como pdf o txt
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.