Professional Documents
Culture Documents
Historia de UML
El lenguaje UML comenz a gestarse en octubre de 1994, cuando Rumbaugh se uni a la
compaa Rational fundada por Booch (dos reputados investigadores en el rea de metodologa
del software).
El objetivo de ambos era unificar dos mtodos que haban desarrollado: el mtodo Booch y el
OMT (Object Modelling Tool ). El primer borrador apareci en octubre de 1995. En esa misma
poca otro reputado investigador, Jacobson, se uni a Rational y se incluyeron ideas suyas. Estas
tres personas son conocidas como los tres amigos. Adems, este lenguaje se abri a la
colaboracin de otras empresas para que aportaran sus ideas. Todas estas colaboraciones
condujeron a la definicin de la primera versin de UML.
Es un lenguaje de modelado visual que se usa para especificar, visualizar, construir y documentar
artefactos de un sistema de software. Se usa para entender, disear, configurar, mantener y
controlar la informacin sobre los sistemas a construir.
UML capta la informacin sobre la estructura esttica y el comportamiento dinmico de un
sistema. Un sistema se modela como una coleccin de objetos discretos que interactan para
realizar un trabajo que finalmente beneficia a un usuario externo.
El lenguaje de modelado pretende unificar la experiencia pasada sobre tcnicas de modelado e
incorporar las mejores prcticas actuales en un acercamiento estndar.
UML no es un lenguaje de programacin. Las herramientas pueden ofrecer generadores de
cdigo de UML para una gran variedad de lenguaje de programacin, as como construir modelos
por ingeniera inversa a partir de programas existentes.
La notacin UML se deriva y unifica las tres metodologas de anlisis y diseos ms extendidas.
Metodologa de Grady Booch para la descripcin de conjuntos de objetos y sus relaciones.
Tcnica de modelado orientada a objetos de James Rumbaugh (OMT: Object - Modelling
Technique).
Aproximacin de Ivar Jacobson (OOSE: Object- Oriented Software Engineering) mediante la
metodologa 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 mtodos. A finales de 1995, Ivar Jacob
son y su compaa Objectory se incorporaron a Rational en su unificacin, aportando el mtodo
OOSE.
De las tres metodologas de partida, las de Bco. 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 relacin y colaboracin.
Por otro lado, la metodologa de Jacobson es ms centrada a usuario, ya que todo en su mtodo
se deriva de los escenarios de uso. UML se ha ido fomentando y aceptando como estndar desde
el OMG, que es tambin el origen de CORBA, el estndar lder en la industria para la
programacin de objetos distribuidos.
En 1997 UML 1.1 fue aprobada por la OMG convirtindose en la notacin estndar de facto para
el anlisis y el diseo orientado a objetos.
UML es el primer mtodo en publicar un meta-modelo en su propia notacin, incluyendo la
notacin para la mayora de la informacin de requisitos, anlisis y diseo. Se trata pues de un
meta-modelo auto-referencial (cualquier lenguaje de modelado de propsito general debera ser
Los conceptos y modelos de UML pueden agruparse en las siguientes reas conceptuales:
Estructura esttica:
Cualquier modelo preciso debe primero definir su universo, esto es, los conceptos clave de la
aplicacin, sus propiedades internas, y las relaciones entre cada una de ellas. Este conjunto de
construcciones es la estructura esttica. Los conceptos de la aplicacin son modelados como
clases, cada una de las cuales describe un conjunto de objetos que almacenan informacin y se
comunican para implementar un comportamiento. La informacin que almacena es modelada
como atributos; La estructura esttica se expresa con diagramas de clases y puede usarse para
generar la mayora de las declaraciones de estructuras de datos en un programa.
Comportamiento dinmico:
Hay dos formas de modelar el comportamiento, una es la historia de la vida de un objeto y la
forma como interacta con el resto del mundo y la otra es por los patrones de comunicacin de un
conjunto de objetos conectados, es decir la forma en que interactan entre s. La visin de un
objeto aislado es una maquina de estados, muestra la forma en que el objeto responde a los
eventos en funcin de su estado actual. La visin de la interaccin de los objetos se representa
con los enlaces entre objetos junto con el flujo de mensajes y los enlaces entre ellos. Este punto
de vista unifica la estructura de los datos, el control de flujo y el flujo de datos.
Construcciones de implementacin:
Los modelos UML tienen significado para el anlisis lgico y para la implementacin fsica. Un
componente es una parte fsica reemplazable de un sistema y es capaz de responder a las
peticiones descritas por un conjunto de interfaces. Un nodo es un recurso computacional que
define una localizacin durante la ejecucin de un sistema. Puede contener componentes y
objetos.
Mecanismos de extensin:
UML tiene una limitada capacidad de extensin pero que es suficiente para la mayora de las
extensiones que requiere el da a da sin la necesidad de un cambio en el lenguaje bsico. Un
estereotipo es una nueva clase de elemento de modelado con la misma estructura que un
elemento existente pero con restricciones adicionales.
Organizacin del modelo:
La informacin del modelo debe ser dividida en piezas coherentes, para que los equipos puedan
trabajar en las diferentes partes de forma concurrente. El conocimiento humano requiere que se
organice el contenido del modelo en paquetes de tamao modesto. Los paquetes son unidades
organizativas, jerrquicas y de propsito general de los modelos de UML. Pueden usarse para
almacenamiento, control de acceso, gestin de la configuracin y construccin de bibliotecas que
contengan fragmentos de cdigo reutilizable.
Elementos de anotacin
Los elementos de anotacin son las partes explicativas de los modelos UML. Son comentarios
que se pueden aplicar para describir, clasificar y hacer observaciones sobre cualquier elemento de
un modelo.
El tipo principal de anotacin es la nota que simplemente es un smbolo para mostrar restricciones
y comentarios junto a un elemento o un conjunto de elementos
Relaciones
Existen cuatro tipos de relaciones entre los elementos de un modelo UML. Dependencia,
asociacin, generalizacin y realizacin, estas se describen a continuacin
Dependencia
Es una relacin semntica entre dos elementos en la cual un cambio a un elemento (el elemento
independiente) puede afectar a la semntica del otro elemento (elemento dependiente). Se
representa como una lnea discontinua, posiblemente dirigida, que a veces incluye una etiqueta.
Asociacin
Es una relacin estructural que describe un conjunto de enlaces, los cuales son conexiones entre
objetos. La agregacin es un tipo especial de asociacin y representa una relacin estructural
entre un todo y sus partes. La asociacin se representa con una lnea continua, posiblemente
dirigida, que a veces incluye una etiqueta. A menudo se incluyen otros adornos para indicar la
multiplicidad y roles de los objetos involucrados
Generalizacin
Es una relacin de especializacin / generalizacin en la cual los objetos del elemento
especializado (el hijo) pueden sustituir a los objetos del elemento general (el padre). De esta
forma, el hijo comparte la estructura y el comportamiento del padre. Grficamente, la
generalizacin se representa con una lnea con punta de flecha vaca.
Realizacin
Es una relacin semntica entre clasificadores, donde un clasificador especifica un contrato que
otro clasificador garantiza que cumplir. Se pueden encontrar relaciones de realizacin en dos
sitios: entre interfaces y las clases y componentes que las realizan, y entre los casos de uso y las
colaboraciones que los realizan. La realizacin se representa como una mezcla entre la
generalizacin y la dependencia, esto es, una lnea discontinua con una punta de flecha vaca .
Diagramas
Diagramas
Los diagramas se utilizan para representar diferentes perspectivas de un sistema de forma que un
diagrama es una proyeccin del mismo. UML proporciona un amplio conjunto de diagramas que
normalmente se usan en pequeos subconjuntos para poder representar las cinco vistas
principales de la arquitectura de un sistema.
Diagramas de Clases
Muestran un conjunto de clases, interfaces y colaboraciones, as como sus relaciones. Estos
diagramas son los ms comunes en el modelado de sistemas orientados a objetos y cubren la
vista de diseo esttica o la vista de procesos esttica (s incluyen clases activas).
Diagramas de Objetos
Muestran un conjunto de objetos y sus relaciones, son como fotos instantneas de los diagramas
de clases y cubren la vista de diseo esttica o la vista de procesos esttica desde la perspectiva
de casos reales o prototpicos.
Diagramas de Casos de Usos
Muestran un conjunto de casos de uso y actores (tipo especial de clases) y sus relaciones.
Cubren la vista esttica de los casos de uso y son especialmente importantes para el modelado y
organizacin del comportamiento.
Diagramas de Secuencia y de Colaboracin
Tanto los diagramas de secuencia como los diagramas de colaboracin son un tipo de diagramas
de interaccin. Constan de un conjunto de objetos y sus relaciones, incluyendo los mensajes que
se pueden enviar unos objetos a otros. Cubren la vista dinmica del sistema. Los diagramas de
secuencia enfatizan el ordenamiento temporal de los mensajes mientras que los diagramas de
colaboracin muestran la organizacin estructural de los objetos que envan y reciben mensajes.
Los diagramas de secuencia se pueden convertir en diagramas de colaboracin sin perdida de
informacin, lo mismo ocurren en sentido opuesto.
Diagramas de Estados
Muestran una maquina de estados compuesta por estados, transiciones, eventos y actividades.
Estos diagramas cubren la vista dinmica de un sistema y son muy importantes a la hora de
modelar el comportamiento de una interfaz, clase o colaboracin.
Diagramas de Actividades
Son un tipo especial de diagramas de estados que se centra en mostrar el flujo de actividades
dentro de un sistema. Los diagramas de actividades cubren la parte dinmica de un sistema y se
utilizan para modelar el funcionamiento de un sistema resaltando el flujo de control entre objetos.
Diagramas de Componentes
Muestra la organizacin y las dependencias entre un conjunto de componentes. Cubren la vista de
la implementacin esttica y se relacionan con los diagramas de clases ya que en un componente
suele tener una o ms clases, interfaces o colaboraciones
Diagramas de Despliegue
Representan la configuracin de los nodos de procesamiento en tiempo de ejecucin y los
componentes que residen en ellos. Muestran la vista de despliegue esttica de una arquitectura y
se relacionan con los componentes ya que, por lo comn, los nodos contienen uno o ms
componentes.
INTRODUCCIN
La ingeniera del software, segn la definicin de la IEEE en 1993, es la aplicacin
de un enfoque sistemtico, disciplinado y cuantificable al desarrollo, operacin y
mantenimiento del software. La ingeniera del software ofrece mtodos o tcnicas
para desarrollar y mantener software de calidad que resuelven problemas de todo
tipo, y trata reas muy diversas de la informtica y de las ciencias
computacionales.
ORGEN
El concepto de ingeniera del software surgi en 1968, tras una conferencia en
Garmisch (Alemania) que tuvo como objetivo resolver los problemas de la crisis del
software. El trmino crisis del software se us desde finales de 1960 hasta
mediados de 1980 para describir los frecuentes problemas que aparecan durante
el proceso de desarrollo de nuevo software. Tras la aparicin de nuevo hardware
basado en circuitos integrados, comenzaron a desarrollarse sistemas y aplicaciones
mucho ms complejos que hasta entonces no era posible construir puesto que el
hardware disponible no lo permita. Estos nuevos proyectos de desarrollo de
software, en la mayora de ocasiones, no se terminaban a tiempo, lo cual tambin
provocaba que el presupuesto final del software excediera de aquel que se haba
pactado. Algunos de estos proyectos eran tan crticos (sistemas de control de
aeropuertos, equipos para medicina, etc) que sus implicaciones iban ms all de
las prdidas millonarias que causaban. Adems, en muchos casos el software no
daba respuesta a las verdaderas necesidades del cliente o haba que ser un
usuario experto para poder utilizarlo, todo ello sumado a que el mantenimiento de
los productos era complejo y muy costoso.
NO SILVER BULLET
Durante dcadas, resolver la crisis del software desencaden en que compaas e
investigadores produjeran ms y ms herramientas software. Cada nueva
tecnologa o prctica que apareci entre 1970 y 1990 fue tratada como una bala
de plata (en ingls, silver bullet) que solucionara la crisis del software.
diseo, etc).
Metodologas para el desarrollo de software (RUP, patrones,
framework).
Herramientas de desarrollo de software.
PROCESO SOFTWARE
El proceso de ingeniera de software se define como un conjunto de etapas
parcialmente ordenadas con la intencin de lograr un objetivo, en este caso, la
obtencin de un producto de software de calidad. El proceso de desarrollo de
software es aquel en que las necesidades del usuario son traducidas en
requerimientos de software, estos requerimientos transformados en diseo y el
diseo implementado en cdigo, el cdigo es probado, documentado y certificado
para su uso operativo. Concretamente define quin est haciendo qu, cundo
hacerlo y cmo alcanzar un cierto objetivo [Jacobson 1998].
El proceso de desarrollo de software requiere por un lado un conjunto de
conceptos, una metodologa y un lenguaje propio. A este proceso tambin se le
llama el ciclo de vida del software, que comprende las etapas por las que pasa un
proyecto software desde que es concebido, hasta que est listo para usarse.
Cada producto software necesita un proceso diferente. Por tanto, estas etapas
genricas deben organizarse de diferente manera y en diferentes niveles segn el
tipo de software para el que se aplique el proceso. Un uso inapropiado del proceso
software puede reducir la calidad o la usabilidad del producto a ser desarrollado, e
incluso incrementar los costes de desarrollo.
Los enfoques ms generales son los siguientes:
MTODOS
Un mtodo de ingeniera de software es un enfoque estructurado para desarrollar
software cuyo objetivo es facilitar la produccin de productos software de alta
calidad a un coste razonable. Indican cmo construir tcnicamente el software. Los
mtodos abarcan un amplio espectro de tareas que incluyen: planificacin y
estimacin de proyectos, anlisis de los requerimientos del sistema y del software,
diseo de procedimientos algortmicos, codificacin, prueba y mantenimiento.
Los mtodos de la ingeniera de software introducen frecuentemente una notacin
especial orientada al lenguaje o grfica y a un conjunto de criterios para la calidad
del software.
A lo largo de los aos se han ido desarrollando una gran cantidad de metodologas
para desarrollar software, a menudo vinculadas a algn tipo de organizacin, que
adems desarrolla, apoya el uso y promueve la metodologa. La metodologa es a
menudo documentada en algn tipo de documentacin formal.
Algunas de las metodologas ms conocidas se explican a continuacin.
Programacin estructurada
Tcnica en la cual la estructura de un programa tan solo emplea tres estructuras
lgicas de control: secuencia, seleccin e iteracin. La programacin estructurada
se basa en el teorema del programa estructurado demostrado por Bhm-Jacopini,
el cual establece que cualquier programa con una entrada y una salida
exclusivamente es equivalente a un programa que contiene solamente las
estructuras lgicas mencionadas anteriormente.
Esta nueva forma de programar que dio lugar a programas fiables y eficientes, que
adems estaban escritos de manera que facilitaba su comprensin posterior.
Extreme Programming
Enfoque formulado por Kent Beck en 1999, que se diferencia de las metodologas
tradicionales principalmente en que pone ms nfasis en la adaptabilidad que en la
previsibilidad. Sus defensores consideran que ser capaz de adaptarse a los
cambios de requisitos en cualquier punto de la vida del proyecto es una
aproximacin mejor y ms realista que definir todos los requisitos al comienzo e
invertir esfuerzos despus en controlar los cambios.
HERRAMIENTAS
Suministran un soporte automtico o semiautomtico para los mtodos. Cuando se
integran las herramientas de forma que la informacin creada por una herramienta
pueda ser usada por otra, se establece un sistema para el soporte del desarrollo
del software llamado ingeniera de software asistido por computadora (Computer
Aided Software Engineering o CASE).
Ya en los aos 70 un proyecto llamado ISDOS (Information System Design and
Optimization System) dise un lenguaje, y por lo tanto un producto, que analizaba
la relacin existente entre los requisitos de un problema y las necesidades que
stos generaban, el lenguaje en cuestin se denominaba PSL (Problem Statement
Language) y la aplicacin que ayudaba a buscar las necesidades de los
diseadores PSA (Problem Statement Analyzer). PSL se empleaba para expresar
requisitos de un sistema mediante un lenguaje formal. El lenguaje se expresaba
empleando objetos y relaciones entre ellos. Una vez compilado y sin errores, el
fichero generado era recibido por la aplicacin PSA, que generaba una base de
datos con la informacin obtenida y permita manipular el contenido y generar
informes, entre otras cosas.
Aunque sos son los inicios de las herramientas informticas que ayudan a crear
nuevos proyectos informticos, la primera herramienta CASE fue Excelerator que
sali a la luz en el ao 1984 y trabajaba bajo una plataforma PC.
Las herramientas CASE alcanzaron su techo a principios de los aos 90. En la
poca en la que IBM haba conseguido una alianza con la empresa de software
AD/Cycle para trabajar con sus mainframes, estos dos gigantes trabajaban con
herramientas CASE que abarcaban todo el ciclo de vida del software. Pero poco a
poco los mainframes han ido siendo menos utilizados y actualmente el mercado de
las Big CASE ha muerto completamente abriendo el mercado de diversas
herramientas ms especficas para cada fase del ciclo de vida del software. Por
TENDENCIA ACTUAL
Las direcciones en las que evoluciona la ingeniera del software hoy en da pueden
agruparse de la siguiente manera:
REFERENCIAS
http://www.cs.utexas.edu/~EWD/transcriptions/EWD03xx/EWD340.html
http://aprendeenlinea.udea.edu.co/lms/moodle/mod/resource/view.php?id=14273
http://www.experiencefestival.com/a/History_of_software_engineering__1985_to_present_No_silver_bullet/id/5134751
http://es.wikipedia.org/wiki/Herramienta_CASE
http://es.wikipedia.org/wiki/Metodolog%C3%ADa_de_desarrollo_de_software
http://es.wikipedia.org/wiki/Programaci%C3%B3n_orientada_a_objetos
http://es.wikipedia.org/wiki/Extreme_Programming
http://es.wikipedia.org/wiki/Rational_Unified_Process#Un_poco_de_historia
http://media.wiley.com/product_data/excerpt/94/08186760/0818676094.pdf
http://en.wikipedia.org/wiki/History_of_software_engineering
http://www.dagstuhl.de/Reports/96/9635.pdf