Professional Documents
Culture Documents
qxp Pgina 13
UML Captulo 1
El modelado
En este captulo comprenderemos
de Ingeniera de Software,
de un lenguaje de modelado.
Introduccin al modelado 14
Modelos y sistemas 22
El rol de los modelos
en la Ingeniera de Software 23
Resumen 29
Actividades 30
01_UML.qxp Pgina 14
INTRODUCCIN AL MODELADO
En la actualidad, pensar en un desarrollo de software sin pasar por una etapa de
modelado es prcticamente imposible. La utilizacin de modelos es una metodo-
loga aceptada y recomendada no slo acadmicamente, sino tambin dentro del
ambiente profesional privado. De hecho, desde las ms altas jerarquas en la pir-
mide empresarial determinan las polticas que se aplicarn para el empleo de
modelos en el desarrollo de productos de software.
Los modelos actuales que representan sistemas de software son creados a travs de
lenguajes de modelado. Como los lenguajes de programacin, stos tambin tie-
nen una sintaxis (la forma de los elementos del lenguaje) y una semntica (el sig-
nificado de esos elementos) definida.
Existen muchos lenguajes de modelado, cada uno con diferentes propsitos.
Algunos son especficos para un rea en particular, como base de datos o sistemas
de tiempo real, y otros son de propsito general, para todo tipo de aplicaciones.
Nuevamente, notamos que hay una similitud con los lenguajes de programacin.
Sin embargo, los lenguajes de modelado tuvieron que luchar bastante para tener
el respeto y el merecimiento que tienen hoy da. En este libro trataremos en pro-
fundidad el lenguaje de modelado UML, considerado prcticamente como un
estndar dentro de la comunidad cientfica. Antes de adentrarnos en UML, es
necesario definir el contexto y precisar algunas cuestionas generales. En el resto
de este captulo inicial conoceremos qu son los lenguajes de modelado, su
importancia dentro del desarrollo de software, la necesidad de modelar y su evo-
lucin desde sus comienzos hasta la actualidad.
14 14
01_UML.qxp Pgina 15
Una de las primeras cosas que hacemos cuando llegamos al destino de nuestras vaca-
ciones es pasar por la oficina de turismo a buscar un folleto con un mapa donde estn
las referencias de los lugares para comer, para alojarse, de entretenimiento y las princi-
pales atracciones tursticas del lugar. Ese mapa, que nos acompaar durante toda nues-
tra estada (si tenemos suerte de no perderlo), no es ms que un modelo de nuestro des-
tino de vacaciones. Generalmente es pequeo, puede doblarse fcilmente para guar-
darlo en algn bolsillo y tiene todo lo necesario para que podamos desenvolvernos tran-
quilamente en la ciudad y disfrutemos de nuestras vacaciones. Otra caracterstica
importante es que es visualmente atractivo y fcil de comprender, de manera que en
un vistazo rpido reconoceremos los aspectos ms importantes. Usualmente, en la
parte de atrs, tenemos ms informacin de cada lugar, por ejemplo, los telfonos de
los hoteles disponibles en la regin. De esta manera, tenemos un panorama general,
pero al mismo tiempo podemos obtener informacin ms especfica fcilmente.
Entonces, podemos decir que un modelo es una abstraccin de una entidad del
mundo real, que nos ayuda a entenderla y a comprenderla en todas sus
caracters- ticas y funcionalidades. Como en el ejemplo del folleto turstico, es
fundamental que sea simple, capaz de adaptarse a las necesidades de mayor o
menos abstraccin (esto es, poder ver los elementos con distintos niveles de
detalle), y con una nota- cin grfica. Este ltimo aspecto es trascendental y
vital: de nada sirve un mode- lo si visualmente resulta extrao de comprender.
Sintaxis
Lenguajes de Modelado Poseen
Semntica
Caractersticas
15 15
01_UML.qxp Pgina 16
cargo generalmente por una sola persona. A medida que los cambios tecnolgicos,
cientficos y de hardware fueron sucediendo, la situacin cambi drsticamente.
Podemos enumerar esta evolucin desde cuatro puntos de vista: segn los lenguajes de
programacin, segn las aplicaciones, segn el perfil del programador y segn la con-
fiabilidad esperada. Analicemos cada uno de ellos.
16 16
01_UML.qxp Pgina 17
17 17
01_UML.qxp Pgina 18
18 18
01_UML.qxp Pgina 19
19 19
01_UML.qxp Pgina 20
Evolucin
Aplicaciones
M
Perfil O
D
Lenguaje E
L
Confiabilidad O
S
Demanda
20 20
01_UML.qxp Pgina 21
21 21
01_UML.qxp Pgina 22
MODEL CHECKING
En muchos procesos de desarrollo, la parte de verificacin formal est presente a lo largo de
todo el proyecto. Muchas propiedades son verificadas a travs de un proceso automatizado cono-
cido como Model Checking. Se basa en componer el sistema bajo anlisis con la propiedad a ser
verificada, para poder obtener conclusiones sobre el sistema completo.
22 22
01_UML.qxp Pgina 23
Requerimientos
Mantenimiento
Arquitectura
Codificacin
Como ancdota final de esta seccin, vale la pena mencionar cmo nacieron los
procesos giles de desarrollo. El proceso de desarrollo a travs de mtodos giles
sigue un manifiesto creado en 2001. En un paradisaco spa en Salt Lake City se reu-
nieron varios expertos crticos de los sistemas tradicionales y plasmaron el resulta-
do de la reunin en un manifiesto con cuatro puntos principales:
REPETICIN DE ETAPAS
Una parte de los procesos de software lleva varias iteraciones hasta alcanzar el producto final.
Es bastante comn, por ejemplo, que una vez que est terminada la etapa de diseo se vuelvan
a controlar los requerimientos a travs de la nueva informacin obtenida. Cambios en los reque-
rimientos generarn nuevos modelos y as sucesivamente hasta obtener un modelo slido.
23 23
01_UML.qxp Pgina 24
DEFINICIONES
Como sucede con otras especialidades, en las Ciencias de la Computacin existen diversas defi-
niciones para los conceptos generales que son clave, como sistema, software o, incluso,
Ingeniera de Software. Lo importante, ms all de nuestra preferencia de alguna sobre las
dems, es comprender todos los elementos involucrados detrs de cada definicin.
24 24
01_UML.qxp Pgina 25
implcito que es, justamente, proveer una base comn de entendimiento para que
todas las partes implicadas puedan comunicarse y estar hablando de las mismas
cosas, refirindose a los mismos conceptos. Es decir, los modelos nos permiten
transmitir informacin sobre el sistema de manera clara y precisa.
Figura 6. Ejemplo de trabajo con cdigo y modelos en un entorno moderno como Eclipse.
MODELOS Y SISTEMAS
Los modelos representan una abstraccin de nuestro sistema que nos permite con-
centrarnos en los detalles que ms nos interesan, dejando de lado otros aspectos
secundarios. En este sentido, es importante reconocer que los modelos no son el sis-
tema. Los modelos debern seguir su proceso hasta convertirse, en el futuro, en el
sistema implementado. Una pregunta razonable que nos podemos hacer en este
momento es cmo podemos estar seguros de que la implementacin que nos da
como salida la etapa de codificacin respeta los modelos planteados en la etapa de
anlisis y diseo. Podemos abarcar esta cuestin desde tres lugares.
Como primera medida, es fundamental el total entendimiento del lenguaje de
modelado y de los modelos desarrollados por estos lenguajes, tanto por parte de
los programadores como de los lderes de proyecto. De esta manera, nos asegura-
mos de que los programadores codifiquen correctamente el comportamiento
expresado en nuestros modelos. Por otro lado, tambin es importante tener en
25 25
01_UML.qxp Pgina 26
26 26
01_UML.qxp 31/03/2009 3:20 Pgina 23
modelos del sistema, stos sean correctamente documentados para as poder man-
tener siempre una relacin estrecha y directa entre los modelos y el cdigo. Otra
alternativa es brindada directamente por los entornos de los lenguajes de mode-
lado. Esto lo veremos en particular ms adelante cuando nos centremos en el len-
guaje de modelado UML y la herramienta Visual Paradigm. En general, la situa-
cin es similar con otros entornos y lenguajes donde existe la posibilidad de ir lle-
vando el rastro de nuestras entidades en un modelo hasta su resultante entidad
en el cdigo. Manteniendo este mapeo, es decir, esta unin entre los conceptos
del modelo y los conceptos del cdigo, detectar cualquier ambigedad o incon-
sistencia es muchsimo ms simple y consume menos tiempo.
Por ltimo, existen procesos de desarrollo que intentan maximizar los procesos de
automatizacin dentro del desarrollo de software, es decir, partir de modelos que
automticamente se transforman en el producto final. Esta tcnica se conoce como
Model-Driven Development o Desarrollo Basado en Modelos. Otras herra-
mientas nos permiten, a partir de modelos, crear esqueletos o armazones de nues-
tro sistema, a travs de los cuales podemos imaginarnos cmo ser el producto
final. Resulta claro que introducir cambios en estos esqueletos es mucho ms sen-
cillo que hacerlo en el sistema final, de la misma manera que llevar a cabo modi-
ficaciones en el plano de una habitacin es mucho ms sencillo que efectuarlos en
la habitacin en s. Imaginemos que realizar una nueva divisin en la habitacin
consiste en trazar una lnea en el plano, mientras que levantar realmente la pared
en la habitacin es una tarea mucho ms compleja.
CASE
El primer tipo de herramienta para la construccin de software basada en transformacin suce-
siva de modelos fue la herramienta CASE (Computer-Aided Software Engineering), aparecida
en 1980. Las herramientas CASE pueden clasificarse segn las plataformas que soportan, los
ciclos de desarrollo que afectan y las arquitecturas de software que resultan de su aplicacin.
23 23
01_UML.qxp 31/03/2009 3:20 Pgina 24
IEEE
La IEEE auspicia y organiza muchas conferencias de Ingeniera de Software a nivel mundial.
Entre ellas, podemos mencionar ICSE (International Conference on Software Engineering).
Tambin mantiene numerosas revistas y publicaciones en todos los temas relacionados con las
Ciencias de la Computacin. La mayora de las publicaciones estn disponibles en su sitio web.
24 24
01_UML.qxp 31/03/2009 3:20 Pgina 25
Ingeniera de Software
Ahora que tenemos una definicin ms certera de los sistemas de software, pode-
mos encarar la definicin de Ingeniera de Software. Algunas definiciones que
encontramos son las siguientes:
25 25
01_UML.qxp 31/03/2009 3:20 Pgina 26
26 26
01_UML.qxp 31/03/2009 3:20 Pgina 27
Modelos de software
Con lo que hemos visto hasta ahora sabemos que los modelos son una simplifica-
cin del sistema que queremos construir. La principal razn para modelar es com-
prender ms profundamente el sistema que vamos a desarrollar. A travs del mode-
lado obtenemos los siguientes beneficios:
Los modelos no slo son tiles en grandes proyectos, sino que tambin lo son en
proyectos pequeos y medianos. An las golosinas para nios que vienen con
pequeos juguetes para armar tienen un folleto de instrucciones y un dibujo de
cmo se ve el juguete una vez armado. Es decir, la golosina viene acompaada no
slo con el juguete, sino tambin con su modelo. Tambin es cierto que aunque la
construccin de modelos en sistemas pequeos es sumamente recomendable, quizs
el sistema puede implementarse sin ellos. Sin embargo, para proyectos o sistemas
con mayor estructura y comportamiento, es directamente imposible.
Un sistema puede ser tomado desde muchos puntos de vista: a partir de su
estructura, su jerarqua, su comportamiento, sus caractersticas, de manera
interna, de manera externa, desde alguna funcionalidad en especial (por ejem-
plo, el sistema la seguridad, etctera). En ocasiones, ser necesario concentrarse
en detalle en un componente en especial, conociendo sus atributos, sus mtodos
27 27
01_UML.qxp 31/03/2009 3:20 Pgina 28
28 28
01_UML.qxp 31/03/2009 3:20 Pgina 29
Modelado
- V ista parcial
- Multimrfico
- Coherente
- Abstraccin
+ Compor tamiento ()
+ Documentacin ()
+ Anlisis ()
+ Propiedades()
29 29
01_UML.qxp 31/03/2009 3:20 Pgina 30
este libro con objetos, tendramos una clase Libro, que tendra como atributos su
autor, su editorial, y la cantidad de pginas. Estara formado por objetos de tipo
Captulo, con atributos que reflejaran su nombre y sus objetivos. Como vemos, el
modelo resultante sera idntico a lo que podemos encontrarnos en el mundo real.
En este libro nos enfocaremos en un lenguaje de modelado basado en la orientacin
a objetos. Vale la pena aclarar que los modelos resultantes pueden luego ser imple-
mentados o no sobre un lenguaje orientado a objetos. Los modelos, en este senti-
do, son independientes de la implementacin.
RESUMEN
El rol de los modelos es fundamental. A travs de herramientas grficas y compactas nos
muestran las principales propiedades del sistema, de manera de poder imaginarnos an en
etapas tempranas del desarrollo el futuro comportamiento del sistema. Nos permiten, as,
detectar errores y cambiar especificaciones y comportamientos que, de mantenerse en nues-
tro sistema, se convertiran en peligrosos amenazas para el xito de nuestro proyecto.
30 30
01_UML.qxp 31/03/2009 3:20 Pgina 30
ACTIVIDADES
30