Escolar Documentos
Profissional Documentos
Cultura Documentos
INGENIERA EN INFORMTICA
JUNIO, 2008
RESUMEN
Dentro del proceso de desarrollo de software, con el tiempo, se han demostrado cada vez ms importantes las primeras fases del desarrollo del mismo. Concretamente, con el tiempo las labores de programacin dejaron paso a las de diseo y, an as, fruto de sntomas claros de una aparentemente dolencia crnica denominada crisis del software se recurri a potenciar las fases de ingeniera de requisitos. De una u otra manera, son en estas fases en las que se llevan a cabo labores de ingeniera de sistemas y de informacin, la planificacin del proyecto, la ingeniera de requisitos y el modelado de sistemas a diferentes niveles de abstraccin de una forma cada vez ms sistemtica. Posteriormente, en el resto de fases que caracterizan el proceso de desarrollo se llevarn a cabo el diseo del software, la generacin de cdigo, las pruebas de software en la fase de desarrollo, y los cambios necesarios de correccin, de adaptacin, de mejora y de prevencin en la fase de mantenimiento. Todas estas otras fases y labores son igualmente importantes pero quedan o se muestran determinadas en tiempo y coste por las fases inciales. En las fases de anlisis de los requisitos y el proceso de diseo, entre otras, una tarea se ha demostrado especialmente interesante y reveladora para el xito posterior del desarrollo. Dicha tarea es la relacionada con el modelado conceptual, que se aborda tanto en la fase de anlisis de requisitos como en el diseo. Para abordar dicha labor la experiencia se presenta determinante y dicha experiencia no est siempre disponible en los equipos de desarrollo a los que se les encomienda la produccin de software. En este sentido, un concepto, el de patrn, se ha demostrado til para abordar tareas de diseo, ejemplo revelador lo constituyen los patrones de diseo (Gamma et al., 1994), que aportan conocimiento til para poner en prctica muchas de las facilidades que permiten el paradigma orientado a objetos. En lo que respecta al modelado conceptual existe tambin experiencia en ese contexto concreto, son los patrones de colaboracin (Nicola et al., 2001) que vienen derivado de trabajos previos de Peter Coad (Coad, 1997).
En este proyecto final de carrera se pretende facilitar el uso de esta experiencia documentada y disponible que facilita labores de modelado conceptual. Para ello se han estudiado y documentado de forma activa los patrones de colaboracin y se ha trabajado en el desarrollo de un entorno, Cola-CASE, que permite el uso reiterado y sistemtico de los mismos. Las ventajas que este entorno provee se traducen en un soporte al modelado conceptual, actividad habitual en el desarrollo de software producido en estos momentos.
AGRADECIMIENTOS Y DEDICATORIAS
NDICE
Resumen.................................................................................................................................. i Agradecimientos Y Dedicatorias ..........................................................................................iii ndice ..................................................................................................................................... v ndice De Figuras ................................................................................................................. vii ndice De Tablas ................................................................................................................... ix Captulo 1 . Introduccin ....................................................................................................... 1 1.1 Especificacin e implementacin de software ........................................................ 1 1.2 Motivacin y justificacin....................................................................................... 4 1.3 Objetivos ................................................................................................................. 4 1.4 Estructura del documento ........................................................................................ 6 Captulo 2 . La importancia creciente de la especificacin frente a la implementacin ........ 9 2.1 Evolucin histrica del desarrollo de software ....................................................... 9 2.1.1 La crisis del software ..................................................................................... 12 2.1.2 Ciclo de vida del software ............................................................................. 17 2.2 El proceso de desarrollo de un sistema software .................................................. 19 2.2.1 Fundamentos del anlisis de requisitos .......................................................... 19 2.2.2 Metodologas de desarrollo del software ....................................................... 20 2.2.3 Desarrollo dirigido por modelos .................................................................... 26 2.2.4 El proceso unificado ...................................................................................... 27 2.2.5 Fases del proceso de desarrollo ..................................................................... 28 2.2.6 El proceso de desarrollo definido en Rational (RUP).................................... 29 2.3 Lenguajes y notaciones de programacin y de diseo .......................................... 31 2.3.1 Lenguajes de programacin ........................................................................... 31 2.3.2 Lenguaje unificado de modelado (UML) ...................................................... 33 2.4 Herramientas para el desarrollo del software ........................................................ 36 2.4.1 CASE ............................................................................................................. 37 2.5 La utilizacin de la experiencia............................................................................. 40 2.6 Los patrones .......................................................................................................... 41 2.6.1 Tipos de patrones ........................................................................................... 44 2.6.2 Antipatrones ................................................................................................... 45 2.6.3 Los patrones de colaboracin ........................................................................ 45 2.6.4 Formatos de los patrones disponibles ............................................................ 49 2.7 Anlisis y conclusiones ......................................................................................... 50 Captulo 3 . Integracin de los patrones de colaboracin en el proceso de desarrollo ........ 53 3.1 Introduccin .......................................................................................................... 53 3.2 Documentacin y especificacin de la aplicacin desarrollada ............................ 54 3.2.1 Objetivos ........................................................................................................ 54 3.2.2 Requisitos funcionales ................................................................................... 56 3.2.3 Requisitos no funcionales .............................................................................. 70 3.2.4 Modelado conceptual ..................................................................................... 73
3.2.5 Diagramas de secuencia ................................................................................. 78 3.3 Descripcin y almacenamiento de los patrones de colaboracin en XML ........... 81 3.4 Descripcin del entorno elaborado........................................................................ 83 3.5 Anlisis y discusin............................................................................................. 105 Captulo 4 . Caso de estudio: utilizacin del entorno facilitado ........................................ 107 4.1 Descripcin del caso de estudio .......................................................................... 107 4.2 La especificacin grfica..................................................................................... 109 4.3 La generacin de cdigo ..................................................................................... 119 4.4 Las aportaciones educativas del producto software desarrollado ....................... 125 4.5 Anlisis y discusin............................................................................................. 128 Captulo 5 . Conclusiones y Trabajo Futuro ...................................................................... 129 5.1 Conclusiones ....................................................................................................... 129 5.2 Trabajo Futuro ..................................................................................................... 130 Bibliografa ........................................................................................................................ 131 Apndice A ........................................................................................................................ 133 Patrones de Colaboracin .............................................................................................. 133
NDICE DE FIGURAS
Figura 2-1. Capas en la Ingeniera del Software .................................................................. 12 Figura 2-2. Los problemas de comunicacin y el desarrollo del software .......................... 14 Figura 2-3. Elementos del ciclo de vida de un producto software ....................................... 18 Figura 2-4. Esquema general de operacin de una fase ....................................................... 18 Figura 2-5. La metodologa es lo que posibilita la asociacin entre una solucin y un problema .............................................................................................................................. 21 Figura 2-6. Metodologas de desarrollo ............................................................................... 23 Figura 2-7. Perfil de Proyecto Tpico .................................................................................. 29 Figura 2-8. Fases e iteraciones en la metodologa RUP ...................................................... 31 Figura 2-9. Patrones de colaboracin (Nicola et al., 2001) ................................................. 47 Figura 3-1. Esquema bsico de la funcionalidad de la herramienta .................................... 55 Figura 3-2. Diagrama de casos de uso de la herramienta .................................................... 57 Figura 3-3. Diagrama de actividades para la elaboracin de un diagrama de clases ........... 58 Figura 3-4. Diagrama de paquetes ....................................................................................... 73 Figura 3-5. Diagrama de clases de la aplicacin ................................................................. 75 Figura 3-6. Diagrama de secuencia para insertar patrn sustituyendo clases ...................... 79 Figura 3-7. Diagrama de secuencia para insertar patrn sin sustituir clases ....................... 80 Figura 3-8. Modelo de dominio de clases ............................................................................ 82 Figura 3-9. Patrn Actor-Role ............................................................................................. 83 Figura 3-10. Interfaz de la aplicacin .................................................................................. 84 Figura 3-11. Partes de una clase .......................................................................................... 87 Figura 3-12. Caractersticas de una clase............................................................................. 87 Figura 3-13. Cambio de nombre no permitido para una clase ............................................. 88 Figura 3-14. Cambio de nombre duplicado para una clase.................................................. 89 Figura 3-15. Mensaje de confirmacin para eliminar una clase .......................................... 89 Figura 3-16. Propiedades de un atributo .............................................................................. 90 Figura 3-17. Men de acciones para un atributo ................................................................. 91 Figura 3-18. Propiedades de un mtodo .............................................................................. 91 Figura 3-19. Men de acciones para un mtodo .................................................................. 92 Figura 3-20. Men de acciones para una clase .................................................................... 93 Figura 3-21. Men de acciones para una relacin ............................................................... 94 Figura 3-22. Tablas de las propiedades para cada uno de los tipos de relaciones posibles . 95 Figura 3-23. Mensaje de confirmacin para eliminar una relacin ..................................... 95 Figura 3-24. Utilizar patrn ................................................................................................. 98 Figura 3-25. Nombres de las clases de los patrones ............................................................ 99 Figura 3-26. Cambio de color de una clase ....................................................................... 100
Figura 3-27. Ventana para guardar el cdigo del diagrama de clases ............................... 101 Figura 3-28. Ventana para guardar la imagen del diagrama de clases .............................. 102 Figura 3-29. Cdigo UsiXML para un diagrama de clases ............................................... 103 Figura 3-30. Ventana para imprimir un diagrama de clases .............................................. 104 Figura 3-31. About us... de la aplicacin ....................................................................... 105 Figura 4-1. Clase compaa ............................................................................................... 110 Figura 4-2. Clase trayecto .................................................................................................. 111 Figura 4-3. Clase autobs .................................................................................................. 111 Figura 4-4. Clase persona .................................................................................................. 112 Figura 4-5. Clase empleado ............................................................................................... 112 Figura 4-6. Clase pasajero ................................................................................................. 113 Figura 4-7. Clase reserva ................................................................................................... 114 Figura 4-8. Relaciones de herencia en el diagrama ........................................................... 114 Figura 4-9. Patrn Item-SpecificItem para la relacin entre compaa y trayecto ........ 115 Figura 4-10. Patrn Group-Member para la relacin entre compaa y autobs .......... 115 Figura 4-11. Patrn Group-Member para la relacin entre compaa y empleado........ 116 Figura 4-12. Patrn SpecificItem-LineItem para la relacin entre trayecto y reserva... 116 Figura 4-13. Patrn Role-Transaction para la relacin entre pasajero y reserva. ......... 117 Figura 4-14. Relacin entre compaa y pasajero ............................................................. 117 Figura 4-15. Relacin entre trayecto y pasajero ............................................................... 118 Figura 4-16. Relacin entre autobs y trayecto ................................................................. 118 Figura 4-17. Diagrama de clases del caso de estudio: empresa de autobuses ................... 119 Figura 4-18. Generacin de cdigo Java en el directorio autobuses. ................................ 121 Figura 4-19. autobs.java................................................................................................... 121 Figura 4-20. compaa.java ............................................................................................... 122 Figura 4-21. empleado.java ............................................................................................... 122 Figura 4-22. pasajero.java .................................................................................................. 123 Figura 4-23. persona.java................................................................................................... 123 Figura 4-24. reserva.java ................................................................................................... 124 Figura 4-25. trayecto.java .................................................................................................. 124
NDICE DE TABLAS
Tabla 2-1. Diferencias entre metodologas tradicionales y giles ....................................... 25 Tabla 2-2. Comparativa herramientas CASE ...................................................................... 39 Tabla 2-3. Elementos de los patrones .................................................................................. 46 Tabla 2-4. Plantilla de un patrn segn Christopher Alexander .......................................... 49 Tabla 3-1. Caso de uso Aadir Clase ............................................................................... 59 Tabla 3-2. Caso de uso Eliminar Clase ............................................................................ 60 Tabla 3-3. Caso de uso Consultar Clase ........................................................................... 61 Tabla 3-4. Caso de uso Modificar Clase .......................................................................... 63 Tabla 3-5. Caso de uso Aadir Relacin .......................................................................... 64 Tabla 3-6. Caso de uso Eliminar Relacin ....................................................................... 64 Tabla 3-7. Caso de uso Consultar Relacin ..................................................................... 65 Tabla 3-8. Caso de uso Modificar Relacin ..................................................................... 66 Tabla 3-9. Caso de uso Utilizar Patrn ............................................................................ 67 Tabla 3-10. Caso de uso Aadir Patrn............................................................................ 68 Tabla 3-11. Caso de uso Eliminar Patrn ......................................................................... 68 Tabla 3-12. Caso de uso Modificar Patrn ....................................................................... 69 Tabla 3-13. Actor-Role.usi .................................................................................................. 83 Tabla 3-14. Iconos de la barra de herramientas del panel ................................................... 85
Captulo 1. Introduccin
de Modelado (UML), que es el lenguaje de modelado de sistemas de software ms conocido y utilizado en la actualidad, adems de estar respaldado por el OMG. Es un lenguaje grfico para visualizar, especificar, construir y documentar un sistema de software, desde una perspectiva orientada a objetos. UML ofrece un estndar para describir un "plano" del sistema (modelo), incluyendo aspectos conceptuales tales como procesos de negocios y funciones del sistema, y aspectos concretos como expresiones de lenguajes de programacin, esquemas de bases de datos y componentes de software reutilizables. UML es el lenguaje en el que est descrito el modelo. Se puede aplicar en una gran variedad de formas para dar soporte a una metodologa de desarrollo de software, tal como el RUP, pero no especifica en s mismo qu metodologa o proceso usar. A medida que UML va sacando nuevas versiones, incluye nuevos diagramas para poder representar el modelo en funcin de las necesidades de cada uno. No obstante, para realizar un modelado en el anlisis del entorno que sea de utilidad para la posterior implementacin y dems fases del desarrollo, se ha considerado especialmente interesante los diagramas de clases y la especificacin conceptual. Este tipo de diagrama permite visualizar las relaciones entre las clases que involucran el sistema, y a travs de las clases modelar el entorno en estudio, describiendo la estructura del sistema. De esta manera, una clase ser la unidad bsica que encapsule toda la informacin de un objeto, sus atributos representarn alguna propiedad de la clase y sus mtodos las funciones o transformaciones que se apliquen a todos los objetos de una clase particular. Por otro lado, la orientacin a objetos, que puede describirse como el conjunto de disciplinas que desarrollan y modelan software, facilita la construccin de sistemas complejos a partir de componentes (objetos). Siguiendo este principio, surge la Programacin Orientada a Objetos (POO), que aumenta considerablemente la velocidad de desarrollo de los programas gracias a la reutilizacin de los objetos. Puede encontrarse una estrecha relacin entre las clases del modelado conceptual de UML con los objetos de la POO. En este sentido, sera ms sencillo en el momento de programar si cada escenario est plasmado en su correspondiente diagrama de clases, ya que ser inmediato identificar los objetos necesarios. As mismo, el Proceso Unificado Racional o Rational Unified Process (RUP) es un proceso de desarrollo de software, y junto con el Lenguaje Unificado de Modelado UML,
constituye la metodologa estndar ms utilizada para el anlisis, implementacin y documentacin de sistemas orientados a objetos. RUP no es un sistema con pasos firmemente establecidos, sino un conjunto de metodologas adaptables al contexto y necesidades de cada organizacin. Hoy por hoy se tiene como objetivo aumentar la productividad y la calidad del software y para desarrollar productos de calidad se recurre a la ingeniera del software, cuya evolucin histrica ha llevado a la Model Driven Architecture (MDA), propuesta por el Object Management Group (OMG), que est siendo cada vez mas utilizada en el desarrollo de software. Con la MDA, se promueve la idea de modelos, que tanta importancia han adquirido tras el xito cosechado por UML, y de esta forma se consigue portabilidad, interoperabilidad y reusabilidad, produciendo, por tanto, software de calidad. Se conoce que uno de los factores de xito ms relevantes en el desarrollo de los proyectos software es que stos sean capaces de satisfacer las necesidades y expectativas de los usuarios. Por eso es por lo que la recogida, anlisis y definicin de las necesidades de los clientes y las caractersticas del sistema, realizadas en las primeras fases del desarrollo, cobren ms importancia que el mero hecho de la implementacin. Debido a la complejidad que supone todo el proceso de desarrollo, y en especial las fases de anlisis y diseo, se considera imprescindible la aplicacin de la experiencia para que el proyecto siga delante de una forma adecuada. Ha sido la experiencia de desarrolladores la que ha llevado a comprender que hay estructuras dentro del modelado que se repiten, que son los patrones. Para facilitar la tarea de modelado del negocio se propone recurrir al uso de estos patrones, ya que se pueden encontrar habitualmente en cualquier tipo de situacin. Una posible definicin de patrn es un modelo que se puede seguir para realizar algo. Los patrones surgen de la experiencia de los seres humanos al tratar de lograr ciertos objetivos y capturan la experiencia existente y probada promoviendo y documentando buenas prcticas. Segn el arquitecto Christopher Alexander, cada patrn describe un problema que ocurre infinidad de veces en nuestro entorno, as como la solucin al mismo, de tal modo que podemos utilizar esta solucin un milln de veces ms adelante sin tener que volver a pensarla otra vez. El uso de patrones es beneficioso en la mayora de situaciones que se dan en
cualquier proyecto medianamente complejo, ya que un sistema bien estructurado est lleno de patrones. Aun cuando, en un principio, el uso de determinados patrones de software pueda parecer una carga de trabajo adicional, la ganancia en mantenibilidad del software merece la pena. En la mayor parte de los casos, implementar las cosas bien, pensando en adoptar un patrn adaptable que permita expandir el programa mas adelante facilitar las cosas en el momento de cambiar o quitar partes del proyecto. Ms concretamente, en este proyecto se plantea el uso de patrones de colaboracin. Estos patrones son la representacin de personas, lugares, cosas y eventos; ilustrando de forma grfica concisa y no ambigua la interaccin entre dos objetos. Por otro lado, existen diversas herramientas CASE para el modelado basadas en UML pero se ha echado en falta la posibilidad de aadir la experiencia existente en el desarrollo de software a este modelado.
1.3 Objetivos
Los principales objetivos investigados en este proyecto final de carrera son los siguientes: Justificacin documentada de la importancia del modelado conceptual e identificacin de los mecanismos que permiten llevarlo a cabo.
Estudiar y caracterizar la constante crisis que est sufriendo el desarrollo de software a causa de los grandes avances que se dan en la tecnologa hardware frente a la lenta evolucin del software. Conocer y profundizar en el Desarrollo de Software Dirigido por Modelos (DSDM) y ms concretamente la propuesta MDA (Model Driven Architecture) de OMG, que constituyen una aproximacin para el desarrollo de sistemas software, basada en la separacin entre la especificacin de la funcionalidad esencial del sistema y la implementacin de dicha funcionalidad usando plataformas de implementacin especficas. Corroborar la necesidad de una metodologa en el desarrollo de software que ofrezca un marco y un vocabulario comn para el equipo de trabajo que sirva de gua y ayude a comprobar la calidad del producto final y al seguimiento de los proyectos. Complementar UML (Lenguaje de Modelado Unificado), que es el estndar que se utiliza para el anlisis y el diseo y que apoya el uso de los modelos para obtener software de calidad, con el uso de experiencia documentada y disponible en el mbito del modelado conceptual. Identificar y caracterizar las principales herramientas CASE (Computer Aided Software
presentarse; en este caso, se repasan los beneficios que la inclusin de los patrones de colaboracin en el modelado del dominio nos han proporcionado tras el desarrollo de la herramienta propuesta.
En este captulo se estudiar la evolucin histrica del desarrollo del software y se resaltar la importancia que el modelado conceptual tiene en el proceso de desarrollo. Esta actividad de modelado puede verse favorecida, como todo proceso emprico, por la experiencia de la que haga gala el analista o diseador del software. En este sentido, en este proyecto final de carrera se apuesta por complementar la experiencia del diseador con experiencia disponible y documentada en forma de patrones. Concretamente, los patrones de colaboracin (Nicola et al., 2001) se identifican como una herramienta til y perfectamente aprovechable de una forma mucho ms sistemtica.
La evolucin de la disciplina de ingeniera de software ha trado consigo propuestas diferentes para mejorar los resultados del proceso de construccin. Una posible definicin de ingeniera de software es la disciplina del desarrollo y mantenimiento de sistemas computacionales que se comportan de manera confiable y eficiente y que su costo de desarrollo y mantenimiento puede ser pagado. Otras definiciones de este concepto que se han hecho a lo largo de los aos son las siguientes (Pressman, R., 2007): Bauer, 1972: La Ingeniera del Software trata del establecimiento de los principios y mtodos de la ingeniera a fin de obtener software de modo rentable que sea fiable y trabaje en mquinas reales. Bohem, 1976: Ingeniera del Software es la aplicacin prctica del conocimiento cientfico en el diseo y construccin de programas de computadora y la documentacin asociada requerida para desarrollar, operar y mantenerlos. Se conoce tambin como desarrollo de software o produccin de software. Zelkovitz, 1978: Ingeniera del Software es el estudio de los principios y metodologas para desarrollo y mantenimiento de sistemas de software. Mills, 1980: La Ingeniera del Software tiene como uno de sus principales objetivos la produccin de programas que cumplan las especificaciones, y que se demuestren correctos, producidos en el plazo y coste adecuados. Meyer, 1988: La Ingeniera del Software es la produccin de software de calidad. Ford, 1990: Ingeniera de Software es una forma de ingeniera que aplica los principios de la ciencia de los computadores y matemticas para conseguir soluciones a los problemas del software de forma efectiva y econmica. IEEE, 1993: Ingeniera de software es la aplicacin de un mtodo sistemtico, disciplinado y cuantificable al desarrollo, operacin y mantenimiento de software. Sommerville, 2001: Es una disciplina que comprende todos los aspectos de la produccin de software desde las etapas iniciales de la especificacin del sistema, hasta el mantenimiento de ste despus de que se utiliza. La ingeniera del software se puede ver como la composicin de cuatro partes:
Procesos de software y garanta de calidad: Los procesos de software comprenden el conjunto de actividades, tanto tcnicas como administrativas, que son necesarias para la fabricacin de un sistema de software. Estas actividades son el anlisis de los requisitos, la implantacin, la administracin de configuraciones, las pruebas, la evolucin o el mantenimiento del software etc. Un proceso adecuado ha de estar bien definido y ha de servir para lo que se especific. Si el proceso es adecuado, la probabilidad de producir un producto de buena calidad es ms alta. Arquitecturas de software y elementos estructurados: A partir de la seleccin de los elementos que van a definir la estructura de una aplicacin, hay que definir el proceso de construccin, la metodologa, la tecnologa y las herramientas. En las dcadas de los 60 y 70 era natural estructurar una aplicacin en trminos de los servicios funcionales que sta deba proveer. De hecho, las metodologas como el anlisis y diseo estructurado partan de una descomposicin funcional jerrquica que luego se transformaba en procedimientos dentro de la aplicacin. Con el aumento de la complejidad de las aplicaciones y la necesidad de hacerlas evolucionar, este enfoque no fue suficiente. En los 80 y 90 se populariz el desarrollo de software orientado a objetos que buscaba, entre otros objetivos, permitir la construccin de aplicaciones ms fciles de mantener. Hoy parecen no ser suficiente los objetos, no porque hayan dejado de ser buenos, sino porque el problema ha cambiado. Se necesita contar con arquitecturas flexibles y lo ms independientes posibles de las herramientas que se utilicen. Tecnologas de informacin: Aqu se hace referencia tanto a elementos de hardware que afectan a los sistemas de software como a los lenguajes concretos de modelado y de programacin, y a las plataformas para la construccin de algn tipo de componente software. Esta es la dimensin de la ingeniera de software que ms rpido cambia. Es la evolucin de la tecnologa lo que ha hecho que las expectativas con respecto al software cambien y sean ms exigentes. A medida que los requisitos no funcionales han ido tomando importancia, la integracin de la tecnologa se debe hacer desde las primeras etapas de diseo, y obliga al ingeniero de software a ampliar su dominio de competencias. Metodologas y tcnicas de desarrollo: Dan soporte a las actividades de anlisis, diseo, programacin, elaboracin de pruebas, administracin de riesgos, etc. Debe contar con descripciones claras sobre la manera de llevar a cabo el trabajo, de evaluar
el avance, de verificar la calidad del resultado y de validar si se produjo lo que se esperaba. Recientemente, el tema que ha despertado gran inters es el de los patrones de diseo, que son soluciones probadas a problemas particulares en contextos especficos. Si bien no son metodologas completas, son elementos claves que permiten, por un lado, manejar un vocabulario comn entre los diseadores y, adems, ofrecen elementos objetivos para justificar una decisin.
La Figura 2.1 muestra un esquema con las capas que intervienen en la ingeniera del software, donde cada una de estas capas afecta al resto. De esta manera, los mtodos indican cmo construir el software, las herramientas suministran un soporte automtico para los mtodos y los procedimientos son lo que une los mtodos y las herramientas. Todo esto sin olvidar que el principal objetivo en la ingeniera del software es producir software de calidad, por lo que se aplicar la garanta de calidad del software a todo el proceso de desarrollo.
del software fue usado, desde los primeros das de la ingeniera del software, para referirse a los rpidos incrementos de la tecnologa en la computacin y la complejidad de los problemas a los cuales pudieran enfrentarse. Uno de los principales problemas en el desarrollo de software de hoy en da es que muchos proyectos empiezan la programacin tan pronto se definen y concentran mucho de su esfuerzo en la escritura de cdigo. No se debe de olvidar que la programacin es solamente una parte en el desarrollo de software, habiendo otras tareas dentro del proceso de suma importancia. ltimamente el desarrollo de software se ha ralentizado. Hay varias razones que pueden ser propuestas como causa de la crisis, las cuales no son mutuamente excluyentes; de hecho, es posible que la verdadera causa sea una mezcla de todas ellas. Sin embargo, todas tienen en comn que son causadas por el mtodo de valorar los avances cientficos y el mecanismo actual de financiacin de la actividad cientfica. Las causas de la crisis del software fueron vinculadas a la complejidad en general del proceso de software y a la relativa inmadurez de la ingeniera de software como una profesin. Algunos sntomas que indican que el software se encuentra en un periodo de crisis son la baja calidad del software, tiempo y presupuesto excedido, confiabilidad cuestionable y altos requisitos de personal para desarrollo y mantenimiento. Algunos de los factores que han hecho pensar que el desarrollo del software est en crisis, respecto a otras etapas de su corta historia, son el aumento del poder computacional, la reduccin del costo del hardware, la rpida obsolescencia de hardware y software, la creciente aceptacin de la computarizacin en las empresas, el incremento en el nmero de usuarios de los sistemas de software, la existencia de un tipo de usuario no homogneo en sistemas hechos a la medida y el diferente personal de desarrollado y mantenimiento. Factores tambin importantes son los cambios tecnolgicos (Internet, redes, ERP o Enterprise Resource Planning, CRM o Customer Relationship Management, SCM o Supply Chain Management), econmicos (crisis econmicas, globalizacin, etc.) y sociales (nuevas necesidades, nuevas costumbres, etc.) que se producen en el entorno. Debido a la falta de comunicacin y de entendimiento, con frecuencia, los distintos componentes del equipo de desarrollo, tienen distintos puntos de vista sobre el trabajo que deben desarrollar, y de esta manera, es difcil que lleguen a un acuerdo. Un ejemplo grfico y
con un toque de humor de las distintas formas de ver las cosas que tiene cada uno de los involucrados en el proceso de desarrollo del software se muestra en la Figura 2-2.
Esta falta de entendimiento entre unos y otros podra solucionarse sustancialmente si al principio del desarrollo se lleva a cabo una especificacin exhaustiva de los requisitos que se esperan de la herramienta. Tambin es interesante que la especificacin se complete con un modelado donde se plasmen grficamente estos requisitos, con lo que se aadir una semntica ms difcil de explicar mediante texto y que permitir asimilar de un vistazo las condiciones de inters del proyecto, incluyendo toda la informacin que ha de manejar el sistema. Es mas, si el modelo refleja la forma en que las actividades del proyecto influirn sobre la condicin de inters, entonces la implementacin del proyecto conducir a los resultados deseados. Por otro lado, cualquier cambio relativo a requisitos u otras fuentes de informacin se podr afrontar de manera ms eficaz, haciendo ms cmodo el mantenimiento.
Este mal endmico que sufre la industria del software desde sus orgenes no parece tener una solucin definitiva hasta ahora, aunque ha habido muchas iniciativas para atenuar los efectos de esta crisis. Una de las ms importantes es la aplicacin de sistemas de aseguramientos de calidad al desarrollo de software, los que se basan sobre las siguientes ideas: El software debe ser pensado, diseado y desarrollo como un producto sujeto a normas de calidad. El software es un producto desarrollado por grupos de personas cuya interaccin debe ser gestionada. El nfasis en el proceso de desarrollo asegura un producto adecuado a los requisitos de los clientes. La solucin a la crisis del software pasa por un cambio de mentalidad de los protagonistas de su desarrollo: jefes de proyecto, analistas, programadores, usuarios, etc. Esto conduce a una idea que cada vez encuentra ms fundamentos y adherentes; la crisis del software puede ser reducida a travs de la educacin, es decir educando adecuadamente la prxima generacin de profesionales del software, de modo que ellos sean naturales e inmediatos aplicando conceptos como calidad y desarrollo en equipo. En lo concerniente al desarrollo de software se debe incentivar la planificacin, realizacin, medicin, seguimiento y mejora continua mediante la incorporacin de estndares y procedimientos que complementen el mtodo de desarrollo utilizado, haciendo nfasis en los sistemas de gestin de la calidad que pueden ayudar a las organizaciones a aumentar la satisfaccin del cliente. Los clientes necesitan productos con caractersticas que satisfagan sus necesidades y expectativas. Estas necesidades y expectativas se expresan en la especificacin del producto y son generalmente denominadas como requisitos del cliente. Los requisitos del cliente pueden estar especificados por el cliente de forma contractual o pueden ser determinados por la propia organizacin. En cualquier caso, es finalmente el cliente quien determina la aceptabilidad del producto. Dado que las necesidades y expectativas de los clientes son cambiantes y debido a las presiones competitivas y a los avances tcnicos, las organizaciones deben mejorar continuamente.
La aportacin que se hizo ante esta situacin fue el planteamiento de aplicar mtodos cientficos y rigurosos al proceso de desarrollo de programas, apareciendo en escena la Ingeniera del Software y la Ingeniera de Requisitos. No han solucionado el problema, pero algo han aportado. Hasta ahora la mejor forma que funciona para afrontar de forma seria el desarrollo de una aplicacin es realizar: anlisis y requisitos + programacin + ciclo de pruebas. Pero esto tiene dos inconvenientes: el primero es que es muy difcil hacer un buen anlisis que sepa abarcar todas las necesidades del cliente antes de que ste vea el producto final (entre otras cosas porque el cliente no sabe lo que quiere); el segundo es que nadie hace el esfuerzo de analizar y especificar requisitos, teniendo dicha parte el menor peso especfico dentro de todo el desarrollo. Se ha probado que las metodologas mejoran la calidad del software, al ser estas un proceso estudiado y probado, que indica los pasos a seguir durante el proceso de desarrollo, por eso es aconsejable su utilizacin. Actualmente los nuevos sistemas de informacin son costosos en tiempos y recursos, la solucin moderna de los actuales sistemas exigen nuevas herramientas y metodologas para poder resolver, de forma rpida, econmica y eficiente los problemas de informacin planteados por algunas empresas. Debemos de reconocer los problemas y causas para llegar a solucionarlos mediante la combinacin de mtodos completos para todas las fases del desarrollo del software, con ayuda de las tcnicas que actualmente existen como la re-ingeniera de software, la programacin orientada a objetos y lo que es UML, inclusive el uso de herramientas CASE. En definitiva, para tratar de paliar los efectos de la crisis, el proceso de desarrollo del software se vera favorecido por la presencia de tres elementos clave que se conforman en la siguiente tupla: <notacin, proceso, herramientas>. Una notacin extendida y aceptada que permita documentar, visualizar, especificar y discutir a un nivel de abstraccin suficiente que posibilite las contribuciones de los diferentes roles involucrados en el proceso de desarrollo. Un proceso sistemtico, iterativo, incremental, trazable y dirigido por modelos que posibilite abordar el desarrollo del software con ciertas garantas. Finalmente, un conjunto de herramientas que soporten tanto las notaciones disponibles como los procesos empleados, siendo especialmente
importantes la flexibilidad de las mismas para poder utilizar y reutilizar la experiencia reunida por los desarrolladores fruto de su bagaje como desarrollador.
se pueda ejecutar ms de una vez a lo largo de un proyecto, recibiendo en cada pasada de ejecucin aportaciones de los resultados intermedios que se van produciendo (realimentacin).
Cada fase viene definida por un conjunto de elementos observables externamente, como son las actividades con las que se relaciona, los datos de entrada (resultados de la fase anterior, documentos o productos requeridos para la fase, experiencias de proyectos anteriores), los datos de salida (resultados a utilizar por la fase posterior, experiencia acumulada, pruebas o resultados efectuados) y la estructura interna de la fase.
Las principales diferencias entre distintos ciclos de vida radican en el alcance del ciclo dependiendo de hasta dnde llegue el proyecto correspondiente, las caractersticas de las fases en que dividen el ciclo y en la estructura de la sucesin de las fases que puede ser lineal, con prototipado, o en espiral.
Para realizar bien el desarrollo de software es esencial realizar una especificacin completa de los requisitos para el software final. Independientemente de lo bien diseado o codificado que est, un programa pobremente especificado decepcionar al usuario y har fracasar el desarrollo. Tanto el que desarrolla el software como el cliente tienen un papel activo en la especificacin de requisitos. El cliente intenta reformular su concepto, algo nebuloso, de la funcin y comportamiento de los programas en detalles concretos y el desarrollador acta como interrogador, consultor y el que resuelve los problemas. Esta fase debe incorporar una tarea de especificacin conceptual donde a partir de la descripcin de los requisitos de usuario, se intenta obtener un esquema conceptual que represente una solucin al problema. Ser una representacin grfica de las entidades y relaciones que participan en el sistema. Estos diagramas, que inicialmente se hacan generalmente mediante una notacin propia, se realizan, desde los inicios de UML con este lenguaje, lo que facilita la comunicacin al poder entender cualquier persona su significado. Estos modelos conceptuales son independientes del sistema de gestin de bases de datos, tienen un mayor nivel de abstraccin que el texto, mayor capacidad semntica y estn ms enfocados al diseo de alto nivel. El anlisis y especificacin de requisitos puede parecer una tarea relativamente sencilla, pero no lo es tanto. Puesto que el contenido de comunicacin es muy alto, abundan los cambios por mala interpretacin o falta de informacin. El dilema con el que se enfrenta un ingeniero de software puede ser comprendido repitiendo la sentencia de un cliente annimo: S que crees que comprendes lo que piensas que he dicho, pero no estoy seguro de que lo que creste or sea lo que yo quise decir.
Una metodologa indica cmo seguir uno o varios ciclos de vida y para ello define las tcnicas, entre las que estn los modelos y los procedimientos, a utilizar para cada tarea y las entradas y salidas que tiene cada tarea. Una metodologa de programacin es un conjunto o sistema de mtodos, principios y reglas que permiten enfrentar de manera sistemtica el desarrollo de un programa que resuelve un problema algortmico. Estas metodologas generalmente se estructuran como una secuencia de pasos que parten de la definicin del problema y culminan con un programa que lo resuelve.
Figura 2-5. La metodologa es lo que posibilita la asociacin entre una solucin y un problema
Dentro del marco global de un proceso de desarrollo, las metodologas y tcnicas dan soporte a las actividades de anlisis, diseo, programacin, elaboracin de pruebas, administracin de riesgos, etc. Las metodologas y tcnicas precisan el cmo hacer dentro de las actividades concretas de un proceso. Debe contar con descripciones claras sobre la manera de llevar a cabo el trabajo, de evaluar el avance, de verificar la calidad del resultado y de validar si se produjo lo que se esperaba. Los pasos de una metodologa, de una manera general, son los siguientes: El dilogo: Con el cual se busca comprender totalmente el problema a resolver. La especificacin: Con la cual se establece de manera precisa las entradas, salidas y las condiciones que se deben cumplir. Diseo: En esta etapa se construye un algoritmo que cumpla con la especificacin. Codificacin: Se traduce el algoritmo a un lenguaje de programacin. Pruebas y verificacin: Se realizan pruebas del programa implementado para determinar su validez en la resolucin del problema.
Una metodologa ofrece un marco y un vocabulario comn para el equipo de trabajo, sirve de gua en la utilizacin de las distintas tcnicas y herramientas, ayuda a comprobar la calidad del producto final y el seguimiento de los proyectos, incorpora los enfoques globales que se necesitan para solucionar los problemas de los sistemas de informacin de una empresa y resuelve muchos de los problemas y necesidades actuales existentes en el desarrollo de aplicaciones. Una metodologa debe cumplir las siguientes caractersticas: Completa: debe de tener un entorno de trabajo que aporte soluciones a las necesidades de un sistema de informacin durante todas las etapas de su ciclo de vida. Flexible: debe ser adaptable a las necesidades de cada proyecto y poder ser utilizado por todas las organizaciones, independientemente de su tamao, nivel de automatizacin y naturaleza del proyecto. Facilitar la comunicacin y documentacin del sistema: debe de proporcionar un lenguaje comn, estandarizar el vocabulario y las definiciones utilizadas y utilizar tcnicas de diagramacin. Accesible y clara: debe de ser fcil de aprender y de usar y debe de especificar los pasos a seguir en el desarrollo. Adaptable a la evolucin: debe facilitar las modificaciones y definir invariantes que aseguren puntos de referencia durante la evolucin del sistema. Que permita un control de calidad y gestin de proyectos: integrando tcnicas que faciliten la planificacin. En un principio, cuando empez el desarrollo de software, no se utilizaba ninguna metodologa, ya que los proyectos eran de poca envergadura y era suficiente con un desarrollo artesanal, pero con el aumento de la complejidad del software se hizo indispensable la utilizacin de nuevos mtodos que ayudaran y pusieran un poco de orden en el desarrollo. Las metodologas de desarrollo y mantenimiento de sistemas de informacin las podemos clasificar, atendiendo a los diferentes enfoques. Las metodologas estructuradas surgen a finales de los aos 70, fruto de la ampliacin de una serie de criterios de la programacin estructurada a otras etapas del ciclo de
vida. Intentan solucionar problemas tcnicos para obtener un sistema mecanizado. Se apoya generalmente en el ciclo de vida clsico en cascada y se diferencia de esta en el nmero de etapas que soporta cada una. La historia de las metodologas orientadas a objetos va unida a la evolucin de los lenguajes de programacin orientada a objeto. A fines de los 80s comenzaron a consolidarse algunos mtodos Orientados a Objeto. En 1995 aparece el Mtodo Unificado, que posteriormente se reorienta para dar lugar al UML, la notacin orientada a objetos ms popular en la actualidad, de la cul se hablar en un prximo apartado. Una de las metodologas orientadas a objetos basadas en UML ms importantes es RUP, de la cul se hablar tambin mas adelante. La Figura 2-6 muestra los principales representantes de las metodologas tradicionales, adems de las dos alternativas posibles, MDD y metodologas giles, que a continuacin se comentan.
Las metodologas tradicionales se caracterizan por exponer procesos basados en planificacin exhaustiva. Esta planificacin se realiza esperando que el resultado de cada proceso sea determinante y predecible. La experiencia ha mostrado que, como consecuencia de las caractersticas del software, los resultados de los procesos no son siempre predecibles y sobre todo, es difcil prever desde el comienzo del proyecto cada resultado.
Una posible mejora a las metodologas tradicionales es incluir en los procesos de desarrollo ms actividades, ms artefactos y ms restricciones, basndose en los puntos dbiles detectados. Sin embargo, el resultado final sera un proceso de desarrollo ms complejo que puede incluso limitar la propia habilidad del equipo para llevar a cabo el proyecto. La solucin a algunos de los problemas presentados por las metodologas tradicionales se logra con una gran evolucin del modelo en espiral. El proceso unificado propone la elaboracin de varios ciclos de desarrollo, donde cada uno finaliza con la entrega al cliente de un producto terminado. Otra aproximacin es centrarse en otras dimensiones, como por ejemplo el factor humano o el producto software. Esta es la filosofa de las metodologas giles, cuyos objetivos son: valorar al individuo y las interacciones del equipo de desarrollo sobre el proceso y las herramientas; desarrollar software que funciona ms que conseguir una buena documentacin; valorar la colaboracin con el cliente ms que la negociacin de un contrato; responder a los cambios ms que seguir estrictamente un plan. Este enfoque est mostrando su efectividad en proyectos con requisitos muy cambiantes y cuando se exige reducir drsticamente los tiempos de desarrollo pero manteniendo una alta calidad. Las metodologas giles estn revolucionando la manera de producir software, y a la vez generando un amplio debate entre sus seguidores y quienes, por escepticismo o convencimiento, no las ven como alternativa para las metodologas tradicionales. En la tabla 2.1 se resumen las diferencias entre las metodologas clsicas y las metodologas giles. La diferencia fundamental radica en que, para los clsicos, el paradigma se basa en la predecibilidad, mientras que en los giles, se basa en la adaptabilidad. No hay una regla determinante para la eleccin del mtodo, ni siquiera del tipo de mtodo. Metodologas tradicionales Basadas en normas provenientes de estndares seguidos por el entorno de desarrollo Cierta resistencia a los cambios Impuestas externamente Metodologas giles Basadas en heursticas provenientes de prcticas de produccin de cdigo Especialmente preparados para cambios durante el proyecto Impuestas internamente (por el equipo)
Proceso mucho mas controlado, con numerosas polticas y normas Existe un contrato prefijado El cliente interacta con el equipo de desarrollo mediante reuniones Grupos grandes y posiblemente distribuidos Ms artefactos Ms roles La arquitectura del software es esencial y se expresa mediante modelos
Proceso menos controlado, con pocos principios No existe contrato tradicional o al menos es bastante flexible El cliente es parte del equipo de desarrollo Grupos pequeos (<10 integrantes) y trabajando en el mismo sitio Pocos artefactos Pocos roles Menos nfasis en la arquitectura del software
Resumiendo, mientras que las metodologas tradicionales se centran especialmente en el control del proceso, mediante una rigurosa definicin de roles, actividades, artefactos, herramientas y notaciones para el modelado y documentacin detallada, las metodologas giles dan mayor valor al individuo, a la colaboracin con el cliente y al desarrollo incremental del software con iteraciones muy cortas, con cortos documentos centrados en lo esencial. Y entre tantas diferencias entre unos tipos de metodologas y otros, se encuentra una necesidad comn: la de analizar los requisitos que tendr la herramienta. El primer paso a realizar en el desarrollo, tanto si se sigue una u otra metodologa, ser, obviamente, estudiar cules son las necesidades que se quieren cubrir con la herramienta a desarrollar. Una forma interesante de documentar estos requisitos es mediante una especificacin conceptual donde se resaltar la funcionalidad requerida del sistema. Adems, con la elaboracin de los diagramas de clases correspondientes se permite visualizar rpidamente cules son los elementos que incluir la herramienta, y sus relaciones. De esta forma, pueden modificarse los requisitos del sistema de una forma fcil y rpida, obteniendo una documentacin clara, concisa y fcil de realizar, caracterstica especialmente interesante dentro de las metodologas giles, donde no se quiere perder el tiempo con documentacin.
UML, al no ser un mtodo de desarrollo es independiente del ciclo de desarrollo a seguir, puede encajar en un tradicional ciclo en cascada, en uno evolutivo, en un ciclo en espiral o incluso en los mtodos giles de desarrollo. Cualquier centro de desarrollo puede montar su metodologa, aunque esta alternativa implica disponer del tiempo necesario para el desarrollo de la nueva metodologa; por lo tanto, lo ms prctico es seguir los mtodos que ya han demostrado su validez y son de aplicacin universal. Una buena metodologa expresa la experiencia de otros para realizar una tarea: sta es el fruto de la experiencia. Se requiere tiempo de utilizarla, evaluarla, mejorarla, volverla a utilizar, adaptarla, etc. El ciclo de aceptacin es largo y requiere tiempo. Sin embargo, la velocidad a la que las tecnologas cambian, no ha permitido que estos ciclos se completen adecuadamente. Esto explica por qu ha habido tan pocos avances metodolgicos en el rea de construccin de software o por qu este eje va ms lentamente. Recientemente, el tema que ha despertado gran inters es el de los patrones de diseo. Estos son soluciones probadas a problemas particulares en contextos especficos. Si bien no son metodologas completas, son elementos claves que permiten, por un lado, manejar un vocabulario comn entre los diseadores y, adems, ofrecen elementos objetivos para justificar una decisin.
modelos es el Lenguaje Unificado de Modelado, o UML, que ser presentado en el prximo apartado de este captulo. El desarrollo de sistemas dirigido por modelos ha demostrado, desde hace tiempo, su eficacia en el desarrollo de complejos sistemas hardware, y su aplicacin crece continuamente en el desarrollo de sistemas software (o combinaciones hardware-software), a medida que surgen metodologas y herramientas disponibles para manipular modelos software. El Desarrollo Dirigido por Modelos (MDD) se ha convertido en un nuevo paradigma de desarrollo software que promete una mejora de la productividad y de la calidad del software a travs de un proceso guiado por modelos y soportado por potentes herramientas que generan cdigo a partir de modelos.
Fase de inicio En esta fase, la meta principal es establecer el caso de negocio, es decir, estudiar la
viabilidad del desarrollo del proyecto. Para ello se delimita el alcance del sistema propuesto, se describe la arquitectura candidata del sistema, se identifican los riesgos crticos (aquellos que afectan la capacidad de construir el sistema) y se determina si hay manera de mitigarlos y se demuestra si el sistema es capaz de resolver el problema o soportar el objetivo de negocio construyendo una prueba de negocio.
Fase de elaboracin El producto principal de esta fase es una arquitectura estable para guiar el sistema por
su vida futura y la planificacin de la fase de construccin con fidelidad. Para conseguirlo, se crea una arquitectura que cubre la funcionalidad y caractersticas importantes del sistema, se identifican los riesgos significativos que pueden afectar a planes, costos y programas de fases, se especifican niveles para lograr atributos de calidad y tiempos de respuesta y se captura el 80% de los casos de uso, que son suficientes para planear la construccin.
Fase de construccin El objetivo general de esta fase es obtener la capacidad operacional inicial en un
producto listo para prueba beta. Para ello, se extiende la identificacin, descripcin y realizacin de los casos de uso; se termina el anlisis, diseo, implementacin y prueba del producto; se mantiene la integridad de la arquitectura y se monitorizan los riesgos crticos y significativos de las fases anteriores y, en caso de que se presenten, se mitigan.
Fase de transicin Esta fase empieza con la liberacin beta del producto. En ella se prepara la instalacin;
etc.; se preparan manuales y documentacin; se ajusta el software para operar bajo parmetros actuales del ambiente del usuario; se corrigen defectos despus de pruebas beta y se modifica el software en caso de que se presenten problemas no previstos.
En la Figura 2-7 se observa la relacin que hay entre tiempo y recursos necesarios en cada una de las fases expuestas. El producto final consiste de cdigo fuente incluido en componentes que se puede compilar y ejecutar, ms manuales y entregables asociados. Adems, tiene que satisfacer las necesidades no slo de usuarios, sino de toda la gente que trabajar con el producto. El producto terminado incluye los requisitos, casos de uso, especificaciones no funcionales y casos de prueba, la arquitectura y modelos visuales, que estos sern artefactos modelados con UML. Aun si los componentes ejecutables son los artefactos ms importantes, por si solos no son suficientes porque el ambiente cambia (sistema operativo, sistemas de bases de datos, avance tecnolgico,...).
Process), que puede ser una buena metodologa de desarrollo a tener en cuenta para proyectos medianos y grandes, adems de ser el ejemplo por excelencia de metodologa orientada a objetos. El RUP es un proceso de desarrollo de software que junto con el UML, constituye la metodologa estndar ms utilizada para el anlisis, implementacin y documentacin de sistemas orientados a objetos. Se caracteriza por la forma disciplinada de asignar tareas y responsabilidades y pretende implementar el desarrollo iterativo, la administracin de requisitos, el uso de arquitectura basada en componentes, el control de cambios, el modelado visual del software y la verificacin de la calidad del software. El RUP es un producto de Rational (IBM). Incluye artefactos, que son los productos tangibles del proceso como por ejemplo, el modelo de casos de uso, el cdigo fuente, etc.; y roles, que es el papel que desempea una persona en un determinado momento, una persona puede desempear distintos roles a lo largo del proceso. RUP est basado en el seguimiento de una serie de normas o mejores prcticas aplicadas a cuatro etapas o ciclos en las diversas iteraciones del desarrollo: Inicio, Elaboracin, Construccin y Transicin. Cada ciclo se divide en fases que finalizan con un hito donde se debe tomar una decisin importante: Inicio: se hace un plan de fases, se identifican los principales casos de uso y se identifican los riesgos. Elaboracin: se hace un plan de proyecto, se completan los casos de uso y se eliminan los riesgos. Construccin: se concentra en la elaboracin de un producto totalmente operativo y eficiente y el manual de usuario. Transicin: se implementa el producto en el cliente y se entrena a los usuarios. Como consecuencia de esto suelen surgir nuevos requisitos a ser analizados.
Lenguajes Imperativos: La programacin imperativa describe la programacin en trminos del estado del programa y una secuencia de sentencias que cambian dicho estado. Los programas imperativos son un conjunto de instrucciones que le indican al computador cmo realizar una tarea. El cdigo mquina en general est basado en el paradigma imperativo. Lenguaje Estructurado: La programacin se divide en bloques (procedimientos y funciones) que pueden o no comunicarse entre s. Adems, la programacin se controla con secuencia, seleccin e iteracin. Permite reutilizar cdigo programado y otorga una mejor compresin de la programacin. Es simplemente un bloque, como por ejemplo, los archivos batch (.bat). Lenguaje Lgico: Se basa en la definicin de reglas lgicas para luego, a travs de un motor de inferencias lgicas, responder preguntas planteadas al sistema y as resolver los problemas. Comprende dos paradigmas de programacin: la programacin declarativa y la programacin funcional. La programacin declarativa gira en torno al concepto de predicado, o relacin entre elementos. La programacin funcional se basa en el concepto de funcin, de corte ms matemtico. Lenguaje Declarativo: Se enfoca en describir las propiedades de la solucin buscada, dejando indeterminado el algoritmo usado para encontrar esa solucin. Es ms complicado de implementar que el paradigma imperativo, tiene desventajas en la eficiencia, pero ventajas en la solucin de determinados problemas. Lenguajes Funcionales: Basado en la utilizacin de funciones matemticas, para conseguir lenguajes expresivos y matemticamente elegantes, en los que no sea necesario bajar al nivel de la mquina para describir el proceso llevado a cabo por el programa, y evitando el concepto de estado del cmputo. Lenguajes Orientados a Objetos: Define los programas en trminos de "clases de objetos". Estos objetos son entidades que combinan estado, comportamiento e identidad. El estado est compuesto de datos, y el comportamiento por procedimientos o mtodos. La identidad es una propiedad de un objeto que lo diferencia del resto. La programacin orientada a objetos expresa un programa como un conjunto de estos objetos, que colaboran entre ellos para realizar tareas. Esto permite hacer los programas y mdulos ms fciles de escribir, mantener y reutilizar.
Su principal ventaja es la reutilizacin de cdigo y su facilidad para pensar soluciones a determinados problemas. Aunque hay que tener en cuenta que la programacin es solo una pequea parte de todo lo que conlleva la ingeniera del software. Debe quedar claro y patente que el paradigma orientado a objetos ha supuesto un cambio radical y un punto de inflexin en la evolucin y disponibilidad de propuestas de desarrollo del software y gracias a este punto de apoyo otras propuestas posteriores han sido posibles.
haba mas de 50 lenguajes y metodologas que satisfacan caractersticas muy especificas de modelado, provocando que los usuarios tuviesen problemas para satisfacer sus necesidades con una u otra metodologa. Se necesitaba, por tanto, un lenguaje no slo para comunicar las ideas a otros desarrolladores sino tambin para servir de apoyo en los procesos de anlisis de un problema. Con este objetivo se creo el Lenguaje Unificado de Modelado (UML: Unified Modeling Language). En 1994 el desarrollo de UML fue iniciado por Grady Booch y Jim Rumbaugh de Rational Software Corporation, con la unificacin de las metodologas Booch y OMT (Object Modeling Technique), en el otoo del 95 Ivar Jacobson se uni junto con su compaa Objetory a Rational, con la finalidad de unificar esfuerzos, integrando la metodologa OOSE (ObjectOriented Software Engineering). UML se convirti en ese estndar tan anhelado para representar y modelar la informacin con la que se trabaja en las fases de anlisis y, especialmente, de diseo. Actualmente, UML es el lenguaje de modelado de sistemas de software ms conocido y utilizado en la actualidad; adems de ser un estndar, est apoyado en gran manera por el OMG (Object Management Group), grupo que gestiona estndares relacionados con la tecnologa orientada a objetos, del cual forman parte las empresas ms importantes que se dedican al desarrollo de software. La ltima versin aprobada es la UML 2.0. En estos momentos se estn desarrollando actualizaciones a esta versin en la que se incluirn cambios importantes, principalmente, aadir nuevos diagramas. Es un lenguaje grfico para visualizar, especificar, construir y documentar un sistema de software. UML ofrece un estndar para describir un plano del sistema (modelo), incluyendo aspectos conceptuales tales como procesos de negocios y funciones del sistema, y aspectos concretos como expresiones de lenguajes de programacin, esquemas de bases de datos y componentes de software reutilizables. UML ha sido diseado para modelar cualquier tipo de proyectos, tanto informticos como de arquitectura, o de cualquier otro ramo. La aparicin de UML supuso el reconocimiento de la actividad del modelado (diseo basado en modelos) como una actividad clave para producir software de calidad.
Los objetivos que pretende cumplir UML son los siguientes: UML es un lenguaje de modelado de propsito general que pueden usar todos los modeladores. No tiene propietario y est basado en el comn acuerdo de gran parte de la comunidad informtica. UML no pretende ser un mtodo de desarrollo completo. No incluye un proceso de desarrollo paso a paso. UML incluye todos los conceptos que se consideran necesarios para utilizar un proceso moderno iterativo, basado en construir una slida arquitectura para resolver requisitos dirigidos por casos de uso. Ser tan simple como sea posible pero manteniendo la capacidad de modelar toda la gama de sistemas que se necesita construir. UML necesita ser lo suficientemente expresivo para manejar todos los conceptos que se originan en un sistema moderno, tales como la concurrencia y distribucin, as como tambin los mecanismos de la ingeniera de software, como son la encapsulacin y componentes. Debe ser un lenguaje universal, como cualquier lenguaje de propsito general. Imponer un estndar mundial. A pesar de su status de estndar ampliamente reconocido y utilizado, UML siempre ha sido muy criticado por su carencia de una semntica precisa, lo que ha dado lugar a que la interpretacin de un modelo UML no pueda ser objetiva. Otro problema que tiene UML es que no se presta con facilidad al diseo de sistemas distribuidos. En tales sistemas cobran importancia factores como transmisin, serializacin, persistencia, etc. UML no cuenta con maneras de describir tales factores. No se puede, por ejemplo, usar UML para sealar que un objeto es persistente o remoto, o que existe en un servidor que corre continuamente y que es compartido entre varias instancias de ejecucin del sistema analizado. Otra de las crticas que se han comentado de UML es la carencia de patrones integrados con el lenguaje. Los patrones hacen ms fcil y rpido el modelado, pero UML no dispone de ellos. Con UML, lo que se pretende es lograr que los lenguajes que se aplican siguiendo los mtodos ms utilizados sigan evolucionando en conjunto y no por separado. Y adems, unificar las perspectivas entre diferentes tipos de sistemas (no slo software, sino tambin en
el mbito de los negocios), al aclarar las fases de desarrollo, los requisitos de anlisis, el diseo, la implementacin y los conceptos internos de la OO. En resumen, UML resuelve de forma bastante satisfactoria un viejo problema del desarrollo de software como es su modelado grfico. Adems, se ha llegado a una solucin unificada basada en lo mejor que haba hasta el momento, lo cual lo hace todava ms excepcional. Es importante remarcar que UML es un lenguaje para especificar y no un mtodo o un proceso, se utiliza para definir un sistema de software, para detallar los artefactos en el sistema y para documentar y construir, ya que es el lenguaje en el que est descrito el modelo. Se puede aplicar en una gran variedad de formas para soportar una metodologa de desarrollo de software (tal como el Proceso Unificado de Rational) pero no especifica en s mismo qu metodologa o proceso usar.
2.4.1 CASE
Las herramientas CASE surgen a principios de la dcada de los 80, pero pronto se extendieron a la mayor parte de las fases y actividades involucradas en el desarrollo de software. Las herramientas CASE estn tomando cada vez mas relevancia en la planificacin y ejecucin de proyectos que involucren sistemas de informacin, pues suelen inducir a sus usuarios a la correcta utilizacin de metodologas que le ayudan a llegar con facilidad a los productos de software construidos. Las Herramientas CASE (Computer Aided Software Engineering - Ingeniera del Software Asistida por Ordenador) son diversas aplicaciones informticas destinadas a aumentar la productividad en el desarrollo de software reduciendo el coste de las mismas en trminos de tiempo y de dinero. Estas herramientas nos pueden ayudar en todos los aspectos del ciclo de vida de desarrollo del software en tareas como el proceso de realizar un diseo del proyecto, clculo de costes, implementacin de parte del cdigo automticamente con el diseo dado, compilacin automtica, documentacin o deteccin de errores entre otras. Todas las herramientas CASE prestan soporte a un lenguaje de modelado para acompaar la metodologa y es lgico suponer que un alto porcentaje de ellas soportan UML, teniendo en cuenta la amplia aceptacin de este lenguaje y el valor conceptual y visual que proporciona y su facilidad para extender el lenguaje para representar elementos particulares a determinados tipos de aplicaciones. Evidentemente, debido a la popularidad que han ido adquiriendo UML y MDA en los ltimos aos, existe en el mercado una gran variedad de herramientas de modelado de diagramas UML. Las herramientas CASE son una combinacin de herramientas de software y metodologas estructuradas de desarrollo que han surgido para dar solucin a varios problemas inherentes al software, pero principalmente nacen para solucionar el problema de la mejora de la calidad del desarrollo de sistemas de mediano y gran tamao, y en segundo lugar, por el aumento de la productividad. La mejora de la calidad se logra al reducir sustancialmente muchos de los problemas de anlisis y diseo relacionados con los proyectos, como la lgica en el diseo y la coherencia
entre mdulos, entre otros. Simultneamente, la mejora de la productividad se consigue a travs de la automatizacin de tareas, como la generacin y reutilizacin de cdigo, que son puntos importantes a considerar en una herramienta CASE. Los objetivos que siguen las herramientas CASE son: Mejorar la productividad en el desarrollo y mantenimiento del software. Aumentar la calidad del software. Mejorar el tiempo y coste de desarrollo y mantenimiento de los sistemas informticos. Mejorar la planificacin de un proyecto Aumentar la biblioteca de conocimiento informtico de una empresa ayudando a la bsqueda de soluciones para los requisitos. Automatizar, desarrollo del software, documentacin, generacin de cdigo, pruebas de errores y gestin del proyecto. Ayuda a la reutilizacin del software, portabilidad y estandarizacin de la documentacin Gestin global en todas las fases de desarrollo de software con una misma herramienta. Facilitar el uso de las distintas metodologas propias de la ingeniera del software. En este proyecto se da mucha importancia a la experiencia y, concretamente, a la disponible para elaborar especificaciones conceptuales, cosa que, como puede apreciarse en la Tabla 2-2, dnde se ha hecho una comparativa de algunas de las herramientas CASE ms relevantes, atendiendo a las caractersticas ms destacables a tener en cuenta, no es muy habitual su consideracin. Se ha observado que en alguna de las herramientas que se utilizan con objetivo ms profesional s incluye la utilizacin de patrones. No obstante, solamente se contemplan los patrones de diseo.
ARGOUML argouml.tigris.org Navega de acuerdo con diferentes perspectivas de modelado y de metodologa de desarrollo
RATIONAL ROSE www.rational.com Provee productos de UML para los lenguajes comunes de la industria para especificacin, visualizacin, construccin y documentacin de los artefactos de los sistemas software
WITHCLASS www.microgold.com Utiliza perspectiva objeto relacional con diferentes metodologas de desarrollo y modelado
TOGETHER www.borland.com Robusta y slida plataforma de Borland fcilmente integrable a JBuilder. Usa refactoring y patrones. Apoya procesos de testing a travs de un marco apropiado. Es extensible a necesidades de estndar de la organizacin
mbito de utilizacin
Plataforma
Apoyo metodolgico
Sus caractersticas se ajustan a Se enmarca dentro del Sus caractersticas se apoyan proyectos acadmicos y de desarrollo de modelado para en el desarrollo orientado a investigacin fines acadmicos y objetos para proyectos comerciales acadmicos, investigativos y de comercializacin Independiente de la Sistema Operativo Windows Sistema Operativo Windows Plataforma. Requiere Mquina Virtual Java 1.3 o superior No apoya una metodologa UML, Booch y OOSE; todas OMT, UML, Booch, Martinespecfica ellas apoyadas en RUP. Odell, Coad-Yourdon. Soporta MVC.
Se ajusta a grandes proyectos de ingeniera de software en los que la confiabilidad y administracin de la informacin sean relevantes Funciona sobre una mquina virtual Java Refactoring, testing Framework, desarrollo de plantillas y patrones. Apoya el desarrollo de Web Aplication Wservice. utilizacin
POSEIDON www.gentleware.com Herramienta de Gentleware que genera cdigo en Java usando plantillas, realiza ingeniera inversa y sincronizacin de cdigo en Java. Se puede considerar la versin comercial y mejorada de ArgoUML. Apoya el proceso de documentacin de diagramas con UML.doc Sus caractersticas se apoyan en el desarrollo orientado a objetos para proyectos acadmicos, investigativos y de comercializacin Independiente de la Plataforma. Requiere Mquina Virtual Java 1.3 o superior No apoya una metodologa especfica. A travs del browser sugiere cierta organizacin de proyecto.
Mtricas
No hay mtricas
Apoya la mtricas
utilizacin
de Apoya la mtricas
utilizacin
de Apoya la mtricas
de No hay mtricas
Autogeneracin
Edicin de cdigo
Java
Java, J2EE, ANSI, C++, C++, C#, Java, Delphi, VB, VB, VB.NET, CORBA IDL, Java, HTML, C++ y XML. Visual C++, VB, CORBA VB.NET C++ Plugins para C#, CORBA IDL IDL, MIDL y XML Visual Basic, Java Add-in para otros editores Java Eclipse y JBuilder OCL para JAVA
Adems de las herramientas CASE ms comunes, comentadas en la tabla, cabe comentar la existencia de Hypermodel, una herramienta basada en Eclipse, que sirve para el diseo dirigido por modelos de esquemas XML y SOA. Es una herramienta de anlisis y diseo que trabaja bien en combinacin con otras herramientas UML2, como Rational, y ofrece modelos UML y diagramas de cualquier esquema XML, permitiendo transiciones automticas de uno a otro formato.
La adaptacin de este concepto a la ingeniera del software ha dado lugar a lo que conocemos como patrones software. Estos patrones capturan soluciones a situaciones de especial inters, bien por ser muy comunes, bien por ser especialmente complejas. En 1987, Ward Cunningham y Kent Beck usaron algunas de las ideas de Alexander y desarrollaron cinco patrones para el diseo de interfaces de usuario, que publicaron en un artculo llamado Using Pattern Languages for Object-Oriented Programs. En 1994 Erich Gamma, Richard Helm, John Vlissides y Ralph Jonson, conocidos por la Banda de los Cuatro, o Gang of Tour (GoF), publicaron uno de los libros ms influyentes de esta dcada: Design Patterns (Gamma et al., 1995), que populariz la idea de patrones. La reaccin a este libro fue universalmente positiva y se convirti en una obra fundamental en la materia. Muchos arquitectos reconocieron en las soluciones propuestas descripciones a las que ellos mismos haban llegado independientemente. Se organizaron grupos de estudio sobre patrones y aparecieron consultoras que proporcionaban aprendizaje sobre el tema. Los patrones describen un problema que ocurre repetidas veces en algn contexto determinado del proceso de desarrollo de software, y entregan una buena solucin ya probada. La utilizacin de patrones de software facilita las cuestiones que anteriormente se comentaban como causantes de la crisis del software y es un apoyo para crear software de calidad, ya que ayuda a disear software correctamente en menos tiempo, ayuda a construir problemas reutilizables y extensibles, y facilita la documentacin y la comunicacin con otros miembros del equipo de desarrollo. La llegada de los patrones al mundo de la construccin de sistemas software ha sido una aportacin fundamental, llevando a esta disciplina a abandonar su tradicional status de artesana y acercndola al nivel de sistematizacin y robustez del que gozan otras ingenieras. Parte del inters en los patrones viene de observar que los proyectos fracasan a pesar de que se utilizan las ltimas tecnologas cuando no hay soluciones comunes. Los patrones proporcionan una manera de organizar y nombrar esas soluciones comunes para hacer ms fcil su utilizacin a la gente. Documentar buenos patrones puede ser una tarea muy difcil. Las caractersticas que ha de tener un buen patrn, segn Coplien, son las siguientes:
Resuelve un problema: Los patrones capturan soluciones, no principios o estrategias abstractas. Es un concepto probado: Capturan soluciones, no teoras o especulaciones. La solucin no es obvia: Muchas tcnicas de resolucin de problemas, como los paradigmas o mtodos de diseo de software, intentan derivar soluciones desde principios bsicos. Los mejores patrones generan una solucin a un problema indirectamente, un enfoque necesario para los problemas de diseo ms difciles. Describe una relacin: Los patrones no describen mdulos sino estructuras y mecanismos. Tiene un componente humano significante: El software sirve a las personas. Los mejores patrones se aplican a la esttica y a las utilidades. Un lenguaje de patrones contiene un amplio conjunto de patrones, cuyas combinaciones conforman su gramtica. Un sistema de patrones mantiene unidos a sus patrones. Describe la forma en que se conectan y cmo se complementan entre ellos. Un sistema de patrones facilita el uso eficaz de los patrones en el desarrollo de software. Por lo tanto, podemos decir que un sistema de patrones es una coleccin de patrones, junto con las guas para su implementacin, combinacin y uso prctico en el desarrollo de software. Los patrones no son siempre la solucin adecuada o mejor para un problema. Si bien aaden flexibilidad, tambin aaden complejidad. Es por esto que se debe ser cuidadoso al momento de seleccionar patrones. Siempre hay que recordar que los patrones son un punto de partida y que no son dogmas incuestionables. El uso de patrones es beneficioso en la mayora de situaciones que se dan en cualquier proyecto medio complejo. An cuando, en un principio, el uso de determinados patrones de software pueda suponer una carga de trabajo adicional, la ganancia que se adquiere al incorporarlos en mantenimiento del software es favorable.
2.6.2 Antipatrones
Los antipatrones son soluciones negativas que presentan ms problemas que los que solucionan. Son una extensin natural a los patrones de diseo. Comprender los antipatrones provee el conocimiento para intentar evitarlos o recuperarse de ellos. El estudio de los antipatrones permite conocer los errores ms comunes relacionados con la industria del software. En 1996 Michael Akroyd formaliza el concepto de antipatrn en su presentacin (Akroyd, 1996) centrndose en identificar errores comunes cometidos en proyectos de software. Aunque la obra de referencia ms destacada en este campo es AntiPatterns: Refactoring Software, Architectures and Projects in Crisis (Brown et al., 1998). Un antipatrn no es una mala prctica, sino la reflexin consciente sobre esa mala prctica. Su conocimiento es til porque ayuda a reconocer, corregir, y prevenir un problema. Hay dos tipos de antipatrones: aquellos que describen una mala solucin a un problema y aquellos que describen como llegar a una solucin desde un problema. Segn James Coplien, un antipatrn es algo que se ve como una buena idea, pero que falla malamente cuando se la implementa. Un buen antipatrn explica por qu la solucin original parece atractiva, por qu se vuelve negativa y cmo recuperarse de los problemas que sta genera.
objetos, los patrones de colaboracin dejan claro los principios de cmo trabajar juntos para crear el modelo de objetos. Personas Actor Role Place Outer Place Item Specific Item Assembly Part Container Content Group Member Transaction Composite Transaction Line Item Follow-up Transaction
Tabla 2-3. Elementos de los patrones
Lugares
Cosas
Eventos
Los patrones de colaboracin no son patrones de diseo. Los patrones de diseo se enfocan en la eficiencia, la reusabilidad, y la conectabilidad, y mientras estas son las metas importantes, se preocupan ms de cmo efectuar una interaccin que de qu es lo que debe relacionar en ella. Los patrones de colaboracin describen el qu de una interaccin, los objetos involucrados y las reglas que rigen estas interacciones. Los patrones de colaboracin son, por definicin, patrones que involucran dos de los pattern players descritos en la Tabla 2-3. Surgen patrones mayores cuando dos colaboraciones se juntan para compartir un pattern player, o cuando las colaboraciones se combinan compartiendo un objeto que acta como varios pattern players. En la Figura 2-9 se muestran los patrones de colaboracin propuestos por (Nicola et al., 2001). A continuacin se describe cada patrn de colaboracin indicando lo que representa su pattern player y cuales son sus responsabilidades. Igual de importante son las reglas que rigen las interacciones entre dos pattern players, las cules pueden consultarse en este libro.
Algunos de los patrones de colaboracin descritos a continuacin son los mismos o se derivan de los patrones descritos en el libro Objects Models: Strategies, Patterns, & Aplications de Peter Coad, David North y Mark Mayfield (Coad et al., 1997). Aunque Coad utiliz una nomenclatura propia para definirlos y Nicola los adapt a UML, pudiendo ser, de esta forma, comprensibles mas fcilmente para todo el mundo, al describirse en un lenguaje estndar.
En el Apndice A se ha incluido la relacin de patrones descrita por (Nicolla et al, 2001) con ms detalle, y se recomienda, si se desea tener mas informacin acerca de ellos, consultar el libro de referencia.
Como ejemplo ms completo, se ver un poco ms a fondo el patrn Actor-Role, que es uno de los patrones propuestos. Un ejemplo de patrn de colaboracin que puede considerarse para verse en detalle, segn la descripcin que hizo (Nicola et al., 2001), es el patrn Actor-Role. El patrn actor role modela las entidades que interactan en contextos mltiples. Lo ms frecuente es aplicarlo a personas, pero tambin se puede aplicar a lugares y a cosas. Este patrn se presenta en la gente, el contexto y los principios de role que sugieren dos objetos, uno describe la persona u organizacin (actor), y el segundo describe la persona u organizacin dentro de un contexto (role). Para cada contexto, se crea un nuevo role. El patrn actor role mostrado en la figura, se usa para modelar personas, lugares o cosas que participan en uno o mas contextos. Un actor puede tener mltiples roles, pero solo uno de cada tipo. El actor es responsable de conocer informacin (propiedades, servicios y colaboraciones) que son relevantes a travs de todo el contexto. EJEMPLO- En una aplicacin de comercio electrnico se rastrean personas que pueden ser clientes, empleados o agentes de bolsa. Un role conoce solo a un actor, y sin este actor, el role no es vlido. Los cambios en el actor (nuevos valores de las caractersticas o nuevas colaboraciones) pueden afectar tambin al role. Esta dependencia que sigue un actor es porque un role es una descripcin individualizada de un actor, la apariencia de un actor dentro de un contexto. Si se disuelve la colaboracin, entonces el role debe de ser destruido, porque un actor diferente no puede reutilizar un role; por ejemplo, el papel de un cliente no puede transferirse de una persona a otra. Un role tambin conoce el tipo de actors con los que puede colaborar; algunos roles trabajan solamente con los actors de la organizacin. EJEMPLO- En una aplicacin de cadenas de suministros, una compaa puede ser a la vez un proveedor de gnero y servicios y un distribuidor al que compran los proveedores. A veces, un role tiene doble funcin como actor para otro role.
EJEMPLO- Un equipo de proyecto colabora en lnea. Dentro del equipo hay dos papeles especializados: administradores y presidentes del equipo. Una persona puede ser miembro del equipo. Por otro lado, al estar estos papeles adicionales por encima de los miembros del equipo, el papel de miembro de equipo se hace el actor para ellos.
IF you find yourself in CONTEXT for example EXAMPLES, with PROBLEM, entailing FORCES THEN for some REASONS, apply DESIGN FORM AND/OR RULE to construct SOLUTION leading to NEW CONTEXT and OTHER PATTERNS Tabla 2-4. Plantilla de un patrn segn Christopher Alexander
La mayora de los patrones se escriben utilizando un formulario regular. Si se comparan dos conjuntos de patrones, casi nunca dos autores utilizan el mismo formulario. Las diferentes formas de los patrones tienen cualidades particulares y cualquier autor de patrones tendr una forma de seleccin para trabajar con sus preferencias. A pesar de estar expresados de distintas formas, la mayora de patrones tienen elementos comunes: Los patrones son soluciones: El propsito de escribir un patrn es describir una solucin til y recurrente. El xito estar en que otros puedan duplicar esta solucin cuando sea apropiada. Todo lo dems es secundario, lo que significa que
independientemente de la forma que se elija para escribir un patrn, la solucin es lo que cuenta. Un nombre significativo: La eleccin de nombres es muy difcil. Dado que van a ser un vocabulario, es importante poner todos los esfuerzos en conseguir buenos nombres. El nombre debe ser corto y ajustado. Normalmente, un patrn est compuesto por el enunciado del problema y una o varias propuestas de solucin. Para formalizar estas soluciones, se necesita una notacin expresiva y rica en semntica que permita plasmar eficientemente los atributos de las mismas. Adems esta notacin ha de ser fcil de entender e interpretar. La notacin ms extendida es UML, que permite capturar con precisin las soluciones a problemas de todo tipo. Los patrones de (Gamma et al., 1995), que realmente lanz los patrones en el mundo del software, tienen una forma muy estructurada, rompiendo el patrn en muchos ttulos: Intencin, motivacin, aplicacin, estructura, participantes, colaboraciones, consecuencias, implementacin, cdigo de ejemplo, usos conocidos, y patrones relacionados
Cabe la posibilidad de utilizar la experiencia recurriendo al concepto de modelo y para ello podemos documentar habitualmente estos modelos en lenguajes UML e integrarlos en cualquiera de los procesos de desarrollo. En funcin de esa importancia que tiene la experiencia, lo que se pretende en este PFC, como se indica en la motivacin, es desarrollar un entorno en el que se pueda utilizar la experiencia, y concretamente, la experiencia relacionada con el modelado del dominio. Para ello se ha localizado la experiencia disponible, que es lo que se ha comentado en este captulo, en los patrones de colaboracin. Esto se abordar en el tercer captulo y ms tarde, en el cuarto captulo, se pondrn algunos casos de ejemplo. Sera interesante disponer de una notacin capaz de especificar la esencia de un patrn de forma clara, sencilla y precisa, as como de herramientas que faciliten la definicin, aplicacin semi o automtica y validacin de stos en diferentes contextos. Sin embargo, esta labor es compleja y no se ha avanzado apenas, ya que no est claro qu se debera especificar y cmo especificarlo. Siendo tan tiles los patrones de colaboracin, lamentablemente, no se ha encontrado ninguna herramienta CASE que recoja este tipo de patrones y permita incluirlos en el modelado del negocio.
En este captulo se analizan los requisitos necesarios que ha de tener la herramienta propuesta para aadir patrones de colaboracin en los diagramas de clases, para facilitar el modelado del dominio. Para la descripcin del trabajo realizado se hace un anlisis, un diseo y una implementacin de la herramienta desarrollada y, posteriormente, se describe el entorno resultante. Asimismo, y habindole otorgado una importancia singular a los patrones de colaboracin (Nicola et al., 2001) se comentar cmo se ha hecho la descripcin de dichos patrones para facilitar su utilizacin y la manera en que se han almacenado.
3.1 Introduccin
Se ha comprobado la importancia que tienen las primeras fases en el desarrollo del software, donde la recoleccin y modelado de los requisitos puede ser decisivo para que la posterior implementacin sea la esperada. Y teniendo en cuenta que utilizar la experiencia, recogida por los expertos, puede ser de suma utilidad para este modelado, este proyecto final de carrera propone el desarrollo de una herramienta que permita la utilizacin de patrones de colaboracin directamente sobre el modelado. Esta herramienta est especialmente indicada para facilitar los primeros modelados en el proceso de desarrollo, tiene propsito didctico y se considera til porque con ella, los estudiantes y futuros desarrolladores pueden tomar un primer contacto con el modelado de los requisitos, beneficindose de la utilizacin de experiencia que no es propia. Labor que, por un lado facilita este modelado, y por otro lado, hace que el usuario se acostumbre a adaptar especificaciones ya elaboradas en su trabajo, lo que es sumamente importante para el trabajo en equipo, pudiendo adaptar posteriormente estas partes a sus necesidades. Se ha pensado principalmente en los patrones de colaboracin (Nicola et al., 2001) porque son los utilizados en las primeras etapas del desarrollo, donde el aprendiz tiene probablemente menos habilidad para desenvolverse. Adicionalmente, se le permite aadir
nuevos patrones, propios o de otras colecciones, para hacerle lo ms fcil posible la tarea del modelado, que tanto cuesta llevar a cabo al principio a un ingeniero del software.
especificacin
de
la
aplicacin
En este apartado se contempla la especificacin de la herramienta propuesta para este proyecto. Para ello se hace un estudio de los requisitos funcionales y no funcionales que la herramienta ha de cumplir, por medio de diagramas de casos de uso y la correspondiente especificacin de cada uno de ellos, se muestra un modelado conceptual, con las clases que se utilizan para la implementacin y se comentan los paquetes de los que se compone la aplicacin. Por ltimo, se analizan los pasos que se han de dar para llevar a cabo algunas de las acciones ms significativas, a travs de los diagramas de secuencia correspondientes.
3.2.1 Objetivos
Se ha pensado desarrollar una herramienta de fcil utilizacin y muy intuitiva con la cual los estudiantes de ingeniera del software puedan familiarizarse con el modelado del dominio. Lo particular de esta aplicacin es que permitir a sus usuarios la inclusin directa de patrones en su modelo. Para ello, se facilita con la herramienta la coleccin de patrones de colaboracin de (Nicola et al, 2001), los cuales el usuario podr modificar en base a sus necesidades. La eleccin de este conjunto de patrones viene dada por su especial importancia, ya que se consideran muy tiles en esta parte del desarrollo y es muy comn identificar alguno de estos patrones en cualquier tipo de modelado. No obstante, el usuario podr modificar estos patrones o completar la coleccin facilitada con patrones propios o de otras colecciones en base a sus necesidades. Se ha tenido en cuenta que cuando al usuario, en este caso, al estudiante de informtica, se le presentan los patrones de colaboracin y este se habita con ellos, ser muy fcil para l identificarlos en cualquier diagrama de clases con el que trabaje, ya que son patrones muy comunes y fcilmente reconocibles. Los objetivos que se han tenido presentes en el desarrollo de la herramienta que se pretende implementar para este proyecto se dividen en dos partes.
Por un lado, esta herramienta trata de ser una primera toma de contacto para el usuario en cuanto al modelado de clases, por lo que ha de cumplir con la funcionalidad relacionada al respecto, como es la gestin y edicin de diagramas de clases. Habr que tener en cuenta que las clases constarn de mtodos y atributos, y que habr relaciones entre ellas. Dichas relaciones tendrn una clase origen y una clase destino y podrn ser de distintos tipos: dependencia, generalizacin, asociacin, agregacin o composicin. Por otro lado, se pretende que el usuario pueda incluir directamente patrones en su diagrama. De esta forma, el usuario no tendr que dibujar cada una de las clases que componen el patrn, sus caractersticas y las relaciones entre ellas, sino que todo esto estar almacenado en un fichero y se podr aadir el patrn completo al modelo. Cuando el usuario pretenda incorporar un patrn, el sistema le permitir sustituir, si lo desea, las clases del patrn por las que tenga ya definidas en el diagrama. En principio, la herramienta dispondr de la coleccin de patrones de colaboracin de (Nicola et al, 2001) en su repositorio, pero este podr ser completado por el usuario con nuevos patrones. Para ello se podr dibujar el nuevo patrn con el editor de clases y, una vez representadas sus clases, relaciones y propiedades, guardarlo en el repositorio como un patrn ms. En una primera aproximacin, la funcionalidad que deber ofrecer la herramienta ser la sealada en la Figura 3-1.
La herramienta, adems de lo comentado, tambin permitir acciones a las que se les ha dado menor importancia en este proyecto, para facilitar el uso al diseador. De esta manera, podr guardarse el diagrama de clases diseado, simplemente como diagrama de clases, o como un nuevo patrn, en cuyo caso se aadir al repositorio correspondiente de patrones disponibles y podr ser reutilizado posteriormente de manera conjunta a los patrones
de colaboracin que en principio se facilitan, y por los que especialmente se ha creado esta herramienta. De igual forma, podr abrirse un diagrama de clases definido y guardado anteriormente con formato UsiXML (Limbourg et al., 2004), podr verse el cdigo XML asociado al diagrama sobre el que se est trabajando, y tambin podr guardarse el diagrama como grfico, en formato jpg e imprimirlo.
Respecto a la gestin de patrones, habr un repositorio donde estn almacenados los patrones de colaboracin, en un principio, pero que el usuario podr completar aadiendo nuevos patrones a este repositorio, eliminar patrones de los existentes o modificarlos segn sus necesidades. Para aadir un nuevo patrn, el diseador ha de elaborar el correspondiente diagrama de clases y guardarlo en el repositorio, para as poder ser utilizado como patrn, junto con los ya establecidos patrones de colaboracin. Los patrones se guardarn en un fichero, por lo que para modificar un patrn determinado, habr que abrir ese fichero, cambiar lo que sea necesario y volver a guardarlo con el mismo nombre, para que se vea reformado. En lo referente a la elaboracin de diagramas de clases, al usuario se le permite aadir nuevas clases y relaciones, pudiendo para ello utilizar los patrones disponibles en el repositorio. En este caso, se aadiran las nuevas clases que forman el patrn. El usuario tendr la opcin de elegir si quiere que las clases del patrn coincidan con alguna de las que ya
tiene en su diagrama, y si es as, se sustituir y se aadirn nicamente las relaciones necesarias y las clases que no estn ya representadas. Adems, el usuario podr eliminar clases y relaciones del diagrama, al igual que consultarlas y modificarlas para representar su modelo. Una vista muy bsica de las actividades necesarias que se tendrn que llevar a cabo con la herramienta propuesta para la realizacin de un diagrama de clases, en general, viene representada en la Figura 3-3, aunque la aplicacin ofrecer mucha ms funcionalidad que para este diagrama no se ha tenido en cuenta.
A continuacin se especifican, mediante tablas y siguiendo la metodologa propuesta por Amador Durn (Durn & Bernrdez, 2002), los distintos casos de uso que va a tener la herramienta desarrollada en este proyecto para que cumpla con las especificaciones deseadas. Segn los autores, El objetivo de esta metodologa es la definicin de las tareas a realizar, los productos a
obtener y las tcnicas a emplear durante la actividad de elicitacin de requisitos de la fase de ingeniera de requisitos del desarrollo de software.
Caso de Uso Aadir Clase Descripcin En este caso de uso, el diseador dibuja una nueva clase en el diagrama. Esto podr hacerse de dos formas distintas: directamente, o a travs de un patrn. En el caso de que sea el diseador el que elija la opcin de aadir la clase, esta se incluir en el diagrama con un identificador que la har nica para poder ser reconocida en el diagrama posteriormente y solo se le asociar en principio este dato y un nombre, que ser igual que el identificador. La clase tambin podr ser aadida a travs de un patrn. Es decir, cuando se de el caso de uso Utilizar Patrn, directamente se aadirn las clases de las que se componga dicho patrn al diagrama. De esta forma, la clase tendr asociadas aquellas propiedades que tuviera la misma en el patrn. Precondiciones Flujo de eventos Flujo bsico El diseador selecciona la opcin de aadir una nueva clase en el diagrama. El diseador especifica el punto, dentro del rea de dibujo, donde quiere que aparezca la clase. La nueva clase aparece en el diagrama, con un nombre por defecto y un identificador nico en el diagrama para que pueda ser reconocida de forma unnime. Inicialmente, la nueva clase no tendr atributos ni mtodos asociados. Flujo alternativo El diseador utiliza un patrn del repositorio. Las clases que componen el patrn, y que el diseador no haya seleccionado para que sean sustituidas por alguna de las ya existentes, se aaden automticamente al diagrama. Las nuevas clases aadidas tendrn las mismas propiedades, atributos y mtodos que tuviera la clase a la que representan en el patrn. Poscondiciones La nueva clase dibujada queda registrada de forma unvoca mediante un identificador que el usuario no podr modificar. Opcionalmente, el diseador podr cambiar las caractersticas de la clase, aadir nuevos atributos o mtodos o asociar esta clase a otras mediante relaciones. Excepciones Relaciones Actores Diseador Inclusiones Extensiones Utilizar patrn
Tabla 3-1. Caso de uso Aadir Clase
Caso de Uso Eliminar Clase Descripcin En este caso de uso, el diseador selecciona una clase de las que hay en el diagrama sobre el que est trabajando y le indicar al sistema que la elimine de l, de forma que la clase deja de existir. Por consiguiente, las relaciones en las que la clase eliminada fuera origen o destino tambin se eliminarn. Precondiciones La clase tiene que estar en el diagrama para que pueda eliminarse. Flujo de eventos Flujo bsico El diseador selecciona una clase de su diagrama. El diseador selecciona la opcin de eliminar la clase. El sistema le pregunta si realmente desea eliminar la clase del diagrama. El diseador confirma que desea eliminar la clase. La clase desaparece del diagrama y tambin cualquier referencia a ella. Si haba relaciones en las que la clase era el origen o el destino, tambin se eliminarn junto con la clase. Flujo alternativo El diseador se ha equivocado al seleccionar la opcin de eliminar la clase. Cuando el sistema muestra el mensaje para que el usuario confirme si desea eliminar la clase, ste deniega la opcin. El mensaje desaparece y la clase sigue estando como antes. Poscondiciones La clase ha dejado de existir en el sistema, por lo que no podrn hacerse referencias a ella. Las relaciones en las que la clase estuviera implicada se eliminarn junto a la clase. Excepciones Relaciones Actores Diseador Inclusiones Extensiones Eliminar Relacin
Tabla 3-2. Caso de uso Eliminar Clase
Caso de Uso Consultar Clase Descripcin En este caso de uso, el diseador puede visualizar el identificador y nombre de la clase, al igual que los atributos y mtodos que tiene asociados. Puesto que la representacin grfica de una clase est representada con un cuadrado con tres secciones, dependiendo de la seccin que el usuario seleccione visualizar unos datos u otros. De esta manera, en la parte de arriba aparece el nombre de la clase, y las propiedades de esta son su nombre e identificador. En la parte central aparecen los atributos, y sus propiedades son identificador del atributo, nombre, tipo de dato (void, boolean, date, int, float, double, string), cardinalidad mnima, cardinalidad mxima y nivel de acceso del atributo (friendly, private, protected, public). En la parte de abajo aparecen los mtodos, y sus propiedades son identificador, nombre, valor devuelto (void, boolean, date, int, float, double, string), nivel de acceso del mtodo (friendly, private, protected, public) y parmetros que se le pasan.
Los identificadores de las clases, de los atributos y de los mtodos son valores que asigna el sistema automticamente a las clases, atributos o mtodos respectivamente en el momento en que estos se aaden al diagrama. Estos valores no podrn modificarse por el usuario. Precondiciones En la parte de arriba del cuadro que representa una clase est el nombre de la clase, en la parte central estn los atributos relacionados con esa clase, y en la parte de abajo estn los mtodos. Flujo de eventos Flujo bsico El diseador selecciona una de las clases del diagrama. Si el diseador selecciona la parte de arriba del cuadro que representa la clase, se mostrarn las propiedades de la clase. Si el diseador selecciona uno de los atributos, situados en la parte central del cuadro que representa la clase, se mostrarn las propiedades de ese atributo. Si el diseador selecciona uno de los mtodos, situados en la parte de abajo del cuadro que representa la clase, se mostrarn las propiedades del mtodo. Flujo alternativo Si no hay ningn atributo asignado a la clase seleccionada, en el momento en el que el diseador selecciona esta parte, se crea un nuevo atributo y se visualizarn sus propiedades, que inicialmente estarn todas en blanco, excepto el identificador, que ser el que le haya otorgado el sistema y no podr ser modificado. Si no hay ningn mtodo asignado a la clase seleccionada, en el momento en el que el diseador selecciona esta parte, se crea un nuevo mtodo y se visualizarn sus propiedades, que inicialmente estarn todas en blanco, excepto el identificador, que ser el que le haya otorgado el sistema y no podr ser modificado. Poscondiciones Excepciones Si no hay ningn atributo / mtodo asignado a la clase seleccionada, en el momento en el que el diseador selecciona esta parte, se crea un nuevo atributo / mtodo, y se abre la ventana donde aparecen sus propiedades, que inicialmente estarn todas en blanco y el diseador podr modificarlas en la ventana que se abre. De la misma manera, al igual que se puede seleccionar uno de los atributos o mtodos existentes para ver sus propiedades, tambin se puede aadir uno nuevo. Relaciones Actores Diseador Inclusiones Es utilizado por Modificar Clase Extensiones
Tabla 3-3. Caso de uso Consultar Clase
Caso de Uso Modificar Clase Descripcin En este caso de uso, el usuario puede modificar el nombre de la clase. Tambin podr aadir nuevos atributos y mtodos, eliminarlos y cambiar sus propiedades. Precondiciones
El diseador ha consultado la clase y tiene visibles las propiedades de la clase o de sus atributos o mtodos. Como este caso de uso tiene varias partes, dependiendo de la que se vaya a usar, debern darse unas precondiciones u otras. Si se desea modificar el nombre de la clase, se deber tener visible las caractersticas de la clase; si se desea cambiar las propiedades de un atributo, sern estas las que debern estar visibles; si lo que se desea variar son las propiedades de un mtodo, sern las propiedades de este las que debern estar a la vista. Si se desea aadir o eliminar un atributo o un mtodo, no ser necesario utilizar previamente el caso de uso consultar clase. Flujo de eventos Flujo bsico El diseador selecciona la propiedad que desea modificar de entre los campos existentes para la clase, atributo o mtodo seleccionado. Para las propiedades de la clase, el diseador podr cambiar el nombre a la clase, siendo necesario que ste sea nico en el diagrama de clases. Para las propiedades de los atributos, el diseador elegir una de las opciones posibles de entre la lista que se ofrece para los casos de tipo de dato y nivel de acceso del atributo. En el resto de propiedades escribir su valor en el campo correspondiente Para las propiedades de los mtodos, el diseador elegir una de las opciones posibles de entre la lista que se ofrece para los casos de tipo devuelto y nivel de acceso del mtodo. En el resto de propiedades escribir su valor en el campo correspondiente. Se guardarn automticamente los cambios realizados en cualquiera de las propiedades y se visualizarn en la representacin grfica de la clase. Flujo alternativo Si el usuario desea aadir un atributo a una clase, seleccionar la parte de los atributos, dentro de la clase. El sistema crear un nuevo atributo para esta clase, al que asignar un identificador nico y se mostrarn sus propiedades para que el usuario pueda dar los datos que le interesen. Si el usuario desea eliminar un atributo de la clase, seleccionar este atributo e indicar la opcin de eliminarlo de la clase. El atributo desaparecer con las caractersticas que conlleve. Si el usuario desea aadir un mtodo a una clase, seleccionar la parte de los mtodos, dentro de la clase. El sistema crear un nuevo mtodo para esta clase, al que asignar un identificador nico y se mostrarn sus propiedades para que el usuario pueda dar los datos que le interesen. Si el usuario desea eliminar un mtodo de la clase, seleccionar este mtodo e indicar la opcin de eliminarlo de la clase. El mtodo desaparecer con las caractersticas que conlleve.
Poscondiciones En el cuadro que representa la clase aparecen los nombres de la clase, de los atributos y de los mtodos, cada uno en su lugar correspondiente. Para cada atributo aparecer su nivel de acceso, su tipo del atributo y su nombre. Para cada mtodo aparecer su nivel de acceso, el tipo que devuelve este mtodo, su nombre y los parmetros que recibe entre parntesis y escritos de la misma manera que lo hizo el usuario. Cada atributo y cada mtodo estarn en una lnea distinta dentro de la parte correspondiente en la clase y terminarn con un punto y coma. Excepciones Los identificadores de clase, de atributo y de mtodo no pueden modificarse, son datos que asigna el sistema automticamente cuando se crean. A una clase no se le puede asignar un nombre que ya est siendo utilizado por otra clase en el diagrama. Si se intenta hacer esto, el sistema mostrar un mensaje de error y pedir que se d un nuevo nombre vlido para la clase. Relaciones Actores Diseador Inclusiones Utiliza Consultar Clase Extensiones
Tabla 3-4. Caso de uso Modificar Clase
Caso de Uso Aadir Relacin Descripcin En este caso de uso, el diseador establece una relacin entre dos de las clases existentes en el diagrama. Otra alternativa es que se establezca una relacin entre una misma clase, aunque este caso no tendr mucho sentido dependiendo del tipo de relacin, esta opcin est incluida entre las posibles y ser eleccin del diseador utilizarla o no. Las relaciones podrn ser de varios tipos: de dependencia, de generalizacin, de asociacin, de agregacin y de composicin. Cada tipo de relacin se representa de distinta manera, siguiendo el formato establecido en el UML. Precondiciones Las clases deben estar incluidas en el diagrama para poder aadir la relacin entre ellas. Flujo de eventos Flujo bsico El diseador selecciona el tipo de relacin que quiere aadir al diagrama. El diseador selecciona la primera clase, que ser el origen de la relacin. El diseador selecciona la segunda clase, que ser el destino de la relacin. La relacin entre las dos clases indicadas aparece dibujada en el diagrama. Flujo alternativo Si el diseador necesita una relacin dentro de la misma clase, selecciona dos veces la misma clase: como origen y como destino. Se incluye en el diagrama una relacin sobre la misma clase.
Poscondiciones La nueva relacin lleva asociado un identificador nico dentro del diagrama de clases que el sistema le asignar en el momento de su creacin. Adems de este, otros campos de las propiedades que tiene la relacin las fijar el sistema. Estos campos sern las clase origen y destino y el role de cada una de ellas. Sus valores no podrn ser modificados por el usuario. El diseador podr modificar el resto de valores que lleva asociados la relacin. Excepciones Entre dos clases determinadas podr haber varias relaciones siempre que estas sean de distinto tipo. De esta forma, si ya existe una relacin de un tipo concreto, y el usuario pretende establecer otra del mismo tipo, esto no ser posible y se mantendr nicamente la primera. Relaciones Actores Diseador Inclusiones Extensiones Utilizar Patrn
Tabla 3-5. Caso de uso Aadir Relacin
Caso de Uso Eliminar Relacin Descripcin En este caso de uso, el diseador elimina una relacin de las existentes en el diagrama de clases. Precondiciones Flujo de eventos Flujo bsico El diseador selecciona una determinada relacin representada en el diagrama de clases. El diseador selecciona la opcin de eliminar la relacin. El sistema le pregunta si realmente desea eliminar la relacin del diagrama. El diseador confirma que desea eliminar la relacin. La relacin desaparece del diagrama. Flujo alternativo El diseador deniega que desee eliminar la relacin. El mensaje desaparece y la clase sigue estando como antes. Poscondiciones La relacin deja de existir en el diagrama y las clases afectadas pierden la dependencia que las una. Excepciones Relaciones Actores Diseador Inclusiones Extensiones
Tabla 3-6. Caso de uso Eliminar Relacin
Caso de Uso Consultar Relacin Descripcin En este caso de uso, el diseador consulta los datos concernientes a la relacin marcada. Dependiendo del tipo de relacin que sea, las propiedades que se tendrn sern unas u otras. De esta manera, si la relacin es de asociacin, de agregacin o de composicin, los
datos que se podrn consultar asociados a la relacin son el identificador y nombre de la relacin, los identificadores de las clases origen y destino y los roles que tienen en la relacin y la cardinalidad en cada extremo de la relacin. Si la relacin es de dependencia, se podrn consultar el identificador y el nombre de la relacin, los identificadores de las clases origen y destino, el role de cada una de las clases y la cardinalidad en cada extremo de la relacin. Si la relacin es de generalizacin, solamente se guardarn los campos de identificador y nombre de la relacin, los identificadores de las clases origen y destino y el role que tiene la clase origen respecto a la destino. Precondiciones La relacin que se pretende consultar ha sido establecida con anterioridad en el diagrama. Flujo de eventos Flujo bsico El diseador selecciona la relacin de la cual desea consultar los datos. El diseador selecciona la opcin de visualizar las propiedades asociadas a la relacin marcada. El sistema muestra los campos asociados a las propiedades de la relacin elegida y sus valores correspondientes. Flujo alternativo Poscondiciones Excepciones Relaciones Actores Inclusiones Extensiones Diseador
Caso de Uso Modificar Relacin Descripcin En este caso de uso, el diseador completa o modifica los datos que lleva asociados una relacin previamente establecida en el diagrama de clases. De las propiedades que tenga, habr algunas que el usuario no pueda modificar y otras que si. Precondiciones La relacin ha sido establecida en el diagrama de clases y estn visibles las propiedades de esta. Flujo de eventos Flujo bsico El diseador selecciona la propiedad de la relacin que desea modificar. El diseador podr otorgar libremente un nombre a la relacin. El diseador podr dar un valor entre 0, 0..1, 0..n, 1, 1..n o n a la cardinalidad de las clases que son afectadas por la relacin.
Flujo alternativo En caso de que la relacin sea de generalizacin, el usuario solo podr modificar el nombre, ya que esta relacin no tendr definidos los campos de cardinalidad. Solo en caso de que la relacin sea de dependencia, adems de los campos comentados, el usuario podr modificar los campos de instanciacin para cada una de las clases roleAInstantiedCard, ya que esta propiedad es particular de este tipo de relacin. Poscondiciones Los valores otorgados a cada propiedad modificada se guardan automticamente. El nombre de la relacin aparecer en el diagrama, sobre la relacin y en la parte central. La multiplicidad de cada clase que une la relacin se ver a cada lado de la clase que afecta. Excepciones Los campos de identificador de la relacin, las clases origen y destino y el role de cada una de ellas no pueden ser modificados por el usuario ya que los establece el sistema en funcin de la manera en que el diseador ha creado la relacin en el diagrama. Relaciones Actores Diseador Inclusiones Extensiones
Tabla 3-8. Caso de uso Modificar Relacin
Caso de Uso Utilizar Patrn Descripcin En este caso de uso, el diseador utiliza uno de los patrones existentes para aadirlo en su diagrama de clases. Para ello buscar el nombre del patrn entre la lista que tendr de los disponibles en el rbol del repositorio y lo arrastrar hasta el rea de dibujo. El sistema le dar opcin a sustituir las clases de las que se compone el patrn por las que ya tiene representadas en su diagrama. En este caso, la clase que se sustituye pasar a tener las caractersticas y relaciones asociadas que tiene la del patrn. En caso de que no sustituya una clase, se aadir una nueva al diagrama, con las caractersticas que tenga en el patrn. En este caso de uso se aaden al diagrama tanto las clases como las relaciones implicadas en el patrn seleccionado. Precondiciones
Flujo de eventos Flujo bsico El diseador selecciona el nombre del patrn que quiere utilizar entre los que hay en el rbol, que sern los que estn disponibles en el repositorio de patrones. El diseador arrastra el patrn a su diagrama de clases. Si el diagrama ya tiene alguna clase representada, el sistema mostrar en un mensaje cada una de las clases por las que est compuesto el patrn y permite, para cada una de ellas, asociarla con alguna de las clases que hay en el diagrama de clases en ese momento. El diseador selecciona una clase de las ya existentes para ser sustituida por la del patrn. El diseador acepta y se cierra la ventana. El patrn se dibuja en el rea del diagrama. De forma similar a como estaban en el patrn, se aadirn las clases y relaciones entre ellas. Las clases sustituidas tendrn las relaciones que tenan las originales en el patrn. Las clases que no han sido sustituidas, adems de las relaciones en las que estn implicadas, incluirn las mismas propiedades, atributos y mtodos que las del patrn. Flujo alternativo Si antes de arrastrar el patrn, no haba ninguna clase en el diagrama, no se podr sustituir ninguna clase, por lo que no se mostrar el mensaje intermedio. Si en lugar de aceptar, se cancela o cierra la ventana intermedia, no se sustituir ninguna clase del patrn por las existentes, independientemente de lo que el diseador hubiera seleccionado. Poscondiciones Excepciones Relaciones Actores Inclusiones Extensiones Diseador
Tabla 3-9. Caso de uso Utilizar Patrn
Caso de Uso Aadir Patrn Descripcin En este caso de uso, el usuario aade un nuevo patrn al repositorio para que luego pueda utilizarlo al igual que los patrones de colaboracin proporcionados. El patrn aadido puede pertenecer a una coleccin reconocida o ser propio del diseador. Para aadir el patrn, el diseador dibujar el diagrama de clases que lo representa y lo guardar en el directorio donde est el repositorio de los patrones. Precondiciones
Flujo de eventos Flujo bsico El diseador dibuja el diagrama de clases correspondiente al patrn que quiere aadir, utilizando para ello los casos de uso relativos a la elaboracin de diagramas de clases. Una vez completo el diagrama, el diseador selecciona la opcin de guardar el proyecto. Se abre una ventana donde el usuario ha de seleccionar el directorio donde quiere guardarlo que, en este caso, tendr que ser donde estn todos los patrones. El diseador da un nombre al patrn y lo guarda. El diseador cierra la ventana. Flujo alternativo Poscondiciones El diagrama guardado en el directorio donde estn los patrones podr ser aadido, como otro patrn ms, en el diagrama de clases. Excepciones Relaciones Actores Diseador Inclusiones Extensiones
Tabla 3-10. Caso de uso Aadir Patrn
Caso de Uso Eliminar Patrn Descripcin En este caso de uso, el diseador elimina uno de los patrones existentes del repositorio. Precondiciones Este caso de uso se lleva a cabo sin necesidad de estar ejecutndose la aplicacin, ya que su eliminacin se hace desde el directorio donde est ubicado su fichero asociado. Flujo de eventos Flujo bsico El usuario va al directorio donde estn guardados todos los patrones. El usuario selecciona el fichero correspondiente al patrn que desea eliminar y lo elimina. Flujo alternativo Poscondiciones El patrn eliminado ya no saldr en el rbol de patrones disponibles ni podr ser utilizado por la aplicacin. Excepciones Relaciones Actores Diseador Inclusiones Extensiones
Tabla 3-11. Caso de uso Eliminar Patrn
Caso de Uso Modificar Patrn Descripcin En este caso de uso, el diseador modifica un patrn existente en el repositorio.
Precondiciones El patrn est incluido con anterioridad en el repositorio de los patrones disponibles. Flujo de eventos Flujo bsico El diagrama de clases utilizado est vaco. El diseador realiza el caso de uso Utilizar Patrn con el patrn que desea modificar. El diseador modifica el diagrama de clases asociado al patrn utilizando para ello los casos de uso necesarios relativos a la elaboracin de diagramas de clases. Una vez completo el diagrama, el diseador selecciona la opcin de guardar el proyecto. Se abre una ventana donde el usuario ha de seleccionar la carpeta donde quiere guardarlo que, en este caso, tendr que ser donde estn todos los patrones. El diseador selecciona el patrn que abri anteriormente para modificarlo y lo guarda. El diseador cierra la ventana. Flujo alternativo Para abrir el diagrama de clases correspondiente al patrn que se quiere modificar, tambin se puede abrir directamente: El diseador selecciona la opcin de abrir un diagrama de clases existente. El diseador indica el directorio donde est el repositorio de los patrones y el nombre del fichero que tiene el patrn que desea modificar y abre su diagrama de clases asociado. A continuacin, el diseador puede modificar el diagrama de clases y seguir con el flujo bsico de ejecucin para terminar de modificar el patrn. Poscondiciones El patrn con un determinado nombre que estar disponible ser el que tenga los ltimos cambios, es decir, al guardarlo con el mismo nombre. La versin anterior del patrn se pierde y es sobrescrito por el diagrama modificado. Excepciones Relaciones Actores Inclusiones Extensiones Diseador
Para la especificacin de los requisitos que se acaba de realizar se ha tenido en cuenta nicamente la funcionalidad que se considera ms importante de la herramienta y los casos de uso principales. Como se ha comentado anteriormente, la herramienta dispondr de cierta funcionalidad adicional para facilitar su uso al diseador, pero que no se ha considerado en
esta especificacin por tratarse de casos de uso que no reflejan la esencia que se quiere resaltar de esta aplicacin, como es lo relacionado con la gestin de los patrones y la elaboracin de diagramas de clases.
desee incorporar al diagrama. En estos dos casos, el sistema mostrar un mensaje de error avisando de la excepcin producida. Otra caracterstica que se tendr en cuenta en la implementacin de la herramienta es que no se permita duplicar los nombres de las clases. Para cumplir con este objetivo se llevar un control de esta propiedad de las clases a lo largo de todo su uso. Se controlar en el momento de abrir un nuevo diagrama y cuando se modifique el nombre de alguna de las clases ya existentes. En el caso de que se arrastre un patrn y ste incluya una clase cuyo nombre ya est siendo utilizado en alguna de las clases que consten en el diagrama, al nombre de la clase que todava no ha sido incorporada se le aadir, directamente, un nmero que la haga nica. De manera que cuando el patrn se represente en el diagrama ya est correctamente, hacindose de forma transparente al usuario. Cuando sea el usuario el que intente modificar el nombre a alguna de las clases que ya existen, y el nuevo nombre coincida con otro ya utilizado, el sistema le avisar a travs de un mensaje indicando la situacin y pidiendo al usuario que de otro nombre que sea vlido para la clase, porque el indicado no lo es. En el caso de que el usuario no lo haga, la clase quedar con el nombre que tena anteriormente, que ser el asignado inicialmente por el sistema, si el usuario no lo ha modificado anteriormente. Asimismo, cuando el usuario aada una clase al diagrama, esta clase tendr inicialmente el mismo valor para su nombre que para su identificador, por lo que no se permitir asignarle un nombre que empiece por idc y no se corresponda con su identificador. Para ello cabe indicar que el identificador asociado a una clase nueva ser idc seguido de un nmero que ir incrementando en funcin de las clases que existan en el diagrama. Para comprobar los nombres no se distinguir entre maysculas y minsculas y se eliminarn los espacios antes del primer carcter del nombre y despus del ltimo. Las clases, al igual que los atributos y mtodos que estas tengan, llevarn asignados un identificador, que el sistema les proporcionar desde el momento de su creacin hasta que se eliminen del diagrama. Estos identificadores sern los que se tendrn en cuenta a la hora de trabajar con estos elementos y no podrn ser modificados en ningn momento.
El identificador de una clase ser una cadena de caracteres que comience por idc, seguido del nmero de clases que se hayan aadido en el diagrama en el momento de su creacin. En el momento de aadir una nueva clase al diagrama, el nombre tendr el mismo valor que su identificador, hasta que el usuario lo modifique. As mismo, el identificador de un atributo ser una cadena de caracteres que comience por el identificador de la clase a la que pertenece, seguido de una a y el nmero de atributos que se le hayan incluido a la clase hasta ese momento. De igual forma ser asignado el identificador de un mtodo, con la excepcin de que en lugar de una a despus del identificador de la clase, en este caso llevar una m, para distinguir entre atributos y mtodos. Si una clase hubiese sido incluida y posteriormente se hubiera borrado, su identificador ya no volvera a utilizarse. Lo mismo pasara con los atributos y los mtodos, que los identificadores no se repetirn en el caso de que se eliminen de la clase. De forma similar, las relaciones tambin llevarn asociado un identificador que el sistema les proporciona de forma automtica en el momento de su inclusin en el diagrama. En este caso ser un valor que comenzar por idr, seguido del nmero de relaciones que se han aadido en el diagrama hasta ese momento. Igual que en los casos anteriores, los identificadores no se repetirn, ni en el caso de que se elimine la relacin del diagrama. Adems del identificador, el sistema dar valores a las clases origen y destino de la relacin, en funcin de las clases que el usuario haya unido, y a los roles de estas, en funcin del tipo de relacin del que se trate. Por otro lado, cuando el usuario seleccione la opcin de eliminar una clase o una relacin, el sistema mostrar un mensaje que le preguntar si realmente quiere eliminarla del diagrama, pudiendo el usuario revocar la seleccin, sin que realmente llegue a eliminarse, o seguir adelante y borrarla del diagrama. Los mensajes que el sistema muestra al usuario con informacin o avisos estarn convenientemente cuidados y se mostrarn en el momento justo que el usuario los necesite. Adems, se tratar de que el sistema sea eficiente y haga lo que debe de hacer correctamente.
Un diseo ms elaborado de este modelado conceptual, que ser la base para la elaboracin del sistema, se representa mediante el diagrama de la Figura 3-5, en la cul se ha incorporado un nuevo mdulo a los ya mencionados, que est relacionado con el editor de clases de la aplicacin, y es el encargado de ofrecer unas caractersticas y un cdigo XML para sus elementos. Por otro lado, relacionado con la gestin de patrones habr un repositorio con los patrones de colaboracin, en un principio. Aunque, como se ha comentado en otras ocasiones, este repositorio puede ser modificado por el usuario, hacindolo ms afn a sus necesidades.
Para entender el diagrama de clases de la aplicacin, se observar por separado el conjunto de las clases pertenecientes a cada uno de los distintos paquetes, analizando as en detalle la funcionalidad que aporta cada paquete y las clases por las que est compuesto cada uno de ellos.
podrn desplegar nuevas clases MyInternalFrame, lo cul permitir trabajar sobre ms de un diagrama de clases a la vez. MyInternalFrame: Esta clase estar compuesta por dos ventanas internas. Una de ellas, ClassFrame, ser la que se utilizar para realizar el diagrama de las clases y la otra, JTreeFrame, ser el rbol relativo a los patrones que hay disponibles para su utilizacin en el diagrama. JTreeFrame: Esta clase es la que corresponde al rbol de los patrones y sobre ella se sostiene lo relativo a la gestin de patrones. ClassFrame: Esta clase sirve de base para todo el soporte en lo referente a la edicin de clases en el diagrama.
TransferableDataItem: Es la clase que permite arrastrar un patrn al diagrama de clases. Para ello se selecciona el nombre del patrn del rbol de patrones y lo que se arrastra es el fichero al que corresponde ese patrn, de manera que al dibujar el patrn en el diagrama, acceder al fichero al que se hace referencia, a travs del patrn del rbol, y dibujar lo que se indique en el fichero. Mensaje: Esta clase relaciona el paquete Gestor de Patrones con el paquete Editor de Clases. Para ello toma como referencia las clases que hay dentro del fichero que se est arrastrando a la paleta de dibujo y permite sustituirlas por las clases que ya hay dibujadas en esta paleta. Si el usuario decide sustituir una de las del patrn por una de las existentes, en el momento de dibujar el patrn se har el cambio.
Atributos: Se encarga de la gestin de los atributos dentro de las clases que estn incluidas en el diagrama. As llevar un control del nmero de atributos que tiene asignada una clase, sus nombres y tipo. Mtodos: De forma similar a la anterior, es la encargada de gestionar los atributos que hay en las clases. Relacin: Controla el dibujado y la informacin de las relaciones en el diagrama. Origen y Destino: Hace referencia a las clases que actan como origen y destino, respectivamente, dentro de las propiedades de las relaciones. Generalizacin, AdHoc y Agregacin: Corresponden a las distintas relaciones que se permiten en el diagrama de clases y cada una de ellas tiene las propiedades que le afectan asociadas.
cada uno de los casos se analizar a continuacin las acciones que habr que realizar para incorporar el patrn al panel en el que las clases estn siendo dibujadas.
En el caso de insertar un patrn sustituyendo sus clases, la situacin es que se tienen ya dibujadas una serie de clases y posibles relaciones en el diagrama. Se selecciona un patrn para arrastrarlo al panel, pero las clases que se quieren del patrn ya estn en el diagrama de clases, de forma que se quiere sustituir alguna de las clases del patrn por otras de las que ya se han incluido anteriormente. De esta forma, el diagrama de secuencia correspondiente a este escenario, sera el representado en la Figura 3-6.
En el caso de insertar un patrn sin sustituir sus clases, se arrastra un patrn desde el rbol hasta el panel de dibujo y se quiere que las clases sean las mismas que tiene el patrn. Es decir, se pretende dejar las clases que ya hay dibujadas como estn y aadir el patrn seleccionado tal cual. Para este escenario, las acciones que habra que llevar a cabo son las representadas en el diagrama de secuencia de la Figura 3-7.
Figura 3-7. Diagrama de secuencia para insertar patrn sin sustituir clases
En este diagrama se ha tenido en cuenta que ya haba alguna clase en el panel de dibujo cuando se ha arrastrado el patrn. De no ser as, no aparecera el mensaje que se muestra al usuario para que pueda sustituir las clases del patrn por las ya representadas. Las dems acciones que se llevaran a cabo son las que se representan en este diagrama, con la nica
excepcin que se ha comentado. Cuando se reconoce que no hay clases dibujadas en el diagrama, directamente se dibuja el patrn que el diseador ha arrastrado hasta el panel.
de
los
patrones
de
Se ha querido proporcionar un repositorio donde tener almacenados los patrones de colaboracin, en un principio, y, posteriormente, todos los patrones que el usuario aada o modifique. Este repositorio estar en el directorio patrones que acompaa al ejecutable facilitado en este proyecto final de carrera. Los patrones se almacenaran en ficheros, dentro del directorio especificado, utilizando para su especificacin el lenguaje UsiXML. UsiXML (User Interface eXtensible Markup Language) (http://www.usixml.org) es un lenguaje de descripcin de interfaces de usuario, es declarativo y captura la esencia de lo que es una interfaz de usuario independiente de las caractersticas fsicas. Est basado en XML. Puede describir interfaces para mltiples contextos de uso, con independencia del dispositivo, de la plataforma y de la modalidad de interaccin. Est basado en los principios de modelado MDA. Adems, UsiXML permite la reutilizacin de las especificaciones de interfaz de usuario realizadas con anterioridad. Por otro lado, XML (eXtensible Markup Language) (http://www.w3.org/XML/) es un metalenguaje extensible de etiquetas desarrollado por el World Wide Web Consortium (W3C). Es una simplificacin y adaptacin del SGML y permite definir la gramtica de lenguajes especficos. Por lo tanto, XML es una manera de definir lenguajes para diferentes necesidades. XML, adems de su aplicacin en Internet, se propone como un estndar para el intercambio de informacin estructurada entre diferentes plataformas. XML es una tecnologa sencilla que tiene a su alrededor otras que la complementan y la hacen mucho ms grande y con unas posibilidades mucho mayores. Tiene un papel muy importante en la actualidad ya que permite la compatibilidad entre sistemas para compartir la informacin de una manera segura, fiable y fcil.
Por todas estas razones se he elegido este lenguaje para la definicin de los patrones. Para la especificacin de los patrones en UsiXML se ha tenido en cuenta la estructura para el modelado del dominio, donde se representan las clases y relaciones. El diseo que se ha seguido es el recogido en la Figura 3-8, donde se muestran, adems de las clases, los atributos y los mtodos que cada una de ellas tendr asociados y las relaciones que pueden incluirse entre ellas. Se observa que este modelo es similar al utilizado para la representacin de diagramas de clases del proyecto, hecho que es lgico si se tiene en cuenta que los patrones son, en definitiva, diagramas de clases que podemos disear directamente desde esta herramienta.
En este modelo se han incluido las propiedades de cada una de las clases. Estas son las que se mostrarn en el caso que el usuario edite una clase, un atributo, un mtodo, etc. Adems, estas propiedades tambin se vern reflejadas en el cdigo XML asociado al diagrama, para poder posteriormente recuperar el diagrama a travs de este cdigo.
Como ejemplo, se ver el patrn Actor-Role, descrito en el captulo anterior. Se recuerda que la apariencia que tiene este patrn es la reflejada en la Figura 3-9.
En la descripcin de los patrones no se han aadido atributos ni mtodos adicionales a las clases para que el usuario pueda adaptarlos a sus necesidades, aadiendo l mismo los que crea ms convenientes.
La interfaz principal de la aplicacin est compuesta por: una barra de ttulo, donde aparece el nombre de la aplicacin una barra de mens, compuesta por File, Edit, Window y Help una ventana interna, donde aparecen los patrones que hay disponibles para poder ser reutilizados otra ventana interna donde puede disearse el diagrama de clases. Tanto la ventana principal como cada una de las dos ventanas internas pueden minimizarse, maximizarse y cerrarse. Estas opciones vienen sealadas con un dibujo intuitivo en el botn correspondiente Ms adelante se analizar en detalle cada una de las distintas partes de las que se compone esta aplicacin, explicando cmo funcionan y las posibilidades que ofrecen. En la Figura 3-10 puede observarse la apariencia que tiene la ventana principal inicialmente, y en ella se diferencian claramente las partes que la componen, que se comentaban anteriormente.
Cabe destacar de esta interfaz su sencillez. En la parte izquierda se observa el rbol de los patrones que hay disponibles en el momento. En un principio solamente contendr los patrones de colaboracin, de la coleccin de (Nicola et al., 2001), aunque en un futuro esta lista de patrones puede completarse y hacerse ms compleja con los patrones que el diseador incluya en el repositorio, en el caso de que lo estime oportuno, y dependiendo de sus necesidades en el momento de representar los diagramas de clases en el panel. En la parte derecha se observa el panel de dibujo donde el diseador crear su diagrama. En la parte superior dispone de una barra de herramientas a travs de la cul podr ir diseando el diagrama, con la introduccin de las clases o relaciones que necesite, sin ms que seleccionar la clase o relacin con el ratn, y situar posteriormente el puntero en la zona del panel donde quiere aadir la figura. La barra de herramientas del panel consta de unos iconos bastante intuitivos, cuya funcionalidad se describe brevemente al pasar el ratn por sus iconos. En la tabla 3-14 se identifican estos iconos y se da una breve explicacin de su funcionalidad.
Figura
Nombre
Descripcin Puntero en modo seleccin Selecciona la clase para aadir al diagrama Selecciona la relacin de dependencia Selecciona la relacin de generalizacin Selecciona la relacin de asociacin Selecciona la relacin de agregacin Selecciona la relacin de composicin
Estos iconos se utilizan para el diseo del diagrama. Al posicionar el puntero del ratn sobre estos iconos, aparece una breve explicacin emergente de este botn, que nos indica su
significado. Adems, se indica una combinacin de teclas cuyo uso tiene la misma accin que si se pulsa este botn. El modelado del diagrama de clases se hace segn el UML, especificado en http://www.uml.org/. De esta manera, en un diagrama de clases podr haber clases y relaciones de los distintos tipos que se han comentado. Para aadir una clase al diagrama, habr que seleccionar el botn class y a continuacin indicar con el ratn el punto del diagrama sobre el que quiere representarse la clase. Inicialmente esta nueva clase tendr el mismo nombre que el identificador que le pertenezca. Este identificador ser un nombre que comience por idc, seguido del nmero de clases que se han aadido al diagrama hasta el momento en que se ha puesto esta clase. La representacin de una clase ser un recuadro que consta de tres partes: en la parte superior se ver el nombre de la clase. Adems, si una clase determinada estaba en el diagrama y, al arrastrar un nuevo patrn, se ha sustituido esta clase por una de las del patrn, debajo del nombre de la clase aparecer entre los signos << y >> el estereotipo, o lo que es lo mismo, el nombre de la clase del patrn que sustituye. En la parte central aparecern los atributos que tiene asociados la clase. Cada atributo aparecer en una lnea distinta, indicando el modo de acceso, el tipo y el nombre de cada uno y finalizando con punto y coma. En la parte inferior de la clase se mostrarn los mtodos que tenga asociados la clase, de modo que se ver el modo de acceso, el tipo que devuelve el mtodo y su nombre, seguido de los parmetros que haya que pasrsele, entre parntesis, y punto y coma. Igual que en el caso de los atributos, los mtodos se mostrarn cada uno en una lnea distinta dentro de la clase.
Para modificar el nombre de una clase, se har clic con botn derecho del ratn sobre la parte de arriba en la representacin de la clase en el diagrama, donde aparece el nombre. Aparecer un men con varias opciones donde habr que elegir edit class para que se abra una ventana donde se indican las caractersticas de la clase, que sern identificador y nombre y ste ltimo valor podr modificarse si se desea. En la Figura 3-12 se observa el men de las acciones que pueden ejecutarse sobre una clase y la ventana que aparece cuando la editamos. En esta ventana hay una tabla donde en el nico campo que el usuario podr escribir para modificarlo ser en el nombre de la clase.
El usuario no podr dar a la clase un nombre que empiece por las letras idc, para que no haya conflictos con los nombres al crear nuevas clases. En el caso de que el usuario intente dar un nombre as, el sistema mostrar un mensaje indicando que esto no puede hacerse. Asimismo, el nombre de la clase no se ver modificado a no ser que el usuario le asigne un nombre vlido, y que no est repetido en el diagrama.
En la Figura 3-13, hay una clase en el diagrama a la que se le intenta cambiar el nombre por idc1. En este caso, el sistema muestra el mensaje de error que aparece en la figura y sigue abierta la ventana de las propiedades de la clase, donde el usuario podr dar un nombre vlido a la clase. En el caso de que se cierre esta ventana sin que el nombre que se le haya indicado sea vlido, la clase seguir llamndose idc0.
Por otro lado, si se intenta modificar el nombre de una clase, asignndole otro nombre que ya est siendo utilizado por alguna clase en el diagrama, el sistema le informar de la situacin mediante un mensaje y no se lo permitir. Por ejemplo, si hay una clase en el diagrama con nombre usuario y se intenta cambiar el nombre de una segunda clase para asignarle este mismo nombre, el sistema sacar por pantalla el mensaje mostrado en la Figura 3-14 y dejar abierta la ventana de las propiedades para que lo intente con otro nombre vlido. De no ser as, se mantendr el nombre que tena asignado la clase antes de intentar cambirselo. Para comprobar que no haya nombres repetidos, no se tendr en cuenta si est en maysculas o minsculas o si hay espacios al principio o al final del nombre.
Por otro lado, si se selecciona la opcin de eliminar la clase, el sistema preguntar al usuario si realmente quiere seguir adelante con esa opcin porque de ser as no solo se eliminar la clase, sino que tambin se eliminarn del diagrama las relaciones que tengan a esta clase como origen o como destino. Adems, no habr forma de recuperarlas una vez eliminadas, sin otra opcin que volver a incorporarlas al diagrama desde el principio.
Para aadir un nuevo atributo a al clase seleccionada, se har clic con el botn izquierdo del ratn sobre el dibujo que aparece en la parte central, destinada a los atributos, en la clase. Se trata del dibujo marcado en la Figura 3.16. De esta manera, se abre una ventana que permite otorgar de una serie de propiedades al atributo.
Entre las propiedades del atributo est un identificador, que la aplicacin asigna automticamente en el momento de aadir un nuevo atributo a la clase, y cuyo valor no puede modificarse por el usuario. Este valor ser un string que empieza por el identificador de la clase, seguido de una a y el nmero de atributos que se le han aadido a la clase hasta el momento. Adems, cada atributo tendr: un nombre, que ser una cadena que el usuario podr darle libremente el tipo de dato del atributo, para lo que el usuario podr darle un valor entre void, boolean, date, int, float, double, string, o cada uno de los nombres que tienen las clases que existen en el diagrama cardinalidad mnima del atributo, donde el usuario podr darle un valor entre 0, 0..1, 0..n, 1, 1..n, n o dejarlo sin especificar cardinalidad mxima del atributo, donde, al igual que en caso anterior, el usuario podr darle cualquiera de esos valores el modo de acceso del atributo, donde el usuario podr elegir un valor para cada atributo entre friendly, private, protected y public En caso de que se desee modificar alguno de los valores para las propiedades de un atributo ya definido, habr dos formas de hacerlo: bien pinchando con el botn izquierdo del
ratn sobre ese atributo en lugar del dibujo que se ha indicado antes, o bien pinchando con el botn derecho sobre el atributo, entonces saldr un men donde habr que seleccionar la opcin edit atributte. De esta manera, aparecer nuevamente la ventana que acaba de describirse, de las propiedades del atributo, con los valores dados hasta el momento, y donde podrn cambiar las propiedades del atributo seleccionado.
Si lo que se quiere aadir es un nuevo mtodo a una clase, se har clic con el botn izquierdo del ratn sobre el dibujo que aparece en la parte inferior, destinada a los mtodos, dentro de la clase a la que se le desee incorporar el nuevo mtodo. De forma semejante al caso de los atributos, se abre una ventana que permite dar valores a las propiedades del mtodo.
La primera propiedad de un mtodo, cuyo valor asigna la aplicacin automticamente en el momento de aadirlo, es el identificador. Su valor es un string que empieza por el identificador de la clase, seguido de una m y el nmero de mtodos que se han aadido a la clase anteriormente, y no podr ser modificado. Conjuntamente, cada mtodo tendr otras propiedades que el usuario podr modificar: el nombre del mtodo, para el cul, el usuario podr asignar cualquier cadena
el tipo del valor que devuelve el mtodo, donde el usuario podr seleccionar el tipo que desee entre void, boolean, date, int, float, double, string, y cada uno de los nombres que les ha dado a las clases que ha creado en el diagrama el modo de acceso del mtodo, donde el usuario podr elegir un valor entre friendly, private, protected y public parmetros: este campo lo podr rellenar el usuario como desee y en la clases se ver este valor entre parntesis, al lado del nombre del mtodo Para modificar los valores de las propiedades de un mtodo, se har clic con el botn izquierdo del ratn sobre el mtodo deseado, en lugar del dibujo que se ha comentado, con el fin de abrir nuevamente la ventana de las propiedades del mtodo con los valores dados hasta ese momento. Otra forma de acceder a esta ventana es haciendo clic con el botn derecho del ratn sobre el mtodo deseado, y seleccionando edit method del men que se despliega. Aqu podrn modificarse estos valores nuevamente.
La segunda opcin de las posibles que aparecen al hacer clic con el botn derecho del ratn sobre un atributo o sobre un mtodo, es delete attribute o delete method, respectivamente. Si el usuario selecciona esta opcin, el sistema mostrar un mensaje informativo, similar al que abrir cuando se selecciona la opcin de eliminar una clase, para que se confirme si realmente se desea eliminar el atributo o mtodo seleccionado. En este caso tendr dos opciones: confirmar o denegar. Si se pulsa si, se borrar el atributo o mtodo seleccionado y si se pulsa no, se quedar como estaba. Las siguientes opciones que aparecen al hacer clic con el botn derecho del ratn sobre una clase, independientemente de la parte sobre la que se site, afectan a la clase y no solo a los atributos o los mtodos de esta. Estas opciones son para cambiar el color de una clase, y para moverla al frente o al fondo, si est solapada con otras.
Las relaciones entre las clases pueden ser de dependencia, de generalizacin, de asociacin, de agregacin o de composicin. Segn se trate de un tipo relacin u otro, tendr un aspecto distinto. En los botones que aaden las relaciones al diagrama aparece esta apariencia de cada una de las relaciones para que el usuario pueda seleccionarla a la hora de incorporarla en el panel. Para aadir una relacin al diagrama, primero se seleccionar el botn perteneciente al tipo de relacin que se quiere, en la barra de herramientas situada en la parte superior del panel de dibujo. A continuacin se marcar con el ratn la clase que se quiere como origen de la relacin y despus la clase que se quiere que sea el destino. De esta manera, se dibuja la relacin entre estas dos clases. En el momento en que se crea una relacin, el sistema le asocia un identificador que el usuario no podr modificar. Este dato ser un string que empezar por idr, seguido del nmero de relaciones que se han aadido al diagrama antes que ella. Todas las relaciones tienen asociados una serie de datos que son comunes independientemente del tipo que tengan. Estos datos comunes son, adems del identificador, los siguientes: nombre de la relacin: es un dato de tipo string que podr proporcionar el usuario. Su valor aparecer en el centro de la lnea que representa grficamente la relacin en el diagrama. identificador de la clase origen de la relacin. Su valor lo asigna directamente la aplicacin a la relacin cuando esta se crea, tendiendo en cuenta la primera clase que conecta.
identificador de la clase destino de la relacin. Al igual que en el anterior, ser un valor que proporciona la aplicacin que en este caso corresponder con la segunda clase que una la relacin. Otra propiedad de las relaciones es el role que desempean cada clase dentro de la relacin. En todos los tipos de relacin se proporciona un role a la clase origen y otro a la clase destino, excepto en las relaciones de herencia, que solo se contemplar el role del origen. Estos roles son valores que proporciona la aplicacin a cada relacin en el momento de aadirla, y variarn teniendo en cuenta la naturaleza de cada relacin. En todos los tipos de relaciones, excepto en las de herencia, hay dos valores que el usuario puede elegir entre una serie de opciones. Estos valores se refieren a la multiplicidad que tiene la relacin y se dar un valor para la cardinalidad que podr tener el role origen y otro valor para la cardinalidad que podr tener el role destino. Los valores que podr tomar este campo son: 0, 0..1, 0..n, 1, 1..n y n, adems de poder dejarlo sin especificar. En caso de que el usuario d uno de estos valores concretos a la multiplicidad, este se ver representado en la relacin, en el lado de la clase que corresponda. Adems, si se trata de una relacin de dependencia, se aadirn dos campos que reflejarn roleAInstanciatedCard. Para ver y poder modificar los valores que tiene una relacin asociados se har clic con el botn derecho del ratn sobre la relacin, saliendo el men que se muestra en la Figura 321, y a continuacin se seleccionar edit relationship.
En la Figura 3-22 se observa cada uno de estos campos para las propiedades de los cinco tipos de relaciones que pueden representarse en un diagrama de clases con esta aplicacin. Los valores que vienen dados son los que asigna la herramienta automticamente y que el usuario no puede modificar.
Figura 3-22. Tablas de las propiedades para cada uno de los tipos de relaciones posibles
Las acciones que se podrn ejecutar sobre una relacin sern editarla o borrarla. Si se selecciona la opcin de eliminar una relacin, el sistema mostrar al usuario un mensaje para que confirme si realmente desea borrarla del diagrama de forma permanente.
El primer botn que aparece en la barra de herramientas del panel, y el nico que queda por comentar es el de la flecha. Este botn lo que har es darle al puntero del ratn la
funcin de seleccionar. Se marcar cuando se tenga seleccionado el de la clase o el de una relacin y el usuario no quiera incorporar esta al diagrama. La funcionalidad ms importante que se ha incluido en esta herramienta es la de incorporar patrones, previamente establecidos, en el diagrama de clases que se est realizando, sin tener que ir incluyendo cada una de sus clases y relaciones uno a uno. Esto facilita la labor del diseo y la hace ms rpida y eficaz. Para aadir un patrn, se selecciona con el ratn el que le interese al usuario, de entre los disponibles en el rbol que aparece en la ventana de la izquierda en la interfaz, y se arrastrar hasta el panel de dibujo donde se est representando el diagrama. Si hasta ese momento no hay ninguna clase incluida, el patrn se dibuja directamente, con las clases y relaciones que se incluyen en l. Si al arrastrar el patrn al panel de dibujo, hay alguna clase ya dibujada, el sistema muestra al usuario una ventana. En esta aparecen los nombres de las clases que tiene el patrn en el lado izquierdo, y en el lado derecho un men despegable por cada una de las clases del patrn, con los nombres de las clases que ya estn dibujadas en el diagrama en ese momento. El usuario puede asociar una clase de las ya existentes para que ocupe el lugar de la que forma parte del patrn. As la del patrn ser sustituida por la ya existente y debajo de su nombre se mostrar entre los signos << y >> el nombre de la clase del patrn que representa. Si, por el contrario, el usuario deja seleccionada la opcin ninguno del men, y pulsa Ok, se aadirn nuevas clases para representar el patrn arrastrado. Ocurrir lo mismo si despus de seleccionar cualquier opcin en los mens despegables, el usuario pulsa la opcin Cancel o cierra la ventana. Las relaciones del patrn tambin sern representadas en el diagrama entre las clases originales del patrn o entre las que el usuario haya elegido como sustitutas de estas. De esta forma tambin se ver representado su nombre y la multiplicidad entre las clases vinculadas. Una restriccin dentro de los diagramas es que no va a poder haber ms de una relacin del mismo tipo entre dos clases, de manera que si existe una relacin determinada entre dos clases y se intenta aadir una del mismo tipo con las mismas clases origen y destino, esta segunda relacin no se incorporar al diagrama, permaneciendo en l la primera, aunque el nombre o la multiplicidad de cada una sean distintas.
En la Figura 3-24 se muestra el proceso para incorporar un patrn al diagrama. Puede observarse la apariencia de la aplicacin y el mensaje intermedio para que el usuario pueda sustituir las clases del patrn por las que ya tiene dibujadas. Para este caso se supone que hay representada una clase libro, con sus atributos y mtodos. En el rbol de patrones donde se indican los patrones que hay disponibles en el repositorio, se buscara el patrn Assembly-Part y se arrastrara desde este rbol hasta el panel del diagrama de clases. A continuacin se abrir una ventana dnde indicar que se seleccionen las clases que se quieren cambiar. Para cada clase que contiene el patrn se podr asociar una de las clases que ya estn representadas, para ser sustituidas por estas ltimas. En este caso, se sustituir la clase Assembly del patrn por la clase libro, que ya est dibujada en el diagrama. Al acabar la seleccin de las clases para la sustitucin dentro del patrn, se pulsar el botn Ok y esta ventana se cerrar. De esta manera, solo se aadira una nueva clase al diagrama, que sera la clase Part, perteneciente al patrn, y la relacin existente entre ambas. Echo esto, solo faltara aadir los atributos o mtodos que se deseen a la nueva clase. Como la clase libro es parte del patrn y ha pasado a desempear la funcin de la clase Assembly, esto se indicar mediante el estereotipo, de manera que la clase a la que sustituye dentro del patrn aparece debajo del nombre de la propia clase, entre los signos << y >>. Si ms tarde, esta clase volviera a sustituir a otra de un patrn que se aada, el estereotipo se modificar de forma que siempre tendr la ltima clase del patrn que haya sustituido.
En el caso de que haya en el panel una clase con el mismo nombre que alguna de las contenidas en el patrn que se va a utilizar, y esta segunda clase no es sustituida por ninguna
otra, al representarse en el panel, su nombre se ver modificado de forma que lo haga nico en el diagrama. Para ello se le aadir un nmero al valor que ya tiene. Como ejemplo, puede tenerse en el panel una clase cuyo nombre sea Actor y a continuacin, el usuario utiliza el patrn de colaboracin actor-role, sin sustituir ninguna clase por otra. El resultado sera el mostrado en la Figura 3-25.
El color con el que se dibujarn las clases en el diagrama, en un principio, y a no ser que el usuario indique otra cosa, es blanco, igual que el fondo del panel de dibujo. Pero existe la posibilidad de modificar este color, de modo que podran simularse distintos paquetes, representando las clases que pertenecen a uno u a otro de un color distinto. De igual forma, podra cambiarse el color a algunas clases que se consideren especiales, dependiendo de las necesidades o gustos del usuario. Esta funcionalidad se obtiene mediante la opcin set color, que est en dos sitios. Por un lado, si se tiene una clase ya representada en el diagrama, y se desea darle un color distinto, se seleccionar la clase y se har clic con el botn derecho del ratn sobre cualquier parte de la
clase, apareciendo un men donde estar incluida esta opcin. Si se selecciona set color, se abrir una nueva ventana donde el usuario podr elegir el color deseado para la clase seleccionada. Por otro lado, si en la barra de mens, el usuario selecciona Edit > Set Color, saldr la misma ventana donde se le permitir al usuario optar por el color que prefiera. Pero en este caso, el color afectar a las clases que dibuje a continuacin.
La eleccin de distintos colores facilita distinguir de un vistazo los diferentes tipos de clases representadas. Una vez que se ha realizado el diagrama de clases deseado, ste puede guardarse en dos formatos distintos: con extensin .usi y con extensin .jpg. Adems, tambin puede imprimirse. Si se desea guardar el diagrama en cdigo UsiXML, lo que har es convertir cada dato del diagrama en este lenguaje. Para ello se seleccionar de la barra de men la opcin File > Save, con lo cual se abre una ventana donde podr escogerse el directorio donde guardar el archivo y el nombre con el que desea guardarse, con extensin .usi.
Tambin puede guardarse el dibujo del diagrama representado, para ello se seleccionar Save Graphics en lugar de Save y se abrir una ventana semejante a la de antes, donde se ha de elegir el directorio y nombre con el que se guardar la figura, con formato .jpg. De esta forma, podr abrirse posteriormente con cualquier visor de imgenes que permita este formato. Las ventanas que se abren para seleccionar el nombre y directorio en ambos casos quedan representadas en la Figura 3-27 y 3-28 respectivamente.
Otras opciones para guardar el diagrama es mediante las combinaciones de teclas Alt+S, si se desea guardar el cdigo, o Alt+G, si lo que se quiere guardar es la imagen. En ambos casos se abren las mismas ventanas que se comentaban anteriormente para seleccionar el directorio y el nombre con el que desea guardarse. Un diagrama anteriormente guardado con formato UsiXML, puede abrirse desde la aplicacin, de forma que aparecer en el panel de dibujo como se haba guardado, manteniendo las mismas clases, relaciones y propiedades. Habr dos formas para abrir un archivo con extensin .usi: seleccionando del men la opcin File > Open, o pulsando la combinacin de teclas Alt+O. Ambas opciones abrirn una nueva ventana donde el usuario podr navegar entre las carpetas de su ordenador para acceder al archivo que desea abrir.
Si el usuario desea abrir un nuevo panel de dibujo vaco, deber seleccionar del men la opcin File y despus New, o con la combinacin de teclas Alt+N. Si en el panel actual hay algo dibujado, tanto si se cierra este panel, como si se selecciona la opcin de abrir un archivo existente o un nuevo panel vaco, el sistema preguntar al usuario si desea guardar el diagrama en el que est y le dar la opcin de seleccionar el directorio y el nombre que desee para ello. El diagrama dibujado en el panel tiene un cdigo XML asociado, que ser similar al que se guarda con la opcin de guardar con extensin .usi y que el usuario puede visualizar en cualquier momento. Para ello seleccionar del men la opcin Window > XML, o pulsar la combinacin de teclas ALT+X. En ambos casos se abrir una nueva ventana donde aparece el cdigo XML que corresponde al diagrama representado en el panel del dibujo en ese momento. Con el ejemplo del libro mostrado anteriormente, en la Figura 3-24, con la explicacin del proceso a seguir para aadir un patrn al diagrama, se obtendra el cdigo mostrado en la Figura 3-29.
Si el usuario cierra la ventana del rbol de los patrones o la del editor de clases, podr abrirlas nuevamente simplemente seleccionando del men Window > Patterns o Window >
Diagram editor para abrir una u otra. Otra opcin es con la combinacin de teclas ALT+P o ALT+D respectivamente. Estas opciones no estarn disponibles si las ventanas ya estn abiertas. El usuario tendr distintas formas de organizar estas ventanas, dentro del men Window, con las opciones Next, Cascade y Tile, o con las combinaciones de teclas ALT+N, ALT+C y ALT+T respectivamente. La aplicacin tambin ofrece la posibilidad de imprimir el diagrama que hay representado en el editor. Para ello, el usuario seleccionar del men las opciones File > Print, y se abrir una ventana representada en la Figura 3-30, para seleccionar la impresora y algunas opciones.
El usuario puede examinar la ayuda de la aplicacin en la opcin Help del men o con las teclas ALT+H. De este modo se abrir una nueva ventana donde se podr acceder a un manual de esta aplicacin.
El acerca de de la aplicacin puede consultarse en la opcin Help > About us... del men, o con la combinacin de teclas ALT+A. As se abrir una ventana con informacin de la aplicacin como la versin y los autores de esta, como se indica en la Figura 3-31.
Para cerrar la aplicacin puede pulsarse con el ratn en la cruz de la esquina superior derecha o mediante la opcin File y Quit del men, o mediante la combinacin de teclas ALT+Q. De esta forma, la ventana principal de la aplicacin se cerrar sin ms.
El tipo de herramienta propuesta en este proyecto final de carrera puede resultar de gran utilidad en determinadas asignaturas de Ingeniera del Software, en los estudios de Ingeniera Informtica. Su principal importancia reside en la facilidad con la que puede ser tratado el modelado del dominio gracias a ella y la fcil inclusin de los patrones en el diagrama. Por eso se cree que su utilizacin en la primera toma de contacto con el modelado puede facilitar la manera de modelar para los estudiantes inexpertos, al poder utilizar la experiencia de otros en sus propios trabajos.
Se desea disear un modelo de representacin de compaas de autobuses que sea capaz de gestionar las reservas que los clientes de la compaa deseen realizar sobre los diferentes trayectos que sta realiza. El modelo debe cumplir los siguientes requisitos: Las compaas de autobuses realizan trayectos entre dos ciudades (origen y destino), con un nmero, una fecha y una hora de salida y otra de llegada. Los trayectos se realizan en autobuses que tienen un modelo, una matricula y la capacidad mxima que admiten. Las personas que participan en el modelo tienen todas: nombre, DNI, direccin, nmero de telfono y edad, y sern empleados o pasajeros. Los empleados tienen un nmero de seguridad social y se conoce su antigedad en la empresa. Los pasajeros tienen un cdigo de cliente. Los autobuses slo realizan un trayecto y un trayecto slo lo realiza un autobs. Para que un pasajero pueda viajar en un autobs debe hacer una reserva sobre un determinado trayecto. Las reservas tienen un precio y un nmero de asiento en el autobs.
como parmetros el lugar de origen y de destino y la fecha de salida que ha de tener el trayecto y devuelve el trayecto encontrado que ofrece la compaa con estas caractersticas. addPasajero(pasajero): void aade un pasajero a los atendidos por la compaa. Recibe como parmetro dicho pasajero. addEmpleado(empleado): void aade un nuevo empleado contratado por la compaa. Necesita como parmetro dicho empleado. addAutobs(autobs): void aade, a los que ya tiene la compaa, un nuevo autobs, el cual necesitar como parmetro. Para que en el modelo, la clase compaa ofrezca toda esta informacin descrita, deber aparecer como se muestra en la Figura 4-1.
TRAYECTO: Es cada uno de los viajes que ofrecer la compaa. Cada trayecto llevar asociado un nmero, que ser el que lo identifique entre el resto de trayectos existentes. Adems, se identificar un origen y un destino, que son las ciudades entre las que estar el trayecto, y una hora de salida y de llegada. Necesita los siguientes mtodos: trayecto(): trayecto crea un nuevo trayecto. solicitarPlaza(): reserva se solicita una plaza para el trayecto y devuelve una reserva para este. addReserva(reserva): void aade una reserva a las ya gestionadas. Necesita como parmetro la reserva de la que se trata.
De esta forma, la clase trayecto tendr una apariencia similar a la reflejada en la Figura 4-2 en el modelo.
AUTOBS: Es cada uno de los autobuses que tiene la compaa y que se dedicar a cubrir los trayectos ofrecidos por esta. De cada autobs se conocer el modelo y matrcula del vehculo y la capacidad mxima de viajeros que admite. Los mtodos de los que dispondr son los siguientes: Autobs(string, string, int): autobs es un constructor de autobs, al que se le pasarn como parmetros el modelo, la matrcula y la capacidad y devolver el propio autobs. La representacin grfica de esta clase se muestra en la figura 4-3.
PERSONA: Son las personas que van a formar parte del modelo. Se dividirn en empleados o pasajeros. Cada persona tendr un nombre, una direccin, un DNI, un telfono y una edad. Necesitar disponer de los mtodos siguientes: Persona(string, string): persona es un constructor que toma el nombre y el DNI y devuelve una persona con esos datos.
EMPLEADO: Son las personas que trabajan dentro de la compaa. De ellos se conocer el nmero de seguridad social (NSS) y su antigedad dentro de la empresa. Los mtodos asociados a esta clase son los siguientes: empleado(string, string, int): empleado es un constructor al que se le indica el nombre, el DNI y el NSS devuelve un empleado con esos datos. La Figura 4-5 se muestra la representacin grfica que tendr esta clase en el modelo.
PASAJERO: Son las personas que viajan con la compaa. Estos quedarn registrados cuando hagan algn trayecto en alguno de los autobuses de la compaa. Para ello se conocer su cdigo de cliente, y los mtodos que necesitar esta clase para la gestin son los siguientes: pasajero(string, string): pasajero es el constructor, al que se le pasa el nombre y DNI y devuelve un pasajero.
hacerReserva(string, string, date): reserva hace la reserva para un pasajero. Ha de conocer el origen y el destino del trayecto y la fecha en la que se realizar y devuelve la reserva realizada. cancelarReserva(string, string, date): void cancela la reserva realizada previamente por un pasajero. Habr que indicarle el origen y el destino del trayecto y la fecha en la que se realizar.
RESERVA: Un pasajero deber hacer una reserva sobre el trayecto que desee para que pueda viajar en un autobs de la compaa. De cada reserva se conocer su precio y el nmero de asiento dentro del autobs. Tiene asociados los siguientes mtodos: reserva(): reserva Crea una nueva reserva. setTrayecto(trayecto): void Aade un nuevo trayecto a la base de datos para la reserva. setPasajero(pasajero): void Aade un nuevo pasajero a la base de datos para la reserva. En la Figura 4-7 se muestra la clase grficamente, como aparecer en el diagrama.
Entre las entidades encontradas, se distingue dos relaciones de herencia, ya que las personas que participan en el modelo podrn ser empleados o pasajeros. De esta forma, pasajero y empleado heredan los atributos de persona. La relacin entre estas tres clases ser como la indicada en la Figura 4-8.
Adems, entre las clases que se han distinguido pueden apreciarse una serie de relaciones que se identifican con algunos de los patrones de colaboracin que nos ofrece la herramienta. Por lo que la inclusin de estas clases y relaciones al diagrama puede hacerse de una forma inmediata, arrastrando el patrn correspondiente e identificando las clases del patrn con las que ya estn representadas, en el caso de que lo estn, y completando posteriormente lo que falte. Se conoce que las compaas realizan trayectos, por lo que habr una relacin entre estas dos clases. La relacin ser de asociacin y una compaa podr ofrecer varios trayectos.
Esta relacin puede representarse mediante el patrn Item-SpecificItem, y la representacin en el diagrama ser similar a la indicada en la Figura 4-9.
Por otro lado, cada compaa deber tener una serie de autobuses para poder proporcionar sus servicios, por lo que habr otra relacin entre estas dos clases. Tal relacin podr ser de composicin o de agregacin, mas se considerar de composicin puesto que la compaa dejara de tener sentido si no tuviera ningn autobs. Esta relacin, as descrita se asemeja al patrn Group-Member, donde el grupo sera la compaa y los miembros de esta seran los autobuses que posee. De esta forma, esta parte del modelo puede representarse en el diagrama con la insercin de este patrn, quedando como se indica en la Figura 4-10.
De forma paralela, habr una relacin similar entre compaa y empleado. Una compaa tendr contratados una serie de empleados para que realicen el trabajo que da la empresa. Igual que pasaba en el caso anterior, la compaa dejar de tener sentido si no hay ningn empleado trabajando para ella. De esta forma, la relacin existente entre estas dos clases ser otra vez de composicin y volver a repetirse el patrn que se utilizaba anteriormente, de Group-Member. Igual que antes, la compaa se identificar con el grupo, siendo esta vez cada uno de los empleados los miembros de este grupo.
La realizacin del diagrama de clases para esta parte, utilizando el patrn indicado tiene como resultado la Figura 4.11.
Otra relacin observada en este caso es la existente entre trayecto y reserva. Una reserva se har para un solo trayecto pero un trayecto incluir mltiples reservas. As puede identificarse una vez ms otro patrn de colaboracin, esta vez el SpecificItem-Transaction, siendo la clase del trayecto la correspondiente al SpecificItem y las reservas, cada una de las transacciones que se hacen sobre el anterior. La representacin grfica que se obtendra en el diagrama es la reflejada en la Figura 4-12.
Por otro lado, un pasajero podr hacer las reservas que desee en la compaa de autobuses, pero una reserva solo la podr hacer un nico pasajero, puesto que es para un nmero de asiento concreto. La relacin entre las clases pasajero y reserva, vista de esta forma, correspondera con el patrn Role-Transaction, donde el pasajero cumple el papel de Role y la reserva el de Transaction. Esta relacin dibujada en el modelo, con la utilizacin de este patrn tendra la apariencia que se refleja en la Figura 4-13.
Cabe comentar que para la utilizacin de los patrones en los casos anteriores se han representado en el diagrama, en primer lugar, cada una de las clases que se iban a relacionar, con sus respectivos atributos y mtodos, y despus se ha arrastrado el patrn correspondiente, sustituyendo en l las clases que ya estaban incluidas en el diagrama por las que se contemplaban en el patrn. De esta manera, no se han aadido nuevas clases con el patrn, pero s las relaciones. Por eso, debajo del nombre de las clases que se han sustituido, aparece su estereotipo, entre los signos << y >>. El nombre que se ve entre estos signos es el de la clase que est sustituyendo, dentro del patrn. Si una clase sustituye a otra perteneciente a un patrn en ms de una ocasin, el estereotipo que queda visible es el del ltimo patrn que fue aadido. Analizando en detalle el caso de estudio que nos ocupa, con sus clases y las conexiones que las unen, no se han encontrado mas relaciones afines a los patrones de colaboracin, no obstante, existen otros tipos de relaciones entre las clases. Una de estas relaciones es la existente entre compaa y pasajero. La compaa atender a todos los pasajeros que viajen a travs de ella. Esta ser una relacin de asociacin y su representacin se observa en la Figura 4- 14.
Otra relacin en este caso es la existente entre trayecto y pasajero. Habr varios pasajeros que hagan un mismo trayecto, y de forma paralela, un pasajero podr hacer varios trayectos con la compaa. Una vez ms, se trata de una asociacin y, por lo tanto, la relacin que habr que representar es la indicada en la Figura 4-15.
Finalmente, la ltima relacin encontrada en el caso en estudio es la que hay entre autobs y trayecto. Los autobuses slo realizarn un trayecto y un trayecto solo lo realizar un autobs. Luego, la relacin que une estas clases ser de asociacin, como la reflejada en la Figura 4-16.
Una vez consideradas todas las clases con sus atributos y mtodos, y las relaciones que pueden identificarse entre ellas, habr que unir cada una de estas partes para obtener el diagrama de clases completo, que corresponder con el caso de la empresa de autobuses que se est analizando. De esta manera, un posible modelo para el caso de la empresa de autobuses que se est estudiando, podra ser como el representado en la Figura 4-17.
Por otro lado, java es un lenguaje simple, fcil de aprender. Caracterstica esta muy importante si se tiene en cuenta que la herramienta va especialmente dirigida a estudiantes de ingeniera del software. Para que el usuario pueda generar el cdigo java correspondiente a su diagrama de clases, lo podr hacer a travs del men File > JAVA Code Generation o pulsando la combinacin de teclas ALT + J. Cuando esto suceda, el sistema abrir una ventana donde el usuario deber indicarle el directorio donde quiere que se genere el cdigo. Podr desplazarse por las carpetas de su equipo y escribir el nombre para el nuevo directorio. Obviamente, antes de generar el cdigo, tendr que estar dibujado el diagrama de clases en el panel correspondiente, en caso de que no hubiese nada representado, la generacin de cdigo tendr como resultado un directorio vaco. Dentro del directorio creado se generar un fichero .java por cada clase que haya en el diagrama de clases. El nombre del directorio ser el mismo que el de la clase que representa y su contenido depender de los atributos, mtodos y relaciones que tenga la clase. Este cdigo generado ser un esqueleto que el usuario podr completar en la medida de sus necesidades. Se ha generado el cdigo para el diagrama de clases de la Figura 4-17. Se le ha indicado al sistema que guarde el cdigo en el directorio /autobuses, dentro de Mis documentos. Y se han generado los ficheros mostrados en la Figura 4-18, dentro de este directorio.
A continuacin se mostrar el contenido de cada uno de esos ficheros, en las Figuras que van desde la 4-19 a la 4-25. El cdigo se ha abierto con la aplicacin JBuilder para que se vea ms claramente cada parte del cdigo, al distinguirse con colores.
El cdigo, en cada uno de los ficheros, puede ser modificado y completado por el usuario, siendo en cada caso nicamente una base sobre la que programar cada clase a la que se refiere el fichero. En la generacin de cdigo para una clase determinada se ha obtenido un fichero con el mismo nombre que la clase, con extensin .java. Cada clase se ha considerado un objeto, de manera que el fichero tiene la descripcin del objeto correspondiente. En primer lugar se declaran los atributos del objeto, se establece el cuerpo del constructor de ese objeto y se declaran los mtodos que lleva asociados. Adems se tienen en cuenta las relaciones que tiene la clase para generar su cdigo. De esta manera, si la clase para la que se genera el cdigo es el origen de una asociacin, una agregacin o una composicin, se crear en ella un objeto del tipo de la clase destino de la relacin. Si una clase tiene una relacin de herencia con otra, en el cdigo de la clase origen se indicar que extiende de la clase destino. Puede darse el caso de que en el diagrama de clases una misma clase tenga relaciones de herencia con ms de una clase. En este caso, al generar el cdigo se mostrar un mensaje de Warning al usuario, puesto que Java no permite herencia mltiple. No obstante, en el cdigo generado se indicar que la clase extiende de todas las que es destino en las relaciones de herencia, aunque esto dara un error al compilar el cdigo, como ya se le ha indicado al usuario.
educativas
del
producto
software
Desde el primer captulo de este documento se ha querido resaltar la importancia que supone el hecho de que el alumno adquiera habilidades y destrezas en lo que al desarrollo de diagramas de clases y modelado conceptual se refiere. Estas mismas actividades se ha corroborado en el segundo captulo que son capitales en el desarrollo de software y que progresivamente han ido adquiriendo cada vez ms importancia.
En este mismo sentido y volviendo a resaltar la importancia de las actividades mencionadas, en la actualidad, en el contexto educativo y en funcin de las nuevas metodologas de enseanza y aprendizaje, una serie de competencias se estn asociando a los diferentes ttulos universitarios ofrecidos por las universidades espaolas. Estas competencias pueden consultarse en los correspondientes Libros Blancos, disponibles en la pgina web de la Agencia Nacional de Evaluacin de la Calidad y Acreditacin (ANECA). En este proyecto final de carrera se han tenido tambin en cuenta las competencias mencionadas. En la Tabla 4-1 se recogen las competencias especficas del Ttulo de Grado de Ingeniera Informtica, para el perfil de desarrollo del software. Entre ellas cabe destacar algunas especialmente reseables y relacionadas con el proyecto final de carrera realizado y la herramienta elaborad y descrita, por ejemplo, y haciendo referencia a la correspondiente competencia a travs de su identificador numrico, 2, 11, 12, 13, 16 y 24. Competencias especficas recogidas en el Libro Blanco para el perfil de desarrollo del software
1. Dirigir y coordinar el proyecto de desarrollo y mantenimiento de aplicaciones, supervisando las funciones y recursos de anlisis funcional, orgnico y programacin, asegurando la adecuada explotacin de las aplicaciones. 2. Dominar todas las etapas de la vida de un proyecto (anlisis de concepcin, anlisis tcnico, programacin, pruebas, documentacin y formacin de usuarios). 3. Dirigir el equipo de trabajo compuesto por Analistas Funcionales, Analistas de aplicaciones, Programadores. 4. Control y seguimiento de plazos, indicadores econmicos y de calidad. 5. Supervisar y coordinar el desarrollo completo de aplicaciones y administrar la introduccin de los sistemas de gestin. 6. Controlar las aplicaciones en explotacin, minimizando las consecuencias negativas sobre las operaciones en produccin y desarrollo de aplicaciones. 7. Analizar y recoger nuevas tcnicas y herramientas del mercado estudiando su viabilidad y necesidad. 8. Posibilidad de contratar recursos externos. 9. Control y Gestin del Desarrollo del Proyecto Informtico. 10. Redaccin, para la Direccin de Informtica y para la Direccin del Proyecto de los informes que se precisan para el seguimiento del proyecto.
11. Interpretar las especificaciones funcionales encaminadas al desarrollo de las aplicaciones informticas. 12. Realizar el anlisis y el diseo detallado de las aplicaciones informticas. 13. Definir la estructura modular y de datos para llevar a cabo las aplicaciones informticas que cumplan con las especificaciones funcionales y restricciones del lenguaje de programacin. 14. Definicin y descripcin de procedimientos e interfaz de usuario. 15. Realizar pruebas que verifiquen la validez funcional, la integridad de los datos y el rendimiento de las aplicaciones informticas. 16. Elaborar y mantener documentacin descriptiva de la gnesis, produccin y operatividad de las aplicaciones informticas. 17. Disear servicios de presentacin que faciliten la explotacin de las aplicaciones. 18. Estudiar el sistema actual existente y analizar e idear mejores medios para llevar a cabo los mismos objetivos u otros adicionales. 19. Participar en el diseo de nuevos sistemas informticos como consecuencia de la informatizacin de reas de la empresa que utilizan para el desarrollo de sus tareas mtodos y procesos manuales. 20. Integrar sistemas informticos existentes susceptibles de inter-relacionarse. 21. Escuchar y asesorar a los Usuarios en la resolucin de los problemas que se les plantean con el uso de los sistemas informticos. 22. Asesorar a los programadores en los problemas que se les plantean con la programacin de los sistemas. 23. Colaborar con los responsables de Estudios y Explotacin en la resolucin de los fallos que se originen en los Sistemas en Produccin. 24. Mantenerse al da en Tcnicas, Mtodos y Herramientas de Anlisis y Diseo.
Tabla 4-1. Competencias especficas del ttulo de grado en Ingeniera Informtica perfil Desarrollo del Software
En definitiva, en este proyecto final de carrera se ha contribuido a la elaboracin de una herramienta que posibilite la utilizacin de una experiencia til en la elaboracin de especificaciones conceptuales, como es la disponible a travs de los patrones de colaboracin, y, gracias al entorno facilitado, el ingeniero del software en formacin puede realizar labores de anlisis y diseo de soluciones software reutilizando dicha experiencia.
Con el ejemplo utilizado en este captulo se ha pretendido demostrar de forma prctica la potencialidad de la herramienta desarrollada en este proyecto final de carrera y contribuir a presentar cmo se utiliza. Un estudio ms detallado de las facilidades que ofrece podra realizarse a travs de la consideracin de su uso en distintas asignaturas disponibles en el actual plan de estudios de la Escuela Superior de Ingeniera Informtica. Estas asignaturas pueden ser las correspondientes a los primeros cursos de las actuales titulaciones de Ingeniera Informtica, Ingeniera Tcnica de Sistemas y de Gestin, concretamente aquellas asignaturas en las que al alumnado se les presenten conceptos relacionados con programacin orientado a objetos. Cola-CASE facilita un entorno muy intuitivo y flexible en el que los patrones estn disponibles en una carpeta que acompaa al ejecutable facilitado. El usuario puede definir sus propios patrones e incluirlos en la carpeta mencionada. Tambin distintos usuarios pueden compartir sus patrones propios sin ms que a travs de facilitar la carpeta o ficheros asociados a los patrones mencionados. En este ltimo sentido, cola-CASE puede albergar otros tipos de patrones y no se restringe a utilizar patrones de colaboracin. Es posible tambin incorporar el catlogo de patrones ms conocido y utilizado como es el catlogo de patrones de diseo de (Gamma et al., 1995).
Este captulo tiene como nico cometido recoger las conclusiones que pueden obtenerse tras la realizacin del presente proyecto final de carrera y proponer unas pautas para futuras investigaciones que tomen como base este proyecto.
5.1 Conclusiones
Se hace patente la necesidad de una metodologa que pueda utilizar todo el equipo de trabajo y que puedan seguir como gua y ayude a comprobar la calidad del producto final. Esta idea podra ayudar a paliar la continua crisis que sufre el desarrollo de software. El desarrollo dirigido por modelos separa la funcionalidad esencial del sistema y la implementacin de dicha funcionalidad, dndole una mayor importancia al modelado conceptual en el desarrollo de software. Este paradigma promete una mejora de la productividad y de la calidad del software. Por lo tanto, el anlisis de los requisitos es la etapa ms crucial del desarrollo de un proyecto de software, debiendo especificar estos requisitos de alguna manera. Para ello, la elaboracin de modelos resulta de gran utilidad puesto que de un vistazo ms o menos simple se puede comprender fcilmente la funcionalidad del sistema que se va a desarrollar. Se han estudiado las principales herramientas CASE y se ha observado que pocas de ellas consideran la experiencia en sus proyectos, y las que lo hacen nicamente contemplan los patrones de diseo. Se ha comprobado la necesidad de aportar experiencia a los proyectos, pudiendo ir ms all de la propia del desarrollador, utilizando para ello los patrones de colaboracin, disponibles en el mbito del modelado conceptual. Estos patrones estn sobradamente probados y son una slida base para la bsqueda de soluciones a problemas comunes en el desarrollo de aplicaciones.
Con la herramienta Cola-CASE se obtiene una alternativa a las potentes herramientas CASE disponibles, donde se permite el modelado del dominio de una forma simple e intuitiva, con la posibilidad de aadir a este los patrones de colaboracin que sean necesarios, disponibles en el repositorio facilitado. Y con la posibilidad de modificar o aadir nuevos patrones. El entorno desarrollado permite centrarse en el anlisis y el diseo ms que en la implementacin. Toma como base la experiencia proporcionada por Nicola, Mayfield, y Abney en su libro (Nicola et al., 2001), con sus patrones ya definidos y documentados y sirve de sustento para su utilizacin en los modelos del negocio. Adems, desde el primer momento se ha tenido en mente que esta herramienta estuviera destinada para el uso de estudiantes de ingeniera del software, por lo que la sencillez de esta se ha hecho patente desde el principio. Con lo que conlleva su fcil utilizacin.
Bibliografa
Nicola, J., Mayfield, M., Abney M. Streamlined Object Modeling. Patterns, Rules, and Implementation. The Coad Series. Prentice Hall, 2001. (Coad et al., 1997) Coad, P., North, D., Mayfield, M. Object Models. Strategies, Patterns & Applications. Yourdon Press Computing Series, 1997. (Buschmann et al., Buschmann, F., Meunier, R., Rohnert, H., Sommerlad, P., Stal, 1996) M. Pattern-Oriented Software Architecture: A System of Patterns. John Wiley & Sons, 1996. (Gamma et al., 1995) Gamma, E., Helm, R., Johnson, R., Vissides, J. Design Pattern: Elements of Reusable Object-Oriented Software. Addison Wesley. 1995. (Fowler, 2002) Martin Fowler. Patterns of Enterprise Application Architecture. Addison-Wesley, 2002. (Alexander, 1977) Alexander, Christopher. A Pattern Language: Towns, Buildings, Construction. 1977 (Alexander, 1979) Alexander, Christopher. The Timeless Way of Building. 1979 (Coplien, 1991) James O. Coplien. Advanced C++ Programming Styles and Idioms. Addison Wesley Professional. 1991. (Coplien & Schmidt, James O. Coplien y Douglas C. Schmidt, Pattern Languages of 1995) Program Design (A Generative Development-Process Pattern Language). Reading, Addison Wesley, 1995. (Brown et al., 1998) Brown, W. J., Malveau, R. C., Mowbray, T. J. AntiPatterns: Refactoring Software, Architectures, and Projects in Crisis. John Wiley & Sons, 1998. (Akroyd, 1996) Akroyd, M. AntiPatterns: Vaccinations against Object Misuse. Object World West, 1996. (Jacobson et al., 2000) Jacobson, I., Booch, G. y Rumbaugh, J. El Proceso Unificado de Desarrollo de Software. Addison-Wesley, 2000. (Durn & Bernrdez, Durn, A., Bernrdez, B. Metodologa para la Elicitacin de 2002) Requisitos de Sistemas Software. Sevilla, 2002. (artculo) (Pressman, R., 2007) Pressman, R. Ingeniera del Software: Un Enfoque Prctico. McGraw-Hill, 2007.
(UML, 2007)
Lenguaje Unificado de Modelado. http://www.omg.org http://www.uml.org http://martinfowler.com/ Metodologas giles en el Desarrollo de Software. http://www.willydev.net/descargas/prev/TodoAgil.Pdf Programacin extrema. http://www.extremeprogramming.org
Programacin extrema. http://www.xprogramming.com HyperModel. http://www.xmlmodeling.com Christopher Alexander: An Introduction for Object-Oriented Designers. http://gee.cs.oswego.edu/dl/ca/ca/ca.html Patrones de Alexander. http://www.patternlanguage.com Pgina web de UsiXML: http://www.usixml.org Pgina de XML: http://www.w3.org/XML/
Apndice A
Patrones de Colaboracin
Use to model the participation of a person, organization, place, or thing in a context. An actor knows about zero to many roles, but typically takes on only one of each kind. A role represents a unique view of its actor within a context. The role depends on its actor and cannot exist without it.
Use to model a hierarchy of locations where events happen. An outer place is the container for zero or more places. A place knows at most one outer place. The places location depends on the location of its outer place.
Use to model a thing that exists in several distinct variations. An item is the common description for zero to many specific items. A specific item knows and depends on one item. The specific items property values distinguish it from other specific items described by the same item.
Use to model an ensemble of things. An assembly has one or more parts. Its parts determine its properties, and the assembly cannot exist without them. A part belongs to at most one assembly at a time. The part can exist on its own.
Use to model a receptacle for things. A container holds zero or more content objects. Unlike an assembly, it can be empty. A content object can be in at most one container at a time. The content object can exist on its own.
Use to model a classification of things. A group contains zero or more members. Groups are used to classify objects. A member, unlike a part or content objects, can belong to more than one group.
Use to record participants in events. A transaction knows one role, the doer of its interaction. A role knows about zero or more transactions. The role provides a contextual description of the person, organization, thing, or place involved in the transaction.
Use to record where an event happens. A transaction occurs at one place. A place knows about zero to many transactions. The transactions record the history of interactions at the place.
Use to record an event involving a single thing. A transaction knows about one specific item. A specific item can be involved in zero to many transactions. The transactions record the specific items history of interactions.
Use to record an event involving more than one thing. A composite transaction must contain at least one line item. A line item knows only one composite transaction. The line item depends on the composite transaction and cannot exist without it.
Use to record the particular involvement of a thing in an event involving multiple things. A specific item can be involved in zero to many line items. A line item knows exactly one specific item. The line item captures details about the specific items interaction with a composite transaction.
Use to record an event that occurs only after a previous event. A transaction knows about some number of follow-up transactions. A follow-up transaction follows and depends on exactly one previous transaction.