Documente Academic
Documente Profesional
Documente Cultură
UNIDAD 1
INTRODUCCION A LA INGENIERIA DE SOFTWARE
1.1 Descripcin del curso, objetivo del curso y metodologa de evaluacin.
1.2 Importancia, presente y futuro de la Ingeniera de Software.
UNIDAD II
INGENIERIA DE SOFTWARE
2.1 Fundamento
2.2 Principios bsicos de la ingeniera del software.
2.3 Proceso de la ingeniera del software
2.4 Tecnologa CASE y entornos de desarrollo
2.5 Tendencias
2.6 Metodologas para la solucin de Problemas. (rboles, diagramas Venn, Karnaugth,
grafos,
integramas, cuadros de doble entrada).
2.6.1 Qu es un problema?
2.6.2 Tipos de solucin
2.6.3 Heursticas
2.7
El ciclo de vida.
2.7.1 Tradicional
2.7.2 Ejemplificar
UNIDAD III
HERRAMIENTAS DE MODELADO
3.1
3.1.1
3.1.2
3.1.3
3.1.4
3.1.5
3.1.6
3.1.7
3.1.8
3.2
3.3
3.4
3.5
3.6
Conceptos
Abstraccin
Refinamiento
Modularidad
Arquitectura del software
Jerarqua de control
Estructura de datos
Procedimiento del software
Ocultamiento de informacin
Caractersticas de las herramientas
Diagrama de flujo de datos.
El diccionario de datos
Especificaciones del proceso
Diagramas de entidad relacin
UNIDAD IV
ANALISIS
4.1 Anlisis estructurado
4.1.1 Conceptos
4.1.2 Principios
4.1.3 Ejemplo de aplicacin
4.2 Anlisis Orientado a Objeto
4.2.1 Conceptos
4.2.2 Principios
4.2.3 Mtodos de Anlisis
4.2.4 Ejemplo de aplicacin
4.3 Diferencias entre estructurado y orientado a objetos
UNIDAD V
DISEO
5.1 Diseo estructurado
5.1.1 Conceptual
5.1.2 Modelacin
5.1.3 Detallado
5.2 Diseo orientado a objetos
5.2.1 Mtodos de diseo
5.2.2 Multicapas y multicomponentes
5.3 Diseo Arquitectnico
INGENIERA DE SOFTWARE
FUNDAMENTACIN DE LA ASIGNATURA
El perfil del Licenciado en Ciencias de la Informtica requiere del conocimiento profundo y
especializado sobre un tema que hoy en da es vital para su formacin. El tema de
Ingeniera de Software representa el estudio organizado y disciplinado de tecnologa para el
anlisis, diseo, construccin e implantacin de sistemas de informacin.
La Ingeniera de Software, es actualmente reconocida como una disciplina legtima en el
mbito informtico y se puede aseverar que la imparticin de sta asignatura, fortalecer el
perfil del egresado de UPIICSA.
FUNDAMENTACIN
Se consideran los aos 90 como la dcada de la informacin, la construccin de piezas de
software de calidad que faciliten el manejo de la informacin, adquiere importancia de
diferencia competitiva en las organizaciones, y utilizar una tcnica clara y esquemtica
como lo es Ingeniera de Software toma importancia.
Los cambios tecnolgicos en equipos y programas, requieren de una actualizacin
constante en el proceso enseanza/aprendizaje para profesores y alumnos. El tema de
Ingeniera de Software tradicional era abordado por la mayora de las carreras de
informtica en captulos o temas individuales que se diseminaban en varias asignaturas
como por ejemplo, lenguajes de programacin, anlisis y diseo de sistemas de
informacin, bases de datos, etc. Sin que se tuviera un control u organizacin, del perfil de
informtico.
La idea de disear la asignatura de Ingeniera de Software para alumnos del segundo
semestre es muy importante para que el estudiante de este semestre tenga un panorama
general completo y abierto del ciclo de vida de un sistema de informacin.
La Ingeniera de Software asistida por computadora (CASE) sin ser un tema nuevo, es
importante que el estudiante tenga las bases tcnicas y conceptos de sta disciplina que
refuerza el concepto tradicional de Ingeniera de Software.
Las corrientes filosficas de desarrollo de sistemas estructurado y orientado a objetos
permiten que el estudiante obtenga un panorama general del ciclo de vida de los sistemas
aterrizado en estas metodologas.
METODOLOGIA DE LA ENSEANZA.
La metodologa general del proceso enseanza-aprendizaje para impartir esta asignatura,
consiste en la presentacin por parte del profesor de casos seleccionados; utilizando
tcnicas de anlisis, diseo y desarrollo de sistemas de informacin, tanto estructurados,
como orientado a objetos aplicados a casos especficos. Para este propsito se utilizaran
instrumentos didcticos tradicionales (pizarrn, acetatos, rotafolios, etctera, as como
instrumentos automatizados que asisten a la Ingeniera de Software). Los resultados que
deben alcanzar los alumnos en equipos por periodo departamental son : 1er. departamental,
se deber hacer el anlisis de requerimientos de un problema hasta llegar a su
planteamiento; en el 2do. departamental, el anlisis, diseo y construccin de un prototipo;
y en el 3er departamental, un producto de software completo y funcional. El cul servir de
base para la materia de sistemas de informacin 1 y probablemente para otras asignaturas
relacionadas..
Figura 1 de Cuevas
INSERTAR
Podemos darnos cuenta, en base a esta grfica, que mientras en 1982, para una demanda de
1000 unidades de software (productos), la productividad esperada era de aproximadamente
800 y el personal disponible suficiente para 500; en 1990 la brecha entre estas tres variables
se observa mucho mayor, ya que para una demanda de 2500, se cuenta con 1100 personas
con una productividad de 1600, la perspectiva hasta este punto parece dramtica, sin
embargo, en tiempos recientes (ltimos 5 aos), la disponibilidad de nuevas tcnicas y
herramientas hacen que la tendencia cambie de manera importante, reduciendo esta brecha
significativamente.
Por otra parte, los costos por lo que a hardware, software y mantenimiento se refiere,
muestran una evolucin muy favorable para el usuario, de acuerdo a la siguiente grfica
proporcionada por el mismo Cuevas.
Fig. 2 de Cuevas
INSERTAR
Lo importante de esta grfica es que puede observarse una disminucin muy significativa
en os costos del hardware e incluso del software, haciendo que la componente humanware
se convierta en la parte esencial, por cuanto a costo, de un proyecto o de un producto
software. La grfica muestra porcentajes, pero en trminos absolutos el costo total ha
disminuido tambin de manera considerable.
2. INGENIERA DE SOFTWARE
2.1 FUNDAMENTACIN
La justificacin de la existencia de la Ingeniera de Software la podemos encontrar en la
frecuencia con que situaciones como las que a continuacin se enlistan se presentan en el
desarrollo de proyectos y productos software:
La Ingeniera de Software pretende proporcionar elementos para evitar estas causas de las
situaciones indeseables listadas y promover el uso de tcnicas, herramientas y metodologas
adecuadas a la solucin de problemas mediante software. .
2.2. PRINCIPIOS BSICOS DE LA INGENIERA DE SOFTWARE
Bohem propuso en 1985 siete principios bsicos de la Ingeniera de Software para asegurar
el xito en el desarrollo de un producto software. Estos principios han tenido una
aceptacin bastante generalizada en el mundo:
1.
2.
3.
4.
5.
6.
7.
Direccin por medio del uso de un plan por fases del Ciclo de Vida.
Realizacin de validaciones continuas.
Mantenimiento del control del producto estricto.
Uso de tcnicas modernas de programacin
Mantenimiento de una contabilidad clara de la situacin del proyecto
Usar menos y mejor personal
Mantener un compromiso de mejora del proceso
tiempo, dinero y esfuerzo para rectificar. El control estricto minimiza este tipo de
situaciones.
Un sistema efectivo de control del producto es el denominado lnea base, que consiste en
un documento programa que experimenta un proceso de aprobacin y despus puede ser
modificado slo mediante procedimientos formales.
4. USO DE TCNICAS MODERNAS DE PROGRAMACIN.
Hoy en da se dispone de gran cantidad de herramientas para el proceso de desarrollo de un
producto software, la orientacin a objetos, la programacin estructurada, la programacin
por componente y la programacin extrema entre otras facilitan el desarrollo y
mantenimiento de software, abatiendo los costos y el tiempo necesarios para la terminacin
del producto, pero sobre todo para lograr posibles correcciones y/o modificaciones de
manera eficiente.
5. MANTENIMIENTO DE UNA CONTABILIDAD CLARA
DE LA SITUACIN DEL PROYECTO
Como cualquier proyecto, las actividades que se llevarn a efecto durante el proceso de
desarrollo de un producto software sern consumidoras de recursos. Cada una de estas
actividades deber controlarse no solamente por cuanto al avance y logro de los objetivos,
sino por el consumo de recursos que originalmente se le haban asignado, evitando
ambigedades.
Para llevar a cabo esto de forma gil y a bajo costo se cuenta con herramientas de ayuda
que realizan clculos de planificacin, toman los datos sin intervencin manual y
proporcionan informes.
PRINCIPIO 6. Usar menos y mejor personal.
Una razn para este principio es la amplia gama de productividad software entre
individuos 26:1 han sido datos medidos.
Otra razn es la prdida de productividad de los programadores cuando se amplia el
grupo por la prdida de tiempo en las comunicaciones del grupo.
Estas prdidas vienen marcadas por la frmula K(n-1)n/2, donde K es la prdida por
comunicacin y (n-1)n/2 el nmero de enlaces de comunicacin establecidos por n
personas.
Esta segunda razn es tan fundamental que ha dado lugar a una definicin generalmente
aceptada establecida por Brooks: Cuando un proyecto est retrasado no se debe
Interrelaciones de todas
las tareas requeridas
Herramientas y
Mtodos usados
Cualificacin, formacin
Motivacin, y direccin
personal.
Ciclo de Vida
Admn.
* Requerimientos
MODELOS
DE
CASE
COMPUTACIN
INGENIERO
DE
SOFTWARE
Mtodologia
* Especificaciones
* Diseo
* Realizacin
* Mantenimiento
Experto
Todas las cuales permiten cubrir el ciclo de vida del software: requerimientos,
especificaciones, diseo, realizacin y mantenimiento.
Adems de estos componentes, otros dos fundamentales, son el usuario conocedor del
problema y de las necesidades y el ingeniero de software conocedor y dominador de los
componentes tcnicos y capaz de plasmar en un producto software en una organizacin, la
solucin a las necesidades planteadas por el usuario.
Se puede considerar la Ingeniera del software como una coleccin de tecnologas
entrelazadas que debern ser consideradas como un sistema. (Tecnologas de la ingeniera
de Software)
METODOS
Anlisis
Diseo
Codificacin
Pruebas
PROCEDIMIENTOS
Admn. De proyecto
Garanta de calidad
Software
Admn.Config. Software
Medidas de Seguimiento
CASE (HERRAMIENTAS)
De la misma manera, los procesos software se ven apoyados y acompaados por estas
tecnologas, desde el surgimiento de un problema software, el diseo, las pruebas, la
garanta de calidad, la configuracin del software, y la administracin de todo el proyecto,
incluyendo el establecimiento de su obsolescencia.
(Anlisis de los Requerimientos)
PROBLEMA
RECOLECCIN
DE
REQUERIMIENTOS PROTOTIPO
ESPECIFICACIONES
ESCRITAS
REVISIN
CLIENTE
Diseo
Procedimiento
Diseo
Arquitectura
Diseo
Datos (Modelo de datos)
DISEO DE
CASOS
PRUEBAS
Tcnicas caja
blanca
Pruebas
Sistemas
(DISEO)
Beta
Test
Tcnicas caja
Negra
ESTRATEGIAS
PRUEBAS
Pruebas
Unidades
Pruebas
Integrales
Pruebas
Validaciones
REVISIONES
PRUEBAS
G.C.S
ADMINISTRACIN
CONFIGURACIN
SOFTWARE
ESTNDARES
Y
PROCEDIMIENTOS
CONFIGURACION DE
SOFTWARE
Identificacin
Facilidad de
fabricacin
PROGRAMAS
DOCUMENTOS
DATOS
Control de
versin
Control
cambio
Informe de
Auditoria
Medida y Seguimiento
Garanta de Software
Administracin configuracin de software
2.5 TENDENCIAS
Indudablemente el uso de herramientas y tecnologa automatizadas para la Ingeniera de
Software se ha extendido rpidamente, dando lugar a otras herramientas y metodologas
para el desarrollo de software como son el uso de objetos y agentes. Esta tendencia parece
irreversible a favor de facilidades para el desarrollador y disminucin de tiempo y costo
para el usuario.
As, podemos prever en el futuro inmediato y con tendencia creciente al mediano y largo
plazo (de hecho hemos iniciado una etapa dentro de este paradigma), software abundante,
elaborado en forma rpida, muy eficiente y a muy bajo costo o incluso gratuito para el
usuario. Organizaciones internacionales como la Free Software Foundation promueven esta
tendencia y han logrado una difusin y proliferacin de impacto en el mercado.
Sin embargo, la Ingeniera de Software no solamente ha contribuido a estas expectativas,
sino que avanza en apoyo de actividades complementarias al desarrollo de software,
proporcionando metodologas, herramientas y tcnicas para la planeacin de la produccin
de software, el anlisis y diseo de sistemas, apoyo a servicios como asesora y
capacitacin, implantacin y mantenimiento de sistemas de informacin y otras
aplicaciones.
En sntesis, el panorama que presenta la industria de software es sumamente atractivo para
el usuario final, tanto por disponibilidad como por costo, y el campo de aplicacin de la
Ingeniera de Software sigue siendo suficientemente amplio como para entender porqu
esta disciplina ocupa un lugar tan importante en los planes de estudio de informtica,
computacin, sistemas y reas afines de todas las universidades del mundo de prestigio y en
la industria de desarrollo de software e integracin de soluciones informticas en las
empresas.
2.6 METODOLOGAS PARA LA SOLUCIN DE PROBLEMAS
Si consideramos un problema como una situacin que se presenta en la que se sabe ms o
menos, o con toda claridad, a dnde se quiere ir, pero no se sabe cmo; entonces resolver
un problema es precisamente aclarar dicha situacin y encontrar algn camino adecuado
que lleve a la meta.
A veces no sabremos si la herramienta adecuada para la situacin est entre la coleccin de
tcnicas que dominamos o ni siquiera si se ha creado una tcnica que pueda ser
suficientemente potente para resolver el problema. Esta es precisamente la circunstancia del
investigador, en matemticas y en cualquier otro campo, y por otra parte, sta es la
situacin en la que nos encontramos a veces en nuestra vida normal.
La destreza para resolver genuinos problemas es un verdadero arte que se aprende con
paciencia y considerable esfuerzo, enfrentndose con tranquilidad, sin angustias, a multitud
de problemas diversos, tratando de sacar el mejor partido posible de los muchos seguros
fracasos iniciales, observando los modos de proceder, comparndolos con los de los
expertos y procurando ajustar adecuadamente los procesos de pensamiento a los de ellos.
Anlisis
Diseo
Implementacin
Pruebas
Documentacin
Mantenimiento.
Anlisis
Qu se necesita obtener?.
Simplemente es describir lo que se busca resolver: CONTESTAR A LA PREGUNTA QUE.
Se tienen varios tipos de anlisis, dependiendo del problema que se requiera resolver y del
paradigma que se desee seguir (Top-Down, Bottom-Up, Estructurado, Orientado a Objetos,
HIPO, etc). Una manera de definir los requerimientos y salidas es usando el proceso TopDown. En este punto se listan las entradas, las salidas y los procesos.
Diseo
Escribir un algoritmo de solucin, es decir, encontrar la solucin al problema a lpiz. Se
escriben los pasos y secuencias necesarias para llegar a la solucin; es el definir con ms
exactitud el proceso que se describi en la fase del anlisis. El diseo es totalmente
independiente del lenguaje computacional y computadora que se van a utilizar.
As como en el anlisis, hay diversos tipos de elaborar el diseo (Diagrama de Flujo,
Estructurado, Top-Down, Orientado a Objetos, etc.): CONTESTAR A LA PREGUNTA
COMO
El algoritmo se puede elaborar en forma:
Grfica, usando un diagrama de flujo.
De pseudo cdigo.
Implementacin
Programar a partir del diseo usando un lenguaje computacional y compilarlo sin encontrar
errores. Si se encuentran estos ltimos, corregir y ciclar este proceso hasta que el programa
quede limpio de errores. Tratar de hacerlo bien la primera vez (calidad). Esta fase en
realidad depende del conocimiento que se tenga sobre el lenguaje con el cual se va a
desarrollar.
Cabe mencionar que la palabra "implementacin" no existe en el idioma espaol, esta fase
tambin se le conoce con el nombre de "desarrollo e implantacin".
Pruebas y validacin
Se corre el programa con datos reales y lmites permitidos para constatar si cumple con
todos los requerimientos planteados desde el anlisis.
Documentacin
La fase ms olvidada por todos los desarrolladores. El anlisis y diseo e implementacin
forman parte de la documentacin.
Dentro del programa
Se documenta el programa en el editor del lenguaje usado (si no se hizo mientras se
program)
Fuera del programa : Manuales
Se obtiene un manual del usuario o de operacin (especificando requerimientos, proceso de
inicio, etc. ) y uno tcnico (impresin de los listados actualizados).
Mantenimiento
Acoplar el programa a cambios externos que lo puedan afectar. No debe ser mantenimiento
correctivo.
Algoritmo de solucin.
Informalmente un algoritmo se define como cualquier procedimiento computacional bien
definido que toma algn(os) valor(es) como entrada y produce un(os) valor(es) de salida.
Un algoritmo es una secuencia de pasos que transforma esos datos de entrada en datos de
salida.
Analizamos algoritmos para predecir los recursos que los algoritmos consumir.
Ocasionalmente memoria, medios de comunicacin, pero el recurso ms importante que
medimos es el tiempo que tomar en ejecutarse el programa que tiene implementado
nuestro algoritmo.
Dentro del anlisis de algoritmos se concentran principalmente en determinar el peor de los
casos para el cual se ejecutar el algoritmo, se indican principalmente tres razones para
ello:
1. El saber el peor de los casos nos garantiza que nuestro algoritmo nunca tomar ms
tiempo del que ya sabemos.
2. Para algunos algoritmos, el peor de los casos ocurre ms frecuentemente que el
mejor de los casos, por ejemplo dentro de un manejador de base de datos.
3. El caso promedio es regularmente ms malo que el peor de los casos. Por qu?,
Porque para determinar el promedio que hacemos buscamos el mejor de los casos,
posteriormente buscamos el peor de los casos y sacamos promedio Ilgico, no?, Si
ya sabemos el peor de los casos para que determinamos el promedio.
Divide y conquistars.
Una de las tcnicas ms usadas en la implementacin de algoritmos es la recursin,
comnmente llamada "divide y conquistars".
Los algoritmos recursivos generalmente dividen el problema original en subproblemas
similares al original pero de tamao menor, los resuelven y posteriormente combinan las
soluciones parciales para llegar a una solucin general.
El paradigma de divide y conquistars involucra tres pasos para cada nivel de recursin:
Divide el problema en subproblemas.
1. Conquista los subproblemas resolvindolos recursivamente. Si el subproblema es
suficientemente pequeo resulvelo de la manera ms sencilla.
2. Combina la solucin de los subproblemas para obtener la solucin del problema
original.
Uno de los mejores ejemplos para el problema de divide y conquistars es el que se
presenta en el ordenamiento por mezcla (merge sort) el cual se presenta en la siguiente
seccin ordenamientos.
Un problema es resuelto algortmicamente, si se puede escribir un programa que pueda
producir la respuesta correcta de forma que para cualquier posible entrada, el programa
puede ser ejecutado el tiempo (finito) suficiente para resolverlo y cuenta adems con el
espacio requerido para resolverlo.
A principios del siglo XX, hubo una gran actividad para formalizar y estudiar el concepto
de algoritmo. Los algoritmos se consideraron desde entonces como un conjunto de
instrucciones simples, las cuales pueden ser interpretadas fcilmente, de modo que al
seguirlas se resuelva un problema se calcule el valor de una funcin.
Dentro de los investigadores de principios del siglo XX, destaca Allan Turing, por dos
razones:
1) El desarrollo de la Mquina de Turing y su relacin con los algoritmos. Dicha relacin
establece que todo algoritmo puede ser conceptualizado como una mquina, que ejecuta sus
instrucciones.
2) La demostracin de que no se puede resolver el problema denominado "Halting
Problem". Este problema consiste en determinar si existe no un algoritmo que determine
si un programa arbitrario de computadora, eventualmente termina para una entrada
cualquiera del programa. De acuerdo con Turing no existe ningn programa de
computadora que resuelva este problema.
Estos dos aspectos llevaron al desarrollo de la Teora de la Computabilidad (TC). Sin
embargo, aun cuando la TC es un aspecto fundamental en Ciencias Computacionales, el
saber que desde el punto de vista terico, un problema, puede o no ser resuelto en una
computadora, no es suficiente para decirnos si en la prctica ser. Se podra, por ejemplo
pensar en un procedimiento para que una mquina juegue ajedrez perfecto, tomando en
cuenta lo siguiente:
1) Existe solo un nmero finito de formas de arreglarlas piezas de ajedrez sobre el tablero.
2) Bajo ciertas reglas, el juego termina despus de un nmero finito de movimientos.
3) Considerar para cada posible movimiento de la computadora, todas las posibles
respuestas del oponente y, para cada una de estas, las posibles respuestas de la computadora
y, as sucesivamente, hasta que cada secuencia alcance el final. Entonces, conociendo el
ltimo resultado de cada movimiento, todo lo que se tendra que hacer es escoger el mejor
movimiento inicial.
Sin embargo, hay un inconveniente serio en el procedimiento anterior, el nmero de
posibles arreglos de piezas es alrededor de 10 50, de modo que un buen programa podra
tardar varios miles de aos.
Como consecuencia, no obstante que existe un procedimiento para el juego perfecto de
ajedrez, no existe an un algoritmo, que alguien podra escribir un programa siguiendo
dicho procedimiento
Como el anterior, hay muchos problemas, para las cuales se puede escribir un
procedimiento y por tanto podramos decir que pueden ser resueltas; es decir que se pueden
escribir programas para dichas aplicaciones y que por tanto podramos pensar que existen
algoritmos para ellos. Sin embargo, los requerimientos de tiempo y espacio de
almacenamiento son tan grandes que esos programas no son de importancia prctica. Estos
aspectos se estudian en un rea denominada Complejidad Computacional y, a la cual le
dedicaremos una sesin mas adelante.
La Complejidad Computacional cubre varios aspectos; una de ellas trata con aspectos
formales, que tratan sobre las bases matemticas para probar la computabilidad de
funciones computables. Esto es de inters para saber si en teora, para un problema existe o
no un algoritmo. Otro aspecto tiene que ver con la eficiencia de los algoritmos desde el
punto de vista de tiempo y espacio. En este ltimo aspecto, se centra el Anlisis de
Algoritmos. El anlisis de algoritmos estudia de esta forma en dos aspectos:
1) El anlisis de problemas especficos.
2) El anlisis de algoritmos especficos.
Dicho estudio permite determinar mtodos adecuados de diseo para problemas prcticos.
El anlisis de algoritmos permite entonces determinar, para un problema en particular, si un
algoritmo determinado cumple o no con los requerimientos mnimos de tiempo y espacio.
Esto lleva en consecuencia a una mejor toma de decisiones en la solucin de problemas.
Clasificacin de problemas
Antes de dar una clasificacin de problemas, conviene empezar a describir la palabra
problema.
Podremos pensar en problema de diferentes maneras, una de ellas es la siguiente [Gary &
Johnson]
"Un problema ser una cuestin general que debe ser contestada. Usualmente, un problema
posee varios parmetros, variables libres (cuyos valores son dejados sin especificar)".
De acuerdo con [Gary & Johnson], un problema queda descrito cuando se proporciona:
1) Una descripcin general de todos sus parmetros y
2) Una descripcin de cuales propiedades son requeridas para que la respuesta (o solucin)
sea satisfactoria
Una instancia de un problema se obtiene especificando valores particulares para todos los
parmetros del problema.
Consideremos por ejemplo el problema SAT, ste problema consiste en determinar valores
de verdad que satisfagan una formula lgica del tipo normal conjuntiva. De esta manera la
siguiente son instancias del problema SAT:
~X1 & (X2 V X3)
(X1 v ~X2) & (X1 v ~X3 v X4) & (X2 v ~X4)
Otro ejemplo, es el Problema del Agente viajero, que se describe a continuacin. Se trata de
recorrer N ciudades, partiendo de una ciudad origen, pasar por todas las otras ciudades una
sola vez y regresa a la ciudad destino con un recorrido total mnimo. Una instancia de ese
problema sera recorrer todas las ciudades del Estado de California, partiendo desde la
ciudad de los ngeles.
Si las ciudades se numeran digamos como C= {c1,c2, c3,..,} con distancias d = {d12,
d13 ...} entonces una solucin del problema del agente viajero, sera una secuencia de
elementos de C, Los diferentes posibles casos del problema del agente viajero, se conocen
como instancias.
Por otra parte, como ya hemos establecido, podemos pensar en los algoritmos como
procedimientos paso a paso, que resuelven problemas. Por esta razn, es lgico pensar, que
no todos los problemas tienen algoritmos eficientes para todas sus instancias.
Hacemos notar que cuando decimos que se tiene un algoritmo para un problema cuando es
capaz de encontrar una solucin para l; esto no significa que realmente lo resuelve!!. As
por ejemplo C' y C'' son soluciones que pudieron ser encontradas por un algoritmo, aun
cuando ninguna de ellas sea el recorrido mnimo.
Para cada algoritmo se puede, en principio construir las funciones del tiempo requerido por
el algoritmo, en trminos de la longitud de la entrada. De esta manera se puede obtener una
funcin del tamao del problema, contra el tiempo requerido para resolverlo. Esta funcin
es conocida como complejidad temporal del algoritmo.
Dado que cada instancia de un problema pudiera tener diferentes parmetros que pudieran
cambiar, con frecuencia se toma como medida del tiempo requerido para medir la
complejidad de un algortimo, el del peor caso. Esto tambin puede, desde luego, ser
realizado para el caso de la cantidad de memoria requerida (complejidad espacial).
El caso ms estudiado se refiere a la complejidad temporal. a continuacin se presenta una
clasificacin de algoritmos en trminos de su complejidad temporal que estudiaremos en
este curso:
lineal:
Cuadrada:
Cbica:
exponencial
f(n) = n
f(n) = n2
f(n) = n3
f(n) = 2 n, 3 n, 4 n, 2.71 n
Para un problema dado, los algoritmos que son una funcin polinomial del tamao de la
entrada (por ejemplo: n, n2 ,n3,..), mientras que aquellos que no lo son se llaman nopolinomiales.
2.7. EL CICLO DE VIDA
Implementacin
Implementacinyy
prueba
pruebadedeunidades
unidades
Integracin
Integracinyyprueba
prueba
del
delsistema
sistema
Operacin
Operacinyy
mantenimiento
UNIDAD III
3. HERRAMIENTAS DE MODELADO
3.1. CONCEPTOS
Anlisis Tcnico
Durante el anlisis tcnico, evala los mritos tcnicos del concepto de sistema,
mientras que al mismo tiempo recoge informacin adicional sobre el rendimiento, la
fiabilidad, la facilidad de mantenimiento y la posibilidad de produccin. En algunos casos
la etapa de anlisis del sistema tambin incluye una cantidad limitada de investigacin y
diseo.
El anlisis tcnico empieza con una definicin de la viabilidad tcnica del sistema
propuesto.
Las herramientas disponibles para el anlisis tcnico se derivan de la modelizacin y
optimizacin matemticas, la probabilidad y estadstica, la teora de colas y la teora de
control, por nombrar una pocas. Es importante tener en cuenta que la evaluacin analtica
no es siempre posible.
La modelizacin
Es un mecanismo efectivo para el anlisis tcnico de sistemas basados en computadora, la
siguiente figura ilustra el flujo global de informacin en el proceso de modelizacin. Un
modelo se crea basndose en la observacin del mundo real o una aproximacin basada en
los objetivos del sistema.
MUNDO REAL
MODELO
* Observacin
* Medidas
* Suposiciones
* Aproximaciones
* Predicciones
Datos
Parmetros
Estructura
Percibida
* Verificacin
* Modificacin
* Interpretacin
Comportamiento
observado
* Intuicin
* Experiencia
* Teora
Representacin
Simblica
Modelo de
Comportamiento
4. El diseo del modelo debe ser los suficientemente simple como para permitir una
rpida implementacin en la resolucin de problemas.
5. El diseo del modelo debe incorporar previsiones para poder modificarlo y/o
expandirlo fcilmente y permitir la evaluacin de factores adicionales si se
requieren. El desarrollo satisfactorio del modelo a menudo incluye una serie de
intentos antes de que el objetivos final se alcance. Los intentos iniciales pueden
sugerir lagunas de informacin que no son aparentes inmediatamente y en
consecuencia pueden sugerir cambios beneficiosos.
Los resultados obtenidos del anlisis tcnico forman la base para otra decisin en el
sistema de tipo seguir /o no seguir. Si el riesgo tcnico es alto, si los modelos indican
que la funcionalidad deseada o el rendimiento no puede ser alcanzado, si las piezas no
encajan bien, hay que volver a la mesa de trabajo.
3.2 CARACTERSTICAS DE LAS HERRAMIENTAS
En la pasada dcada se desarrollaron varios mtodos de anlisis y especificaciones del
software. Los investigadores han identificado los problemas y sus causas y desarrollado
reglas y procedimientos para resolverlos. Cada mtodo de anlisis tiene una nica
notacin y punto de vista. Sin embargo todos los mtodos de anlisis estn relacionados
por un conjunto de principios fundamentales:
1. El dominio de la informacin, as como el dominio funcional de un problema debe
ser representado y comprometido.
2. El problema debe subdividirse de tal forma que se descubran los detalles de una
manera progresiva (o jerrquica)
3. Deben desarrollarse las representaciones lgicas y fsicas del sistema.
Aplicando estos principios, el analista enfoca el problema sistemticamente. Se examina el
dominio de la informacin de forma que pueda comprenderse su funcin ms
completamente. La particin se aplica para reducir la complejidad.
EL DOMINIO DE LA INFORMACIN:
Todas las aplicaciones del software pueden colectivamente llamarse procesamiento de
datos. Este trmino contiene la clave de lo que entendemos por requerimientos de software.
El software se construye para procesar datos, para transformar de una forma a otra; esto es,
para aceptar entradas, manipularlas de alguna forma y producir una salida. Este
establecimiento fundamental de los objetivos es verdad tanto si construimos software por
lotes para un sistema de nminas, como software empotrado en tiempo real para controlar
el flujo de la gasolina de un motor de un automvil.
Datos de Entrada
TRANSFORMAR # 1
Datos Intermedios
Almacn de
Datos
TRANSFORMAR # 2
Datos de Salida
Decodificar el ID de las
Cajas y buscar la posicin
Particin Horizontal
Las subfunciones asociadas con una funcin principal del SCCT, pueden examinarse
exponiendo los detalles verticalmente en la jerarqua, como se ilustra en la siguiente figura:
Software de SCCT
Decodificar el ID de las
Cajas y buscar la posicin
Particin
Vertical
Ejecutar la
Validacin de datos
Examinar el fichero de
datos
Procesar datos
No encontrados
Almacenar la posicin
en la lista FIFO
La visin lgica de los requerimientos del software presenta las funciones que han de
realizarse y la informacin que ha de procesarse independientemente de los detalles de
implementacin. Por ejemplo desde un punto de vista lgico, la funcin de leer datos del
cdigo de barras del programa SCCT no se refiere a la forma fsica de los datos o al tipo
del lector de cdigo de barras usado. De hecho, podra argumentarse, que leer datos
podra ser un nombre ms apropiado para esta funcin, puesto que no considera ni siquiera
el mecanismo de entrada. Igualmente un modelo de datos lgico tal como la tabla de los
nmeros de identificacin de paquetes de SCCT, representa sin considerar la estructura de
datos subyacente usada para implementar la tabla. Una representacin lgica de los requerimientos del
software es un fundamento esencial para el diseo.
La visin fsica de los requerimientos del software representa una manifestacin del mundo real de la
funciones de procesamiento y las estructuras de informacin. En algunos casos se desarrolla una
representacin fsica como el primer paso del diseo de software. Sin embargo, la mayora de los sistemas
basados en computador, se especifican de forma que se dictan ciertas recomendaciones fsicas.
Hemos observado que el anlisis de requerimiento de software debe enfocarse sobre lo que el software debe
realizar, en vez de cmo se implementar el procesamiento. Sin embargo, la visin fsica no debe ser
interpretada necesariamente como una representacin del cmo. En vez de ello, el modelo fsico representa
el modo real de operacin; esto es, la asignacin existente o propuesta para todos los elementos del sistema.
El modelo lgico es genrico en el sentido de que la realizacin de la funcin no est indicada
explcitamente.
McMenamin y Palmerham propuesto un mtodo de moderacin que separa la esencia de un sistema de sus
detalles de implementacin. El modelo esencial, como el modelo lgico, describe lo que un sistema debe
realizarse e incluye descripciones de las actividades esenciales y memoria esencial. El modelo de
materializacin, como el modelo fsico, suministra informacin sobre las ligaduras hardware, acoplamiento
del sistema operativo especfico, organizacin y acceso de la base de datos y otros detalles especficos de
implementacin. En muchos casos el anlisis de un sistema alterna entre la especificacin del modelo
esencial y la especificacin del modelo de materializacin.
3.3.
Entrada 1
Entrada 2
Sistema
basado en
Salida 1
Salida 2
Computadora
Entrada n
Salida m
Datos 2
Entidad
1
Transfor
m
1
Datos 1
Transfor
m
2
Datos 3
Datos 4
Almacn de Datos
Datos 5
Transfor
m
3
Datos 6
Entidad
2
Proceso:
Flujo de datos:
Almacn de datos
Voz
El que
llama
Llamada de
Telfono
Sonido
Receptor
Nmero de
Telfono
pulsado
Voz
Vibrador
Al
traductor
de seales
Seal
Electrnica
Sistema
De
comunicacin
Frecuencias
Seal,
teclas y
electrnica
Seal
Electrnica
Seal al
transductor
de
vibraciones
Nmero de
Telfono
pulsado
Como otro ejemplo del uso de diagramas de flujos de datos, consideremos el flujo de
informacin de un sistema de monitorizacin del paciente (SMP) que ha de instalarse en
un hospital, ilustrado con el modelo de DFD de nivel 01 en la siguiente figura:
Sonido
Paciente
Constantes
vitales
Mensaje de
aviso
Sistema de
Monitorizacin
de
pacientes
Informe
Enfermera
Peticin de
Informe
Datos de
informacin
Enfermera
Informacin de Pacientes
Monitoriza las seales vitales de todos los pacientes de una sala, mantiene los requisitos
actualizados sobre todos y cada uno de los pacientes, si algo va mal y produce un informe
de los pacientes segn peticin.
Al llevar el anlisis de los requerimientos del sistema podemos refinar el flujo de
informacin en un DFD de nivel 02 como muestra la siguiente figura:
Paciente
Constante
Vitales
Sistema
De
Monitorizacin
De pacientes
Monitorizacin
central
Mensaje de aviso
Enfermera
Informe
Generador
De informes
Peticin de Informe
Enfermera
Datos de
Informacin
Datos de
Informacin
Informacin de pacientes
El nivel 01 ha sido refinado para mostrar 4 funciones importantes: monitorizacin local
ejecutada por un monitor a lado de la cama, monitorizacin central ejecutada por un cuerpo
de enfermeras, actualizacin de la informacin sobre el paciente y generacin de informes
en la estacin de enfermeras.
El flujo de datos SMP es adems refinado a un nivel 03 en la siguiente figura se muestra la
burbuja de monitorizacin central la cual ha sido refinada para indicar un mayor detalle.
Constantes
Evaluar
Sin
violacin
De lmites
Reloj
Produccin
De
mensaje
De aviso
Formatear
Datos del
paciente
UML no incluye una notacin especfica para este tipo de modelado de datos ya que
supone un proceso de desarrollo orientado y modela los datos utilizados por objetos y sus
relaciones . Sin embargo, es posible considerar a las entidades como clases simplificadas de
objetos( no tiene operaciones) y utilizar los modelos de clases de UML, con asociaciones
etiquetadas entre stas , como modelos de datos. Aunque los modelos de datos resultantes
no estn en buen UML, esto se hace por la convivencia de utilizar la notacin estndar.
A menudo , los modelos de datos se utilizan en conjunto con los flujos de datos para
describir la estructura de la informacin que se est procesando . Esto se ilustra incluyendo
un modelo de datos de un diseo de software ( vea la figura 21.) Tal diseo podra ser
procesado por varios de los componentes del conjunto de herramientas CASE mostradas en
la figura 7.4 .
Los diseos son grafos dirigidos. Consiste en un conjunto de nodos de diferentes tipos
conectados por vnculos que representan las relaciones entre nodos del diseo. Existe una
representacin en pantalla de este grafo que es un diagrama del diseo y una
representacin de la base de datos correspondiente. Cada vez que se dibuja un diagrama, el
sistema de edicin lleva a cabo una correspondencia que va de la representacin de la base
de datos a la de pantalla. La informacin que produce el editor para las otras herramientas
de anlisis del diseo incluye la representacin lgica del grafo del diseo. Sin embargo,
estas herramientas de anlisis no toman en cuenta los detalles de la representacin fsica en
la pantalla. Procesan las entidades, sus atributos lgicos ( como sus nombres)y sus
relaciones.
La figura 21 muestra que un diseo tiene atributos cuyos valores son el nombre del diseo,
una descripcin de ste, una fecha de creacin (fecha C) y una de modificacin (fecha M).
El diseo esta compuesto de un conjunto de nodos y uno de vnculos. Los nodos tienen
vnculos asociados entre ellos. Los nodos y los vnculos tiene atributos de nombre y tipo.
Tienen un conjunto de etiqueta asociado que almacenan cierta informacin descriptiva .
Cada etiqueta tiene un icono y texto asociados.
Los modelos entidad- relacin se han utilizado ampliamente en el diseo de bases de datos.
Naturalmente, los esquemas de bases de datos relacionales derivados de esos modelos estn
en la tercera forma normal, la cual es una caracterstica aprovechable ( Barker, 1989).
Adems , debido a la asignacin explcita de tipos y al reconocimiento de sub y supertipos,
la implementacin de estos modelos utilizando bases de datos orientadas a objetos es
directa.
Diseo
Nombre
Descripcin
Fecha de C
Fecha de M
Modelo de datoa
de un diseo
de
software.
Tiene nodos
semntico
Es un
Tiene vnculos
1
n
n
Nodo
1
1
Tiene vnculos
Nombre
Tipo
Vnculo
Nombre
Tipo
Vnculos
Tiene etiquetas
Tiene etiquetas
Etiqueta
Nombre
Texto
Icono
Como los modelos grficos, los modelos ERA carecen de detalle y deben complementarse
con descripciones ms detalladas de la entidades, las relaciones y los atributos que se
incluyen en el modelo. Estas descripciones detalladas su pueden recolectar en un
repositorio o diccionario de datos. De forma general, los diccionarios de datos son tiles
cuando se desarrollan modelos del sistema y se utilizan para administrar toda la
informacin proveniente de todos los tipos de dichos modelos.
3.9 HERRAMIENTAS ADICIONALES DE MODELADO
Otras herramientas tiles al construir un modelo se pueden encontrar dentro del mismo
enfoque con el cual se desarrolle un proyecto o se planifique un producto. En ocasiones un
proyecto fracasa porque durante la fase de planeacin se utiliz un enfoque errneo, bien
sea influenciado por las imposiciones o expectativas del decisor, o por los temores que
generan mrgenes de seguridad que elevan innecesariamente los tiempos y costos
estimados para un proyecto.
De esta manera, el enfoque adoptado durante la planeacin del proyecto, sea demasiado
pesimismo o demasiado optimismo, exceso de temores o falta de previsin, puede influir en
el xito o fracaso del mismo proyecto, incluso ser definitivo antes de que ste nazca.
Evaluacin del cliente.- Las tareas requeridas para obtener la reaccin del cliente,
segn la evaluacin de las representaciones del software creadas durante la etapa de
ingeniera e implementada durante la etapa de instalacin
Cada una de las regiones estn pobladas por una serie de tareas que se adaptan a las
caractersticas del proyecto que va a emprenderse. Para proyectos pequeos el nmero de
tareas y su formalidad es bajo, para proyectos mayores y ms crticos, cada regin contiene
tareas que se definen para lograr un nivel ms alto de formalidad.
Cuando empieza este proceso evolutivo, el equipo de trabajo gira alrededor de las agujas
del reloj, comenzando por el centro. El primer circuito de la espiral produce el desarrollo de
una especificacin de productos, los pasos siguientes en la espiral se podran utilizar para
desarrollar un prototipo y progresivamente versiones ms sofisticadas del software. Cada
paso de la regin de planificacin produce ajustes en el plan del proyecto. . El coste y la
planificacin se ajustan en funcin de la evaluacin del cliente. Adems, el gestor del
proyecto ajusta el nmero planificado de iteraciones requeridas para completar el proyecto
o el producto software de que se trate.
La siguiente figura muestra grficamente el Modelo Espiral, para las seis regiones de tareas
y suponiendo un proyecto tal que forzosamente requiere iniciar en la conceptualizacin
previa a la vuelta de desarrollo, an cuando hemos dicho que frecuentemente se puede
iniciar desde esta tarea. Asimismo, se presenta la terminacin del proyecto en la ltima
vuelta, como mantenimiento del mismo proyecto, pareciese que ah terminase el ciclo, sin
embargo, la vuelta siguiente existe y correspondera al inicio de un nuevo proyecto que
puede o no tomar como base el proyecto anterior.
planificacin
Anlisis de riesgo
con
Evaluacin Comunicacin
del cliente
el cliente
INICIO
Ingeniera
DESARROLLO
AJUSTES
Evaluacin del cliente
Construccin y
adaptacin
MANTENI
MIENTO
3.11
METODOLOGAS
El modelo de cascada
El primer modelo de proceso de desarrollo de software que se publico se deriv de otros
procesos de ingeniera (Royce.1970). ste se muestra en la figura 3.1 .Debido a la cascada
de una fase a otra, este modelo se conoce como modelos cascada o como un ciclo de vida
del software. Las principales etapas de este modelo se transforman en actividades
fundamentales de desarrollo:
6. Anlisis y definicin de requerimientos. Los servicios , restricciones y metas del
sistema se definen a partir de las consultas en detalle y sirven como una
especificacin del sistema.
7. Diseo de sistemas y software . El proceso de diseo de sistemas divide los
requerimientos en sistemas de hardware o de software. Establece una arquitectura
completa del sistema. El diseo de software identifica y describe las abstracciones
fundamentales del sistema de software y sus relaciones.
8. Implementacin y prueba del sistema. Durante esta etapa, el diseo de software se
lleva a cabo como un conjunto o unidades de programas. La prueba de unidades
implica verificar que cada una cumpla su especificacin.
9. Integracin y prueba del sistema. Los programas o las unidades individuales de
programas se integran y prueban como un sistema completo para asegurar que se
cumplan los requerimientos del software. Despus de la pruebas, el sistema de
software se entrega al usuario.
10. Operacin y mantenimiento. Por lo general (aunque no necesariamente) , sta es la
fase ms grande del ciclo de vida. El sistema se instala y pone en uso prctico. El
mantenimiento implica corregir errores no descubiertos en las etapas anteriores del
ciclo de vida, mejorar la implementacin de las unidades del sistema y resaltar los
servicios del sistema una vez que se descubren nuevos requerimientos.
Definicin
Definicindede
requerimientos
requerimientos
Diseo
Diseodedesistemas
sistemasyy
dedesoftware
software
Implementacin
Implementacinyy
prueba
pruebadedeunidades
unidades
Integracin
Integracinyyprueba
prueba
del
delsistema
sistema
Operacin
Operacinyy
mantenimiento
mantenimiento
Artculo de Biblioteca
Nmero de catlogo
Fecha de adquisicin
Costo
Tipo
Estado
Nmero de copias
Adquirir ()
Catalogar ()
Disponer ()
Nmero de publicacin ()
Regresar ()
Artculo publicado
Artculo registrado
Ttulo
Editor
Libro
Autor
Edicin
Fecha de
publicacin
ISBN
Ttulo
Medio
Revista
Ao
Expedir
Pelcula
Director
Fecha de
liberacin
Distribuidor
Programa de
Computadora
Versin
Plataforma
UNIDAD V
DISEO
una gran variedad de mtodos, todos tiene mucho en comn. Los mtodos estructurados
ayudan a todos o alguno de los siguientes modelos de un sistema:
1. Un modelo de flujo de datos en el que el sistema se modela utilizando la
transformacin de datos que tiene lugar cuando se procesan.
2. Un modelo entidad-relacin el cual se utiliza para describir las entidades
fundamentales en el diseo y las relaciones entre ellas. Los modelos entidadrelacin son la tcnica normal que se para describir las estructuras de las bases de
datos.
3. Un modelo estructural en el cual se documentan los componentes del sistema y sus
interacciones.
4. Los mtodos orientados a objetos incluyen un modelo de herencia del sistema,
modelos de relaciones estticas y dinmicas entre los objetos y un modelo de
interaccin de los objetos cuando el sistema se ejecuta.
Algunos mtodos particulares complementan stos con otros modelos del sistema, como
diagramas de transicin de estados, narrativas del periodo de vida de una entidad que
muestran la manera en que sta se transforma y procesa, etctera. Muchos mtodos
sugieren el uso de un depsito para la informacin del sistema o de un diccionario de datos.
En la prctica, la gua que proporciona los mtodos es informal, de tal manera que
diferentes diseadores desarrollan diferentes diseos. Estos mtodos son realmente
notaciones estndar que comprenden prcticas aceptables. Si se siguen y aplican estos
mtodos, puede surgir un diseo razonable. La creatividad del diseador se requiere para
decidir la descomposicin del sistema y asegurar que el diseo capture de forma adecuada
la especificacin del mismo . Los estudios empricos de los diseadores (Bansler y Bodker,
1993 ) raramente siguen los mtodos convencionales. Seleccionan y eliminan temas de los
lineamientos ,dependiendo de las circunstancias locales.
Para algunas clases de sistemas, los modelos de objetos son la forma natural de reflejar las
entidades del mundo real que manipulan el sistema. Esto es particularmente cierto cuando
el sistema procesa informacin de entidades concretas como autos, aviones, libros etctera,
los cueles tienen atributos claramente identificados. De forma ms abstracta, las entidades
de alto nivel, como el concepto de biblioteca, un sistema mdico o un procesador de texto
difciles de modelar como clases de objetos. No necesariamente tienen una interfaz sencilla
que ste compuesta de atributos y operaciones independientes.
Indudablemente, los modelos de objetos desarrollados durante el anlisis de requerimientos
simplifican la transicin al diseo y programacin orientados a objetos. Sin embargo , a
menudo se observa que los usuarios finales de un sistema encuentran dichos modelos poco
naturales y difciles de comprender. Frecuentemente, prefieren adoptar una visin ms
funcional del procesamiento de datos. Por lo tanto, algunas veces es de gran ayuda
complementar dichos modelos con los flujos de datos que muestran el procesamiento de
datos en el sistema.
Una clase de objetos es una abstraccin sobre un conjunto de objetos que identifican los
atributos comunes ( como el modelo semntico de datos ) y los servicios u operaciones que
provee cada objeto. Los objetos son entidades ejecutables con los atributos y servicios de la
clase de objetos. stos son instancias de dicha clase, de tal forma que se puedan crear
diferentes objetos a partir de una clase. De forma general los modelos desarrollados se
centran en estas clases y sus relaciones.
Los modelos de sistemas que se desarrollan durante el anlisis de requerimientos modelan
entidades del mundo real utilizando clases de objetos. No incluyen detalles de los objetos
individuales del sistema. Se pueden producir varios tipos de modelos de objetos que
muestran la manera en que las clases se relacionan entre ellas, la manera en que los objetos
se agregan para formar otros, como interactan con otros, etctera. Todo esto se puede
agregar a la compresin del sistema que se especifica.
Modelos de Herencia.
El modelado orientado a objetos implica la identificacin de clases de objetos que son
importantes en el dominio de estudio. Estos objetos se organizan en una taxonoma. Una
taxonoma es un esquema de clasificacin que muestra la manera en que una clase de
objetos esta relacionada con otras clases a travs de atributos y servicios comunes.
Para desplegar esta taxonoma, las clases se organizan en una jerarqua de herencia en la
que las clases de objetos ms generales se encuentran en la parte alta de la jerarqua. Los
objetos ms especializados heredan sus atributos y servicios. Estos objetos tienen sus
propios atributos y servicios.
La figura 7.10 ilustra parte de una jerarqua de clases simplificada para un modelo de
sistema de biblioteca. Esta jerarqua da informacin acerca de los elementos contenidos en
la biblioteca. sta tiene varios tipos de artculos como libros, msica, cintas, revistas,
peridicos, etctera. En la figura 7.10, el artculo ms general se encuentra en la cima del
rbol y tiene un conjunto de atributos y servicios que son comunes para todo los artculos
de la biblioteca. stos son heredados por las clases Artculo publicado y Artculo registrado
que agregan sus propios atributos y despus se heredarn a los artculos de los niveles
inferiores.
La figura 7.11 es un ejemplo de otra jerarqua de herencia que podra ser parte de un
modelo de biblioteca. En este caso, se muestran los usuarios de una biblioteca. Existen dos
clases de usuarios: aquellos a los que se les prestan libros y aquellos que slo lo consultan
en la biblioteca sin retirarlos de ella..
En la notacin UML, la herencia se muestra haca arriba y no hacia abajo como en otras
notaciones orientadas a objetos. Esto es, la cabeza de la flecha (con forma de tringulo)
apunta de la clase que hereda atributos y operaciones a la superclase. En lugar de utilizar el
trmino herencia, UML le llaman relacin de generalizacin.
El diseo de jerarquas de clases no es fcil. Una ventaja al desarrollar tales modelos es
que el analista necesita comprender, en detalle, el dominio en el que el sistema se instalar.
Como un ejemplo de los problemas que surgen en la prctica, considere la jerarqua de
artculos de la biblioteca. Parecera que el atributo Ttulo debe estar en el artculo ms
general y que se debe heredar a los artculos en los niveles inferiores.
Clase jerrquica del usuario
Usuario de Biblioteca
Nombre
Direccin
Telfono
# de registro
Registrar ()
Quitar registro ()
Lector
Prestatario
Afiliacin
Artculos en prstamo
Prstamo mximo
Personal
Departamento
Telfono del departamento
Estudiante
Tema principal
Direccin
Grabacin de voz
Autor
Edicin
Fecha de publicacin
ISBN
Altavoz
Duracin
Fecha de grabacin
Audiolibro
# de cintas
Sin embargo, aunque todo en la biblioteca debe tener algn tipo de identificador o un
nmero de registro, esto no significa que todo deba tener un ttulo. Por ejemplo una
biblioteca puede tener los discursos personales de un poltico retirado. Muchos de esos
artculos no tiene un ttulo explicito. Estos se clasifican utilizando otra clase (que no se
muestra aqu) que tiene un conjunto diferente de atributos.
Las figuras 7.10 y 7.11 muestran jerarquas de herencia de clases en las que cada una
hereda sus atributos y operaciones de una clase madre nica. Tambin se puede construir
modelos de herencia mltiple en los cuales una clase tiene varias madres. Sus atributos y
servicios heredados son una conjuncin de aquellos heredados de cada superclase. La
figura 7.12 muestra un ejemplo de un modelo de herencia mltiple que tambin podra ser
parte de una biblioteca.
El problema principal de la herencia mltiple es disear un grafo de herencia en el cual los
objetos no heredan atributos innecesarios. Otros problemas que se presentan son la
dificultad de reorganizar dicho grafico cuando se solicitan cambios y cuando los nombres
chocan entre s al existir dos o ms superclases que se tiene atributos con el mismo nombre
pero con diferentes significados. En cada nivel del modelo del sistema, tal coche es
respectivamente fcil de resolver de forma manual alterando el modelo de objetos. Pero
provoca problemas en la programacin orienta a objetos.
Agregacin de objetos
As como se adquieren atributos y servicios a travs de una relacin de herencia con otros
objetos, algunos objetos estn hechos de otros objetos. Esto es, un objeto es un agregado de
un conjunto de otros objetos. Las clases que representan a stos se modelan utilizando un
modelo de agregacin de objetos como se muestra en la figura 7.13. En este ejemplo, se ha
modelado un artculo de biblioteca, el cual es un paquete de estudio para un curso
universitario. Este paquete incluye notas de clase, ejercicios, soluciones de muestra, copias
de las transparencias utilizadas en las clases y videos.
La notacin UML, para la agregacin es representar la composicin a travs de una figura
de diamante colocada en la fuente del vnculo. Por lo tanto, la figura 7.13 se puede leer
como Un paquete de estudio se compone de una o ms tareas, paquetes de diapositivas
OHP, notas de clase y videos.
Figura 7.13 Representacin de un curso mediante una agregacin de objetos.
Paquete de estudio
Ttulo del curso
Nmero
Ao
Instructor
Diapositivas
OHP
Tarea
Notas de clase
Texto
Crditos
Diapositivas
Ejercicios
Soluciones
# problemas
Texto
Diagramas
descripcin
Vdeo
Identificacin de
cintas
Para modelar el comportamiento de los objetos, se tiene que mostrar cmo se utilizan las
operaciones de stos. En UML, se modelan utilizando escenarios basados en los casos de
uso. Un ejemplo de modelado de comportamiento se muestra en la figura 6.13 que ilustra
la administracin de un catlogo de biblioteca. As como los diagramas de colaboracin que
muestran la secuencia de mensajes intercambiados por los objetos. Son similares a los
diagramas de secuencia y no se cubren aqu.
Para ilustrar cmo se utilizan los diagramas de secuencia para modelar el comportamiento,
se describe un escenario en el que los usuarios solicitan prstamos a la biblioteca de forma
electrnica. Por ejemplo, imagine una situacin en las que los paquetes de estudio
mostrados en la figura 7.13 se mantienen electrnicamente y se descargan a la
computadora del estudiante.
La figura 7.14 muestra un diagrama de secuencia con los objetos en la parte alta de
diagrama. Las operaciones se indican por las etiquetas de las flechas y las secuencia de
operaciones es de arriba hacia abajo. En este escenario, el usuario tiene acceso al catlogo
para ver si el artculo requerido esta disponible electrnicamente y, si es as, lo solicita. Por
razones de derechos de autor, a este artculo se le designa una licencia de tal forma que
existe una transaccin entre al artculo solicitado se enva a una red de servidores de objetos
para su comprensin de ser enviado al usuario.
Figura 7.14 Expedicin de artculos electrnicos
Catlogo
Ecat
Artculo de
Biblioteca
Bib 1 :Servidor
de red
Usuario de Biblioteca
Buscar
Desplegar
Expedir
Expedir
licencia
Aceptar
licencia
Diseo
Arquitectnico
Comprimir
Entregar
Contenido
10.1. Estructuracin del sistema
10.2 .Modelos de control
10.3 Descomposicin modular
10.4. Arquitecturas de dominio especifico
Introduccin
Los sistemas grandes siempre se descomponen en subsistemas que suministran algn
conjunto relacionado de servicios. El proceso de diseo inicial para identificar estos
subsistemas y establecer un marco de trabajo para el control y comunicacin de los
subsistemas y establecer un marco de trabajo para el control y comunicacin de los
subsistemas se llama diseo arquitectnico y lo que produce este proceso de diseo es una
descripcin de la arquitectura de software.
La estructura completa del proceso de diseo se discuti en la seccin 3.4. En la figura 3.9
se presento un modelo de proceso de diseo donde el diseo arquitectnico es la primera
etapa en el proceso y representa un vnculo crtico entre el diseo y los procesos de
ingeniera de requerimientos. De forma ideal, una especificacin no debe incluir ninguna
formacin del diseo. En la prctica, esto no es real excepto para los sistemas muy
pequeos. La descomposicin arquitectnica es necesaria para estructurar y organizar la
especificacin. Un buen ejemplo se mostr en la figura 2.4, que ilustra la arquitectura de un
sistema de control de trfico areo. El modelo arquitectnico es a menudo el punto inicial
para la especificacin de diversas partes del sistema.
El proceso de diseo arquitectnico comprende el establecimiento de un marco de trabajo
estructural bsico para un sistema. Esto implica identificar los componentes principales del
sistema. Esto implica identificar los componentes principales del sistema y la comunicacin
entre ellos. Bass et al. (1998) plantean tres ventajas de la especificacin del diseo y la
documentacin de una arquitectura de software:
1. Comunicacin entre los stakeholders. La arquitectura es una presentacin de alto
nivel del sistema que es utilizada como punto de discusin `por un rango de
stakeholders diferentes.
2. Anlisis del sistema. Hacer explicita la arquitectura del sistema en una etapa inicial
del desarrollo del sistema, significa que debe de llevar a cabo cierto tipo de anlisis.
Las decisiones en el diseo arquitectnico tienen un efecto profundo sobre cundo
el sistema puede cumplir los requerimientos crticos como el desempeo, la
fiabilidad y la mantenibilidad.
3. Reutilizacin a una gran escala. Una arquitectura del sistema es una descripcin
compacta y manejable de cmo se organiza el sistema y cmo interoperan los
componentes. La arquitectura se puede transferir a lo largo de los sistemas con
requerimientos similares y as poder reutilizar software a gran escala, Es posible
desarrollar arquitecturas de lneas de productos donde la misma arquitectura se
utilicen en varios sistemas relacionados. Esto se discute en la seccin 10.4 y el
captulo 14.
Diversos diseadores enfocan el proceso de diseo arquitectnico de diferentes formas. El
proceso utilizado depende del conocimiento de la aplicacin y de la capacidad e intuicin
de los arquitectnicos del sistema. Sin embargo, las siguientes actividades son comunes
para todos los procesos de diseo arquitectnico:
1. Estructuracin del sistema. El sistema se estructura en varios subsistemas
principales, donde un subsistema es una unidad de software independiente. Se
identifican las comunicaciones entre los subsistemas. Esto se cubre en la seccin
10.1
2. Modelado del control. Se establece un modelo general de las relaciones de control
entre las partes del sistema. Este se cubre en la seccin 10.2.
3. Descomposicin modular. Cada subsistema identificado se descompone en mdulos.
El arquitecto debe decidirse sobre los tipos de mdulos y sus interconexiones.
Este se cubre en la seccin 10.3
Por lo general, estas actividades estn entrelazadas ms que llevarse a cabo de forma
secuencial. Durante cualquiera de estos procesos, se tiene que desarrollar el diseo en ms
detalle para descubrir si las decisiones en el diseo arquitectnico permite al sistema
cumplir sus requerimientos.
No existe una distincin clara entre los subsistemas y mdulos, pero es til distinguirlos
como se muestra a continuacin:
1. Un subsistema es un sistema que por si mismo cuya operacin no depende de los
servicios suministrados por otros subsistemas. Los subsistemas se componen de
mdulos y tiene interfaces definidas que se utilizan para la comunicacin con otros
subsistemas.
2. Un mdulo es por lo regular un componente del sistema que suministra uno o ms
servicios a otros mdulos. Utiliza los servicios suministrados por otros mdulos.
Por lo general no se considera un sistema independiente. Generalmente, los
mdulos estn compuestos de varios componentes simples del sistema.
La salida del proceso de diseo arquitectnico es un documento de diseo arquitectnico.
ste consiste de varias representaciones grficas de los modelos del sistema junto con el
texto descriptivo asociado. Describe cmo se estructura el sistema en subsistemas y cmo
cada subsistema se estructura en mdulos. Los diversos modelos grficos del sistema
La primera fase de la actividad de diseo arquitectnico se refiere, por lo general, a la descomposicin del
sistema en conjunto de subsistemas que interactan. En el nivel ms abstracto, un diseo arquitectnico se
puede ver como un diagrama de bloques en el que cada cuadro del diagrama representa un subsistema. Los
cuadros dentro de otros cuadros indican que el subsistema a se ha descompuesto en subsistemas. Las fechas
indican que los datos y/o el control se pasan de un subsistema a otro subsistema en la direccin de las flechas.
Un diagrama arquitectnico de bloques presenta un panorama general de la estructura del sistema. Por lo
general, ste es comprensible por los diversos ingenieros que estn involucrados en el proceso de desarrollo.
transportadora. En las figuras 2.2 y 2.4 se muestran otros ejemplos de diseo arquitectnico
a este nivel.
Figura 10.1 Diagramas de Bloques de un sistema robot de control de embalajes.
Sistema
de
visin
Sistema de
identificacin
de objetos
Controlar
Controlar
de brazo
de brazo
Controlador
Controlador
del asidero
del asidero
Sistema de
seleccin de
embalajes
Sistema de
Sistema de
embalaje
embalaje
Controlador de la banda
Controlador de la banda
transportadora
transportadora
Bass et al ( 1998) sealan que los diagramas de cuadros y flechas no son representaciones
arquitectnicas tiles puesto que no muestran la naturaleza de las relaciones entre los
componentes del sistema ni sus propiedades visibles externas. Desde una perspectiva de un
diseador de software, esto es absolutamente correcto. Sin embargo, este tipo de modelo es
efectivo para la comunicacin con los stakeholders del sistemas y los planeadores del
proyecto. Puesto que no muestra los detalles, los gestores lo relacionan con el sistema y
tiene una visin abstracta de l. Identifica a los subsistemas clave a desarrollar de forma
independiente de tal forma que los administradores pueden iniciar asignando personas al
plan de desarrollo de esos sistemas. Los diagramas de cuadros y flechas no son la nica
representacin arquitectnica que se utiliza; sin embargo, es uno de los modelos de
representacin arquitectnica tiles.
Se pueden desarrollar modelos ms especficos de la estructura qu muestren cmo los
subsistemas comparten datos, cmo estn distribuidos y cmo se conectan entre ellos. En
est seccin se discuten tres de esos modelos estndar: el modelo de depsito, el modelo
cliente- servidor y el modelo de mquina abstracta.
Traductor de
Traductor de
diseo
diseo
Generador de
Generador de
cdigo
cdigo
Depsito de proyectos
Depsito de proyectos
Analizador de
Analizador de
diseo
diseo
Editor de
Editor de
programas
programas
Generador de
Generador de
Informes
Informes
En el modelo anterior, el depsito es pasivo y el control es responsabilidad de los subsistemas que utiliza el
depsito .Existe un enfoque altrnativo para los sistenas IA que utilizan un modelo de pizarrn en el cual
dispara subsistemas cuando estn disponibles ciertos datos. Esto es apropiado cuando la forma del depsito de
datos no es tan estructurada.Las decisiones sobre que herramienta activar se toman cuando los datos ser han
analizado. Nii ( 1986) trata este modelo.