ANALISIS Y DISEÑO DE
SISTEMAS
TRABAJO FINAL
PROFESOR: YAROS PEREZ
REALIZADO POR: ING.
MIGUEL ALVAREZ
Unified Modeling
Language (UML)
Introducción
Aparenetemente UML
es la mejor solución para todos los profesionales relacionados con el Análisis
de Sistemas, ya que si nos tocara
trabajar en un proyecto de software, en el cual sabemos que el número de
integrantes no es para nada reducido (si se trabajase en empresas grandes), sin
la aplicación de UML, se hace engorroso ponerse de acuerdo en las metodologías
que se utilizarán, en las notaciones que se emplearán para cada modelo (ya sea
de análisis o de implementación). Es por ello que este nuevo paradigma de
diseño nos posibilita unificar todos nuestros criterios, para un posterior
entendimiento, y mejor organización de los proyectos.
Como desventaja
podemos destacar (aunque para algunos o muchos no lo sería) que UML permite
especificar, visualizar y construir software's, pero orientado a objetos. Para
aquellos que prefieran las metodologías estructuradas deberán esperar que surja
un Lenguaje Unificado de Modelado Estructurado.
Pensamos que esto
no sucederá, a lo sumo aparecerá alguna extensión de UML para considerar algún
aspecto del modelo estructurado, pero a nuestro parecer no sería muy
justificable, por que a lo que se apunta en la actualidad es a la aplicación de
metodologías orientadas a objetos, pues éstas brindan muchas ventajas y
solucionan muchos de los problemas que surgen en las metodologías estructuradas.
1. Qué
es UML. Caracteristicas
El Lenguaje de Modelado Unificado UML es un lenguaje estándar para
escribir planos de software. UML puede utilizarse para visualizar, especificar,
construir y documentar los artefactos de un sistema que involucra gran cantidad
de software.
El UML es el Lenguaje de Modelado Unificado Orientado a Objetos,
UML no es un método porque no tiene noción de proceso el cual es una parte
importante de un método. Varios especialistas en desarrollo de sistemas de
información argumentan de que existe la necesidad de adoptar un Proceso de
Desarrollo de sistemas para enmarcar las fases importantes que sigue el UML,
por ello los desarrolladores de proyectos de sistemas de información emplean el
Procesos Unificado para dar soluciones adecuadas a las necesidades de los
clientes.
El desarrollo de sistemas con UML siguiendo el proceso unificado
incluye actividades específicas, cada una de ellas a su vez contienen otras
subactividades las cuales sirven como una guía de cómo deben ser las
actividades desarrolladas y secuenciadas con el fin de obtener sistemas
exitosos; consecuentemente el desarrollo de los sistemas puede variar de
desarrollador en desarrollador, de proyecto en proyecto, de empresa en empresa
adoptando siempre un Proceso de Desarrollo.
UML es una especificación de notación orientada a
objetos. Se basa en las anteriores especificaciones BOOCH, RUMBAUGH y
COAD-YOURDON. Divide cada proyecto en un número de diagramas que representan
las diferentes vistas del proyecto. Estos diagramas juntos son los que
representa la arquitectura del proyecto.
UML permite describir un sistema en diferentes niveles de
abstracción, simplificando la complejidad sin perder información, para que
tanto usuarios, líderes y desarrolladores puedan comprender claramente las
características de la aplicación.
UML se quiere convertir en un lenguaje estándar con el
que sea posible modelar todos los componentes del proceso de desarrollo de
aplicaciones. Sin embargo, hay que tener en cuenta un aspecto importante del
modelo: no pretende definir un modelo estándar de desarrollo, sino únicamente
un lenguaje de modelado. Otros métodos de modelaje como OMT (Object Modeling
Technique) o Booch sí definen procesos concretos. En UML los procesos de
desarrollo son diferentes según los distintos dominios de trabajo; no puede ser
el mismo el proceso para crear una aplicación en tiempo real, que el proceso de
desarrollo de una aplicación orientada a gestión, por poner un ejemplo.
El método del UML recomienda utilizar los procesos que
otras metodologías tienen definidos.
2.
Historia del UML
La notación UML se
deriva y unifica las tres metodologías de análisis y diseño OO más extendidas, Metodología de Grady
Booch para la descripción de conjuntos de objetos y sus relaciones, Técnica
de modelado orientada a objetos de James Rumbaugh (OMT: Object-Modeling Technique),
Aproximación de Ivar Jacobson (OOSE: Object- Oriented Software
Engineering) mediante la
metodología de casos de uso (use case).
El desarrollo de UML
comenzó a finales de 1994 cuando Grady
Booch y Jim Rumbaugh de Rational Software Corporation
empezaron a unificar sus métodos. A finales de 1995, Ivar Jacobson y su compa nía Objectory se incorporaron a Rational en su unificación, aportando el método OOSE.
De las tres metodologías
de partida, las de Booch y Rumbaugh pueden ser descritas como
centradas en objetos, ya que sus aproximaciones se enfocan hacia el modelado de
los objetos que componen el sistema, su relación y colaboración. Por otro lado,
la metodología de Jacobson es
más centrada a usuario, ya que todo en su método se deriva de los escenarios de
uso. UML se ha ido fomentando y aceptando como estándar desde el OMG, que es
también el origen de CORBA, el estándar líder en la industria
para la programación de objetos distribuidos. En 1997 UML 1.1 fue aprobada por
la OMG convirtiéndose en la notación estándar de facto para el análisis y el
dise no orientado a objetos.
UML es el primer
método en publicar un meta-modelo en su propia notación, incluyendo la notación
para la mayoría de la información de requisitos, análisis y dise no. Se trata pues de un meta-modelo auto-referencial (cualquier
lenguaje de modelado de propósito general debería ser capaz de modelarse a sí
mismo).
3. Características de
software que usan UML
Una herramienta de
desarrollo integrado debería ayudar a los desarrolladores en todas las
etapas del ciclo de vida del software. De acuerdo con
la metodología RUP, el proceso unificado se repite a lo largo de una serie de
ciclos que constituyen la vida de un sistema software. Cada ciclo debe tener
los siguientes modelos:
La plataforma Eclipse: combinada con el JDT
( Java
Development Tooling), permite disponer de un IDE ( Integrated Development Environment o
Entorno de desarrollo integrado) para Java de excelente calidad. Aquí cobra más sentido la frase "Eclipse es un IDE abierto y
extensible para todo y, sin embargo, para nada en particular". Por sí
misma, la plataforma Eclipse proporciona funcionalidades demasiado genéricas.
Solamente cuando se amplia con otras herramientas (el JDT en este caso, que
figura en la distribución estándar de Eclipse y que es un plug-in formado, a su
vez, por otros plug-ins), permite desarrollar actividades útiles para los
usuarios que la vayan a utilizar como IDE.
Para el análisis y
diseño de software mediante UML ya hay disponibles varios plug-ins open source
para la plataforma Eclipse: EMF,
magicdraw, OMONDO y Slime UML. Ofrecen, en general, las utilidades habituales:
generación de diagramas UML, ingeniería inversa, generación de código a partir
de los diagramas de clases, etcétera.
Poseidon for UML: UML puede simplificar la tarea
compleja de desarrollo de software ayudando en la estructuración, aclarando
comunicación, y encontrando la abstracción correcta.
Poseidon for UML evita distracciones de otras herramientas
complejas. La interfase intuitiva hace Poseidon la herramienta UML mas rapida para manejar, consiguiendo el enfoque en el
modelo.
Enterprise Architect: Combina el potencial
de la ultima especificación UML 2.0 con un alto desempeño, interfase intuitiva,
para crear modelados avanzados para el equipo de desarrollo e implementación.
Grandes funcionalidades a un precio accesible, Enterprise
Architect puede ayudar al equipo completo, incluyendo analistas, pruebas, jefes
de proyecto, personal de control de calidad, desarrolladores y mas, por una fracción del costo de la competencia.
SmartDraw: Es una forma facil y rapida de realizar diagramas de
software y es solo el comienzo, eWeek comenta que SmartDraw no solo es mas
facil de usar, tambien cuesta menos que Visio, brinda mas y mejores resultados
que Visio, incluye soporte gratis in-house.
Se pueden crear
diagramas de software y formatos que se requieran, incluyendo diagramas UML,
diagramas de flujo de datos, ERD, paginas web, diseños GUI y mucho mas, sin gastar mucho dinero ni tiempo
Metamill: Es un software profesional de modelado UML,
desde la versión 4.0 soporta UML 2.0. Metamill está escrito en C++ y corre
ligero. Todas las versiones soportan codigo round-trip engineering for Java(tm), C++, ANSI C y C#.
Documentación HTML puede ser generada desde los modelos. Metamill soporta MDA de la forma mas simple.
Metamill es un software de modelado UML
orientado para equipos de ingenieros y diseñadores individuales de sistemas que
usan intensivamente UML como lenguaje de modelado.
Rational Rose es la herramienta
CASE que comercializan los desarrolladores de UML y que soporta de forma
completa la especificación del UML.
Esta herramienta
propone la utilización de cuatro tipos de modelo para realizar un diseño del
sistema, utilizando una vista estática y otra dinámica de los modelos del
sistema, uno lógico y otro físico. Permite crear y refinar estas vistas creando
de esta forma un modelo completo que representa el dominio del problema y el
sistema de software.
Left Case agrupa distintos componentes que permiten la edición de diagramas, DFD
(Diagramas de flujo de datos), DTD (Diagramas de transición de estados), DER
(Diagramas entidad/relación), Diagramas de clases UML, Diagramas de Casos de
Uso, Diagramas de transición de estados (bajo UML), Int Case es un nuevo
componente, Es un entorno CASE frontal, Permite la edición de diagramas de
Interacción.
Los objetivos de
Left Case son, Creación de un entorno CASE para la edición de diagramas bajo
distintos paradigmas, Estructurado
Objetual,
Generación automática de documentación técnica de análisis y diseño, Formato de
almacenamiento estándar y portable: XML.
4. OO-H: una extensión a
los métodos OO para el modelado y generación automática de interfaces
hipermediales
En la actualidad, los métodos de modelado conceptual de
aplicaciones centran la mayor parte de sus esfuerzos en el correcto modelado de
sus capas estática, dinámica y funcional, pero suelen prestar poca o ninguna
atención a la presentación, es decir, a su interfaz. Sin embargo, el diseño cuidadoso de esta interfaz, así como sus características
de facilidad de uso, evolución y mantenimiento, son aspectos fundamentales para
el éxito final de la aplicación, y determinan el nivel de satisfacción
alcanzado por el usuario durante el uso de la misma.
OO-H recoge las dimensiones de navegación y presentación
características de este tipo de interfaces mediante dos nuevos diagramas: el
Diagrama de Acceso Navegacional (DAN) y el Diagrama de Presentación Abstracta
(DPA). El DAN toma como base los requerimientos de navegación de cada tipo de
usuario del sistema. Para cada usuario, el DAN importa
un diagrama de clases (extraído a partir del diagrama
de clases de la aplicación) donde se refleja exclusivamente la organización de
la información manejada por ese tipo de usuario. A continuación, el DAN
proporciona los constructores necesarios para enriquecer dicho diagrama con los
modos de acceso y navegación necesarios para cubrir sus necesidades de
navegación a través de la información. A partir de él, y aplicando una serie de
reglas de transformación, es posible generar un DPA por defecto. El DPA se
define como una estructura de plantillas especificadas en XML. Tanto la
estructura del diagrama como las plantillas
individuales pueden ser refinadas por el diseñador para conseguir los rasgos de
interfaz deseados.
Para enriquecer los diagramas de un modo sistemático, OO-H integra
un Catálogo de Patrones de Interfaz, que captura reglas de diseño que ayudan a
incrementar la calidad y facilidad de uso de la misma. Como resultado, una
interfaz de aplicación web integrable con módulos de lógica
preexistentes puede ser generada de forma automática a partir de esta
especificación.
UML-Mast: Una Metodología de Análisis y Diseño de Tiempo Real de
Sistemas Orientados a Objetos
UML-Mast es un entorno de modelado que aporta
una nueva vista (Mast_RT_View) para la descripción del
comportamiento de tiempo real del sistema que se modela. A
través de ella el diseñador puede construir gradualmente el modelo de
tiempo real de forma paralela al desarrollo de su modelo lógico. Este modelo
puede ser analizado por un conjunto de herramientas automáticas relativas al
análisis de planificabilidad, estimación de holguras, asignación óptima de
prioridades, detección de bloqueos, animación etc. Con su uso el diseñador
puede tener en consideración desde las primeras fases del
diseño estimaciones del nivel de
cumplimiento de las prestaciones de tiempo real. Tanto los componentes
conceptuales de modelado como las herramientas de análisis de UML-Mast son
proporcionados por el entorno Mast (Modelling and Analysis Suite for Real Time
Applications) [1,2]. Mast es un entorno abierto basado en una descripción
textual (Mast-File) del modelo del sistema de tiempo
real.
5. Fortalezas y
Debilidades al usar UML.
5.1. Fortalezas
Es un lenguaje consolidado.
Estandard de facto.
Facil de aprender.
Permite una comunicación.
Fluida entre los diversos actores acerca del
modelo.
Estándar industrial, soportado por
muchas herramientas CASE
5.2. Debilidades
UML no ha sido diseñado
para modelar procesos de negocio, por lo que no está orientado a lo que
necesita el experto en el dominio del negocio.
Predispone un enfoque
orientado a objetos lo que puede contradecir un enfoque orientado al negocio.
UML suele estar mas orientado a los arquitectos de sistemas y diseñadores
de software UML está pensando para un publico eminentemente tecnico.
Demasiada orientación
a software, difícil de entender por expertos de dominio.
6. UML durante el
análisis y diseño de un sistema y durante la programación.
Unified Modeling Language
"UML", se ha convertido en la notación estándar para definir,
organizar y visualizar los elementos que configuran la arquitectura de un
sistema.
Un sistema es algo
"compuesto", una construcción realizada por manos y herramientas
siguiendo las directrices de un propósito. La palabra se aplica casi
exclusivamente a abstracciones con el fin de captar la totalidad de una
realidad.
A través de la notación UML
podemos comunicar y compartir el conocimiento de una
arquitectura gracias a la combinación simultánea de cinco perspectivas:
a) Definir.-
Fijar, determinar, decidir, explicar un
concepto a través de sus atributos distintivos. Señalar sus límites y dar una idea exacta de lo que es esencial y de lo que es circunstancial.
b) Organizar.-
Establecer unos recursos, disponer un
orden de responsabilidades y formalizar unas reglas de
relación y actuación; todo ello orientado a conseguir un propósito.
c) Visualizar.-
Representar mediante imágenes y/o símbolos el contenido y la organización de los conceptos
que configuran un sistema. Hacer visible su naturaleza y su complejidad.
d) Actuar.-
Pensar y tomar decisiones de manera agil
y sistemática, siguiendo un método; éste a su vez, define el modo de actuar en
base a la relación de un conjunto de actores, actividades, entregables y
certificaciones posibles en un escenario concreto.
e) Certificar.-
Comprobar de manera fehaciente que un
entregable es completo, coherente y usable para el propósito que ha sido
creado.
El resultado, es una mayor comprensión y
claridad sobre la naturaleza de los objetos, eventos y hechos
que tienen consecuencias dentro de un dominio.
El primer paso para la creación del diseño lógico de una aplicación es identificar los
objetos empresariales (los componentes) que proporcionarán la funcionalidad
necesaria. A continuación, el equipo debe identificar los comportamientos,
atributos y relaciones de cada objeto, para lo cual el equipo se sirve de los
escenarios de uso creados en la fase conceptual. El lenguaje de modelos
unificado (UML) es una herramienta que se utiliza para ilustrar el
funcionamiento del sistema. Puede resultar bastante
útil a la hora de describir visualmente un sistema para analizarlo en detalle.
El uso de UML es una forma fácil de elaborar diagramas
de componentes, interacciones y relaciones, entre otros. A menudo, UML se
utiliza en la fase lógica para facilitar el análisis del
diseño.
El Proceso de Análisis de Requisitos permite
refinar la especificación de requisitos (Casos de Uso) y define un conjunto de
reglas que asegura que cada elemento del Modelo de
Requisitos tendrá una representación equivalente en el Esquema Conceptual.
Cuando se llega a la fase de programación, el
valor del esfuerzo realizado en la especificación de
requisitos y en el Modelado Conceptual no están del todo claros. Esto es
principalmente debido a que no es posible producir un código fuente que
funcione de forma equivalente al esquema conceptual desarrollado, de allí la
importancia del
uso de UML .
7. Aplicación de un caso
práctico.
El dueño de un hotel pide desarrollar un
programa para consultar sobre las piezas disponibles y reservar piezas de su
hotel.
El hotel posee tres tipos de piezas: simple,
doble y matrimonial, y dos tipos de clientes: habituales y esporádicos. Una
reservación almacena datos del cliente, de la pieza
reservada, la fecha de comienzo y el número de días que será ocupada la pieza.
El recepcionista del
hotel debe poder hacer la siguientes operaciones:
El administrador puede usar el programa para:
El hotel posee información sobre cuales
clientes son habituales. Esta estructura puede manejarla con un diccionario,
cuya clave sea el número de RUT y como significado tenga los datos personales del cliente.
El diseño a desarrollar debe facilitar la
extensibilidad de nuevos tipos de pieza o clientes y a su vez permitir agregar
nuevas consultas.




Infografia
http://www.monografias.com/trabajos34/ingenieria-software/ingenieria-software.shtml
http://www.dcc.uchile.cl/~psalinas/uml/introduccion.html
http://www-gris.det.uvigo.es/~avilas/UML/node7.html
http://www.abcdatos.com/tutoriales/tutorial/l7157.html
http://javahispano.org/articles.article.action?id=81
http://gentleware.com/index.php
http://www.smartdraw.com/exp/sof/product/index.htm