Tesis - Dirección General de Servicios Telemáticos
Transcription
Tesis - Dirección General de Servicios Telemáticos
UNIVERSIDAD DE COLIMA FACULTAD DE TELEMATICA TESIS QUE PARA OBTENER EL GRADO DE MAESTRO EN CIENCIAS, ÁREA DE TELEMÁTICA. DISEÑO Y ANÁLISIS DE UN CASO DE ESTUDIO APLICADO AL LENGUAJE DE MODELADO UNIFICADO. PRESENTA: ING. CARLOS ULIBARRI IRETA ASESOR M.C. ARMANDO ROMAN GALLARDO COLIMA, COL. JUNIO 2002 AGRADECIMIENTOS Al M.C. Armando Román Gallardo Por su apoyo y orientación para la realización de este trabajo. Al Lic. Carlos Maldonado Villaverde Por su disposición y tiempo dedicados a ayudarme. Al personal administrativo de la Facultad de Telmática Por las atenciones brindadas. DEDICATORIA A Dios. Por permitirme completar una meta más en mi vida. A mis padres. Mi respeto y amor siempre. Por su apoyo y tenacidad para forjar mi futuro. A mis hermanos. Fuente infinita de la amistad más pura y el cariño más sincero. A Hedya Nirbana Mi gran amor. Por su inmensa paciencia y cariño. Siempre te admiraré. INDICE Página Resumen i Abstract ii Agradecimientos iii Dedicatoria iv I.-Introducción v 1.1 Objetivo vii 1.2 Justificación viii II.- Marco Teórico y Conceptual 2.1 Plataforma Cliente- Servidor 2.1.1 Arquitectura cliente – servidor. 2 2.1.2 El cliente. 3 2.1.3 El servidor. 3 2.1.4 La red. 4 2.1.5 Ventajas de la plataforma cliente – servidor. 4 2.1.6 Desventajas de la plataforma cliente – servidor. 5 2.1.7 Retransmisión de charlas a través de Internet. 5 2.2 Lenguaje de Modelado Unificado 2.2.1 Una breve historia de UML. 8 2.2.2 Principios de Modelado. 9 2.2.3 Modelo Orientado a Objetos. 12 2.2.4 Visión general de UML. 13 2.2.5 UML es un lenguaje. 13 2.2.6 Tarjetas CRC (clase – responsabilidad – colaboración). 15 2.2.7 Casos de Uso. 16 2.2.8 Diagrama de casos de uso. 17 2.2.9 Diagramas de secuencia del sistema. 18 2.2.10 Glosario de términos. 19 2.2.11 Modelo conceptual. 19 2.2.12 Diagramas de clases. 20 2.2.13 Contratos. 21 2.2.14 Usos de UML. 22 III.- Metodología 3.1 Elaboración del marco teórico 3.2 Desarrollo del caso de estudio 25 29 IV.- Desarrollo del caso de estudio 4.1 Planeación 4.1.1 Especificación de requerimientos. 31 4.1.2 Análisis y Elaboración de las tarjetas CRC. 32 4.1.3 Definición del glosario de términos. 35 4.1.4 Definición de funciones. 35 4.1.4.1 Funciones básicas. 36 4.1.4.2 Funciones de comunicación. 37 4.1.5 Atributos de la aplicación. 37 4.1.5.1 Detalles y restricciones de frontera de los atributos. 37 4.1.5.2 Atributos del sistema. 39 4.2 Construcción del sistema 4.2.1 Casos de uso: Descripción de procesos. 40 4.2.1.1 Identificación de actores 40 4.2.1.2 Identificación de los casos de uso. 41 4.2.1.3 Caso de uso: Iniciar sesión de usuario. 41 4.2.1.4 Caso de uso: Terminar sesión de usuario. 44 4.2.1.5 Caso de uso: Enviar mensaje. 47 4.2.1.6 Caso de uso: Seleccionar zona. 49 4.2.1.7 Caso de uso: Usuario ausente. 52 4.2.1.8 Diagrama de casos de uso. 54 4.2.2 Definición de un modelo conceptual. 55 4.2.3 Ampliación del glosario de términos. 60 4.2.4 Diagrama de clases. 61 4.2.5 Definición de los diagramas de secuencia del sistema. 64 4.2.6 Definición de contratos. 70 V.- Conclusiones Bibliografía Anexos 74 INDICE DE TABLAS Y FIGURAS Tabla o Figura Página Tabla 1. Funciones cliente – servidor 4 Figura 1. Esquema de un sistema I.R.C. 6 Figura 2. Formato de tarjeta C.R.C. 15 Figura 3. Símbolo de caso de uso. 16 Figura 4. Ejemplo de un diagrama de caso de uso. 18 Figura 5. Diagrama de secuencia de sistema. 19 Figura 6. Etapas principales del ciclo de vida. 28 Figura 7. Etapa de construcción. 29 Figura 8. Esquema de un sistema de charla. 32 Figura 9. Tarjetas C.R.C. 33 Tabla 2. Glosario de términos 35 Tabla 3. Tabla de funciones básicas. 36 Tabla 4. Tabla de funciones de comunicación. 37 Tabla 5. Tabla de atributos y restricciones. 37 Tabla 6. Atributos del sistema en la especificación de funciones. 39 Tabla 7. Identificación de actores. 40 Tabla 8. Caso de uso expandido: iniciar sesión. 42 Tabla 9. Caso de uso esencial: iniciar sesión. 42 Tabla 10. Caso de uso real: iniciar sesión. 43 Figura 10. Ventana 2 Inicio de sesión. 43 Tabla 11. Caso de uso expandido: terminar sesión. 44 Tabla 12. Caso de uso esencial: terminar sesión. 45 Tabla 13. Caso de uso real: terminar sesión. 45 Figura 11. Ventana 4 Pantalla de charla. 46 Tabla 14. Caso de uso expandido: enviar mensaje. 47 Tabla 15. Caso de uso esencial: enviar mensaje. 48 Tabla 16. Caso de uso real: enviar mensaje. 48 Figura 12. Ventana 4 Pantalla de charla. 48 Tabla 17. Caso de uso expandido: seleccionar zona. 49 Tabla 18. Caso de uso esencial: seleccionar zona. 50 Tabla 19. Caso de uso real: seleccionar zona. 50 Figura 13. Ventana 3 Zonas de charla. 51 Tabla 20. Caso de uso expandido: usuario ausente. 52 Tabla 21. Caso de uso esencial: usuario ausente. 53 Tabla 22. Caso de uso real: usuario ausente. 53 Figura 14. Ventana 4 Timer. 53 Figura 15. Diagrama de casos de uso. 54 Figura 16. Definición de conceptos. 55 Figura 17. Definición de asociaciones. 56 Figura 18. Definición de atributos. 57 Tabla 23. Significado de los atributos. 58 Figura 19. Definición de un modelo conceptual. 59 Tabla 24. Ampliación del glosario de términos. 60 Figura 20. Atributos de las clases. 61 Figura 21. Métodos de las clases. 62 Figura 22. Diagrama de clases. 62 Figura 23. Métodos de las clases con tipos de datos. 63 Figura 24. Diagrama de secuencia: iniciar sesión. 64 Figura 25. Diagrama de secuencia - entidades: iniciar sesión. 65 Figura 26. Diagrama de secuencia: terminar sesión. 66 Figura 27. Diagrama de secuencia - entidades: terminar sesión. 66 Figura 28. Diagrama de secuencia: enviar mensaje. 67 Figura 29. Diagrama de secuencia - entidades: enviar mensaje. 67 Figura 30. Diagrama de secuencia: seleccionar zona. 68 Figura 31. Diagrama de secuencia - entidades: seleccionar zona. 68 Figura 32. Diagrama de secuencia: usuario ausente. 69 Figura 33. Diagrama de secuencia - entidades: usuario ausente. 69 RESUMEN Con esta tesis se presenta un caso de estudio analizado y diseñado con el lenguaje unificado de modelado. Este lenguaje de diseño tiene la peculiaridad de ser completamente orientado a objetos, característica que lo hace sobresalir entre los lenguajes de diseño estructurado. Otro punto a su favor, es que es un lenguaje reciente ya que los esfuerzos por crearlo comenzaron en 1994, logrando en 1997 la primera versión de este lenguaje de diseño. Con este caso de estudio, se pretende ejemplificar en forma clara y sencilla la metodología del diseño orientado a objetos y la forma en que se deben elaborar los artefactos involucrados en cada etapa del mismo, especificándolos de acuerdo a la notación del lenguaje de modelado unificado. Entre los diferentes artefactos de diseño que se obtienen como resultado de este caso de estudio están comprendidos: • Casos de uso • Diagramas de casos de uso • Diagramas de secuencia de sistema • Diagramas de clases Los cuales hacen posible en el momento de especificar un diseño, que tanto el analista, como el usuario, y los programadores visualicen el caso de estudio de una manera uniforme. La conclusión de este caso de estudio presenta además de los artefactos mencionados, un análisis del panorama del lenguaje de modelado unificado y el diseño orientado a objetos, los cuales permiten al analista adoptar posturas muy distintas a la hora de enfocar sus esfuerzos de diseño sobre un caso particular. RESUMEN This thesis is a case study that is analyzed and designed, using the unified language of modeling. This design language has the peculiarity of being totally object oriented, a characteristic that makes it stand out among structured design languages. Another point in its favor is that it is a relatively new language, as efforts to create it they began in 1994, with the first version of this design language introduced in 1997. y la forma en que se deben elaborar los artefactos involucrados en cada etapa del mismo, especificándolos de acuerdo a la notación del lenguaje de modelado unificado. Entre los diferentes artefactos de diseño que se obtienen como resultado de este caso de estudio están This case study seeks exemplify the methodology of object oriented design in a clear and simple way and the manner in which the artifacts involved in each stage should be elaborated, according to the concept of unified modeling language. Among the different design devices that are obtained as a result of this case study are: • Cases of use • Diagrams of cases of use • Diagrams of system sequence • Diagrams of classes These four devices make the visualization of the case study between the analyst, the user, and the programmer more uniform at the moment of specifying a specific design. In conclusion, this case study presents, besides the aforementioned devices, an analysis of the panorama of unified modeling language and object oriented design, which allow the analyst to adopt very different postures when focusing on design efforts in a specific case. I.- INTRODUCCIÓN El presente trabajo muestra un ejemplo práctico del lenguaje de modelado unificado. En sus páginas, se escenifica un caso de estudio, el cual se somete a un proceso de desarrollo orientado a objetos y a la especificación de artefactos de diseño orientados al lenguaje de modelado unificado. cuestión hace referencia a El caso de estudio en un sistema de comunicación orientado a la retransmisión de charlas a través de internet, y pretende ilustrar de manera clara y sencilla, la forma en que se elaboran los diferentes artefactos de diseño del lenguaje de modelado unificado. El lector encontrará también, las bases teóricas que fundamentan este caso de estudio y las conclusiones a las que se llegaron después de haber completado todas las fases de diseño que este caso de estudio comprende. En él se abordan los conocimientos y habilidades necesarias para proporcionar los artefactos de diseño básicos del lenguaje de modelado unificado, utilizados para analizar y diseñar software . En el primer capítulo de este trabajo, se incluye una descripción de las metodologías aplicadas tanto a la elaboración del marco teórico, como al desarrollo del caso de estudio; siendo de vital importancia para la comprensión e interpretación de las conclusiones presentadas. El segundo capítulo, conformado por el marco teórico, incluye tres temas principales que presentan un panorama amplio, mas no exhaustivo, sobre la plataforma cliente servidor, el lenguaje de modelado unificado y el diseño orientado a objetos. Respecto al primer tema, se ilustran conceptos básicos así como sus ventajas y desventajas, cuya comprensión permitirán al lector conformar un panorama general del ambiente en el que se desarrolla el caso de estudio. El segundo tema introduce los componentes del lenguaje de modelado unificado (un lenguaje que permite dar un enfoque orientado a objetos al diseño de software), los cuales fueron utilizados para realizar este trabajo. El tercer y ultimo tema del marco teórico, hace referencia a las nociones mínimas que son necesarias para comprender la utilidad de los artefactos de diseño, resultado de este trabajo. El tercer capítulo, que representa la parte medular de éste trabajo, se encuentra guiado por un caso de estudio, que invita al lector, a comprender y aplicar el lenguaje de modelado unificado de una manera clara y sencilla, explicando a detalle cada una de las etapas involucradas en el proceso de desarrollo del caso de estudio y proporcionando ilustraciones y diagramas que en su conjunto hacen posible especificar el diseño del caso de estudio. El capítulo 4, que conforma la parte final de este trabajo, presenta las conclusiones, las cuales mencionan los logros alcanzados en este trabajo, y un análisis particular sobre el lenguaje de modelado unificado. OBJETIVO Analizar y diseñar un caso de estudio, aplicando los principios del Lenguaje de Modelado Unificado. OBJETIVO PARTICULAR Elaborar los siguientes artefactos de diseño, de acuerdo con la notación del lenguaje de modelado unificado: casos de uso, diagramas de casos de uso, de colaboración, de secuencia, de clases y de paquetes de la arquitectura, necesarios para el diseño de un sistema de comunicación enfocado a la retransmisión de charlas a través de internet. JUSTIFICACIÓN Cuando se tiene la experiencia de estar en contacto con el sector laboral y el académico referente a una profesión, resulta evidente que la caducidad del conocimiento puede llegar en el breve momento en el que una persona se aleje de las fuentes de nuevas ideas, esto debido al rápido desarrollo y difusión que tienen las nuevas tecnologías. Refiriéndonos al área de la informática y los sistemas computacionales, estas tecnologías van enfocadas tanto al hardware (que corresponde a la parte física de una computadora) como al software (que se refiere a las aplicaciones que una computadora puede ejecutar), y es en éste último, en el que se enfocará la presente investigación. El software, es sin duda, la forma más palpable para medir el desempeño de una computadora, debido a que entre mejor diseñado esté el software aplicado a una computadora, mayor será el aprovechamiento que se tenga del hardware, y es aquí donde radica la importancia de un diseño eficiente del software. Es necesario recordar que el software nace con la invención de la primera computadora, y el por qué de su nacimiento se refiere a la necesidad de especificar una forma de "decirle" a la computadora las tareas que debe ejecutar. Desde entonces, numerosos y variados paradigmas han surgido en torno al diseño y elaboración de aplicaciones de software, que con el paso del tiempo aumentan su grado de complejidad. En este terreno de los paradigmas es que surge el lenguaje de modelado unificado, como una alternativa para el diseño de sistemas con gran cantidad de software. Este lenguaje de modelado unificado surge en Enero de 1997, como una respuesta a las necesidades del mercado para contar con un lenguaje estándar de modelado; y es debido a su relativamente "corta" edad que no se encuentra muy difundido en las escuelas, ya que este proceso requiere de tiempo para que el lenguaje sea conocido, utilizado y comprobado por usuarios y después llevado al ámbito académico. Refiriéndonos a éste dentro de la Facultad de Telemática de la Universidad de Colima, el lenguaje de modelado unificado no ha llegado a este nivel de difusión, esto con base en que los planes de estudio de dicha Facultad, correspondientes al año de 1999, no contemplan el lenguaje de modelado unificado en su estructura. Es por esta razón, que se presenta un caso de estudio, en el cual se plantean de una forma clara y explícita, las etapas y artefactos involucrados en el desarrollo de sistemas de información, utilizando el lenguaje de modelado unificado para su especificación. La mayor importancia radica no en el caso de estudio en particular, sino en la forma en se aplica el lenguaje de modelado unificado para identificar y alcanzar los objetivos del diseño, ya que éste obliga al analista, a adoptar un punto de vista orientado a objetos, el cual es muy diferente al diseño estructurado. II.- MARCO TEÓRICO Y CONCEPTUAL 2.1 Plataforma Cliente – Servidor El presente capítulo tiene como principal objetivo, ilustrar un tema característico de la tecnología computacional denominada Arquitectura Cliente Servidor. De igual forma se pretende cumplir los siguientes objetivos: • Definir ¿qué es un ambiente Cliente - Servidor? • Citar las principales ventajas de esta plataforma. 2.1.1 Arquitectura Cliente – Servidor. El término Cliente - Servidor se utiliza frecuentemente como sinónimo de Proceso Cooperativo o Proceso Distribuido, es decir, distribución de aplicaciones y / o datos en una red de ordenadores. Una definición de la arquitectura Cliente - Servidor desde el punto de vista empresarial puede ser la siguiente: Distribución de los recursos computacionales a lo largo y ancho de la organización, pero con una administración central, como un todo único (Elizalde, 2000). La tecnología Cliente - Servidor puede definirse como un conjunto de elementos tanto de software como de hardware, entre los cuales se destacan tres tecnologías: el cliente, el servidor y la red. El Servidor central quien acepta y procesa los requerimientos de otro elemento llamado cliente, quien es el encargado de recibir el resultado del proceso; estos dos elementos son unidos por medio de una red de comunicaciones. Esta definición no se aleja de lo que entendemos por una red, sin embargo lo primordial se encuentra en las características que debe cumplir cada uno de estos elementos, pero sobre todo lo fundamental se encuentra en la calidad del diseño que se haga para la arquitectura, y así poder explotar todas las ventajas ofrecidas por las tres tecnologías mencionadas. 2.1.2 El Cliente. Es el elemento encargado de interactuar directamente con el usuario final. Mediante éste el usuario realiza el acceso a la información sin importar el lugar en donde se encuentre. El cliente maneja la presentación de los datos, realiza la captura y la validación de los mismos, genera consultas ejecuta operaciones y recibe información procedente del servidor o de otro cliente. Por lo tanto el cliente debe contar con una gran capacidad de procesamiento, y debe poseer una interfaz amigable para el usuario final. Una interfaz gráfica de usuario (GUI) es la ideal para un cliente, ya que le permite realizar operaciones complejas mediante labores sencillas como oprimir botones, los cuales están ubicados en la pantalla gráfica; teniendo esto como consecuencia, que los usuarios finales no necesiten conocimientos profundos sobre computación. 2.1.3 El servidor. El servidor es el encargado de satisfacer los requerimientos del cliente. Procesa las consultas del cliente, envía, recibe y almacena información, provee seguridad y control de acceso. Existen varias clases de servidores: de datos, de correo electrónico, de imágenes, de impresión, entre otros. Los servidores deben contar con elementos que gestionen los datos, esto se lleva a cabo mediante un Sistema Manejador de Bases de Datos (DBMS), que permita una transparencia de acceso, de distribución y de integridad a todas las transacciones de la base de datos. Dependiendo del diseño de la aplicación, los servidores tendrán la tarea de acceder a la información solicitada por el cliente y procesarla, o únicamente distribuir los datos para que sean procesados por los clientes. Las funciones básicas de el cliente y del servidor, se resumen en forma breve en la Tabla 1, y se muestran en forma comparativa, para permitir una mejor comprensión de los conceptos anteriormente citados. Funciones del Cliente Administrar la interfaz de usuario. Funciones del Servidor Aceptar las solicitudes de la base de datos de los clientes. Aceptar datos usuario. Procesar las solicitudes de la base de datos. Dar formato a los resultados y Trasmitirlos al cliente. Procesar la lógica de la aplicación. Generar las solicitudes para la Base de Llevar a cabo Datos. integridad. la verificación de Transmitir las solicitudes de la base de Mantener los datos generales de la base datos al servidor. de datos. Recibir los resultados del servidor. Proporcionar control de acceso concurrente . Dar formato a los resultados. Llevar a cabo recuperación. Optimizar el procesamiento consultas/ actualización. de Tabla 1. Funciones Cliente y Servidor 2.1.4 La red. La Red es elemento encargado de realizar la transmisión de los requerimientos del cliente al servidor y del servidor al cliente. También controla la transmisión de datos entre los diferentes servidores que conformen el ambiente. 2.1.5 Ventajas de la plataforma Cliente - Servidor. • Control Centralizado: el usuario final tiene el control sobre todos los clientes de la red, de otra parte el administrador del sistema ejerce el control sobre el servidor y sobre la red, permitiendo mantener la seguridad en la base de datos. Un cliente podrá hacer las veces de servidor en el momento que se requiera. • Sistemas Abiertos: soporta múltiples ambientes, múltiples plataformas, múltiples manejadores de bases de datos. • Flexibilidad y Escalabilidad: permite reemplazar, ampliar o agregar componentes sin necesidad de realizar grandes cambios a la aplicación. • Incremento de la Productividad: con las plataformas amigables, los usuarios podrán emplear menos tiempo en la realización de las tareas que antes eran tediosas. • Reducción de Tráfico: la red se descongestiona por que la manipulación de los datos ocurre en el cliente y en el servidor, dependiendo de cuál sea la forma más efectiva para cada tarea. La red dedica mayor tiempo a transportar los resultados y no las consultas. 2.1.6 Desventajas de la plataforma Cliente – Servidor. Una desventaja de los sistemas cliente servidor se refiere al control. Las computadoras cliente operan en forma simultánea y procesan las aplicaciones en paralelo. Surge así la posibilidad de problemas por actualización perdida y otros problemas de control de multiusuario. 2.1.7 Retransmisión de charlas a través de Internet. El Internet Relay Chat (IRC) es un sistema de chat que involucra un conjunto de reglas y convenciones, así como software cliente-servidor (Lee, 1999) . Este tipo de sistemas permite que múltiples usuarios se reúnan simultáneamente en tertulias o debates, en los cuales cada uno va expresando sus opiniones de forma escrita y en tiempo real (Irc, 2002). Básicamente, este tipo de sistemas esta conformado por un sistema cliente, que se conecta a través de internet a un sistema servidor, que es el encargado de coordinar a los usuarios y enviar los mensajes. Esto puede interpretarse en la Figura 1: Sistema Cliente Sistema Cliente Sistema Cliente Internet Sistema Servidor Figura 1. Esquema un sistema I.R.C. La plataforma cliente servidor y los sistemas de retransmisión de charlas a través de internet, son partes fundamentales para la realización de este caso de estudio, debido a que proporcionan el ambiente sobre el cual trabajará el sistema. Es importante que se logre la integración de estos conceptos dentro del caso de estudio, ya que se busca dar mayor comprensión al diseño. Los detalles de la implementación de esta arquitectura al diseño generado en este caso de estudio queda fuera de los objetivos del mismo. 2.2 U.M.L.: Lenguaje Unificado de Modelado 2.2.1 Una breve historia de UML. Los lenguajes de modelado orientados a objetos aparecieron, en algún momento, entre la mitad de los setenta y finales de los ochenta cuando los metodologistas, enfrentados a los nuevos lenguajes de programación orientados a objetos y a unas aplicaciones cada vez más complejas, empezaron a experimentar con enfoques alternativos al análisis y al diseño. El número de métodos orientados a objetos se incrementó de menos de l0 a más de 50 durante el período entre 1989 y 1994 (Booch et-al, 1999). Muchos usuarios de estos métodos tenían problemas al intentar encontrar un lenguaje de modelado que cubriera sus necesidades completamente por lo que basadas de estas experiencias, comenzaron a aparecer nuevas generaciones de métodos, entre los que destacaron de manera muy clara unos pocos métodos, en especial el método de Booch, el método OOSE (Object-Oriented Software Engineering, Ingeniería del Software Orientada a Objetos) de Jacobson y el método OMT (Object Modeling Technique, Técnica de Modelado de Objetos) de Rumbaugh. En pocas palabras, el método de Booch era particularmente expresivo durante las fases de diseño y construcción de los proyectos, OOSE proporcionaba un soporte para los casos de uso como forma de dirigir la captura de requisitos, el análisis y el diseño de alto nivel, y OMT-2 era principalmente útil para el análisis y para los sistemas de información con gran cantidad de datos. Una masa crítica de ideas comenzó a formarse en la primera mitad de los noventa, cuando Grady Booch (Rational Software Corporation), Ivar Jacobson (Objectory) y James Rumbaugh (General Electric) (Booch et-al íbidem) comenzaron a adoptar ideas de cada uno de los otros dos métodos, los cuales habían sido reconocidos en conjunto como los tres principales métodos orientados a objetos a nivel mundial. Como creadores principales de los métodos de Booch, OOSE y OMT, se sintieron motivados para crear un lenguaje unificado de modelado por tres razones: En primer lugar, cada uno de los métodos ya estaba evolucionando independientemente hacia los otros dos. Tenía sentido hacer continuar esa evolución de forma conjunta en vez de hacerlo por separado, eliminando la posibilidad de cualquier diferencia gratuita e innecesaria que confundiría aún más a los usuarios. Segundo, al unificar los métodos, se podría proporcionar cierta estabilidad al mercado orientado a objetos, permitiendo que los proyectos se pusieran de acuerdo en un lenguaje de modelado maduro y permitiendo a los constructores de herramientas que se centraran en proporcionar más características útiles. Tercero, se esperaba que la colaboración introduciría mejoras en los tres métodos anteriores, ayudando a capturar lecciones aprendidas y a cubrir problemas que ninguno de los métodos había manejado bien anteriormente. 2.2.2 Principios del modelado. El uso del modelado tiene una historia interesante en todas las disciplinas de ingeniería. Esa experiencia sugiere cuatro principios básicos de modelado. Primero: En el software, los modelos elegidos pueden afectar mucho a nuestra visión del mundo. Si se construye un sistema con la mirada de un desarrollador de bases de datos, probablemente el diseño este centrado en los modelos entidad-relación que trasladan el comportamiento a disparadores (triggers) y procedimientos almacenados. Si se construye un sistema con la mirada de un analista estructurado, probablemente se obtendrán modelos centrados en los algoritmos, con los datos fluyendo de proceso en proceso. Si se construye un sistema con la mirada de un desarrollador orientado a objetos, se obtendrá un sistema cuya arquitectura se centra en un mar de clases y los patrones de interacción que gobiernan cómo trabajan juntas esas clases. No obstante, la cuestión es que cada visión del mundo conduce a un tipo de sistema diferente, con diferentes costos y beneficios. Segundo: Todo modelo puede ser expresado a diferentes niveles de precisión. Si se está construyendo un rascacielos, a veces es necesaria una vista de pájaro, por ejemplo, para ayudar a que los inversores se imaginen su aspecto externo. Otras veces, hay que descender al nivel de los remaches, por ejemplo, cuando hay un recorrido de tuberías enmarañado o un elemento estructural poco usual. Eso mismo es cierto con los modelos software. A veces, un pequeño y sencillo modelo ejecutable de la interfaz del usuario es exactamente lo que se necesita, otras veces, hay que bajar y enredarse con los bits (Booch et-al, 1999) como cuando se están especificando interfaces entre sistemas o luchando con cuellos de botella en redes. En cualquier caso, los mejores tipos de modelos son aquellos que permiten elegir el grado de detalle, dependiendo de quién está viendo el sistema y por qué necesita verlo. Un analista o un usuario final se centrarán en el qué, mientras que un desarrollador se centrará en el cómo. Tanto unos , como otros querrán visualizar un sistema a diferentes niveles de detalle en momentos diferentes. Tercero: Los mejores modelos están ligados a la realidad. Todos los modelos simplifican la realidad, el truco está en asegurarse de que las simplificaciones no enmascaran ningún detalle importante. En el software, el talón de Aquiles de las técnicas de análisis estructurado es el hecho de que hay una desconexión básica entre el modelo de análisis y el modelo de diseño del sistema. No poder salvar este abismo hace que el sistema concebido y el sistema construido diverjan con el paso del tiempo (Booch et-al íbidem). Cuarto: Un único modelo no es suficiente. Cualquier sistema no trivial se aborda mejor a través de un pequeño conjunto de modelos casi independientes (Booch etal). Para comprender la arquitectura de los sistemas orientados a objetos, se necesitan varias vistas complementarias y relacionadas entre si: una vista de casos de uso (que muestre los requisitos del sistema), una vista de diseño (que capture el vocabulario del espacio del problema y del espacio de la solución), una vista de procesos (que modele la distribución de los procesos e hilos (threads del sistema), una vista de implementación (que se ocupe de la realización física del sistema) y una vista de despliegue (que se centre en cuestiones de ingeniería del sistema). Cada una de estas vistas puede tener aspectos tanto estructurales como de comportamiento. En conjunto, estas vistas representan los planos del software. Según la naturaleza del sistema, algunos modelos pueden ser más importantes que otros. Por ejemplo, en sistemas con grandes cantidades de datos, dominarán los modelos centrados en las vistas de diseño estáticas. En sistemas con uso intensivo de interfaces gráficas de usuario (GUI), las vistas de casos de uso estáticas y dinámicas son bastante importantes. En los sistemas de tiempo real muy exigentes, las vistas de procesos dinámicas tienden a ser más importantes. Finalmente, en los sistemas distribuidos, como los encontrados en aplicaciones de uso intensivo de la Web, los modelos de implementación y despliegue son los más importantes. 2.2.3 Modelado Orientado a Objetos. En el software hay varias formas de enfocar un modelo. Las dos formas más comunes son la perspectiva orientada a objetos y la perspectiva algorítmica. La visión tradicional del desarrollo de software toma una perspectiva algorítmica. En este enfoque, el bloque principal de construcción de todo el software es el procedimiento o función. Esta visión conduce a los desarrolladores a centrarse en cuestiones de control y de descomposición de algoritmos grandes en otros más pequeños. No hay nada inherentemente malo en este punto de vista, salvo que tiende a producir sistemas frágiles. Cuando los requisitos cambian y el sistema crece, los sistemas construidos con un enfoque algorítmico se vuelven muy difíciles de mantener. La visión actual del desarrollo de software toma una perspectiva orientada a objetos. En este enfoque, el principal bloque de construcción de todos los sistemas software es el objeto o clase. Para explicarlo sencillamente, un objeto es una cosa, generalmente extraída del vocabulario del espacio del problema o del espacio de la solución (Paige, 1999); una clase es una descripción de un conjunto de objetos similares (Paige, íbidem). Actualmente, el enfoque orientado a objetos forma parte de la tendencia principal para el desarrollo de software, simplemente porque ha demostrado ser válido en la construcción de sistemas en toda clase de dominios de problemas, abarcando todo el abanico de tamaños y complejidades. Más aún, la mayoría de los lenguajes actuales, sistemas operativos y herramientas son orientados a objetos de alguna manera, lo que ofrece más motivos para ver el mundo en términos de objetos. Varias cuestiones se derivan de la elección de ver el mundo de una forma orientada a objetos: ¿Cuál es la estructura de una buena arquitectura orientada a objetos? ¿Qué artefactos debería crear el proyecto? ¿Quién debería crearlos? ¿Cómo deberían medirse? Visualizar, especificar, construir y documentar sistemas orientados a objetos es exactamente el propósito, del UML. 2.2.4 Visión general de UML. El UML es un lenguaje estándar para escribir planos de software. UML puede utilizarse para visualizar, especificar, construir y documentar los artefactos de un sistema que involucra una gran cantidad de software. UML es apropiado para modelar desde sistemas de información en empresas hasta aplicaciones distribuidas basadas en la Web, e incluso para sistemas empotrados de tiempo real muy exigentes (Flower, 1999). Es un lenguaje muy expresivo, que cubre todas las vistas necesarias para desarrollar y luego desplegar tales sistemas, ya que no se debe de perder de vista que UML es el resultado de años de experiencia y estudio en el desarrollo de software. UML es sólo un lenguaje y por tanto es tan sólo una parte de un método de desarrollo de software (Larman, 1999). UML es independiente del proceso de desarrollo, aunque para utilizarlo óptimamente se debería usar en un proceso que fuese dirigido por los casos de uso, centrado en la arquitectura, iterativo e incremental. 2.2.5 UML es un lenguaje. Un lenguaje proporciona un vocabulario y las reglas para combinar palabras de ese vocabulario con el objetivo de posibilitar la comunicación (Booch et-al, 1999). Un lenguaje de modelado es aquel cuyo vocabulario y reglas se centran en la representación conceptual y física de un sistema. Un lenguaje de modelado como UML es por tanto un lenguaje estándar para los planos del software. El modelado proporciona una comprensión de un sistema. Para sistemas con gran cantidad de software, se requiere un lenguaje que cubra las diferentes vistas de la arquitectura de un sistema mientras evoluciona a través del ciclo de vida del desarrollo de software. El vocabulario y las reglas de un lenguaje como UML indican cómo crear y leer modelos bien formados, pero no dicen qué modelos se deben crear ni cuándo se deberían crear. Esta es la tarea del proceso de desarrollo de software. Un proceso bien definido guiará a sus usuarios al decidir qué artefactos producir, qué actividades y qué personal emplear para crearlos y gestionarlos, y cómo usar esos artefactos para medir y controlar el proyecto de forma global. UML como lenguaje de modelado en la actualidad llama cada vez mas a los programadores de sistemas a utilizarlo, debido a la rapidez y efectividad de sus especificaciones y a que es de gran aceptación por su diseño orientado a objetos. Este lenguaje para la especificación de software representa la herramienta básica para cumplir con el objetivo de diseño del sistema de comunicación planteado como objeto de estudio de este trabajo, y usado de forma conjunta con las tecnologías y plataformas descritas en los capítulos anteriores, permitirá una especificación precisa y confiable del sistema que comprende el caso de estudio de este trabajo. Entre los diferentes artefactos que proporciona UML para el análisis y diseño y que serán utilizados en este caso de estudio están: • Tarjetas CRC • Casos de uso • Diagramas de casos de uso • Diagramas de secuencia del sistema • Glosario de términos • Modelo conceptual • Diagramas de clases • Contratos Cada uno de los cuales se describe a continuación. 2.2.6 Tarjetas CRC (clase-responsabilidad-colaboración) Las tarjetas CRC son una técnica utilizadas para determinar las clases de un sistema propuesto (Arlow, 2002), asignando responsabilidades a las clases y encontrando todas las clases necesarias para lograr que se cumplan todas las responsabilidades asignadas. La información se coloca en tarjetas de 4 x 6 pulgadas y en lugar de escribir en ellas atributos y métodos, se escriben responsabilidades, colaboraciones y conocimientos. La tarjeta CRC tiene el formato presentado en la Figura 2: Nombre Conocimiento Responsabilidades Colaboraciones Figura 2. Formato de tarjeta C.R.C. La tarjeta CRC se aplica en sesiones en las que normalmente participan expertos en todo el campo del problema, como por ejemplo: analistas, diseñadores, programadores, administradores, usuarios finales; todos aquellos que de una u otra forma estén involucrados con el sistema y que puedan aportar algo a su planteamiento. Durante las sesiones, se determinan cuales pueden ser las clases candidatas con la finalidad de que formen parte del diseño del sistema. 2.2.7 Casos de Uso Un caso de uso es, en esencia una interacción típica entre un usuario y un sistema de cómputo (Flower, 1999). El caso de uso capta alguna función visible para el usuario, puede ser grande o pequeño y logra un objetivo discreto para el usuario. El caso de uso se obtiene hablando con los usuarios habituales y analizando con ellos las distintas tareas que planear realizar con el sistema. Los casos de uso pueden considerarse como un documento narrativo que describe la secuencia de eventos de un actor (externo) que utiliza un sistema para completar un proceso (Jacobson, 1992)]. Su notación en UML esta dada por un óvalo, que en su interior contiene el nombre del caso de uso que representa como lo ilustra la Figura 3: Caso de Uso Figura 3. Símbolo de caso de uso Los casos de uso, de acuerdo a su contenido y a su grado de abstracción se clasifican en diferentes categorías: • Alto Nivel: este tipo de casos de uso, son los más básicos y sencillos de plantear, este tipo de caos de uso describe un proceso muy brevemente, casi siempre en dos o tres enunciados(Larman, 1999)]. Estos casos son muy sucintos y vagos en las decisiones de diseño, pero son útiles para comenzar a analizar el problema y a partir de ellos plantear los demás tipos de casos de uso. • Expandido: muestra más detalles del problema a analizar que los casos de alto nivel, este tipo de casos suelen ser útiles para alcanzar un conocimiento más profundo de los procesos y requerimientos (Larman, íbidem). Por lo regular suelen plantearse con un estilo “coloquial” y comienzan con la frase: “este caso de uso comienza”, que es la forma que se adoptó en este caso de estudio, aunque no es una regla a seguir. • Primario: esta categoría permite al diseñador, identificar o asignar cierta prioridad a los casos de uso, siendo los primarios, aquellos que representan los procesos comunes más importantes (Larman, íbidem) que acontecen dentro del sistema. • Secundario: a esta clasificación pertenecen aquellos casos de uso que representan procesos poco comunes o raros que se suceden dentro del sistema. • Opcional: es el caso de uso que se utiliza para representar procesos que no pueden abordarse o cuya integración al diseño no representa ningún beneficio sustancioso. • Esencial: son casos expandidos que se representan en forma teórica que tienen poca tecnología y pocos detalles de implementación (Booch et-al 1999), mantiene un carácter abstracto, es especial a lo que se refiere a la interfaz con el usuario. • Real: representan concretamente el proceso a partir de su diseño concreto actual, sujeto a las tecnologías de entrada y de salida (Maldonado, 1999). Este tipo de casos se apega más a la realidad que cualquiera de los antes mencionados, y conserva una estricta relación con la realidad de donde se abstrae el caso. En su conjunto, todos estos tipos de casos de uso, son una poderosa herramienta de análisis, ya que proporcionan al diseñador un enfoque desde diferentes puntos de vista, lo cual le permite apreciar en una forma más palpable el problema que se analiza a la vez que permite analizarlo en forma abstracta o en forma real. 2.2.8 Diagramas de Casos de Uso. Los diagramas de casos de uso son un artefacto importante dentro del UML, ya que permiten modelar el comportamiento de un sistema, un subsistema o una clase (Booch et-al 1999), según sea el caso. Estos diagramas explican gráficamente un conjunto de casos de uso de un sistema, los actores y las relaciones que existen entre éstos y los casos de uso. Tienen por objeto ofrecer un diagrama contextual que permita reconocer rápidamente los actores externos de un sistema y las formas básicas en que lo utilizan. Normalmente, un diagrama de casos de uso contiene: Casos de uso, actores y relaciones. Los diagramas de casos de uso tienen la siguiente forma, ilustrada en la Figura 4: TPDV Compra Productos Usuario Cajero Registra los Productos Entrega el cambio de los roductoscomprados Fig. 4 Ejemplo de un diagrama de casos de uso 2.2.9 Diagramas de secuencia del sistema. Estos diagramas muestran gráficamente los eventos que fluyen de los actores al sistema, forman parte del análisis y su creación depende de la formulación previa de los casos de uso. El diagrama de secuencia es una representación que muestra, en un determinado caso de uso, los eventos generados por actores externos, su orden y los eventos del sistema (Larman, 1999). A todos los sistemas se les trata como una caja negra, ya que los diagramas se centran en los eventos y operaciones involucradas en él, sin importar la forma en que son resueltos dichos eventos y operaciones. Un diagrama de secuencia de sistema tiene la siguiente forma: Comprar productos Caso de Uso: Iniciar Sesión Curso normal de los eventos 1.- Este caso comienza cuando un cliente llega a una caja de TDPV con los productos que desea comprar. 2.- El cajero registra el código del producto de cada p r o d u c t o . 3.- El sistema determina el precio del producto y agrega la información sobre el producto y lo agrega a la transacción actual de ventas. Se muestran la descripción y el precio actual. Cajero : Sistema IntroducirProducto(CUP,cantidad) terminarVenta() EfectuarPago(monto) Figura.5 Diagrama de secuencia de sistema. Estos diagramas contienen una prosa, que describe el caso de uso que se esta representando así como las operaciones que cada uno de los actores genera. 2.2.10 Glosario de términos. El glosario es un documento simple en el cual se definen términos. También conocido como diccionario modelo, semejante a un diccionario de datos, incluye y define todos los términos que requieren explicación para mejorar la comunicación y aminorar el riesgo de malos entendidos (Booch et-al 1999). Este glosario se crea originalmente durante la fase de planeación y elaboración conforma vayan generándose los términos, después va perfeccionándose de continuamente en cada ciclo de desarrollo, al aparecer nuevos vocablos. Por lo regular se realiza junto con la especificación de requerimientos, los casos de uso y el modelo conceptual. 2.2.11 Modelo conceptual. Un modelo conceptual, explica a sus creadores y a los demás miembros del equipo de desarrollo los conceptos significativos en un dominio del problema, es el artefacto más importante a crear durante el análisis orientado a objetos, ya que de él dependen otros artefactos de diseño. Para poder elaborar un modelo conceptual del sistema, se debe de contar con artefactos previamente elaborados como los casos de uso y las tarjetas CRC, aunque esto no implique que la creación sea lineal, ya que se pueden crear los casos de uso y el modelo conceptual en forma paralela. Un modelo conceptual es una representación de conceptos en un dominio del problema (Flower, 1999), el cual puede mostrar: conceptos, asociaciones entre conceptos y atributos de conceptos. Su elaboración consta de tres etapas, la primera, identificar los conceptos u objetos relacionados con el problema. El segundo se refiere a la agregación e identificación de asociaciones existentes entre los conceptos identificados. Por último se identifican y agregan los atributos, que son características propias de cada objeto. Una vez ejecutados los pasos anteriores, surge como resultado el modelo conceptual del sistema 2.2.12 Diagramas de clases. Los diagramas de clases son los más utilizados en el diseño de sistemas orientados a objetos. Un diagrama de clases muestra un conjunto de clases, interfases y colaboraciones, así como sus relaciones (Booch et-al 1999). Estos diagramas se utilizan para modelar la vista de diseño estática de un sistema, además de que son importantes no sólo para visualizar, especificar y documentar modelos, sino también para construir sistemas ejecutables, aplicando ingeniería directa e inversa. Los diagramas de clases describen gráficamente las especificaciones de las clases de software y de las interfases en una aplicación. Por lo regular pueden contener la siguiente información: clases, asociaciones, atributos, métodos, interfases e información sobre los tipos de los atributos. Para elaborar un diagrama de clases primero es necesario identificar cuáles de los conceptos del modelo conceptual formarán parte de las clases del software. Una vez identificados se deben examinar sus atributos o propiedades para después añadirles las operaciones o métodos que cada clase puede ejecutar. Para finalizar se definen y agregan las asociaciones que existen entra cada clase, que por lo regular se toman del modelo conceptual. 2.2.13 Contratos. Los contratos son otro de los artefactos que se crean en la etapa de diseño, y están directamente relacionados con el comportamiento del sistema. Su elaboración depende del desarrollo previo del modelo conceptual, los diagramas de secuencia y la identificación de las operaciones. En términos generales, un contrato se puede definir como un documento que describe lo que una operación se propone lograr (Larman, 1999). Por lo regular se redacta en un estilo declarativo centrándose más en lo que sucederá y no en cómo se conseguirá. En una manera informal se puede definir al contrato como una fotografía tomada antes y después de que se ha ejecutado alguna operación que produce cambios en el sistema. Debe elaborarse un contrato por cada operación que exista en cada caso de uso que se halla detectado. Un contrato cuenta con secciones que permiten especificar información particular de cada caso de uso, y tiene el siguiente esquema: Nombre: Nombre de la operación y parámetros Responsabilidades: Descripción informal de las actividades que debe cumplir la operación. Tipo: Especifica si es clase de software, concepto, interfaz, etc. Referencias cruzadas: Números de referencia de las funciones del sistema. Notas: Información adicional. Excepciones: Casos excepcionales. Salida: Mensajes o registros que se envían fuera del sistema. Precondiciones: Suposiciones acerca del estado del sistema, antes de que se ejecute la operación. Poscondiciones: Definición del estado del sistema después de que se ha ejecutado una operación. Obviamente, este esquema no es obligatorio y no todas sus partes se aplican en cada contrato. Lo que sí es obvio es que los contratos son de gran ayuda para los diseñadores y programadores del sistema, ya que se elaboran a un nivel más apegado a las fases de diseño y permite visualizar los posibles estados de la información, aún cuado no se ha llegado a la etapa de implementación. 2.2.14 Usos del UML. UML es un lenguaje para visualizar: Para muchos programadores, la distancia entre pensar en una implementación y transformarla en código es casi cero. Lo piensan, lo codifican. De hecho, algunas cosas se modelan mejor directamente en código. En tales casos, el programador todavía está haciendo algo de modelado, si bien lo hace de forma completamente mental. Incluso puede bosquejar algunas ideas sobre una pizarra blanca o sobre una servilleta, aunque esto genera un gran problema: cómo comunicarlo a los demás miembros del equipo de trabajo o a los encargados de mantenimiento del sistema. Al escribir modelos en UML se afronta este gran problema, ya que se proporciona un modelo explícito del sistema, el cual facilita la comunicación. UML es un lenguaje para especificar: En este contexto, especificar significa construir modelos precisos, no ambiguos y completos. En particular, UML cubre la especificación de todas las decisiones de análisis, diseño e implementación que deben realizarse al desarrollar y desplegar un sistema con gran cantidad de software. UML es un lenguaje para construir: UML no es un lenguaje de programación visual, pero sus modelos pueden conectarse de forma directa a una gran variedad de lenguajes de programación, lo que le da cierto carácter de universalidad, a nivel de diseño. Las cosas que se expresan mejor gráficamente también se representan gráficamente en UML, mientras que las cosas que se expresan mejor textualmente se plasman con el lenguaje de programación. III.- METODOLOGÍA 3.1 Elaboración del marco teórico Esta investigación se realizó, bajo al perspectiva de la investigación aplicada, en la cual se manejan tres niveles de investigaciones concernientes al información, ya que en las ámbito académico es necesario hacer referencia, directa o indirectamente, a los todos los niveles que tienen que ver con la información relacionada con el caso de estudio; lo que no podría ser de otra forma, pues quedarse solamente en el plano teórico sin establecer conexiones con la realidad empírica para poder trabajar con ésta, nos llevaría a una formalización de la teoría poco creativa para el desarrollo del trabajo científico. El primer nivel implica el manejo de las teorías generales del diseño de software, el cual tiene dos corrientes principales: el diseño estructurado y el diseño orientado a objetos. Del diseño orientado a objetos, que es el que forma parte del caso de estudio que se presenta en este trabajo, se analizaron conceptos particulares como los lenguajes de diseño orientados a objetos, en particular, el lenguaje de modelado unificado. El información proveniente de segundo nivel distintas consiste en analizar fuentes, como: investigaciones documentadas en bibliotecas e informes publicados en Internet relacionados con el lenguaje de modelado unificado, elaborando las fichas bibliográficas correspondientes . Entre éstas diversas fuentes se contó además, con la entrevista cualitativa, que es la recopilación de información en forma directa, cara a cara, es decir, el entrevistador obtiene datos del entrevistado siguiendo una serie de preguntas preconcebidas (Muñoz, 1998). En el proceso de análisis de la información, debió distinguirse entre la aquella que resulta significativa para estudiar el problema y la que por estar dirigida a otras situaciones, no tiene puntos en común con la problemática a tratar, o simplemente resulta inoperante. El propósito fue, básicamente, contar con información confiable y congruente con la realidad. El tercer nivel implica el manejo de información obtenida mediante un acercamiento con la realidad, esto a través de la entrevista realizada a Carlos Maldonado Villaverde, y las pláticas sostenidas con el asesor de este trabajo, y de mi experiencia sobre el tema. En éste nivel, se recopila información sobre los aspectos más sobresalientes de este caso de estudio, como son conceptos generales del diseño orientado a objetos, la plataforma de aplicación, y el lenguaje de diseño. Los tres niveles del marco teórico se integran en una visión de la totalidad que permite contextualizar concretamente el caso de estudio en cuestión. Evidentemente, la integración de todos estos elementos se hizo de una manera que se observe coherencia en la presentación de materiales teóricos, así como de todas las ideas que se manejan. Esto permite tener una idea más clara y exacta de los principios y reglas que intervienen en el de estudio de este trabajo. caso 3.2 Desarrollo del caso de estudio La parte fundamental de este caso de estudio se presenta en el capítulo 4, el cual se refiere al análisis y el diseño de un sistema de comunicación. Para llevar a cabo dicho análisis y diseño se utilizó la metodología que dicta el ciclo de vida iterativo. Este ciclo para desarrollar sistemas se basa en el agrandamiento y perfeccionamiento secuencial de un sistema a través de múltiples ciclos de desarrollo de análisis, diseño, implementación y pruebas, (Larman, 1999) y tiene como principal característica, un incremento gradual de la complejidad, de tal forma que el problema se aborda desde un enfoque general al principio, y conforme se va avanzando en el proceso, la complejidad aumenta poco a poco. Este ciclo de vida consta de tres etapas principales, las cuales se muestran a continuación en la Figura 6: Planeación y elaboración Construcción Aplicación Figura 6. Etapas principales del ciclo de vida Para pasar de una etapa a otra, deben cumplirse ciertas tareas, las correspondientes a la primera etapa, la de “planeación”, son aquellas involucradas en la planeación del tiempo y definición de requerimientos del sistema. Esta etapa de “planeación” también incluye tareas de análisis y definición de requerimientos. Como parte inicial del proceso de análisis, se deben identificar palabras “clave” que permitan entender en un lenguaje natural, los actores; que son los que llevan a cabo los casos de uso (Flower, 1999), y los demás objetos que intervienen dentro del ámbito del sistema. Como resultado de este proceso de identificación surge el glosario de términos, que es de gran utilidad, ya que en él estarán contenidos los nombres de los objetos y procesos clave que formaran parte del diseño. En cada etapa del proceso de desarrollo, el glosario se va enriqueciendo y perfeccionando, con la finalidad de incluir en él, todos los conceptos que estén relacionados con el sistema. Una vez concluida la 1ra. etapa, comienza la etapa de “construcción”, cuyos componentes se definen a continuación el la Figura 7: Planeación y elaboración Aplicación Construcción Ciclo de Ciclo de desarrollo 1 desarrollo 2 ... Figura 7. Etapa de construcción. La etapa de “construcción” es la más importante de este ciclo de vida, ya que es en ella donde se da el proceso iterativo. Teniendo como inicio del planteamiento del problema el resultado de la etapa de “planeación”, la etapa de “construcción” consta de varios ciclos (los que sean necesarios), de los cuales, el primero de ellos se alimenta de la información recabada en la etapa de “planeación”. Después de haber comenzado el primer ciclo, se continuó con cada una de las tareas señaladas con la finalidad de llegar a aquellas relacionadas con el análisis y el diseño. Es importante puntualizar, que no se hizo un uso extensivo de el ciclo de vida iterativo ya que este comprende tareas de construcción y pruebas, las cuales no son el objetivo de este caso de estudio, razón por la cual, en este caso particular se aplicó un solo ciclo, haciendo exhaustiva cada tarea comprendida dentro del mismo para lograr un buen resultado. Otra de las razones por las que no fue posible presentar todas las etapas del ciclo de vida es que las tareas de “construcción” y “pruebas” de cada ciclo, aportan información vital que debe ser tomada en cuenta para el ciclo siguiente, de tal forma que esa conexión se perdería debido a que la finalidad de este caso de estudio es el análisis y diseño de un sistema de comunicación, dejando a un lado las acciones correspondientes a la implementación. IV.- DESARROLLO DEL CASO DE ESTUDIO. 4.1 Planeación 4.1.1 Especificación de requerimientos. La aplicación que se utilizará como caso de estudio debe cumplir con las siguientes características: • Entorno de trabajo basado en Internet (plataforma cliente / servidor). • Diseño orientado a objetos. • Enfocada a la retransmisión de charlas a través de Internet. Las cuales son discutidas en el marco teórico. En el caso de estudio que se aplica a este trabajo, se plantea un sistema de charla (cliente) en el que cada usuario tiene la posibilidad de conectarse a Internet e intercambiar mensajes con los demás usuarios independientemente de su localidad geográfica. Internamente, por motivos de organización, un sistema de charla, esta dividido en zonas y éstas a su vez en canales, aunque la configuración de cada sistema en particular puede variar, para el caso de estudio de este trabajo, se considerará un sistema de charla compuesto por 4 zonas principales, denominadas: alfa, beta, gamma y delta, dentro de las cuales se pueden encontrar n usuarios entablando conversaciones individuales. Esta organización se ilustra en la Figura 8: Sistema de charla Zona Alfa Zona Beta Usuario Usuario Usuario Usuario Usuario Usuario Usuario Usuario Usuario Usuario Zona Delta Zona Gamma Usuario Usuario Usuario Usuario Usuario Usuario Figura 8. Esquema de un sistema de charla. 4.1.2 Análisis y elaboración de las tarjetas CRC (clase- responsabilidad-colaboración). Una vez elaboradas las tarjetas CRC, se aplicaron obteniendo como resultado 4 tarjetas CRC que se ilustran a continuación en la Figura 9: Mensaje Conocimiento: Destino Responsabilidades Llegar al destino Remitente Contenido Colaboraciones Usuario destino Usuario remitente Zona Registro_Usuario Conocimiento: Zona Responsabilidades Registrar ingreso de usuario Alias Dirección IP Colaboraciones Mensaje Zona Zona Conocimiento: Cantidad de usuarios Responsabilidades Admitir usuarios Nombre de la zona Expulsar usuarios Colaboraciones Usuario Usuario Conocimiento: Alias Responsabilidades Charlar Colaboraciones Usuario destino Usuario remitente Zona Figura 9. Tarjetas C.R.C. Las tarjetas CRC son de vital importancia, ya que de ellas se desprende el análisis orientado a objetos. La tarjeta con el nombre “mensaje”, define cuáles son las colaboraciones, responsabilidades y conocimientos de un objeto “mensaje” dentro del sistema de charla. De forma análoga se obtiene la información respecto a los objetos: “zona”, “registro usuario” y “usuario”. Cabe aclara que existe una diferencia entre “usuario” y “registro usuario”, debido a que “usuario” es considerado como una entidad que genera la mayoría de las operaciones en el sistema, y el “registro usuario” contiene información correspondiente a la ubicación del usuario, su alias y la zona en la que se encuentra. Como resultado de la aplicación de las tarjetas CRC, el diseño conceptual, la identificación de los diagramas de uso y la elaboración de los demás artefactos se tornará una tarea más fácil. 4.1.3 Glosario de Términos. Las tarjetas CRC han aportado información que necesita ser incluida en el glosario de términos, con la finalidad de comenzar a identificar los componentes de sistema de charla, razón por la cual son agregados en esta etapa, asignándoles una categoría y un comentario que los describa, ilustrados en la Tabla 2: Término Categoría Mensaje Tipo Registro_Usuario Tipo Usuario Zona Tipo Tipo Comentarios Cadena de caracteres enviada y recibida por los usuarios Acción de registrar usuarios que ingresan al sistema Persona que interviene en una charla Lugar común donde pueden encontrarse n usuarios charlando Tabla 2. Glosario de términos 4.1.4 Definiciones de funciones. Después de elaborar el glosario, se realiza un análisis que describe las funciones básicas de la aplicación así como sus funciones de comunicación, dando por entendido, que las funciones básicas se refieren a las acciones que permitan a un usuario hacer uso del sistema de charla, y que las funciones de comunicación hacen referencia a las acciones necesarias para lograr una conectividad transparente entre los usuarios del sistema de charla. También se especifica un número de referencia para cada función con la finalidad de identificarlas más fácilmente; y una categoría, a la cual pertenecen de acuerdo a sus características. Las categorías de las funciones pueden ser: evidente, oculta y superflua. Las funciones evidentes corresponden a acciones que son inevitables y que deben llevarse a cabo. Las funciones ocultas son aquellas de las cuales el usuario final no debe tener un pleno conocimiento. Por último, las funciones superfluas son opcionales y su inclusión o exclusión del diseño no representa ningún inconveniente para el sistema. Se deben definir los requerimientos de la aplicación y las funciones que habrán de dar solución a tales requerimientos, para este proceso es recomendable la lluvia de ideas y el análisis del panorama general de la aplicación. Debe recordarse que estas actividades se sitúan en la primera fase de la etapa de desarrollo. Se definen 2 tipos diferentes de funciones, las básicas y las de comunicación. 4.1.4.1 Funciones Básicas. Las siguientes funciones definen una lista de tareas que deben estar contempladas en la aplicación. La forma de interpretar la siguiente tabla es “El sistema debe tener una función que” y a continuación la definición de cada función, esto se muestra en la Tabla 3: R# R.1.1 R.1.2 R.1.3 R.1.4 R.1.5 R.1.6 R.1.7 R.1.8 R.1.9 Función Categoría Permita introducir una identificación y contraseña para hacer uso de la aplicación. Permita elegir un canal a explorar. Ofrezca un mecanismo de almacenamiento para los datos del usuario. Ofrezca mecanismos de comunicación entre la aplicación cliente y servidor. Permita elegir una zona a explorar. Muestre la cantidad de usuarios activos en el sistema. Permita el inicio de sesión en el sistema. Permita finalizar la sesión en el sistema. Detecte cuando un usuario este ausente del sistema. Evidente Tabla 3. Funciones básicas. Evidente Oculta Oculta Evidente Evidente Evidente Evidente Oculta 4.1.4.2 Funciones de Comunicación. Estas funciones ilustran las acciones necesarias para lograr la comunicación entre los usuarios del sistema, así como tareas de administración propias del sistema. Tales funciones se muestran en la Tabla 4: R# R.2.1 R.2.2 R.2.3 R.2.4 R.2.5 R.2.6 Función Categoría Permita seleccionar el usuario al que se quiere enviar un mensaje. Permita enviar los menajes a los usuarios Verifique que el alias del usuario no este repetido Elimine a los usuarios que cierran su sesión Notifique a todos los usuarios de un canal cuando llegue un nuevo usuario Notifique cuando llegue un mensaje Evidente Oculta Oculta Oculta Oculta Oculta Tabla 4. Funciones de comunicación. 4.1.5 Atributos de la aplicación. Los atributos de la aplicación son sus características o dimensiones, no son funciones (Larman, 1999), por ejemplo: • Facilidad de uso. • Tiempo de respuesta. • Metáfora de interfaz. • Plataforma. Algunos atributos tienen restricciones de frontera, que son generalmente rangos de valores numéricos para un atributo. 4.1.5.1 Detalles y restricciones de frontera de los atributos. Para el sistema de comunicación, se han determinado los siguientes atributos, contenidos en la Tabla 5: Atributo Detalles y restricciones de frontera Plataforma Metáfora de la interfaz (Detalle) Sistema operativo Microsoft Windows 95, 98. (Detalle) Gráfico, orientado a la metáfora de una forma y cuadros de diálogo. De navegación fácil con el uso del mouse. Tabla 5. Atributos y restricciones del sistema. Es muy útil describir que funciones se relacionan con los atributos especificados anteriormente, y también clasificar los detalles y las restricciones en obligatorios u opcionales. La siguiente tabla muestra algunas de las relaciones entre funciones y atributos, así como sus detalles, restricciones de frontera y categoría a la que pertenecen. 4.1.5.2 Atributos del sistema en las especificaciones de funciones. Después de determinar las restricciones de frontera, es conveniente describir todos los atributos del sistema que se relacionen claramente con las funciones especificadas en la Tabla 3 y 4, estas relaciones se ilustran en la Tabla 6: Ref. # Función Categoría ATRIBUT Detalles y restricciones Categoría O R.1.6 Permita elegir una zona de charla. Evidente R.1.7 Muestre la cantidad de usuarios activos en el sistema. Evidente R.1.8 Muestre la cantidad de usuarios de una zona. Evidente R.1.9 Detecte cuando un usuario este ausente del sistema. Oculta Tiempo de (Restricción de respuesta frontera) Cuando un usuario entre a una zona, la información relativa a este debe aparecer en 10 segundos máximo. (Detalle) Rápida respuesta. Tiempo de (Restricción de respuesta frontera) Cuando un usuario entre al sistema de charla, la información relativa a la cantidad de usuarios debe aparecer en 10 segundos máximo. (Detalle) Rápida respuesta. Tiempo de (Restricción de respuesta frontera) Cuando un usuario entre a una zona, la información relativa a esa zona debe aparecer en 10 segundos máximo. (Detalle) Rápida respuesta. Tiempo de (Restricción de respuesta frontera) Cuando un usuario este ausente del sistema de charla durante un máximo de 15 minutos, éste lo Obligatoria Obligatoria Obligatoria Obligatoria terminará su sesión en forma automática. Tabla 6. Atributos del sistema en las especificaciones de funciones. . 4.2 Construcción del sistema 4.2.1 Casos de uso: Descripción de procesos. Continuando con el diseño según los patrones de UML, se deben construir los casos de uso, los cuales describen la secuencia de eventos que un actor del sistema, lleva a cabo para completar un proceso. Los casos de uso son descripciones narrativas de los procesos del dominio (Larman, 1999). En el marco teórico se hace referencia a los diferentes tipos de casos de uso que existen, de los cuales, ejemplificaremos los siguientes: • Caso de uso de alto nivel • Caso de uso Expandido • Caso de uso Esencial • Caso de uso Real 4.2.1.1 Identificación de actores. Antes de presentar los casos de uso, se deben identificar los actores y los procesos relevantes a los que dan inicio. El actor identificado para este caso de estudio es el que se muestra en la Tabla 7: Actor Usuario • • • • Funciones que realiza Ingresa a Zonas Envía mensajes Cambia de zonas Termina Sesiones • Inicia Sesiones Tabla 7. Identificación de actores. Una vez identificados los actores, se procede a plantear los casos de uso en los que se ven involucrados; los cuales se muestran en la siguiente sección. 4.2.1.2 Identificación de Casos de Uso. Los casos de uso que se presentan a continuación, son los que se han detectado en la fase del análisis, y tienen el siguiente formato: • Caso de alto nivel • Caso expandido • Caso esencial • Caso real A los formatos de los casos de uso se puede hacer referencia en el marco teórico, capítulo 2. 4.2.1.3 Caso de Uso: Iniciar sesión de usuario. El primer caso de uso corresponde al que lleva por nombre “Iniciar sesión de usuario”. Este caso de uso es de tipo primario y escenifica las acciones correspondientes al ingreso del usuario al sistema de charla. Caso de uso Alto Nivel: Iniciar sesión de usuario. Actores: Usuario. Tipo : Primario. Descripción: El usuario entra al sistema y comienza la charla. Caso de uso Expandido: Iniciar sesión de usuario. Actores: Usuario. Tipo : Primario. Descripción: El usuario entra al sistema y comienza la charla. Referencias Cruzadas: R1.7, R1.6, R2.3, R2.5. Iniciar sesión de usuario Curso normal de los eventos. Acción del Actor 1.- Este caso comienza cuando un usuario quiere ingresar al sistema de charla. 2.-.El usuario notifica al sistema que desea iniciar su sesión por medio de una acción. 4.- El usuario escoge un nombre y un dominio para ingresar en él. Respuesta del sistema 3.- El sistema responde solicitando un nombre y un dominio a los cuales se desea ingresar. 5.- El sistema da la bienvenida T ab la 8 . Ca so d e us o e xpa nd ido : in iciar se s ión. Cursos alternos: Línea 3: El nombre no es válido. Indicar error. Caso de uso Esencial: Iniciar sesión de usuario. Acción del Actor 1.- El usuario decide ingresar al sistema de charla. 3.-.El usuario especifica la información requerida. Respuesta del sistema 2.- Le requiere al usuario un nombre y un dominio en el que desea ingresar. 4.-Verifica el nombre, da acceso al dominio y notifica la llegada de un nuevo usuario. T ab la 9 . Ca so d e us o e sen c ia l: in ic ia r s es ión . Caso de uso Real: Iniciar sesión de usuario. Acción del Actor 1.- Por medio de un icono en su computadora el usuario, ejecuta el programa que carga el sistema de charla. 3.-.El usuario escribe su “alias” en la caja de texto correspondiente y hace presiona el botón “aceptar” o la tecla <Enter> Respuesta del sistema 2.- Presenta la ventana2 que contiene la caja de texto3, para que el usuario ingrese un “alias” que le permita identificarse. 4.-Verifica que el “alias” del usuario no este repetido y muestra la ventana3 con cuatro botones que contienen los nombres de los dominios a los que el usuario puede ingresar. El sistema ingresa el alias en una tabla que le permite almacenar todos los “alias” disponibles. 5.-El usuario presiona el botón 6.- Lo ingresa al dominio, mostrándole la correspondiente al dominio al que desea ventana4, que contiene la caja de texto4 ingresar para enviar mensajes, la lista1 de los usuarios disponibles, la caja de texto5 que muestra el historial de las conversaciones y tres botones, uno para mandar mensajes, otro para cambiar de dominio y uno más para terminar la sesión con el sistema. Además notifica a los demás usuarios mediante un sonido y un mensaje que un nuevo usuario a ingresado al dominio. T ab la 1 0 . Ca so de u so r ea l: in ic iar se s ión. Figura 10. Ventana 2 Inicio de sesión. 4.2.1.4 Caso de Uso : Terminar sesión de usuario. El segundo caso de uso identificado, tiene el nombre “Terminar sesión de usuario”, y corresponde a las acciones relacionadas con la salida del usuario del sistema de charla; este caso también esta clasificado como primario. Caso de uso Alto Nivel: Terminar sesión de usuario. Actores: Usuario, sistema. Tipo : Primario. Descripción: El usuario notifica al sistema que desea terminar su sesión y sale del sistema. Caso de uso Expandido: Terminar sesión de usuario. Actores: Usuario. Tipo : Primario. Descripción: El usuario notifica al sistema que desea terminar su sesión y sale del sistema. Referencias Cruzadas: R1.8, 2.4. Terminar sesión de usuario CURSO NORMAL DE LOS EVENTOS Acción del Actor Respuesta del sistema 1.- Este caso de uso comienza cuando 2.- El sistema notifica a los demás el usuario notifica al sistema por medio usuarios que un usuario saldrá y lo de una acción, que desea terminar su elimina del sistema de charla. sesión. T ab la 1 1 . Ca so de u so e xp an d ido : ter mina r s es ión . Caso de uso Esencial: Terminar sesión de usuario. Acción del Actor Respuesta del sistema 1.- El usuario notifica al sistema 2.- El sistema termina la sesión del mediante una acción, que desea usuario, eliminándolo del sistema , terminar su sesión. cerrando su ventana de charla y notificándolo a los demás usuarios. T ab la 1 2 . Ca so de u so e se n cia l: te r min ar se s ión . Caso de uso Real: Terminar sesión de usuario. Acción del Actor 1.- Desde su ventana de charla, el usuario presiona el botón “Cerrar Sesión”. 3.-.El usuario presiona el botón “aceptar” o la tecla <Enter> Respuesta del sistema 2.- El sistema mediante una caja de mensaje solicita una confirmación al usuario. 4.-El sistema elimina al usuario borrándolo de la lista1 incluida en la ventana4 de todos los usuarios del dominio correspondiente. Cierra la ventana4 del usuario que solicita terminar su sesión y notifica a los demás usuarios por medio de un sonido y un mensaje con el formato “El usuario <Alias> ha salido del sistema” en la caja de texto5, que un usuario sale del sistema. El sistema elimina el “alias” del usuario de la tabla que contiene los “alias” disponibles. T ab la 1 3 . Ca so de u so r ea l: ter mina r se s ión. Figura 11. Ventana 4 Ventana de charla. 4.2.1.5 Caso de Uso: Enviar Mensaje. El tercer caso de uso se denomina “Enviar mensaje”, esta clasificado como primario y corresponde a las acciones implicadas en el envío de mensajes entre dos usuarios. Caso de uso Alto Nivel: Enviar mensaje. Actores: Usuario, sistema. Tipo : Primario. Descripción: El usuario selecciona un usuario destino y le envía un mensaje. Caso de uso Expandido: Enviar mensaje. Actores: Usuario, sistema. Tipo : Primario. Descripción: El cliente elabora un mensaje, elige al usuario destino y le envía el mensaje. Referencias Cruzadas: R2.2, R2.6 Enviar mensaje CURSO NORMAL DE LOS EVENTOS Acción del Actor Respuesta del sistema 1.- Este caso de uso comienza cuando 2.- El sistema analiza el “alias” del un usuario desea enviar un mensaje. El usuario destino y le hace llegar el usuario elabora el mensaje y elige al mensaje usuario al que va dirigido y mediante una acción envía el mensaje. T ab la 1 4 . Ca so de u so e xp an d ido : En v ia r Men sa je . Caso de uso Esencial: Enviar Mensaje. Acción del Actor Respuesta del sistema 1.- El usuario redacta un mensaje y 2.- El sistema analiza el “alias” para selecciona el usuario destino, y determinar su localización y le hace mediante una acción envía el mensaje. llegar el mensaje, mostrándoselo en la ventana de charla T ab la 1 5 . Ca so de u so e se n cia l: Env iar Me ns a je Caso de uso Real: Enviar mensaje. Acción del Actor 1.- Desde la ventana4, el usuario redacta un mensaje en la caja de texto4, selecciona a un usuario destino de la lista1 y presiona el botón “enviar mensaje”. Respuesta del sistema 2.- El sistema extrae el “alias” del usuario destino desde la lista1 de usuarios y le envía el mensaje. En la ventana4 del usuario destino, muestra el mensaje en la caja de texto5 T ab la 1 6 . Ca so de u so r ea l: En v iar Men sa je Figura 12. Ventana 4 Ventana de charla. 4.2.1.6 Caso de Uso: Seleccionar Zona. El cuarto caso de uso denominado “Seleccionar Zona” y clasificado también como primario, hace referencia a las acciones necesarias para cambiar de zona de charla. Caso de uso Alto nivel: Seleccionar Zona. Actores: Usuario. Tipo : Primario. Descripción: El usuario cambia la zona de charla. Caso de uso Expandido: Seleccionar zona. Actores: Usuario. Tipo : Primario. Descripción: El usuario cambia la zona de charla. Referencias cruzadas: R1.5 Casos de uso: El usuario debe haber terminado el caso de uso “Iniciar sesion” Seleccionar Zona CURSO NORMAL DE LOS EVENTOS Acción del Actor 1.- Este caso de uso comienza cuando el usuario desea cambiarse a otra zona de charla mediante una acción se lo notifica al sistema. 3.-.El usuario selecciona una zona e ingresa a ella. Respuesta del sistema 2.- El sistema recibe la petición del usuario de cambio de zona y procede a mostrar al usuario, las zonas disponibles a las que puede entrar. 4.- El sistema notifica a los usuarios de la zona seleccionada, que un nuevo usuario ha ingresado. T ab la 1 7 . Ca so de u so e xp an d ido : Se lec c io na r Zon a. Caso de uso Esencial: Seleccionar Zona. Acción del Actor 1.- El usuario, mediante una acción desde la ventana de charla, indica al sistema que desea cambiar su zona de charla. 3.- El usuario selecciona una de las zonas mostradas. Respuesta del sistema 2.- El sistema solicita una confirmación para el cambio y le muestra al usuario la ventana de zonas, la cual contiene los zonas disponibles. 4.-El sistema ingresa al usuario a la zona seleccionada y le notifica a los demás usuarios de la zona, que un nuevo usuario ha ingresado. T ab la 1 8 . Ca so de u so e se n cia l: Se le cc ion ar Zo na . Caso de uso Real: Seleccionar Dominio. Acción del Actor Respuesta del sistema 1.- Desde la ventana4, el usuario 2.- El sistema mediante una caja de presiona el botón “cambiar de zona”. mensaje solicita una confirmación al usuario, con el mensaje “Seguro que desea cambiar de zona”. 3.-El usuario presiona el botón “Aceptar” 4.- El sistema muestra la ventana3 al usuario, la cual contiene las zonas disponibles y espera la selección del usuario. 5.-El usuario presiona el botón 6.- El sistema cambia al usuario a la correspondiente a la zona a la que zona seleccionado y le muestra la desea entrar. vanetana4, que contiene en la lista1, los usuarios disponibles en ese zona. El sistema notifica a los demás usuarios de la zona mediante un mensaje en la caja de texto5 con el “El usuario <Alias> ha ingresado”, que un nuevo usuario ha ingresado T ab la 1 9 . Ca so de u so r ea l: Se le c c ion ar Zona . Figura 13. Ventana 3 Zonas de charla. 4.2.1.7 Caso de Uso: Usuario Ausente. El quinto caso de uso denominado “Usuario ausente” y clasificado también como primario, hace referencia a las acciones que lleva a cabo el sistema, cuando el usuario muestra señales de inactividad durante un tiempo determinado. Caso de uso Alto nivel: Usuario ausente. Actores: Sistema. Tipo : Primario. Descripción: El sistema detecta que un usuario esta ausente o ha dejado de mandar mensajes durante un tiempo determinado. Caso de uso Expandido: Usuario ausente. Actores: Sistema. Tipo : Primario. Descripción: El sistema detecta que un usuario esta ausente o ha dejado de mandar mensajes durante un tiempo determinado. Referencias cruzadas: R1.9 Usua rio ause nte CURSO NORMAL DE LOS EVENTOS Acción del Actor Respuesta del sistema 1.- Este caso de uso comienza cuando el sistema determina que un usuario ha dejado de mandar mensajes durante un período determinado y decide expulsarlo del sistema de charla, terminando su sesión. T ab la 2 0 . Ca so de u so e xp an d ido : Us uar io Au sen te. Caso de uso Esencial: Usuario ausente. Acción del Actor Respuesta del sistema 1.- El sistema detecta cuales usuarios no han mandado un mensaje en un periodo de 10 minutos, en caso de que alguno esté en ésta situación es expulsado del sistema de charla. T ab la 2 1 . Ca so de u so e se n cia l: Us ua r io Au se nte . Caso de uso Real: Usuario ausente. Acción del Actor Respuesta del sistema 2.- El sistema monitorea el estado del botón “enviar mensaje” contenido en la ventana4. Cada vez que es presionado se activa el timer1, el cual tiene un tiempo de expiración de 10 minutos, si el botón “enviar mensaje” no es presionado antes de que el timer1 expire entonces el usuario es expulsado del sistema de charla. T ab la 2 2 . Ca so de u so r ea l: Usu ar io Aus en te . Figura 14. Ventana 4- timer 4.2.1.8 Diagramas de casos de uso. Una vez definidos los casos de uso, se elabora un diagrama que permite una evaluación gráfica de cada uno de los casos planteados, con la finalidad de ilustrar en una forma más explícita las relaciones entre los actores y los procesos que cada uno de ellos genera. En este diagrama, que se ilustra en la Figura 15, se delimita también la frontera del sistema, la cual en este caso se denomina sistema de charla. Sistema de charla Iniciar Sesión de usuario Terminar Sesión de usuario Usuario Enviar mensaje Seleccionar Zona Seleccionar Zona Usuario ausente F igur a 15 . D iag ra ma de ca so s de u so . El diagrama representa a cada uno de los casos de uso detectados, mediante su notación en UML. En 4 de ellos, el usuario es quien comienza las acciones, pero es importante notar que el caso de uso “usuario ausente”, no es iniciado por el usuario de manera directa, sino que es una caso interno cuya ejecución esta controlada por el sistema. 4.2.2 Definición de un modelo conceptual Una vez determinados los casos de uso y el diagrama de casos, se debe elaborar un modelo conceptual, el cual “explica a sus creadores los conceptos significativos en un dominio del problema”[LARMAN]. Este modelo conceptual permite que el esfuerzo por entender el problema se enfoque en los conceptos propios del dominio y no en entidades del software (funciones, procedimientos, etc.), además permite ilustrar: • conceptos • asociaciones entre los conceptos • atributos de las conceptos Larman (1999) plantea que el paso inicial de un análisis o investigación orientados a objetos es descomponer el problema en conceptos u objetos individuales, y el problema de estudio será objeto de este proceso. Como primer paso, se determinan los conceptos que forman parte del modelo conceptual; un concepto lo podemos definir como un objeto del dominio que se estudia; los cuales se incluyen en la Figura 16 : Registro_Usuario Usuario Zona Sistema de Charla F igur a 16 . D e fin ic ión d e c on ce ptos . Mensaje Es posible que algunos de los conceptos no formen parte del diseño final pero es mejor tener algunos conceptos de más a tener que reincorporarlos en fases posteriores del diseño debido a que no se detectaron en la fase de análisis. El siguiente paso para elaborar un modelo conceptual es el de encontrar las asociaciones existentes entre los conceptos definidos en la sección anterior. Podemos definir una asociación como “una relación estructural que describe un conjunto de enlaces, los cuales son conexiones entre objetos” [BJR99], que interpretado de una forma diferente, significa que una asociación indica alguna relación significativa entre los objetos o conceptos definidos anteriormente. UML establece una notación para las asociaciones, la cual establece que estarán denotadas por una “línea continua, posiblemente dirigida, que a veces incluye una etiqueta y a menudo incluye otros adornos, como la multiplicidad” [BJR99]; y es esta notación la que se aplicará para este caso. Partiendo de los conceptos obtenidos en la sección anterior se plantean las siguientes asociaciones entre ellos, contenidos en la Figura 17: Registro_Usuario 1..* Genera Usuario Zona Admite_a 1..* 1 1 4 Redacta 1..* 1 Mensaje Sistema de Charla Envia 1..* 1 1 F igur a 17 . D e fin ic ión d e a so c ia c io ne s. En este diagrama, se determinan las asociaciones existentes, así como la cardinalidad de éstas. De la figura anterior cabe observar algunos detalles importantes; la flechas no indica necesariamente el sentido de la asociación, sino que se utilizan para determinar la forma en que se lee la etiqueta de cada asociación; además la asociación entre el concepto “sistema de charla” y el concepto “dominio” es de 1 a 4 exactamente, debido a que solo existen 4 dominios en el sistema de charla planteado para este caso de estudio. La última etapa para completar el diseño conceptual del sistema de charla, es agregar a los conceptos, atributos que los describan. Un atributo representa una propiedad del elemento que se esta modelando (Booch Et-Al 1999). De esta forma, el definir los atributos de los conceptos, implica analizar las propiedades de cada uno de ellos e identificar cuales son útiles al objetivo de este estudio. A continuación, en la Figura 18, se muestran los posibles atributos de cada uno de los conceptos (cabe señalar, que no es obligatorio que un concepto tenga atributos): Registro_Usuario Alias: Texto Direccion: Texto Usuario Zona Mensaje Nombre_Z: Texto Origen: Direccion Usuarios_Z: Numero Destino: Direccion Zona:Texto Contenido: Texto Sistema de Charla F igur a 18 . D e fin ic ión d e a tr ibu to s. Explicación de los atributos Cada uno de los atributos determinados en esta etapa tienen un significado, y la Tabla 23 lo demuestra. Atributo Alias Dirección Zona Nombre_Z Usuarios_Z Origen Destino Contenido Descripción Identificador único que el usuario necesita para ser referenciado dentro del sistema de charla Dirección IP, correspondiente a la computadora donde se encuentra el usuario Nombre de la zona ala que el usuario ingresa Cada zona incluida en el sistema de charla debe contar con un identificador único Establece el número de usuarios activos dentro de una zona del sistema de charla. Este atributo define quien es el usuario que envía un mensaje Indica quien el es destinatario de un mensaje Tiene el cuerpo del mensaje elaborado por un usuario T ab la 2 3 . Sign ific ad o de lo s a tr ibu to s. Una vez determinados los atributos de cada concepto, se procede a elaborar el modelo conceptual, con toda la información recabada: conceptos, asociaciones y atributos. Una vez integradas éstas partes, el modelo conceptual toma la forma de la Figura 19: Registro_Usuario 1..* Alias: T exto Genera Dirección: Texto Zona:T exto Usuario Zona Alias: T exto Nombre_Z: T exto Dirección: Texto Admite_a 1..* Usuarios_Z: Numero 1 1 4 Redacta Contiene_a 1..* 1 Mensaje Sistema de Charla Envia 1 Origen: Direccion Destino: Direccion 1..* 1 Contenido: Texto F igur a 19 . D e fin ic ión d e un mod elo c on ce ptua l. 4.2.3 Ampliación del glosario de términos. Un momento ideal para ampliar el glosario de términos es después de que se ha elaborado el modelo conceptual, ya que este nos permite conocer y entender más a fondo el dominio, sus conceptos, su terminología y sus relaciones. Por lo tanto, en esta etapa se agregarán al glosario de términos todas aquellas nuevas definiciones, conceptos y relaciones que hallan surgido del modelo conceptual, así como los casos de uso, todos estos contenidos en la Tabla 23. Nótese que ahora se denotan los atributos anteponiéndoles el nombre del objeto al que pertenecen y un punto “.”. Término Mensaje Usuario Zona Sistema de charla Usuario.Alias: Texto Zona.Nombre_D: Texto Zona.Usuarios_D: Número Mesaje.Origen: Texto Mensaje.Destino: Texto Mensaje:Contenido: Texto Enviar Mensaje Iniciar sesión de usuario Terminar sesión de usuario Seleccionar Zona Usuario ausente Categoría Comentarios Tipo Cadena de caracteres enviadas y recibidas por los usuarios. Tipo Persona que interviene en una charla. Tipo Lugar común donde pueden encontrarse n usuarios charlando. Tipo Espacio conceptual, que contiene dominios y usuarios. Atributo Nombre con el que un usuario se identifica en el sistema. Atributo El nombre que identifica a cada zona. Atributo El numero total de usuarios activos en una zona. Atributo Nombre del usuario que envía un mensaje. Atributo Usuario a quien va dirigido un mensaje. Atributo Cuerpo del mensaje. Caso de uso Caso de uso Caso de uso Caso de uso Caso de uso Descripción del proceso de un usuario que envía un mensaje. Descripción del proceso de un usuario que ingresa al sistema de charla. Descripción del proceso de un usuario que sale del sistema de charla. Descripción del proceso de un usuario que cambia de dominio de charla. Descripción del proceso de un usuario que abandona su sesión. T ab la 2 4 . Amp lia c ión de l g los ar io de tér mino s . 4.2.4 Diagramas de Clases del diseño. Los diagramas de clases de diseño tiene como finalidad bosquejar muchas clases e ilustrar las relaciones que existen entre ellas (Page, 1999). Las clases están conformadas de atributos y métodos que definen operaciones que cada clase puede llevar a cabo. Para elaborar estos diagramas, es necesaria la información resultante del mapa conceptual y del las tarjetas CRC. Del primero se obtienen las posibles asociaciones entre clases y del segundo se obtienen los atributos, responsabilidades y colaboraciones correspondiente a cada posible clase. De las tarjetas CRC aplicadas en la fase de análisis se agregan los atributos a las siguientes clases, ilustrados en la Figura 21: Registro_Usuario Usuario Zona Mensaje Alias: Texto Alias: Texto Nombre_Z: Texto Origen: Direccion Direccion: Texto Direccion: Texto Usuarios_Z: Numero Destino: Direccion Contenido: Texto Zona:Texto Sistema de Charla NumUsuarios: numero F igur a 20 . Atr ib utos de la s c la s es . Cabe recordar que pueden existir clases que no tengan atributos pero que contengan métodos y viceversa. El siguiente paso es identificar los métodos. Para esto se puede analizar la parte denominada “colaboraciones” de cada tarjeta CRC. Nótese que aunque en la etapa de la aplicación de las tarjetas CRC solo aparecieron 3 es necesario integrar las “clases sistema de charla” y “usuario”, con la finalidad de darle sentido al diagrama conceptual. A partir de los mensajes especificados en el diagrama conceptual y las “colaboraciones” de las tarjetas CRC, se pueden obtener los métodos que cada clase debe ejecutar. De lo anterior se obtiene el esquema de la Figura 21: Registro_Usuario Usuario Zona Mensaje Alias: Texto Alias: Texto Direccion: Texto Zona:Texto Nombre_Z: Texto Origen: Direccion Direccion: Texto Usuarios_Z: Numero Destino: Direccion AdmitirUsuario() ExpulsarUsuario() IncrementaContador() EnviarMensaje() CrearRegistro() ModificarRegistro() BorrarRegistro() Contenido: Texto Sistema de Charla IncrementaContador() F igur a 21 .Métod os d e la s c la se s . Una vez agregados los atributos y los métodos correspondientes a cada clase, del modelo conceptual se toman las asociaciones para construir el diagrama de clases. El resultado se ilustra en la siguiente Figura 22: Zona Usuario Nombre_Z: Texto Usuarios_Z: Numero Admite_a Alias: Texto Direccion: T exto 1 1..* AdmitirUsuario() ExpulsarUsuario() IncrementaContador() 1 4 Redacta Contiene_a 1..* 1 Sistema de Charla Mensaje EnviarMensaje() Alias: Texto Envia Origen: Direccion Destino: Direccion Contenido: T exto Registro_Usuario 1..* 1..* 1 1 Direccion: T exto Zona:Texto Genera IniciarSesion() T erminarSesión() IncrementaContador() CrearRegistro() ModificarRegistro() BorrarRegistro() F igur a 22 . D iag ra ma de cla se s. Por último, al diagrama de clases se le pueden agregar los tipos de datos correspondientes a cada clase y los parámetros que cada método necesita para su operación. En el caso de que se vaya a generar código a partir de la especificación del diseño, es muy conveniente incluirlos en el diagrama de clases, en cambio si el diagrama de clases es creado con la finalidad de que lo lean los diseñadores de software, el exceso de detalles puede influir negativamente en la comprensión del diagrama de clases. Aunque el objetivo de este caso de estudio no es la implementación del diseño, la Figura 23 muestra los tipos de datos de los atributos y los parámetros necesarios para cada método. Zona Usuario Nombre_Z: Texto Usuarios_Z: Numero Alias: Texto Direccion: T exto AdmitirUsuario(Alias:texto) ExpulsarUsuario(Alias:texto) IncrementaContador() 1 4 Redacta Contiene_a 1..* 1 Mensaje Origen: Direccion Destino: Direccion Contenido: T exto EnviarMensaje(origen:texto, destino:texto,contenido:texto) Registro_Usuario Sistema de Charla Envia 1..* 1..* Genera 1 IncrementaContador() 1 Alias: Texto Direccion: T exto Zona:Texto CrearRegistro(Alias:texto, Direccion :texto, Zona:texto) ModificarRegistro(alias:texto, zona:texto) BorrarRegistro (Alias:texto) F igur a 23 . D iag ra ma de cla se s co n tipo s de d a to s. De esta forma, queda especificado el diagrama de clases con tipos de datos, el cual será una herramienta determinante al momento de implementar el sistema. 4.2.5 Diagramas de secuencia del sistema. Un diagrama de secuencia, muestra las interacciones que acontecen dentro del sistema y entre los objetos que lo conforman (Arlow, 2002) y se elabora uno por cada caso de uso detectado en el sistema. Estos diagramas muestran el curso particular de los casos de uso, los actores externos que interactúan directamente con el sistema y con los eventos del sistema generados por los actores. Lo que se pretende es identificar las operaciones que el actor externo pone en marcha, sin importar como las resuelve el sistema. A continuación se muestran 2 tipos de diagramas de secuencia para cada caso de uso, el primero de ellos es más general y el segundo permite llegar un poco mas dentro del diseño. Diagramas de secuencia correspondientes al caso de uso iniciar sesión. Iniciar Sesión Caso de Uso: Iniciar Sesión Curso normal de los eventos 1.- Este caso comienza cuando un usuario quiere ingresar al sistema de charla. 2.-.El usuario notifica al sistema que desea iniciar su sesión por medio de una acción. 3.- El sistema responde solicitando un nombre y un zona a los cuales se d e s e a i n g r e s a r . 4.- El usuario escoge un nombre y una zona para ingresar en ella. Usuario : Sistema IntroducirAlias(Alias, Zona) F igur a 24 . D iag ra ma de se cue n cia : in ic iar se s ión .. El diagrama de la Figura 24, contiene una prosa que lo describe y que es tomada directamente de los casos de uso. El diagrama de secuencia de la Figura 25 ilustra cuales son las entidades relacionadas con la acción de iniciar sesión. Iniciar Sesión Usuario Pantalla de inicio Registro_Ususarios Sistema de charla Alias Validar Usuario Checar detalles de usuario Detalles de usuario Resultados F igur a 25 . D iag ra ma de se cue n cia - e ntida de s: in ic ia r s es ión . Desde la pantalla de inicio el usuario ingresa su alias y su zona para entrar al sistema de charla. La pantalla de inicio manda el alias al sistema de charla para que éste valide que el alias no se encuentra repetido, esto lo logra buscando en el Regitro_usuario. El sistema de charla comunica el resultado en la pantalla de inicio, aceptando al usuario o pidiéndole que cambie su alias en caso de que este se encuentre repetido. De forma análoga, se procede a elaborar los diagramas de secuencia de los casos de uso restantes. Diagramas de secuencia correspondientes al caso de uso terminar sesión. Terminar Sesión Caso de Uso: Terminar Sesión Curso normal de los eventos 1.- Este caso de uso c o m i e n z a c u a n d o el usuario notifica al sistema por medio de una acción, que desea terminar su sesión. 2.- El sistema notifica a los demás usuarios que un usuario saldrá y lo elimina del sistema de charla. Usuario : Sistema TermminarSesión (Alias ) F igur a 26 . D iag ra ma de se cue n cia : te r min ar se s ión. Terminar Sesión Usuario Pantalla de charla Sistema de charla Registro_Ususarios salir alias Eliminar usuario F igur a 27 . D iag ra ma de se cue n cia- e n tida de s : te r min ar se s ión. En la Figura 27, es evidente que el usuario manda desde la pantalla de charla la solicitud de abandonar el sistema de charla. La pantalla de charla envía al sistema de charla el alias del usuario que desea terminar su sesión y se encarga de eliminarlo del Registro_usuario. Diagramas de secuencia correspondientes al caso de uso enviar mensaje. Caso de Uso: Enviar Mensaje Curso normal de los eventos 1.- Este caso de uso comienza cuando un usuario desea enviar un mensaje. El usuario elabora el mensaje y elige al usuario al que va dirigido y mediante una acción envía el mensaje. 2.- El sistema analiza el “alias” del usuario destino y le hace llegar el mensaje. Enviar Mensaje Usuario : Sistema EnviaMensaje(mensaje,direcciondestino, direccionorigen ) F igur a 28 . D iag ra ma de se cue n cia : Env iar me ns a je . Enviar mensaje Usuario Pantalla de charla mensaje,destino Sistema de charla Registro_Ususarios Localizar destino Detalles Destino Detalles Destino Entregar mensaje F igur a 29 . D iag ra ma de se cue n cia- e n tida de s : Env iar me ns a je . En el diagrama de la Figura 29, el usuario elabora el mensaje y selecciona un destino contenido en la pantalla de charla. La pantalla de charla pide al sistema de charla, localizar la dirección del destino seleccionado. El sistema de charla obtiene la información del Registro_usuario , el cual se la regresa. El sistema de charla obtiene la dirección destino y entrega el mensaje. Diagramas de secuencia correspondientes al caso de uso seleccionar zona. Seleccionar Zona Caso de Uso: Seleccionar Dominio Usuario : Sistema CambiarDominio (dominio ) F igur a 30 . D iag ra ma de se cue n cia : Se le cc ion ar Zo na . Seleccionar Zona Usuario Pantalla de charla Sistema de charla Registro_Ususarios Solicita cambio Detalles zonas Detalles Zonas Selecciona zona Zona, Alias Cambia registro F igur a 31 . D iag ra ma de se cue n cia- e n tida de s : Se le cc ion ar Zo na . Para el diagrama contenido en la figura 31, el usuario, desde la pantalla de charla solicita cambiar de zona, la pantalla de charla solicita al sistema de charla las zonas disponibles, el sistema regresa la información a la pantalla de charla y ésta a su vez al usuario, el cual elige una y se lo comunica a la pantalla de charla. La pantalla de charla le envía el alias del usuario y la nueva zona al sistema de charla y éste se encarga de ingresar al usuario en la nueva zona, modificando el Registro_usuario. Diagramas de secuencia correspondientes al caso de uso usuario ausente. Usuario Ausente Caso de Uso: Usuario ausente Timer : Sistema EliminarUsuario(alias) F igur a 32 . D iag ra ma de se cue n cia : Us ua r io a u sen te . Usuario Ausente Timer Pantalla de charla Sistema de charla Registro_Ususarios Time Out Alias Eliminar Registro F igur a 33 . D iag ra ma de se cue n cia- en tid ad es : Usu ar io au se nte. El diagrama de secuencia ilustrado en la Figura 33, muestra que el que inicia las operaciones no es el usuario, sino un objeto interno, en este caso un Timer, el cual al llegar a su tiempo de expiración, le indica a la pantalla de charla que el tiempo a expirado, la pantalla de charla envía al sistema de charla el alias del usuario que ha expirado y procede a eliminar el usuario, borrándolo del Registro_usuario. 4.2.6 Contratos. La elaboración de los contratos depende del desarrollo previo del modelo conceptual y de los diagramas de secuencia del sistema. Los contratos contribuyen a definir el comportamiento del sistema y dan un panorama de cual es su estado después de realizar las operaciones. Por cada caso de uso se elabora un contrato, el cual tiene un formato específico, al que se puede hacer referencia en el capítulo 3. A continuación se describen los contratos para cada uno de los cinco casos de uso detectados en este caso de estudio. Contrato para el caso de uso: Iniciar Sesión Nombre: IntroducirAlias (Alias,Zona) Responsabilidad: Ingresar al usuario al sistema de charla. Tipo: Sistema Referencias cruzadas: R1.7, R1.6 Excepciones: Si el alias esta repetido, indicar un error. Poscondiciones: • Si se trata de una nueva sesión, se creo una instancia Registro_usuario (creación de instancia) • Se estableció registro.alias con el valor de Alias (modificación de atributo) • Se estableció registro.zona con la fecha de zona (modificación de atributo) • Se estableció registro.direccion con el valor de la dirección del usuario (modificación de atributo). • Se estableció Zona.Usuarios_Z con una unidad mas que su valor actual (modificación de atributo). • Se asoció sistema de charla a registro_usuario (asociación formada). Contrato para el caso de uso: Terminar Sesión de usuario Nombre: TerminarSesion (Alias) Responsabilidad: Sacar al usuario del sistema de charla. Tipo: Sistema Referencias cruzadas: 1.8, 2.5 Excepciones: Poscondiciones: • Se estableció Zona.Usuarios_Z con una unidad menos que su valor actual (modificación de atributo). • Se elimina la instancia Ingreso_usuario (alias) correspondiente. Contrato para el caso de uso: Enviar Mensaje Nombre: EnviaMensaje (mensaje, direccionorigen, direcciondestino, aliasOrigen, AliasDestino). Responsabilidad: Entregar un mensaje a su destinatario. Tipo: Sistema Referencias cruzadas: 2.2, 2.6 Excepciones: Poscondiciones: • Se creo la instancia Mensaje (creación de instancia). • Se creo la instancia Detalle_mensaje (creación de instancia). • Se estableció Mensaje.Origen con el valor de DireccionOrigen (modificación de atributo). • Se estableció Mensaje.Destino con el valor de DireccionODestino (modificación de atributo). • Se estableció Mensaje.Contenido con el valor de mensaje (modificación de atributo). • Se asoció Usuario a Mensaje (asociación formada). Contrato para el caso de uso: Seleccionar Zona Nombre: Seleccionar Zona (Alias, Zona). Responsabilidad: Cambiar al usuario de una zona del sistema de charla. Tipo: Sistema Referencias cruzadas: 1.5 Excepciones: Poscondiciones: • Se estableció Zona.Usuarios_Z con una unidad menos a su valor actual (modificación de atributo). • Se estableció la instancia Ingreso_usuario.zona con el nuevo valor de Zona (modificación de atributo). • Se asoció Usuario a Zona (asociación formada). Contrato para el caso de uso: Usuario ausente Nombre: Usuario ausente (alias). Responsabilidad: Detectar si un usuario permanece inactivo durante un tiempo determinado. Tipo: Sistema Referencias cruzadas: 1.9 Excepciones: Poscondiciones: • Se eliminó la instancia de registro_usuario correspondiente al valor de alias. (eliminación de instancia). • Se estableció Zona.Usuarios_Z con una unidad menos a su valor actual (modificación de atributo). V.- CONCLUSIONES C CUUAANNDDO OC CO OM ME EN NC CÉ ÉA AE EL LA AB BO OR RA AR RÉ ÉSST TE EC CA ASSO OD DE EE ESST TU UD DIIO OA APPL LIIC CA AD DO OA AL L L LE EN NG GU UA AJJE E U UN NIIFFIIC CA AD DO O D DE E M MO OD DE EL LA AD DO O,, M ME E PPR RO OPPU USSE E Q QU UE E É ÉSST TE E T TR RA AB BA AJJO O FFU UE ER RA AU UN NM ME ED DIIO OA AT TR RA AV VÉ ÉSS D DE EC CU UA AL LE EX XPPR RE ESSA AR RE EL LA AN NÁ ÁL LIISSIISS Y YE EL LD DIISSE EÑ ÑO O B BA ASSA AD DO OE EN NE EL LL LE EN NG GU UA AJJE EU UN NIIFFIIC CA AD DO OD DE EM MO OD DE EL LA AD DO O.. U UNNAA VVEEZZ CCUUBBIIEERRTTAASS L LA ASS E EX XPPE EC CT TA AT TIIV VA ASS PPR RO OPPU UE ESST TA ASS A AL L IIN NIIC CIIO OD DE EL LC CA ASSO OD DE EE ESST TU UD DIIO O,, SSE E PPU UE ED DE E A AFFIIR RM MA AR R Q QU UE E E EL L L LE EN NG GU UA AJJE E D DE E M MO OD DE EL LA AD DO O U UN NIIFFIIC CA AD DO O PPO OSSIIB BIIL LIIT TA A A AL L D DE ESSA AR RR RO OL LL LA AD DO OR R PPA AR RA AQ QU UE EM MO OD DE EL LE EU UN N SSIISST TE EM MA AD DE E SSO OFFT TW WA AR RE EA AN NT TE ESS D DE E E ESSC CR RIIB BIIR RU UN NA A SSO OL LA AL LÍÍN NE EA AD DE EC CÓ ÓD DIIG GO O,, L LO OC CU UA AL LR RE EPPR RE ESSE EN NT TA AU UN NA AG GR RA AN N V VE EN NT TA AJJA AA AL LM MO OM ME EN NT TO OD DE E IIM MPPL LE EM ME EN NT TA AR RD DE E IIM MPPL LE EM ME EN NT TA AR RU UN N SSIISST TE EM MA A,, Y YA A Q QU UE EE ESS B BIIE EN N SSA AB BIID DO O Q QU UE E E EN NT TR RE EM ME EN NO OR R T TIIE EM MPPO O A AB BA AR RQ QU UE EL LA A FFA ASSE E D DE E A AN NÁ ÁL LIISSIISS Y Y D DIISSE EÑ ÑO O,, M MA AY YO OR R SSE ER RÁ Á L LA A C CA AN NT TIID DA AD D D DE E PPR RO OB BL LE EM MA ASS Y Y SSIIT TU UA AC CIIO ON NE ESS R RIIE ESSG GO OSSA ASS Q QU UE E IIM MPPL LE EM ME EN NT TA AC CIIÓ ÓN ND DE EU UN N SSIISST TE EM MA A.. SSU UR RJJA AN N D DU UR RA AN NT TE E L LA A FFA ASSE E D DE E E ESS IINNDDUUDDAABBLLEE Q QU UE EE EL LA APPL LIIC CA AR RE ESST TE E T TIIPPO OD DE ED DIISSE EÑ ÑO O,, C CO OM MB BIIN NA AD DO OC CO ON NU UN NL LE EN NG GU UA AJJE EE ESSPPE EC CIIA AL LIIZ ZA AD DO O PPE ER RM MIIT TE EN N A AL LA AN NA AL LIISST TA A,, A AL LD DIISSE EÑ ÑA AD DO OR R,, A AL L PPR RO OG GR RA AM MA AD DO OR R,, A AL LU USSU UA AR RIIO O FFIIN NA AL LY YA A T TO OD DA ASS L LA ASS PPE ER RSSO ON NA ASS IIN NV VO OL LU UC CR RA AD DA ASS E EN N U UN N PPR RO OY YE EC CT TO O D DE E SSO OFFT TW WA AR RE E;; T TE EN NE ER R U UN N N NIIV VE EL L D DE E C CO OM MU UN NIIC CA AC CIIÓ ÓN N U UN NIIFFIIC CA AD DO O.. E ESS PPA AL LPPA AB BL LE E Q QU UE E E EL L L LE EN NG GU UA AJJE EU UN NIIFFIIC CA AD DO O D DE E M MO OD DE EL LA AD DO O FFA AC CIIL LIIT TÓ Ó M MU UC CH HO O L LA ASS T TA AR RE EA ASS D DE E A AN NÁ ÁL LIISSIISS Y YD DIISSE EÑ ÑO OD DE EE ESST TE EC CA ASSO OD DE EE ESST TU UD DIIO O,, Y YQ QU UE E SSU U A APPL LIIC CA AC CIIÓ ÓN NA A SSIISST TE EM MA ASS C CO ON NG GR RA AN ND DE ESS C CA AN NT TIID DA AD DE ESS D DE E SSO OFFT TW WA AR RE EY Y G GR RU UPPO OSS D DE ET TR RA AB BA AJJO O E ESS FFA AC CT TIIB BL LE EY YR RE EC CO OM ME EN ND DA AB BL LE E.. E ELL LLEENNG GU UA AJJE EU UN NIIFFIIC CA AD DO O D DE EM MO OD DE EL LA AD DO O PPE ER RM MIIT TE EQ QU UE EL LO OSS D DE ESSA AR RR RO OL LL LA AD DO OR RE ESS IIN NC CU UR RSSIIO ON NE EN NE EN NE EL L PPA AR RA AD DIIG GM MA AD DE EL L D DIISSE EÑ ÑO OO OR RIIE EN NT TA AD DO OA AO OB BJJE ET TO OSS PPE ER RO OA AN NIIV VE EL LD DE EA AN NÁ ÁL LIISSIISS Y YD DIISSE EÑ ÑO O,, Y YN NO O N NIIV VE EL LD DE E IIM MPPL LE EM ME EN NT TA AC CIIÓ ÓN N.. E ESSTTO OE ESS M MU UY Y IIM MPPO OR RT TA AN NT TE ED DE EB BIID DO OA AQ QU UE E PPO OR R L LO OR RE EG GU UL LA AR R,, PPA AR RA AE EL LN NIIV VE EL LD DE EA AN NÁ ÁL LIISSIISS Y YD DIISSE EÑ ÑO O SSE EA APPL LIIC CA AE EL LE EN NFFO OQ QU UE E E ESST TR RU UC CT TU UR RA AD DO OY Y PPA AR RA AL LA A IIM MPPL LE EM ME EN NT TA AC CIIÓ ÓN NE EL LE EN NFFO OQ QU UE EO OR RIIE EN NT TA AD DO OA A O OB BJJE ET TO OSS,, L LO OC CU UA AL LR RE ESSU UL LT TA AE EN NU UN NA AT TA AR RE EA AN NO OD DE EL LT TO OD DO OG GR RA AT TA AC CU UA AN ND DO O SSE E H HA AB BL LA AD DE E SSIISST TE EM MA ASS C CO ON N G GR RA AN N C CA AN NT TIID DA AD DD DE E SSO OFFT TW WA AR RE E.. E ESS DDEEFFIINNIITTIIVVO O Q QU UE EA AD DO OPPT TA AR RL LA A PPO OSST TU UR RA AO OR RIIE EN NT TA AD DA AA A O OB BJJE ET TO OSS D DE ESSD DE EL LO OSS PPR RIIM ME ER RO OSS N NIIV VE EL LE ESS C CO ON NL LL LE EV VA AA AL LD DE ESSA AR RR RO OL LL LO OD DE EU UN N SSO OFFT TW WA AR RE EC CO ON NM ME EJJO OR RC CA AL LIID DA AD D Y YQ QU UE E FFA AC CIIL LIIT TA AL LA AE EV VO OL LU UC CIIÓ ÓN ND DE EL L SSIISST TE EM MA AA AT TR RA AV VÉ ÉSS D DE EL LT TIIE EM MPPO OL LO OC CU UA AL L L LE E PPE ER RM MIIT TIIR RÁ ÁT TR RA ASSC CE EN ND DE ER R,, C CO OSSA AQ QU UE EN NO O SSU UC CE ED DE EM MU UY YR RE EG GU UL LA AR RM ME EN NT TE E C CO ON NE EL LE EN NFFO OQ QU UE EE ESST TR RU UC CT TU UR RA AD DO O.. E ELL TTEEM MA A PPR RIIN NC CIIPPA AL LD DE EE ESST TA AD DE ET TE ESSIISS E ESS E EL LL LE EN NG GU UA AJJE EU UN NIIFFIIC CA AD DO OD DE E M MO OD DE EL LA AD DO OY Y PPU UE ED DE EA AFFIIR RM MA AR RSSE EQ QU UE E SSU UA APPL LIIC CA AC CIIÓ ÓN NA AL LC CA ASSO OD DE EE ESST TU UD DIIO O PPA AR RT TIIC CU UL LA AR R FFU UE E SSA AT TIISSFFA AC CT TO OR RIIA A,, Y YA A Q QU UE E SSE E PPR RO OPPO OR RC CIIO ON NA AR RO ON N L LO OSS A AR RT TE EFFA AC CT TO OSS N NE EC CE ESSA AR RIIO OSS PPA AR RA A L LA A FFA ASSE E D DE E A AN NÁ ÁL LIISSIISS Y Y D DIISSE EÑ ÑO O.. L LO OSS O OB BJJE ET TIIV VO OSS D DE EL LA AT TE ESSIISS SSE EC CU UM MPPL LIIE ER RO ON N,, Y YA AQ QU UE E SSE EL LO OG GR RÓ ÓE ESSPPE EC CIIFFIIC CA AR RE EL L D DIISSE EÑ ÑO OD DE EU UN NC CA ASSO OD DE EE ESST TU UD DIIO O,, A APPE EG GÁ ÁN ND DO OSSE EÉ ÉSST TE E,, A AL LA AN NO OT TA AC CIIÓ ÓN ND DE EL L L LE EN NG GU UA AJJE EU UN NIIFFIIC CA AD DO OD DE EM MO OD DE EL LA AD DO O .. L LO OSS T TE EM MA ASS C CO ON NT TE EM MPPL LA AD DO OSS D DE EN NT TR RO O D DE EL LM MA AR RC CO OT TE EÓ ÓR RIIC CO O FFU UE ER RO ON NA AN NA AL LIIZ ZA AD DO OSS Y YA APPL LIIC CA AD DO OSS,, Y Y PPE ER RM MIIT TIIE ER RO ON N L LL LE EG GA AR RA AU UN NA AE ESSPPE EC CIIFFIIC CA AC CIIÓ ÓN ND DE ED DIISSE EÑ ÑO OD DE EFFIIN NIIT TIIV VA A,, L LA AC CU UA AL LC CO ON NSST TA AD DE E D DIIA AG GR RA AM MA ASS D DE E SSE EC CU UE EN NC CIIA A,, C CO ON NT TR RA AT TO OSS,, C CA ASSO OSS D DE EU USSO O,, D DIIA AG GR RA AM MA ASS D DE E C CL LA ASSE ESS Y Y M MO OD DE EL LO OSS C CO ON NC CE EPPT TU UA AL LE ESS,, L LO OSS C CU UA AL LE ESS E EN N SSU U C CO ON NJJU UN NT TO O R RE EPPR RE ESSE EN NT TA AN N L LO OSS PPL LA AN NO OSS Q QU UE E E ESSC CE EN NIIFFIIC CA AN N L LA A C CO ON NSST TR RU UC CC CIIÓ ÓN N D DE EL L SSO OFFT TW WA AR RE E.. Como experiencia particular, el incursionar en este tipo de trabajos ha proporcionado al autor, una grata y rica experiencia de aprendizaje, que le permite analizar y darse cuenta de las diferentes formas que hay para resolver un problema, en cuanto a diseño de software se refiere, y que el aplicar una nueva estrategia y lograr los objetivos planteados puede resultar muy reconfortante. Esto, tomando en cuenta que siempre debe apostarse por las nuevas tecnologías que proporcionan herramientas más eficaces y especializadas para el desarrollo de una tarea en particular. Es definitivo que el modelado orientado a objetos es una realidad y que las tendencias se inclinan cada vez más por lenguajes de diseño orientados a objetos como el U.M.L., dejando de lado el enfoque algorítmico que por mucho tiempo ha prevalecido y prevalece aún en nuestros días, haciendo del diseño de software una tarea cada vez más complicada, debido a que el software, se vuelve cada más extenso y complejo. BIBLIOGRAFÍA Arlow Jim, Neustadt Ila. Uml and the unified process: Practical Objetc-Oriented Analysis and Design. Ed. Addison Wesley Professional. 1st edition. January 16, 2002. 416 pp. Booch, G. Objetc-Oriented analysis and design. Ed. Benjamin/Cummnis. EUA. 1994. Booch G., Rumbaugh J. Jacobson I. El lenguaje de modelado unificado. Ed. Addison Wesley Iberoamericana, Madrid, 1999. 464 pp. Clarence Lee, Rachel Reuben, Mike Siekkinen, http://www.terra.com.ve/informatica/que-es/irc.cfm. Terra y Lee Smallbone. Networks S.A. 1999. Fecha de visita: Mayo 2002. Crag System (1998). http://rgai.i.inf.u-zeged.hu/~beszedes/munka/rose/UML Tutorial.. Fecha de visita: Mayo 2002. Elizalde Vieyra Guadalupe (2000). El modelo cliente servidor: http://www.fismat.umich.mx/~elizalde/tesis/node19.html Flower Martín. UML gota a gota. Ed. Addison Wesley Longman de México, S.A. de C.V. México, 1999. 203 pp. Irc Hispano. http://www.irc-hispano.org/ayuda/quees.html. 2002. Fecha de visita: Mayo 2002. Jacobson, I. Object-Oriented Software Engineering: A use case driven approach. Ed Addison Wesley, 1992. Larman Graig. UML y Patrones Introducción al análisis y diseño orientado a objetos. Ed. Prentice may, México, 1999. 536 pp. Maldonado Villaverde Carlos. Manual de curso UML. Grupo Softpack. México.1999 Meilir Page-Jones. Fundamentals of Object-Oriented Design in UML. Ed. AddisonWesley Pub Co. 1st edition October 29, 1999. 458 pp. Muñoz Razo Carlos. Cómo elaborar y asesorar una investigación de tesis. Ed. Prentice Hall. México 1998. 300 pp. Salkind Neil J. Métodos de Investigación. Ed. Prentice Hall. México 1999. 400 pp. ANEXO 1 Formato de la entrevista aplicada. 1.- ¿Cuál es su nombre? 2.- ¿Cuál es su profesión? 3.- ¿En donde trabaja actualmente? 4.- ¿Cuál es su puesto? 5.- ¿Ha trabajado alguna vez con el diseño orientado a objetos? 6.- ¿Cuantos años lleva trabajando en el diseño de software? 7.- ¿Cuál es su experiencia en el ramo del diseño orientado a objetos? 8.- ¿Ha elaborado productos de software que se comercialicen? 9.- ¿En cuáles de ellos el diseño ha sido orientado a objetos? 10.- ¿Qué lenguajes utiliza para diseñar y porque? 11.- ¿Cuál es su opinión respecto al diseño orientado a objetos?