desarrolladores uml

22
Desarrolladores Domine el lenguaje de modelado más utilizado en la actualidad » Paradigma orientado a objetos y su relación con UML » Detalles de uso y aplicación de los diagramas » Modelado dinámico y funcional » Adaptación a Visual Paradigm » Guías de análisis y diseño de sistemas » Razonamiento basado en propiedades UML Fernando Asteasuain

Upload: btotco

Post on 23-Nov-2015

386 views

Category:

Documents


6 download

TRANSCRIPT

  • DesarrolladoresDesarrolladores

    Domine el lenguaje de modeladoms utilizado en la actualidad

    Paradigma orientado a objetos y su relacin con UML Detalles de uso y aplicacin de los diagramas Modelado dinmico y funcional Adaptacin a Visual Paradigm Guas de anlisis y diseo de sistemas Razonamiento basado en propiedades

    UML

    UM

    LD

    es

    arr

    oll

    ad

    ore

    s

    CONTENIDO1 | EL MODELADO

    Introduccin al modelado / Surgimiento de los

    modelos / Modelos y sistemas / El rol de los modelos

    en la Ingeniera de Software / Errores, ingeniera y

    modelos de software / Caractersticas del modelado

    2 | INTRODUCCIN A UML

    Historia de UML / Primeros pasos / Herramientas /

    Visual Paradigm / Sabores de la herramienta /

    Instalar Visual Paradigm / Configurar el entorno /

    Modelos dinmicos / Estructura esttica y dinmica

    3 | COMENZAR A MODELAR

    Modelado esttico / Modelar clases / Constructores

    de clase para UML / Atributos y operaciones / Notas

    / Modelar relaciones / Generalizaciones /

    Dependencias / Asociaciones / Agregacin y

    composicin / Asociaciones como clases

    4 | ORGANIZAR LOS DIAGRAMAS

    Organizacin de diagramas / Tipos de diagrama /

    Metamodelo de UML / Diagrama de clases /

    Composicin y objetivos / Interfaces y herencia

    mltiple / Diagrama de objetos / Diferencias entre

    instancias y clases / Independencia / Composicin /

    Modelado / Diagrama de objetos en Visual Paradigm

    / Multiplicidad / Expresividad / Diagrama de

    paquetes / Paquetes en UML / Modelar la

    arquitectura / Diagrama de componentes

    5 | REQUERIMIENTOS Y CASOS DE USO

    Requerimientos / Definiciones / Clasificacin /

    Caractersticas / Ciclo / Capturar requerimientos /

    Casos de uso / Constructores / Clasificacin /

    Especificacin en Visual Paradigm / Estructura

    interna / Descripcin / Formalidad e informalidad

    6 | MODELAR LAS ACCIONES

    Modelado dinmico / Conceptos dinmicos /

    Constructores / Diagramas de interaccin /

    Clasificacin / Completitud / Diagramas de

    secuencia / Categoras de los mensajes / Diagramas

    de colaboracin / Diagramas de actividad / Origen y

    elementos / Los diagramas en Visual Paradigm

    7 | MQUINAS DE ESTADO

    Modelado dinmico avanzado / Mquinas de estado

    / Estados / Transiciones / Diagramas de estado en

    Visual Paradigm / Especificar estados, transiciones y

    requerimientos temporales

    8 | MODELADO AVANZADO

    Herramientas avanzadas y automticas / Generacin

    automtica de cdigo y documentacin / Ingeniera

    inversa / Ingeniera Inversa en Visual Paradigm /

    Generacin de modelos desde mquinas de estado /

    Construccin

    APNDICE: OTRAS HERRAMIENTAS DE MODELADO

    Este libro es la gua adecuada para iniciarse en el mundo del

    modelado. A travs de ejemplos concretos, conoceremos todos los

    constructores y elementos necesarios para comprender la

    construccin de modelos, y adquiriremos las habilidades para razonar

    modelos que reflejen los comportamientos de los sistemas.

    Una obra que trasciende UML: nos acerca a la etapa de

    modelado de sistemas y nos permite sumergirnos dentro de

    una visin llena de abstracciones, propiedades y

    comportamiento. Introduce tcnicas de anlisis y diseo de

    sistemas y explora en profundidad Visual Paradigm for UML.

    Una oportunidad de ver el software desde una perspectiva de

    modelos, alejndonos del concepto de software como cdigo

    y reconociendo la importancia de la etapa del modelado dentro

    de los procesos actuales de desarrollo de software y de los

    modelos para la construccin robusta de programas.

    En este sitio encontrar una gran variedad de recursos y software re-

    lacionado, que le servirn como complemento al contenido del libro.

    Adems, tendr la posibilidad de estar en contacto con los editores,

    y de participar del foro de lectores, en donde podr intercambiar

    opiniones y experiencias.

    libros.redusers.com

    Para ms informacin comunquese con nuestro

    Servicio de Atencin al Lector

    [email protected]

    ARGENTINA (11) 4110 8700CHILE (2) 335 7477ESPAA (93) 635 4120MXICO (55) 5350 3099

    UMLAn ideal work to those willing to set off for the modelling voyage. A book that will help

    us recognize the importance of the modelling stage in present software development

    processes as well as that of models to construct robust software.

    NIVELEXPERTO

    AVANZADO

    INTERMEDIO

    PRINCIPIANTE

    Desarrollador .NET

    Fernando Asteasuain

    tapa uml.qxp 06/04/2009 08:41 a.m. Pgina 1

  • CONCTESE CON LOS MEJORESLIBROS DE COMPUTACIN

    EL LIBRO IDEAL PARA QUIENES NO ADMITEN LOS LMITESMANUALES USERS I 320 pginas I ISBN 978-987-1347-90-2

    CONOZCA LAS TCNICAS DE LOS HACKERSMANUALES USERS I 320 pginas I ISBN 978-987-1347-93-3

    GRABACIN, MEZCLA, EDICIN Y MASTERINGMANUALES USERS I 320 pginas I ISBN 978-987-1347-75-9

    usershop.redusers.com

    APRENDA A PROGRAMAR CON EL LENGUAJE MS FLEXIBLE

    DESARROLLADORES I 368 pginas I ISBN 978-987-1347-81-0

    RT_Bombo_LIBROUML.qxp 31/03/2009 11:04 Pgina RT2

  • El modelado

    Introduccin al modelado 14Modelos y sistemas 22El rol de los modelosen la Ingeniera de Software 23Resumen 29Actividades 30

    Captulo 1

    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.

    UML

    SERVICIO DE ATENCIN AL LECTOR: [email protected]

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

  • INTRODUCCIN AL MODELADOEn la actualidad, pensar en un desarrollo de software sin pasar por una etapa demodelado es prcticamente imposible. La utilizacin de modelos es una metodo-loga aceptada y recomendada no slo acadmicamente, sino tambin dentro delambiente profesional privado. De hecho, desde las ms altas jerarquas en la pir-mide empresarial determinan las polticas que se aplicarn para el empleo demodelos en el desarrollo de productos de software.Los modelos actuales que representan sistemas de software son creados a travs delenguajes 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 sistemasde 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 tenerel respeto y el merecimiento que tienen hoy da. En este libro trataremos en pro-fundidad el lenguaje de modelado UML, considerado prcticamente como unestndar dentro de la comunidad cientfica. Antes de adentrarnos en UML, esnecesario definir el contexto y precisar algunas cuestionas generales. En el restode este captulo inicial conoceremos qu son los lenguajes de modelado, suimportancia 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 cuandoterminemos el ltimo captulo del libro), pero es seguro que hemos utilizado el con-cepto previamente en muchsimas situaciones. Veamos algunos ejemplos.

    1. EL MODELADO

    14

    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.

    COMO LOS LENGUAJES DE PROGRAMACIN

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

  • 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 estnlas 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 caractersticaimportante es que es visualmente atractivo y fcil de comprender, de manera que enun vistazo rpido reconoceremos los aspectos ms importantes. Usualmente, en laparte de atrs, tenemos ms informacin de cada lugar, por ejemplo, los telfonos delos 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 delmundo real, que nos ayuda a entenderla y a comprenderla en todas sus caracters-ticas y funcionalidades. Como en el ejemplo del folleto turstico, es fundamentalque 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.

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

    Surgimiento de los modelosEl 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

    Semntica

    Sintaxis

    Lenguajes de Modelado Poseen

    Caractersticas

    Abstraccin Visual Simplificacin

    Introduccin al modelado

    15

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

  • 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 deprogramacin, segn las aplicaciones, segn el perfil del programador y segn la con-fiabilidad esperada. Analicemos cada uno de ellos.

    Evolucin desde los lenguajes de programacinPodemos nombrar la evolucin en los lenguajes de programacin de la siguientemanera. Inicialmente, los primeros programas se codificaban a travs de tarjetasperforadas. 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 cerosy 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 pararecorrer estructuras de datos como el foreach.Los lenguajes de programacin incorporan cada vez ms constructores de mayornivel de abstraccin para asegurarnos una programacin ms simple y carente deerrores. Otra evolucin importante surge con los entornos cada vez ms completosde programacin como Eclipse, NetBeans o Spring, que brindan mayor poder deexpresividad y seguridad al programador.

    Figura 2. Dispositivo para trabajar con tarjetas perforadas

    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-

    1. EL MODELADO

    16

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

  • 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 eldebugging de cdigo. Encontrar un error en ambientes de ejecucin paralela o con-currente es extremadamente difcil.

    Evolucin desde las aplicacionesLas 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 167metros cuadrados y pesaba unas 27 toneladas. En cuanto a su capacidad, podaresolver 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 computacinsobre pequesimos chips para telfonos celulares u hornos microondas, por men-cionar dos casos. La computacin interacta con nosotros constantemente al estarpresente en cajeros, sistemas de videoclub, manejo de informacin, telefona, comu-nicacin, Internet, juegos, animacin, cine, msica, sistemas de monitoreo depacientes y reactores, entre algunos tems de una lista infinita. La presencia y laposibilidad de cmputo actuales han influido y potenciado otras reas como lamedicina, el desarrollo de medicamentos, la robtica, el reconocimiento de huellasdigitales o de retina, la biogentica, etctera.

    Figura 3. Una imagen de la computadora ENIAC.

    Introduccin al modelado

    17

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

  • Evolucin desde el perfil del desarrolladorEn la actualidad, los equipos de trabajo dedicados al desarrollo de software sonmultipersonales e interdisciplinarios, con jerarquas desde arquitectos, lderes deproyecto, analistas funcionales, testers, programadores, etctera. Estos estructuradosequipos 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 decomputacin el equipo de desarrollo consista, en general, de una nica persona quellevaba toda la responsabilidad del proyecto.

    Evolucin desde la confiabilidad esperadaComo dijimos, las primeras computadoras eran enormes aparatos que ocupabanhabitaciones 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 erroreseran esperables y se tardaba das o semanas en corregirlos. La ancdota cuenta quepor esos tiempos naci el concepto de bug (del ingls, insecto) para nombrar elerror de un programa ya que la presencia de insectos dentro de las computadorascausaba fcilmente problemas de hardware. En la actualidad, en cambio, se busca intensamente y cada vez ms la ausencia deerrores en el software. Para esto, se han desarrollado sofisticadas estrategias forma-les para la deteccin de errores, manejo de riesgo, mantenimiento y evolucin.

    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 desarrolloComo vimos, mucho ha cambiado en lo que se refiere al empleo y a la utilizacinde computadoras, mostrndose un gran avance y maduracin. Todos estos cambiosinfluyeron en la manera y en los pasos que se siguen durante el proceso de crear y

    AplicacionesEvolucin

    MODELOS

    Perfil

    Lenguaje

    Confiabilidad

    Demanda

    1. EL MODELADO

    18

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

  • desarrollar software especfico. Como mencionamos, los primeros programas eranimplementados 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 quelos proyectos fueron creciendo en magnitud y se fue acrecentando la injerencia dela computacin en el desenvolvimiento de la sociedad, este prototipo de equipoqued 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 enel 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 lasresponsabilidades y funcionalidades del sistema. La segunda etapa se concentra enel anlisis y el diseo. En sta, los actores protagnicos son los lenguajes demodelado y los modelos que son creados a partir de ellos. El principal objetivo deesta etapa es obtener una visin completa del sistema, a travs de modelos quecorrectamente abstraigan las principales caractersticas y el comportamiento espe-rado del sistema. Luego, se pasa a la etapa de implementacin del producto. Estosignifica 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. Laprimera de ellas, conocida como arquitectura del sistema, se sita entre la captura

    Introduccin al modelado

    19

    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.

    MODEL CHECKING

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

  • 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 dearquitectura son la cliente/servidor o la Pipe and Filter. La segunda nueva etapa esde validacin y verificacin formal, la cual se sita generalmente antes del lanza-miento del software en pos de asegurarnos el correcto funcionamiento del sistema, atravs de tcnicas matemticas formales.Existen varios procesos de desarrollo de software, pasando por el clsico modelo decascada hasta los ms modernos, como los procesos giles de desarrollo. Si bienson 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.

    Figura 5. Esquema de los procesos de desarrollos modernos.

    Como ancdota final de esta seccin, vale la pena mencionar cmo nacieron losprocesos giles de desarrollo. El proceso de desarrollo a travs de mtodos gilessigue 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:

    Anlisis y Diseo

    Arquitectura

    Requerimientos

    Codificacin

    Testing

    Mantenimiento

    1. EL MODELADO

    20

    REPETICIN DE ETAPASUna 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.

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

  • 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 historiaSi bien se vio la necesidad de contar con lenguajes de modelado y se reconoci surol 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 detiempo y recursos para aprender todo un nuevo lenguaje y que la salida de todoeste proceso no fuera nada que se pudiera ejecutar. El proceso de modelado se veaentonces como un proceso costoso y poco productivo.Sin embargo, dos cuestiones trascendentales acontecieron y favorecieron el xito delos lenguajes de modelado. La primera de ellas fue el reconocimiento, por parte dela industria, de que cuanto antes sea encontrado un error, ms considerables sernlos beneficios econmicos, ya que el costo de corregir una equivocacin aumenta deforma 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 costodos, hacerlo durante la etapa de testing, en el sptimo mes del proyecto, tiene uncosto 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 quepara 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 queestn viendo y pueden debatir las distintas opciones para el mejor desempeo delproducto que se va a desarrollar. La utilizacin de modelos tiene un beneficio

    Introduccin al modelado

    21

    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.

    DEFINICIONES

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

  • 1. EL MODELADO

    22

    implcito que es, justamente, proveer una base comn de entendimiento para quetodas las partes implicadas puedan comunicarse y estar hablando de las mismascosas, refirindose a los mismos conceptos. Es decir, los modelos nos permitentransmitir 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 SISTEMASLos modelos representan una abstraccin de nuestro sistema que nos permite con-centrarnos en los detalles que ms nos interesan, dejando de lado otros aspectossecundarios. 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 elsistema implementado. Una pregunta razonable que nos podemos hacer en estemomento es cmo podemos estar seguros de que la implementacin que nos dacomo salida la etapa de codificacin respeta los modelos planteados en la etapa deanlisis y diseo. Podemos abarcar esta cuestin desde tres lugares. Como primera medida, es fundamental el total entendimiento del lenguaje demodelado y de los modelos desarrollados por estos lenguajes, tanto por parte delos programadores como de los lderes de proyecto. De esta manera, nos asegura-mos de que los programadores codifiquen correctamente el comportamientoexpresado en nuestros modelos. Por otro lado, tambin es importante tener encuenta que si hay una situacin en la que por razones de implementacin (porejemplo, la ubicacin fsica de un servidor) es necesario introducir cambios en los

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

  • modelos del sistema, stos sean correctamente documentados para as poder man-tener siempre una relacin estrecha y directa entre los modelos y el cdigo. Otraalternativa 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 entidaden el cdigo. Manteniendo este mapeo, es decir, esta unin entre los conceptosdel 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 deautomatizacin dentro del desarrollo de software, es decir, partir de modelos queautomticamente se transforman en el producto final. Esta tcnica se conoce comoModel-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 productofinal. 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 enla habitacin en s. Imaginemos que realizar una nueva divisin en la habitacinconsiste en trazar una lnea en el plano, mientras que levantar realmente la pareden 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. Peroqu es la Ingeniera de Software? Y an antes, qu entendemos por software? Ladefinicin tradicional sugiere que un sistema de software es una coleccin de com-

    El rol de los modelos en la Ingeniera de Software

    23

    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.

    CASE

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

  • ponentes interrelacionados que trabajan conjuntamente para cumplir algn obje-tivo. Sin embargo, una definicin ms adecuada sera: un conjunto de entidades cuyocomportamiento 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 Basadaen 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 oDVD 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 paralograr su objetivo, y que el comportamiento individual afectar e impactar en lasdems. 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 softwarecomo 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 diseoEn algunas ocasiones, se confunden los errores propios del software con errores deldiseo. El software es intrnsecamente flexible y debemos estar preparados paraello. Supongamos que hemos desarrollado un sistema para capturar mensajes detransmisin por radio. Es implementado correctamente, es instalado y su funcio-namiento es el esperado. Sin embargo, por razones operativas, un mes despus, elservidor donde funciona nuestro software se cambia de piso en el edificio donde

    1. EL MODELADO

    24

    IEEELa 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.

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

  • funciona la empresa cliente. En este nuevo lugar, se producen interferencias conotros 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 nuestrosistema. 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 interaccinentre la perfomance y el impacto de cada entidad en ella.

    Ingeniera de SoftwareAhora que tenemos una definicin ms certera de los sistemas de software, pode-mos encarar la definicin de Ingeniera de Software. Algunas definiciones queencontramos son las siguientes:

    La Ingeniera de Software es la rama de la Ingeniera que aplica los principiosde las Ciencias de la Computacin y las Matemticas para lograr solucionescosto-efectivas (eficaces en costo o econmicas) a los problemas de desarrollode software, es decir, permite elaborar consistentemente productos correctos,utilizables y costo-efectivos.

    La Ingeniera de Software involucra construir un producto de software de altacalidad lidiando con las mltiples restricciones (tiempo, presupuesto y dems).

    La disciplina de Ingeniera de Software involucra conocimiento, herramientasy mtodos para definir y capturar los requerimientos, realizar el diseo del sis-tema y su correspondiente codificacin, validacin y mantenimiento. LaIngeniera de Software se nutre de conocimientos de otras reas comoIngeniera Computacional, Ciencias de la Computacin, Administracin deEmpresas, Matemtica, Administracin de Proyectos, Administracin deCalidad 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 odisciplina de la Informtica que ofrece mtodos y tcnicas para desarrollar ymantener software de calidad.

    De todas estas definiciones podemos obtener en claro los siguientes aspectos: laIngeniera de Software debe lidiar con la escalabilidad y la complejidad de siste-mas de software, identificando claramente aquello que se pretende por software dealta calidad. A su vez, requiere, como todas las ingenieras, rigor, creatividad, docu-mentacin y gestin. Por ltimo, es una actividad multidisciplinaria.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:

    El rol de los modelos en la Ingeniera de Software

    25

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

  • rigor y formalidad, separacin de conceptos, abstraccin, modularidad, flexibi-lidad, anticipacin al cambio, incrementabilidad, rastreabilidad, manejo deerrores, cohesin y acoplamiento, correctitud, confiabilidad, portabilidad,reusabilidad, eficiencia y, finalmente, facilidad de uso. A travs de la utilizacinde estos principios y siguiendo un mtodo claro de Ingeniera de Software, desa-rrollaremos software de alta calidad que cumple con su objetivo.

    Modelos de softwareCon 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 enproyectos pequeos y medianos. An las golosinas para nios que vienen conpequeos juguetes para armar tienen un folleto de instrucciones y un dibujo decmo se ve el juguete una vez armado. Es decir, la golosina viene acompaada noslo con el juguete, sino tambin con su modelo. Tambin es cierto que aunque laconstruccin de modelos en sistemas pequeos es sumamente recomendable, quizsel sistema puede implementarse sin ellos. Sin embargo, para proyectos o sistemascon mayor estructura y comportamiento, es directamente imposible.Un sistema puede ser tomado desde muchos puntos de vista: a partir de suestructura, su jerarqua, su comportamiento, sus caractersticas, de manerainterna, de manera externa, desde alguna funcionalidad en especial (por ejem-plo, el sistema la seguridad, etctera). En ocasiones, ser necesario concentrarseen detalle en un componente en especial, conociendo sus atributos, sus mtodos

    1. EL MODELADO

    26

    ORIGEN DE INGENIERA DE SOFTWAREEl 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.

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

  • y la funcionalidad que provee. En otras, quiz queramos apreciar cmo interactacon otros componentes, por lo que nos alcanzar con ver nicamente el nombredel componente y obviar su comportamiento interno. Existen muchos modelospara 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 enun 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 modeladoAs como mencionamos los principios de la Ingeniera de Software, tambin existencaractersticas distintivas para la especificacin de propiedades y el comportamiento apartir 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 deproyecto en marcha. Si necesitamos simular el comportamiento de las mareasen 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 recorrertodas 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 estructuraesttica, basados en el comportamiento, etctera. Ante cada sistema, debemospensar en los tipos de modelos que vamos a utilizar.

    Los modelos deben manejar distintos niveles de abstraccin: supongamosque tenemos el modelo finalizado de nuestro sistema y lo queremos presentar alos 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

    El rol de los modelos en la Ingeniera de Software

    27

    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.

    ACTUALIZAR LOS MODELOS

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

  • la interaccin de los principales componentes. En caso de querer profundizar enel 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 sobrelas 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 lasvas. Es decir, debemos incorporar a nuestro modelo la mayor cantidad de infor-macin posible del entorno sobre el cual nuestro sistema se ejecutar. Cualquiertipo 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 basndonosen 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, siseguimos nicamente el punto de vista de eficiencia, obtendremos un sistema quese ejecute muy rpido, pero seguramente muy poco amigable. Todos los distintoscriterios y puntos de vista deben balancearse.

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

    Modelar el mundo de la orientacin a objetosUn 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 estehecho es que el modelado con objetos permite mantener una relacin casi directacon la realidad, y as poder comprender ms fcilmente la interaccin entre todoslos componentes, por ms compleja que sea. Por ejemplo, si quisiramos modelar

    - Vista parcial

    - Multimrfico

    - Coherente

    - Abstraccin

    + Comportamiento ()

    + Documentacin ()

    + Anlisis ()

    + Propiedades()

    Modelado

    1. EL MODELADO

    28

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

  • este libro con objetos, tendramos una clase Libro, que tendra como atributos suautor, su editorial, y la cantidad de pginas. Estara formado por objetos de tipoCaptulo, con atributos que reflejaran su nombre y sus objetivos. Como vemos, elmodelo 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 orientacina 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.

    El rol de los modelos en la Ingeniera de Software

    29

    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.

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

  • 30

    PREGUNTAS TERICAS

    1 Cules son los objetivos de los lenguajes

    de modelado?

    2 Cules fueron las principales razones del

    xito de los lenguajes de modelado?

    3 Enumere las diferencias y similitudes

    entre un lenguaje de programacin y un

    lenguaje de modelado.

    4 Cul es la motivacin principal detrs del

    desarrollo basado en modelos?

    5 Defina en sus propios trminos la discipli-

    na de Ingeniera de Software.

    6 Explicite los beneficios de la utilizacin de

    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?

    10Por qu es importante la parte grfica y

    visual en un lenguaje de modelado?

    11Analice el impacto de modelar bajo otros

    paradigmas aparte de la programacin con

    objetos.

    ACTIVIDADES

    EJERCICIOS PRCTICOS

    1 Qu lenguajes de modelados conoce?

    Represente un mismo modelo sencillo en

    cada uno de ellos para puntualizar fortale-

    zas y debilidades de cada uno.

    2 Investigue al menos cinco herramientas

    basadas en el concepto de desarrollo guia-

    do por modelos.

    3 Muestre ejemplos concretos que ilustren

    la diferencia entre sistemas y modelos.

    4 Muestre en una lnea temporal la evolu-

    cin de los procesos de desarrollo.

    5 Cules son todos los componentes que

    integran un sistema de software?

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

  • REDISEO BOMBOS LIBROS - ISSU - Base Editable - Sep 10.indd 1REDISEO BOMBOS LIBROS - ISSU - Base Editable - Sep 10.indd 1 08/09/2010 15:54:0308/09/2010 15:54:03