Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
Diseo de software.............................................................................................................2
Introduccin.....................................................................................................................2
Unidad I. Diseo de software...........................................................................................5
Definicin del diseo....................................................................................................5
Diseo y calidad de software....................................................................................6
Caractersticas comunes de las metodologas de diseo..........................................7
Fundamentos del diseo..............................................................................................7
Abstraccin...............................................................................................................7
Refinamiento.............................................................................................................8
Modularidad..............................................................................................................8
Arquitectura del software..........................................................................................9
Jerarqua de control.................................................................................................10
Estructura de datos.................................................................................................10
Procedimientos del software...................................................................................11
Ocultamiento de informacin..................................................................................11
Diseo de software
Introduccin
Durante mucho tiempo, las organizaciones han reconocido la importancia de administrar
recursos clave como las personas y la materia prima. Actualmente, la informacin ha
encontrado su lugar apropiado como recurso clave. Los responsables de la toma de
decisiones por fin comprenden que la informacin no es slo un producto derivado de las
operaciones comerciales, sino que adems provee impulso a las empresas y puede
constituir el factor decisivo para determinar el xito o el fracaso de un negocio. Para
maximizar la utilidad de la informacin, una empresa debe administrarla en forma
apropiada, de la misma manera en que administra los dems recursos. Los
administradores necesitan comprender que hay costos asociados con la produccin,
distribucin, seguridad, el almacenamiento y la recuperacin de toda informacin.
El proceso de administrar la informacin generada por computadora difiere de manera
considerable del proceso de manejar los datos producidos en forma manual; por lo
general debemos administrar una mayor cantidad de informacin computacional. Los
costos de administracin y mantenimiento pueden aumentar a ritmos alarmantes, y a
menudo los usuarios consideran este tipo de informacin con menos escepticismo que la
que se obtiene de otras fuentes.
Por lo anterior, la importancia de este curso, en el que se tomar conciencia de la
importancia de abordar la construccin del software desde una perspectiva de
ingeniera, adems, se presentar los conceptos relacionados con Ingeniera del software
en el paradigma de la orientacin a objetos estudiando el marco conceptual que
proporciona este paradigma para el diseo de software. Posteriormente, los conceptos
introducidos se presentarn mediante su correspondiente representacin en el Lenguaje
Unificado de Modelado (UML) y, finalmente, introducir el conjunto de diagramas que
propone UML para el modelado de los diferentes aspectos de un software.
Historias preocupantes
Un caso divertido?
Las
organizaciones
son
sistemas
extensos
compuestos
por
subsistemas
interrelacionados. Los subsistemas se ven influenciados por tres amplios niveles de
personas que toman decisiones administrativas (operaciones, administracin a nivel
medio y administracin estratgica) y atraviesan horizontalmente todo el sistema
organizacional. Las culturas y subculturas organizacionales influyen en la forma en que
las personas se interrelacionan en los subsistemas.
El diseo de software, al igual que los mtodos de diseo de todas las ingenieras,
cambian continuamente al aparecer nuevos mtodos, mejores anlisis y ampliar los
conocimientos. El problema es que el diseo de software se encuentra en una etapa
relativamente temprana en su evolucin. La idea de realizar diseo de software en lugar
6
de programar, surgi a principios de los aos 60, por lo que a las metodologas de
diseo les falta la profundidad y la flexibilidad que tiene el diseo en otras ingenieras.
Pero ya existen tcnicas de diseo de software para poder evaluar la calidad del
software.
En resumidas cuentas, la cuestin fundamental del desarrollo del software es la
escritura del cdigo. Despus de todo, los diagramas son slo imgenes bonitas.
Ningn usuario va a agradecer la belleza de los dibujos, lo que el usuario quiere es
software que funcione.
El diseo juega un papel clave en el desarrollo de software porque permite a los
ingenieros de software producir diversos modelos que caracterizan la solucin a
implementar, pueden ser analizados y evaluados con el fin de determinar si se satisfacen
los requisitos, facilitan el examen y evaluacin de alternativas y sirven para planificar las
siguientes actividades del desarrollo.
Una vez que se han establecido los requisitos del software, el diseo es la primera de
tres actividades tcnicas: diseo, codificacin y prueba. Cada actividad transforma la
informacin de forma que al final se obtiene un software validado.
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.
Abstraccin
8
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.
Cada paso de los procesos de la ingeniera del software es un refinamiento del nivel de
abstraccin de la solucin software. Conforme nos movemos desde los preliminares
hacia el diseo detallado, se reduce el nivel de abstraccin. Finalmente, el nivel ms bajo
de abstraccin se alcanza cuando se genera el cdigo fuente.
Conforme nos movemos por los diferentes niveles de abstraccin, trabajamos para crear
abstracciones de datos y de procedimientos.
Refinamiento
El refinamiento sucesivo es una primera estrategia de diseo descendente propuesta por
Niklaus Wirth. 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.
Modularidad
10
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, aunque
tambin se pueden utilizar otros tipos de notaciones. A continuacin, un ejemplo de
estructura de programa
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.
La estructura de datos dicta la organizacin, los mtodos de acceso, el grado de
asociacin y las alternativas para el tratamiento de la informacin.
Las estructuras de datos clsicas son los elementos vectores unidimensionales,
bidimensionales, las listas y los rboles.
12
Ocultamiento de informacin
El concepto de modularidad nos lleva a esta 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.
Modelado estructural
13
14