You are on page 1of 23

01_UML.

qxp Pgina 13

UML Captulo 1
El modelado
En este captulo comprenderemos

qu son los lenguajes de modelado

y las principales razones de su utilizacin.

Conoceremos nociones bsicas

de Ingeniera de Software,

aprenderemos a diferenciar entre

modelo y sistema, y entenderemos

las principales caractersticas

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

1. EL MODELADO Introduccin al modelado

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.

Qu son los lenguajes de modelado?


Los lenguajes de modelado son la herramienta que utilizamos para construir nues-
tros modelos del sistema. Ahora bien, qu son los modelos? Seguramente no poda-
mos dar en este momento una respuesta precisa (esperemos poder hacerlo cuando
terminemos el ltimo captulo del libro), pero es seguro que hemos utilizado el con-
cepto previamente en muchsimas situaciones. Veamos algunos ejemplos.

COMO LOS LENGUAJES DE PROGRAMACIN


Los lenguajes de modelado son, estructuralmente, similares a los de programacin. As como
un lenguaje de programacin nos da errores de compilacin por no respetar su sintaxis, lo
mismo pasar en el modelado si no respetamos las formas establecidas. La mayora de los len-
guajes de modelado no se ejecutan, pero es posible la generacin de cdigo a partir de modelos.

14 14
01_UML.qxp Pgina 15

1. EL MODELADO Introduccin al modelado

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

Abstraccin Visual Simplificacin

Figura 1. Esquema con las caractersticas de los lenguajes de modelado.

Surgimiento de los modelos


El surgimiento de los modelos de software est ntimamente relacionado con la evolu-
cin de las Ciencias de la Computacin y, en particular, de la Ingeniera de Software.
Los primeros sistemas de software eran puramente aplicaciones cientficas, llevadas a

15 15
01_UML.qxp Pgina 16

1. EL MODELADO Introduccin al modelado

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.

Evolucin desde los lenguajes de programacin


Podemos nombrar la evolucin en los lenguajes de programacin de la siguiente
manera. Inicialmente, los primeros programas se codificaban a travs de tarjetas
perforadas. Una tarjeta perforada es un pedazo de papel que representa informa-
cin digital a travs de la presencia o ausencia de agujeros en posiciones fijas. Luego,
los lenguajes fueron mutando de programar con tarjetas perforadas a emplear ceros
y unos, accediendo directamente a registros de memoria con directivas del lengua-
je Assembler. Luego pasaron a instrucciones de alto nivel de Java, como por ejem-
plo, GetConnection, para conectarse a una base de datos o a los constructores para
recorrer estructuras de datos como el foreach.
Los lenguajes de programacin incorporan cada vez ms constructores de mayor
nivel de abstraccin para asegurarnos una programacin ms simple y carente de
errores. Otra evolucin importante surge con los entornos cada vez ms completos
de programacin como Eclipse, NetBeans o Spring, que brindan mayor poder de
expresividad y seguridad al programador.

Figura 2. Dispositivo para trabajar con tarjetas perforadas

16 16
01_UML.qxp Pgina 17

1. EL MODELADO Introduccin al modelado


La utilizacin de estos modernos frameworks complejos dio lugar a lo que se cono-
ce como middleware. En estos frameworks es bastante comn encontrar funciona-

17 17
01_UML.qxp Pgina 18

1. EL MODELADO Introduccin al modelado

lidad predefinida para manejar conceptos como seguridad, transacciones o persis-


tencia. Asimismo, proveen capacidad para manejar trabajo en equipos distribuidos.
En este sentido, una de las mayores dificultades en los ambientes distribuidos es el
debugging de cdigo. Encontrar un error en ambientes de ejecucin paralela o con-
currente es extremadamente difcil.

Evolucin desde las aplicaciones


Las primeras aplicaciones consistan en complejos clculos matemticos sobre enor-
mes computadoras que ocupaban habitaciones enteras. Por ejemplo, la computa-
dora ENIAC, presentada en pblico en 1946, ocupaba una superficie de 167
metros cuadrados y pesaba unas 27 toneladas. En cuanto a su capacidad, poda
resolver 5.000 sumas y 360 multiplicaciones en un segundo. Con el paso del tiem-
po, la tecnologa avanz y las aplicaciones fueron creciendo cada vez ms, hasta lle-
gar a la actualidad. Hoy tenemos prcticamente cualquier tipo de computacin
sobre pequesimos chips para telfonos celulares u hornos microondas, por men-
cionar dos casos. La computacin interacta con nosotros constantemente al estar
presente en cajeros, sistemas de videoclub, manejo de informacin, telefona, comu-
nicacin, Internet, juegos, animacin, cine, msica, sistemas de monitoreo de
pacientes y reactores, entre algunos tems de una lista infinita. La presencia y la
posibilidad de cmputo actuales han influido y potenciado otras reas como la
medicina, el desarrollo de medicamentos, la robtica, el reconocimiento de huellas
digitales o de retina, la biogentica, etctera.

18 18
01_UML.qxp Pgina 19

1. EL MODELADO Introduccin al modelado


Figura 3. Una imagen de la computadora ENIAC.

19 19
01_UML.qxp Pgina 20

1. EL MODELADO Introduccin al modelado

Evolucin desde el perfil del desarrollador


En la actualidad, los equipos de trabajo dedicados al desarrollo de software son
multipersonales e interdisciplinarios, con jerarquas desde arquitectos, lderes de
proyecto, analistas funcionales, testers, programadores, etctera. Estos estructurados
equipos actuales de desarrollo son fruto de investigaciones en la teora de las inte-
rrelaciones y manejo de grupos. Por el contrario, en los primeros programas de
computacin el equipo de desarrollo consista, en general, de una nica persona que
llevaba toda la responsabilidad del proyecto.

Evolucin desde la confiabilidad esperada


Como dijimos, las primeras computadoras eran enormes aparatos que ocupaban
habitaciones enteras. Programarlas para llevar a cabo una tarea no era para nada tri-
vial, y su preparacin llegaba a ocupar das enteros. Bajo este contexto, los errores
eran esperables y se tardaba das o semanas en corregirlos. La ancdota cuenta que
por esos tiempos naci el concepto de bug (del ingls, insecto) para nombrar el
error de un programa ya que la presencia de insectos dentro de las computadoras
causaba fcilmente problemas de hardware.
En la actualidad, en cambio, se busca intensamente y cada vez ms la ausencia de
errores en el software. Para esto, se han desarrollado sofisticadas estrategias forma-
les para la deteccin de errores, manejo de riesgo, mantenimiento y evolucin.

Evolucin
Aplicaciones
M
Perfil O
D
Lenguaje E
L
Confiabilidad O
S
Demanda

Figura 4. La evolucin del software transform la utilizacin de modelos.


De una etapa considerada como poco productiva o intil, pas
a ser una etapa imprescindible en cualquier proceso de desarrollo.

Cambios en los procesos de desarrollo


Como vimos, mucho ha cambiado en lo que se refiere al empleo y a la utilizacin

20 20
01_UML.qxp Pgina 21

1. EL MODELADO Introduccin al modelado


de computadoras, mostrndose un gran avance y maduracin. Todos estos cambios
influyeron en la manera y en los pasos que se siguen durante el proceso de crear y

21 21
01_UML.qxp Pgina 22

1. EL MODELADO Introduccin al modelado

desarrollar software especfico. Como mencionamos, los primeros programas eran


implementados por una sola persona sin que existiera la nocin de anlisis o mode-
lo ms all de la idea en la mente del nico programador a cargo. A medida que
los proyectos fueron creciendo en magnitud y se fue acrecentando la injerencia de
la computacin en el desenvolvimiento de la sociedad, este prototipo de equipo
qued obsoleto. Ms personas fueron asignadas a cada proyecto y naci la necesi-
dad de primero poner en papel los conceptos que luego seran implementados.
Este perodo es conocido como la Crisis del Software (ao 1968), momento en
el que se reunieron expertos de la comunidad para enfrentar los siguientes proble-
mas en el desarrollo del software:

Los proyectos no terminaban en los plazos estipulados.


No se cumplan los presupuestos planeados.
Se obtena un cdigo final de baja calidad que no cumpla las especificaciones
planteadas inicialmente.

Estos cambios introdujeron nuevas etapas en los procesos de desarrollo.


Bsicamente, los procesos de desarrollo cuentan con las siguientes etapas. La pri-
mera de ellas consiste en la recoleccin de requerimientos, es decir, establecer las
responsabilidades y funcionalidades del sistema. La segunda etapa se concentra en
el anlisis y el diseo. En sta, los actores protagnicos son los lenguajes de
modelado y los modelos que son creados a partir de ellos. El principal objetivo de
esta etapa es obtener una visin completa del sistema, a travs de modelos que
correctamente abstraigan las principales caractersticas y el comportamiento espe-
rado del sistema. Luego, se pasa a la etapa de implementacin del producto. Esto
significa su codificacin y programacin. Finalmente, se lanza el sistema a pro-
duccin, pasando previamente por una etapa de testing en la que se valida el com-
portamiento del sistema. Una vez que el sistema entra en funcionamiento, los cam-
bios en los requerimientos y la correccin de errores involucran las tareas princi-
pales en la actividad que se conoce como mantenimiento del sistema.
Sin embargo, los ms novedosos procesos de desarrollo incorporan dos etapas ms. La
primera de ellas, conocida como arquitectura del sistema, se sita entre la captura

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

1. EL MODELADO Introduccin al modelado

de requerimientos y el anlisis y diseo. El objetivo es modelar los principales com-


ponentes del sistema junto con su interaccin bsica. Algunos esquemas clsicos de
arquitectura son la cliente/servidor o la Pipe and Filter. La segunda nueva etapa es
de validacin y verificacin formal, la cual se sita generalmente antes del lanza-
miento del software en pos de asegurarnos el correcto funcionamiento del sistema, a
travs de tcnicas matemticas formales.
Existen varios procesos de desarrollo de software, pasando por el clsico modelo de
cascada hasta los ms modernos, como los procesos giles de desarrollo. Si bien
son bastante diferentes entre s, con distintos objetivos y reas de aplicacin, las eta-
pas que mencionamos anteriormente se ven reflejadas en cualquier proceso de desa-
rrollo, de una manera u otra.

Requerimientos
Mantenimiento
Arquitectura

Anlisis y Diseo Testing

Codificacin

Figura 5. Esquema de los procesos de desarrollos modernos.

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

1. EL MODELADO Introduccin al modelado

En primer lugar, valorar ms a los individuos y a su interaccin que a los pro-


cesos y las herramientas.
Valorar la funcionalidad del software por sobre su documentacin exhaustiva.
Valorar ms la colaboracin con el cliente que la negociacin contractual.
Valorar ms la respuesta a los cambios que el seguimiento de un plan.

Lenguajes de modelado: un poco de su historia


Si bien se vio la necesidad de contar con lenguajes de modelado y se reconoci su
rol fundamental en el proceso de desarrollo, la industria profesional tard en adop-
tarlos y ponerlos en prctica. Las principales dificultades que se encontraron aque-
llos que defendan la nocin de lenguajes de modelado y de modelos que repre-
sentaran la funcionalidad del sistema radicaron, esencialmente, en la inversin de
tiempo y recursos para aprender todo un nuevo lenguaje y que la salida de todo
este proceso no fuera nada que se pudiera ejecutar. El proceso de modelado se vea
entonces como un proceso costoso y poco productivo.
Sin embargo, dos cuestiones trascendentales acontecieron y favorecieron el xito de
los lenguajes de modelado. La primera de ellas fue el reconocimiento, por parte de
la industria, de que cuanto antes sea encontrado un error, ms considerables sern
los beneficios econmicos, ya que el costo de corregir una equivocacin aumenta de
forma exponencial en el tiempo a medida que el proyecto avanza. Es decir, si repa-
rar una falla en la etapa de modelado en la segunda semana del proyecto tiene costo
dos, hacerlo durante la etapa de testing, en el sptimo mes del proyecto, tiene un
costo de dos mil cuarenta y ocho. El segundo factor decisivo provino de la comu-
nidad que abogaba por el empleo de lenguajes de modelado. Comprendieron que
para que fueran utilizados, estos lenguajes deban ser mucho ms simples, maneja-
bles, con una semntica clara y visualmente atractivos.
En la actualidad, los modelos tienen un rol preponderante en el desarrollo de soft-
ware. Modelos del sistema circulan entre los analistas funcionales, los programa-
dores, los gerentes y los clientes, y todas las partes involucradas comprenden lo que
estn viendo y pueden debatir las distintas opciones para el mejor desempeo del
producto que se va a desarrollar. La utilizacin de modelos tiene un beneficio

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

1. EL MODELADO Introduccin al modelado

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

1. EL MODELADO Introduccin al modelado


cuenta que si hay una situacin en la que por razones de implementacin (por
ejemplo, la ubicacin fsica de un servidor) es necesario introducir cambios en los

26 26
01_UML.qxp 31/03/2009 3:20 Pgina 23

1. EL MODELADO El rol de los modelos en la Ingeniera de Software

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.

EL ROL DE LOS MODELOS EN LA INGENIERA


DE SOFTWARE
La utilizacin de modelos es el caballito de batalla de la Ingeniera de Software. Pero
qu es la Ingeniera de Software? Y an antes, qu entendemos por software? La
definicin tradicional sugiere que un sistema de software es una coleccin de com-

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

1. EL MODELADO El rol de los modelos en la Ingeniera de Software

ponentes interrelacionados que trabajan conjuntamente para cumplir algn obje-


tivo. Sin embargo, una definicin ms adecuada sera: un conjunto de entidades cuyo
comportamiento dar solucin a un problema inicial, y ser ejecutado automticamente
(por computadoras). Esta definicin es ms adecuada por las siguientes razones:

Entidad es un concepto ms abstracto que el concepto de componente.


Adems, hablar de componentes puede orientar hacia la Programacin Basada
en Componentes y generar, as, una confusin.
Hace explcita la palabra comportamiento, que resulta ms precisa y
adecua- da que la palabra interaccin.
Hace referencia explcita tambin a un problema inicial, el cual se quiere resolver.

Es fundamental comprender que el sistema de software no es nicamente el CD o


DVD que contiene el programa, sino que el concepto de entidad abarca tambin,
adems del cdigo, toda la documentacin del sistema, incluyendo sus modelos.
Adems, se desprende de la definicin que las entidades colaborarn entre s para
lograr su objetivo, y que el comportamiento individual afectar e impactar en las
dems. Por lo tanto, es fundamental que la interaccin de las entidades est correc-
tamente ilustrada y reflejada en nuestros modelos del sistema.

Finalmente, la IEEE (Institute of Electrical and Electronics Engineers) define al software


como la suma total de los programas de computadora, procedimientos, reglas, la docu-
mentacin asociada y los datos que pertenecen a un sistema de cmputo.

Errores del software versus errores del diseo


En algunas ocasiones, se confunden los errores propios del software con errores del
diseo. El software es intrnsecamente flexible y debemos estar preparados para
ello. Supongamos que hemos desarrollado un sistema para capturar mensajes de
transmisin por radio. Es implementado correctamente, es instalado y su funcio-
namiento es el esperado. Sin embargo, por razones operativas, un mes despus, el
servidor donde funciona nuestro software se cambia de piso en el edificio donde

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

1. EL MODELADO El rol de los modelos en la Ingeniera de Software

funciona la empresa cliente. En este nuevo lugar, se producen interferencias con


otros aparatos tecnolgicos y nuestro programa comienza a fallar. La solucin con-
siste en mejorar la recepcin de la seal, pero estos cambios degradan notable-
mente la perfomance y vuelven demasiado lenta la ejecucin normal de nuestro
sistema. Estamos frente a una falla de software o frente a una falla en el diseo?
La segunda opcin es la correcta. Debi estar mejor contemplada la interaccin
entre la perfomance y el impacto de cada entidad en ella.

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:

La Ingeniera de Software es la rama de la Ingeniera que aplica los


principios de las Ciencias de la Computacin y las Matemticas para lograr
soluciones costo-efectivas (eficaces en costo o econmicas) a los problemas
de desarrollo de software, es decir, permite elaborar consistentemente
productos correctos, utilizables y costo-efectivos.
La Ingeniera de Software involucra construir un producto de software de alta
calidad lidiando con las mltiples restricciones (tiempo, presupuesto y dems).
La disciplina de Ingeniera de Software involucra conocimiento, herramientas
y mtodos para definir y capturar los requerimientos, realizar el diseo del sis-
tema y su correspondiente codificacin, validacin y mantenimiento. La
Ingeniera de Software se nutre de conocimientos de otras reas como
Ingeniera Computacional, Ciencias de la Computacin, Administracin de
Empresas, Matemtica, Administracin de Proyectos, Administracin de
Calidad e Ingeniera de Sistemas.
Por ltimo, la definicin de IEEE dice que la Ingeniera de Software es la apli-
cacin de un enfoque sistemtico, disciplinado y cuantificable al desarrollo,
operacin y mantenimiento del software. En trminos prcticos, es un rea o
disciplina de la Informtica que ofrece mtodos y tcnicas para desarrollar y
mantener software de calidad.

De todas estas definiciones podemos obtener en claro los siguientes aspectos: la


Ingeniera de Software debe lidiar con la escalabilidad y la complejidad de siste-
mas de software, identificando claramente aquello que se pretende por software de
alta calidad. A su vez, requiere, como todas las ingenieras, rigor, creatividad, docu-
mentacin y gestin. Por ltimo, es una actividad multidisciplinaria.

25 25
01_UML.qxp 31/03/2009 3:20 Pgina 26

1. EL MODELADO El rol de los modelos en la Ingeniera de Software


Como toda ingeniera, se rige a travs de principios. Cubrirlos est fuera del alcan-
ce de este libro, pero bien vale la pena, al menos, enunciarlos. Algunos de ellos son:

26 26
01_UML.qxp 31/03/2009 3:20 Pgina 27

1. EL MODELADO El rol de los modelos en la Ingeniera de Software

rigor y formalidad, separacin de conceptos, abstraccin, modularidad, flexibi-


lidad, anticipacin al cambio, incrementabilidad, rastreabilidad, manejo de
errores, cohesin y acoplamiento, correctitud, confiabilidad, portabilidad,
reusabilidad, eficiencia y, finalmente, facilidad de uso. A travs de la utilizacin
de estos principios y siguiendo un mtodo claro de Ingeniera de Software, desa-
rrollaremos software de alta calidad que cumple con su objetivo.

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:

Visualizar en etapas tempranas del desarrollo el comportamiento del sistema.


Especificar tanto el comportamiento como la estructura del sistema.
Documentacin formal del sistema.
Guiar el desarrollo del sistema.

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

ORIGEN DE INGENIERA DE SOFTWARE


El trmino Ingeniera de software fue usado por primera vez en 1968 durante una reunin de la
OTAN por la crisis del software. Si bien es atribuido a F.L. Bauer, Edsger Dijkstra lo utiliz en su
libro The Humble Programmer. Uno de los problemas ms graves detectados en ese momento
fue la falta de tcnicas para poder estimar el costo y el tiempo de los proyectos de software.

27 27
01_UML.qxp 31/03/2009 3:20 Pgina 28

1. EL MODELADO El rol de los modelos en la Ingeniera de Software

y la funcionalidad que provee. En otras, quiz queramos apreciar cmo interacta


con otros componentes, por lo que nos alcanzar con ver nicamente el nombre
del componente y obviar su comportamiento interno. Existen muchos modelos
para nuestro sistema y cada uno muestra un punto de vista en particular, o pro-
vee menor o mayor nivel de detalle sobre los componentes.
As como un sistema se divide en subsistemas menores de manera tal que la cola-
boracin de todos ellos permite solucionar el problema planteado, un modelo tam-
bin se divide en distintos submodelos, y cada uno de ellos muestra y se enfoca en
un rea en particular. Planteado en trminos de operaciones de conjuntos, la inter-
seccin de todos ellos dar como resultado el modelo de nuestro sistema.

Caractersticas del modelado


As como mencionamos los principios de la Ingeniera de Software, tambin existen
caractersticas distintivas para la especificacin de propiedades y el comportamiento a
partir de modelos de software. A continuacin, las encontraremos descriptas:
Los modelos son multimrficos: los modelos pueden tomar mltiples formas.
El estilo particular de cada modelo est ntimamente relacionado con el tipo de
proyecto en marcha. Si necesitamos simular el comportamiento de las mareas
en una determinada laguna, quizs un modelo matemtico a partir de integra-
les de Gauss y software de simulacin sea el modelo adecuado. Si, en cambio,
necesitamos estudiar el trayecto ptimo para que un viajante pueda recorrer
todas las ciudades que necesita en el menor tiempo posible, entonces el mode-
lo matemtico de grafos nos viene a la perfeccin. Lo mismo ocurre con nues-
tros sistemas: existen modelos enfocados en la arquitectura, en la estructura
esttica, basados en el comportamiento, etctera. Ante cada sistema, debemos
pensar en los tipos de modelos que vamos a utilizar.
Los modelos deben manejar distintos niveles de abstraccin: supongamos
que tenemos el modelo finalizado de nuestro sistema y lo queremos presentar a
los gerentes del proyecto. Si llevamos todos y cada uno de los diferentes mode-
los, la reunin ser un fracaso ya que habr una cantidad enorme de modelos.
Quiz, lo ms conveniente sea llevar un modelo de la arquitectura donde se vea

ACTUALIZAR LOS MODELOS


Los modelos del sistema forman una parte crtica en la documentacin del sistema. Todos los
cambios introducidos en la etapa de implementacin tienen que reflejarse a travs de cambios
en los modelos. Un modelo desactualizado tiene escaso valor. Tener los modelos actualizados
es fundamental para facilitar la tarea al momento de introducir cambios.

28 28
01_UML.qxp 31/03/2009 3:20 Pgina 29

1. EL MODELADO El rol de los modelos en la Ingeniera de Software

la interaccin de los principales componentes. En caso de querer profundizar en


el comportamiento de alguno de ellos, tendremos listo el modelo de ese compo-
nente en particular. De esta manera, logramos el efecto zoom in-zoom out sobre
las propiedades salientes del sistema.
Los modelos deben ser coherentes: de poco sirve un modelo sobre el compor-
tamiento de un tren si no tiene en cuenta la capacidad de peso que soportan las
vas. Es decir, debemos incorporar a nuestro modelo la mayor cantidad de infor-
macin posible del entorno sobre el cual nuestro sistema se ejecutar. Cualquier
tipo de informacin que sea relevante y no sea incorporada a nuestro modelo ter-
minar repercutiendo negativamente en la calidad del software desarrollado.
Todos los modelos cuentan: hemos visto cmo diferentes modelos capturan dis-
tintos puntos de vista del sistema. No es aconsejable tomar decisiones basndonos
en uno solo, ignorando el resto, ya que hay variables y parmetros que estn sien-
do excluidos y que son importantes para la decisin en cuestin. Por ejemplo, si
seguimos nicamente el punto de vista de eficiencia, obtendremos un sistema que
se ejecute muy rpido, pero seguramente muy poco amigable. Todos los distintos
criterios y puntos de vista deben balancearse.

Modelado

- V ista parcial
- Multimrfico
- Coherente
- Abstraccin

+ Compor tamiento ()
+ Documentacin ()
+ Anlisis ()
+ Propiedades()

Figura 7. Un modelo UML que describe las caractersticas del modelado.

Modelar el mundo de la orientacin a objetos


Un alto porcentaje de los modelos construidos en la actualidad tienen como meca-
nismo subyacente el mundo de la orientacin a objetos. La principal razn de este
hecho es que el modelado con objetos permite mantener una relacin casi directa
con la realidad, y as poder comprender ms fcilmente la interaccin entre todos
los componentes, por ms compleja que sea. Por ejemplo, si quisiramos modelar

29 29
01_UML.qxp 31/03/2009 3:20 Pgina 30

1. EL MODELADO El rol de los modelos en la Ingeniera de Software

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.

Figura 8. Trabajo con modelos en una de las herramientas basadas en UML.

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

PREGUNTAS TERICAS EJERCICIOS PRCTICOS

1 Cules son los objetivos de los lenguajes 1 Qu lenguajes de modelados conoce?


de modelado? Represente un mismo modelo sencillo en
cada uno de ellos para puntualizar fortale-
2 Cules fueron las principales razones del zas y debilidades de cada uno.
xito de los lenguajes de modelado?
2 Investigue al menos cinco herramientas
3 Enumere las diferencias y similitudes basadas en el concepto de desarrollo guia-
entre un lenguaje de programacin y un do por modelos.
lenguaje de modelado.
3 Muestre ejemplos concretos que ilustren
4 Cul es la motivacin principal detrs del la diferencia entre sistemas y modelos.
desarrollo basado en modelos?
4 Muestre en una lnea temporal la evolu-
5 Defina en sus propios trminos la discipli- cin de los procesos de desarrollo.
na de Ingeniera de Software.
5 Cules son todos los componentes que
6 Explicite los beneficios de la utilizacin de integran un sistema de software?
modelos en los procesos de software.

7 Analice la relacin entre los modelos y la


documentacin de un proyecto de software.

8 De qu maneras se puede lograr una evo-


lucin consistente de los modelos?

9 Por qu es importante el concepto de abs-


traccin en los modelos?

10 Por qu es importante la parte grfica y


visual en un lenguaje de modelado?

11 Analice el impacto de modelar bajo otros


paradigmas aparte de la programacin con
objetos.

30

You might also like