Diseño De Software
kaladius925 de Junio de 2014
3.688 Palabras (15 Páginas)183 Visitas
Fundamentos del diseño de software
El diseño es el primer paso de la fase de desarrollo de cualquier producto o
sistema de ingeniería.
Definición de diseño según Taylor
“Proceso de aplicar distintas técnicas y principios con el propósito de definir un
dispositivo, proceso o sistema con los suficientes detalles como para permitir
su realización física”
El diseño de software, al igual que los métodos de diseño de todas las
ingenierías, cambian continuamente al aparecer nuevos métodos, mejores
análisis y ampliar los conocimientos. El problema es que el diseño de software
se encuentra en una etapa relativamente temprana en su evolución. La idea de
realizar diseño de software en lugar de “programar”, surgió a principios de los
años 60, por lo que a las metodologías de diseño les falta la profundidad y la
flexibilidad que tiene el diseño en otras ingenierías. Pero, ya existen técnicas
de diseño de software para poder evaluar la calidad del software.
El objetivo de este tema es presentar los conceptos fundamentales que se
pueden aplicar a todos los diseños de programas.
1. Ingeniería del software y diseño del software
Una vez que se han establecido los requisitos del software, el diseño es la
primera de tres actividades técnicas: diseño, codificación y prueba. Cada
actividad transforma la información de forma que al final se obtiene un software
validado.
El diseño es técnicamente la parte central de la ingeniería del software.
Durante el diseño 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 diseño da como resultado representaciones cuya
calidad puede ser evaluada.
Mediante algunas metodologías de diseño se realiza el diseño de datos, el
diseño arquitectónico y el diseño procedimental.
El diseño de datos transforma el modelo de campo de información,
creado durante el análisis, en las estructuras de datos que se van a
requerir para implementar el software.
El diseño arquitectónico define las relaciones entre los principales
elementos estructurales del programa.
El diseño procedimental transforma los elementos estructurales en
una descripción procedimental del software.
A continuación, se genera el código fuente y, para integrar y validar el software,
se llevan a cabo las pruebas.
Fundamentos del diseño de software
2
Las fases de diseño, codificación y prueba absorben el 75% o más del coste de
la ingeniería del software (excluyendo el mantenimiento). Es aquí donde se
toman las decisiones que afectarán finalmente al éxito de la implementación del
programa, y también, a la facilidad de mantenimiento que tendrá el software.
Por tanto el diseño es un paso fundamental de la fase de desarrollo.
El diseño es la única forma mediante la que podemos traducir con precisión los
requisitos del cliente en un producto o sistema acabado. El diseño de software
es la base de todas las partes posteriores del desarrollo y de la fase de prueba,
como muestra la figura 1.
Figura 1. Importancia del diseño
Sin diseño, nos arriesgamos a construir un sistema inestable, un sistema que
falle cuando se realicen pequeños cambios, un sistema que sea difícil de
probar, un sistema cuya calidad no pueda ser evaluada hasta más adelante,
cuando quede poco tiempo y ya sea haya gastado mucho dinero.
2. El proceso de diseño
El diseño del software es un proceso mediante el que se traducen los requisitos
en una representación del software, que se acerca mucho al código fuente.
Desde el punto de vista de la gestión del proyecto, el diseño del software se
realiza en dos etapas: el diseño preliminar y el diseño detallado.
El diseño preliminar se centra en la transformación de los requisitos
en los datos y la arquitectura del software.
El diseño detallado se ocupa del refinamiento y de la representación
arquitectónica que lleva a una estructura de datos refinada y a las
representaciones algorítimicas del software.
Además del diseño de datos, del diseño arquitectónico y del desarrollo
procedimental, muchas aplicaciones modernas requieren un diseño de la
interfaz. Fundamentos del diseño de software
3
Punto de vista gestión
Diseño preliminar Diseño detallado
Diseño de datos * *
Diseño arquitectónico *
Diseño procedimental *
Punto de
vista técnico
Diseño de la interfaz * *
Figura 2. Relación entre los puntos de vista de gestión y técnicos
2.1. DISEÑO Y CALIDAD DEL SOFTWARE
A lo largo del proceso de diseño, la calidad del diseño se evalúa mediante una
serie de revisiones técnicas formales (RTF) que son una actividad de
garantía del software cuyos objetivos son:
1) Descubrir los errores en la función, la lógica o la implementación de
cualquier representación del software.
2) Verificar que el software alcanza sus requisitos.
3) Garantizar que el software se ha representado según los estándares
establecidos.
4) Conseguir un software desarrollado de forma uniforme.
5) Hacer que los proyectos sean manejables.
Cada RTF se lleva a cabo mediante una reunión y sólo tendrá éxito si está bien
planificada, controlada y atendida.
A continuación, se listan una serie de criterios para determinar la calidad del
software.
1) Un diseño debe tener una organización jerárquica.
2) Un diseño debe ser modular, es decir, el software debe estar dividido
en elementos que realicen funciones específicas.
3) Un diseño debe tener representaciones distintas y separadas de los
datos y de los procedimientos.
4) Un diseño debe llevar a módulos que exhiban características
funcionales independientes.
5) Un diseño debe conducir a interfaces que reduzcan la complejidad de
las conexiones entre los módulos y el exterior.
6) Un diseño debe obtenerse mediante un método que sea reproducible
y que esté dirigido por la información obtenida durante el análisis de
requerimientos.
Un buen diseño de software no se consigue fácilmente, resultando de la
aplicación de principios fundamentales de diseño, de una metodología
sistemática y de una revisión exhaustiva. Fundamentos del diseño de software
4
2.2. CARACTERÍSTICAS COMUNES DE LAS METODOLOGÍAS DE DISEÑO
Independientemente de la metodología de diseño que se utilice, todas tienen
varias características comunes:
1) Mecanismo para la traducción de requisitos en una representación de
diseño.
2) Notación para representar los componentes funcionales y sus
interfaces.
3) Heurísticas para el refinamiento y la partición.
4) Criterios para la valoración de la calidad.
Independientemente de la metodología de diseño que se utilice, el
desarrollador tiene que aplicar una serie de conceptos fundamentales al diseño
de datos, arquitectónico y procedimental.
3. Fundamentos del diseño
Los fundamentos del diseño ayudan al desarrollador de software a responder a
estas preguntas:
¿Qué criterios puedo utilizar para dividir el software en componentes
individuales?
¿Cómo se separan los detalles de una función o de la estructura de
los datos de la representación conceptual del software?
¿Existen criterios uniformes que definan la calidad técnica de un
diseño de software?
Cita de Michael A. Jackson
“El principio de la sabiduría de un programador está en reconocer la diferencia
entre obtener un programa que funcione y uno que funcione correctamente”.
3.1. ABSTRACCIÓN
Cuando se considera una solución modular para cualquier problema, pueden
formularse varios niveles de abstracción.
En el nivel superior de abstracción se establece una solución en términos
generales, en lenguaje natural. En los niveles inferiores de abstracción se
utiliza una orientación más procedimental. Por último, en el nivel más bajo de
abstracción, se establece una solución, de forma que pueda implementarse
directamente.
Cada paso de los procesos de la ingeniería del software es un refinamiento del
nivel de abstracción de la solución software. Conforme nos movemos desde los
preliminares hacia el diseño detallado, se reduce el nivel de abstracción.
Finalmente, el nivel más bajo de abstracción se alcanza cuando se genera el
código fuente.
...