Professional Documents
Culture Documents
Introduccin No muchos aos atrs, cuando el que escribe an estudiaba en la Facultad de Informtica, la orientacin a objetos (OO) se presentaba como una tcnica novedosa y revolucionaria. En estos tiempos que corren de sistemas de ventanas, multimedia, sistemas multicapa en red y lenguajes de alto nivel, nadie se cuestiona el hecho que aquella afirmacin no cay en el olvido como ya ocurri con tantas otras. La OO se basa en tres principios bsicos: todo son objetos, encapsulamiento / ocultacin y herencia / polimorfismo. El primer principio indica la unidad bsica de trabajo. El segundo permite englobar en un mismo concepto a los datos y a las operaciones. El tercero permite agrupar y tratar de igual forma a objetos similares. Tras esta simplicidad, la metodologa de desarrollo OO inclua entre sus bondades una muy prometedora: permite abarcar las siguientes fases de un proyecto software: Por un lado Anlisis y Diseo (OOAD) y por otro Programacin (POO). Ya por aquel entonces, se recalcaba la necesidad de usar lenguajes de modelado para desarrollar proyectos: OOSE, OMT-2, Booch93 o UML. Este ltimo, fruto de la fusin y de mejoras de los anteriores, an estaba en proceso de desarrollo en Rational (compaa integrada en IBM hoy en da). Aun con la cotidianeidad del paradigma orientado a objetos, muchos informticos sumergidos en un mar de siglas se realizan la siguiente pregunta: Pues muy bien, ya s UML... y ahora qu? UML es un lenguaje de especificacin, visualizacin, construccin y documentacin de propsito general, aunque especializado en sistemas software. Por su propia definicin, la mayora de autores no se pronuncian tajantemente acerca de cmo debe usarse UML; por lo mismo que nadie se atrevera a limitar de forma general el uso de un bucle for. Sirvan como contraejemplo las sugerencias de uso de Pierre Alain Muller (1997): Actividad Anlisis de Requisitos Para cada escenario de caso de uso Refinamiento Diseo y arquitectura Refinamiento de operaciones complejas Implantacin e instalacin Diagrama UML Casos de Uso Secuencia Colaboracin Clases Actividad Estados Organizacin
implementacin, testing, instalacin y configuracin. Para abordar proyectos de semejante envergadura, el trabajo se divide en tareas ms pequeas: el sistema se divide en subsistemas. El desarrollo de cada fase se puede dividir en procesos, entendiendo como tales a secuencias de actividades que hay que completar para alcanzar un objetivo. En la Ingeniera del Software Orientada a Objetos, la OO se puede utilizar durante todo el proceso en global. Pero no basta con una metodologa de desarrollo y un lenguaje de modelado e implementacin. Para aplicar la OO y UML de forma efectiva es conveniente valorar la utilidad de algunas tcnicas y ciclos de vida del software. A continuacin se presentan algunas claves para controlar el orden interno en que se completan los proyectos y evitar la prdida de informacin durante la transicin entre fases. Los Ciclos de Vida El desarrollo de software no es fcil: las tcnicas son relativamente nuevas, los sistemas actuales son complejos y los requisitos de los clientes cambian con bastante ms frecuencia de lo que muchos desearamos. Cualquier organizacin que desarrolle software debera plantearse qu proceso le interesa seguir para la realizacin de sus productos, ya sea para todos o para cada uno en particular. En los ltimos aos, una tecnologa orientada a resolver este problema que ha sonado con mucha fuerza es la gestin de workflows. De forma ms concreta, el Proceso Unificado de Rational (RUP) y la Programacin eXtrema (XP) son dos de las aproximaciones al proceso de desarrollo ms populares. Dmosle un rpido vistazo a los ciclos de vida tradicionales antes de repasar estas tcnicas. 1. Ciclos Tradicionales Con el primer ciclo tradicional con el que nos encontramos es con el ciclo de vida Clsico o en Cascada: AnlisisDiseoImplementacinTesting
8
Debido a la magnitud de los sistemas actuales y al tamao de los equipos de desarrollo, la construccin de todo producto software (proyecto) pasa por una serie de fases. Estas son habitualmente: anlisis, diseo,
Actualidad
Revista del Instituto Tecnolgico de Informtica
incremental, igual que el modelo en espiral. RUP se define mediante la combinacin de flujos de trabajo fundamentales (workflows) y fases (ver figura). Est compuesto por una serie de filosofas y prcticas, un modelo de procesos, una librera de contenidos y un lenguaje de definicin de procesos extensin de UML: SPEM.
Fases Flujos de Trabajo
Modelado de Negocio Requisitos Anlisis y Diseo Implementacin Pruebas Despliegue Configuracin y Admon de cambios Gestin Proyectos Entorno
Inicio Elab 1 Elab 2 Cons 1 Cons 2 Tran 1 Tran 2 Inicio Elaboracin Construccin Transicin
Iteraciones
Figura 1: RUP: Esfuerzo dedicado en cada iteracin a cada workflow. RUP gestiona los procesos de entrega de documentos y la autora de los procesos. Adems incluye plantillas, seguimiento de avances mediante hitos, informes, mentores de herramientas y un conjunto de roles asignables a cada participante. En RUP tambin se indica el uso adecuado de los distintos diagramas UML: Flujo Modelado del Negocio Requisitos Anlisis y Diseo Diagrama UML Casos de Uso Objetos Casos de Uso + Estados Casos de Uso Clases Casos de Uso Colaboracin Organizacin Clases + Estados Secuencia CUALQUIERA CUALQUIERA Organizacin CUALQUIERA
Al ser iterativo, RUP promueve que se minimice el riesgo de obtencin de un mal producto (o un producto no deseado) porque el sistema puede validarse con el cliente en cada iteracin. De esta forma se potencia la robustez del producto y se incluye un marco en el que el problema de tener que gestionar requisitos incompletos, que es bastante frecuente, sea fcil de llevar. La realizacin de las cuatro fases de RUP produce una
Actualidad
Revista del Instituto Tecnolgico de Informtica
10
Actualidad
Revista del Instituto Tecnolgico de Informtica
Algunas direcciones que pueden serle de ayuda: Object Management Group: www.omg.org Object Mentor: www.objectmentor.com Objects by Design: www.objectsbydesign.com Workflow Management Coalition: Rational: www.therationaledge.com XP: www.extremeprogramming.org
los aspectos. Debido a la magnitud de los sistemas y a su divisin en subsistemas, hay que mantener muchas de las piezas que forman un sistema para asegurar la seguridad de este. Si se renen todas esas piezas bajo el concepto de un aspecto, se facilita el mantenimiento de la seguridad. En Definitiva...
www.wfmc.org
Actualidad
He aqu una serie de metodologas y tcnicas que complementan a la Orientacin a Objetos en el proceso de desarrollo de proyectos software. El lector inquieto argumentar que se estn obviando factores nada despreciables tales como herramientas de desarrollo integrado, plazos, lenguaje de programacin, generadores de diagramas y esqueletos, estndares de calidad, documentacin, control de cambios, asignacin de recursos, etc. Su ausencia en este artculo es una mera cuestin de espacio y ninguno de ellos debe desestimarse. En definitiva, como cualquier proceso de ingeniera que se precie, la Ingeniera del Software persigue la resolucin de problemas bastante complejos. La utilidad de las metodologas y ciclos de vida no se limita a conseguir que el producto se termine y funcione. Sus ventajas, que se han ido enumerando, son bastante intangibles y puede que tanto clientes como desarrolladores no las aprecien a primera vista. Sin embargo, el conocimiento y el uso adecuado de estas tcnicas puede facilitar el trabajo crtico y evitar muchos errores de difcil deteccin y correccin.
11