Modelado visual de aplicaciones de software Nota: puede que algunas de las características descritas no se ofrezcan en la versión Beta 2 de Visual Studio.NET disponible para el público en general. Los clientes que crean complejas aplicaciones distribuidas se enfrentan al reto de tener que comunicar correctamente los requisitos y la arquitectura de la aplicación a una gran variedad de miembros del equipo. Este reto se hace aún más difícil a medida que nos adentramos en el mundo de los servicios Web XML poco asociados. Todo el mundo sabe que la presentación de conceptos e información en varios formatos (visual, hablado o escrito) mejora la capacidad de los usuarios a la hora de comprender con rapidez y precisión los mensajes. Adoptando este enfoque de varios formatos para la comunicación, Visual Studio.NET ayuda a fomentar la coordinación y productividad en el equipo de trabajo al proporcionar un variado conjunto de herramientas visuales que permiten la especificación de los requisitos y la arquitectura de la aplicación. Enfoque estándar Visual Studio.NET permite realizar una completa variedad de actividades de diseño y modelado, entre las que se incluyen las capacidades de creación de diagramas de forma libre, así como un grupo de diagramas en Lenguaje unificado de modelado (UML) estándar. UML es una notación para la descripción e interpretación visual de las partes, relaciones y acciones que conforman una aplicación de software. Con las características de modelado de Visual Studio.NET, los usuarios pueden crear sofisticados diagramas que especifiquen tanto la arquitectura de la aplicación como los requisitos de la empresa y comunicar éstos a los equipos. Los analistas, arquitectos y desarrolladores de las empresas, así como quienes deseen realizar tareas de análisis y diseño para mejorar la comunicación y aumentar la productividad de sus equipos de desarrollo, pueden aprovechar las ventajas de estas nuevas capacidades. En el siguiente escenario se muestra cómo se puede visualizar y comunicar con mayor eficacia la estructura de un determinado sistema de software utilizando modelos de software creados en Visual Studio.NET. Escenario de la aplicación: un sistema de software para el alquiler de vehículos Este escenario trata cómo se deben utilizar los 8 tipos de diagrama UML para modelar un sistema de software de una agencia de alquiler de vehículos. Comenzando por tres casos de uso sencillos, los ejemplos muestran los procesos esenciales del sistema. Diagrama de casos de uso Los casos de uso especifican una interacción entre un usuario y el sistema en el que éste puede lograr un objetivo. Un sistema de software normal podría incluir cientos de casos de uso sencillos. Algunos casos de uso que pueden aplicarse al sistema de la agencia de alquiler son: El cliente reserva el vehículo Antes de disponer del vehículo, el cliente debe hacer la reserva. El cliente se pone en contacto con la agencia de alquiler y realiza una solicitud. La agencia acepta o rechaza la solicitud basándose en una serie de criterios como, por ejemplo, la disponibilidad de los vehículos o el historial de alquiler del cliente. Si se acepta la reserva, la agencia rellena un formulario con los detalles del cliente y el pago del depósito completa el proceso de reserva. El cliente acude a por el vehículo Cuando el cliente llega a la agencia de vehículos, ésta asigna el modelo de vehículo solicitado por el cliente, según los niveles de stock disponibles. Una vez abonado el importe total, el cliente recibe el vehículo. El cliente devuelve el vehículo El cliente devuelve el vehículo a la agencia el día especificado en el acuerdo de alquiler. En la siguiente imagen se muestra el diagrama de estos tres casos de uso. Figura 1. Diagrama de casos de uso sencillo Diagrama (de clases) de estructura estática La siguiente tarea consiste en clasificar los objetos y sus relaciones. Examinar los casos de uso ayuda a identificar las clases. Las clases de objetos se modelan utilizando diagramas de estructura estática o de clases que muestran la estructura general del sistema, así como las propiedades relacionales y de comportamiento. En un diagrama de clases, los objetos que forman parte del sistema de alquiler de vehículos se agrupan en clases y cada una de éstas contiene una sección de nombre y otra de atributos. Algunas clases también incluyen una sección de operaciones, que especifica cómo se deben comportar los objetos de dicha clase. En la clase Cliente, los atributos incluyen nombre, número de teléfono, número del carnet de conducir y dirección. La fecha de nacimiento es necesaria para determinar que el cliente cumple con el requisito de mayoría de edad necesaria para alquilar un vehículo. La clase Cliente también almacena operaciones, como las reservas. Los diagramas de clases admiten la herencia. En la siguiente figura, por ejemplo, las clases Mecánico y Agente de alquiler heredan atributos como, por ejemplo, el nombre y la dirección, de la clase Empleado. Figura 2. Diagrama de estructura estática o de clases Diagrama de secuencia Los diagramas de secuencia proporcionan una vista detallada de un caso de uso. Muestran una interacción organizada en una secuencia de tiempo y ayuda a documentar el flujo de lógica dentro de la aplicación. Los participantes se muestran en el contexto de los mensajes que se transfieren entre ellos. En un sistema de software amplio, el diagrama de secuencia puede incluir un mayor número de detalles y contener miles de mensajes. Imaginemos que un cliente desea realizar la reserva de un vehículo. El agente de alquiler debe primero comprobar el registro del cliente para asegurarse de que éste puede llevar a cabo esta operación. Si el cliente ha alquilado previamente un vehículo de la compañía, su historial de alquiler estará registrado y el agente sólo tendrá que asegurarse que las anteriores transacciones se realizaron sin problemas. Por ejemplo, el agente puede confirmar que los vehículos alquilados anteriormente se devolvieron en el plazo previsto. Una vez aprobado el estado de alquiler del cliente, el agente puede aprobar la reserva del alquiler del vehículo. Este proceso se puede representar en un diagrama de secuencia, tal y como se muestra en la siguiente figura. Figura 3. Diagrama de secuencia Diagrama de colaboración Los diagramas de colaboración constituyen otro tipo de diagrama de interacción. Al igual que los diagramas de secuencia, muestran cómo operan los objetos de un grupo entre sí en un caso de uso. A cada mensaje se le asigna un número para documentar el orden en el que tiene lugar. Figura 4. Diagrama de colaboración Diagrama de estados El estado de un objeto se define como sus atributos en un momento determinado. Los objetos van pasando por distintos estados a medida se ven influenciados por estímulos externos. El diagrama de estados asigna estos estados, así como los eventos de activación que hacen que un objeto se encuentre en un estado determinado. Por ejemplo, en nuestro sistema de alquiler, el objeto es un vehículo. A medida que el vehículo va pasando por las distintas fases del sistema de alquiler, los distintos estados crean un complejo pero esclarecedor diagrama. Por ejemplo, el vehículo se agrega en primer lugar a la flota y permanece en el estado En stock hasta que se alquila. Una vez alquilado, el vehículo vuelve a la flota y al estado En stock. En varios momentos del ciclo de vida comercial, el vehículo precisará que se le realicen reparaciones (En reparación). Cuando el vehículo deja de poder utilizarse, se vende o se desguaza para dejar cabida a uno nuevo. Figura 5. Diagrama de estados Diagrama de actividades Los diagramas de actividades muestra la lógica que tiene lugar como respuesta a las acciones generadas internamente. Este tipo de diagrama está relacionado con una clase o caso de uso específico y muestra los pasos que se deben realizar para llevar a cabo una operación determinada. Figura 6. Diagrama de actividades Diagrama de componentes Los diagramas de componentes muestran cómo distintos subsistemas de software conforman la estructura general del sistema, que se crea en una base de datos centralizada que contiene registros de alquileres anteriores, detalles del vehículo, registros de servicios y detalles del cliente y del empleado. Resulta esencial que estos datos se centralicen en una base de datos, ya que los niveles de stock varían con las horas y todas las partes deben disponer de información de última hora. El mantenimiento de los datos actualizados requiere actualizaciones de la información en tiempo real de todas las partes. Los subsistemas de software de este ejemplo incluyen Registros de vehículos, Registros de servicios, Registros de ventas, Registro del cliente y Registro del empleado. Figura 7. Diagrama de componentes Diagrama de distribución Los diagramas de distribución muestran cómo están configurados el hardware y el software del sistema. La agencia de alquiler necesita un sistema cliente/servidor con una base de datos central de registros a la que pueda tener acceso el personal. Los agentes de alquiler necesitan tener acceso a los datos sobre la disponibilidad del vehículo. Mientras tanto, los mecánicos necesitan indicar que un determinado vehículo se encuentra en el estado En reparación. Figura 8. Diagrama de distribución Modelado de forma libre Un gran número de clientes desean también poder agregar otros elementos gráficos a los diagramas UML en sus modelos de aplicaciones. Visual Studio.NET permite el modelado de forma libre como, por ejemplo, los gráficos de flujo y otros diagramas no semánticos, así como la capacidad de incrustar cualquier imagen dentro de un modelo. De este modo, los clientes cuentan con flexibilidad adicional para comunicar la arquitectura y funcionalidad de su aplicación. Resumen Durante el ciclo de vida de una aplicación, muchos usuarios con distintos niveles de formación técnica necesitan interactuar y comunicar para lograr cumplir el objetivo común de crear una nueva aplicación. Visual Studio.NET proporciona las características esenciales: el modelado estándar de software y las capacidades de creación de diagramas de formas libres que permiten la especificación y comunicación de la arquitectura. Los clientes que utilizan estas características se beneficiarán de un medio de comunicación más eficaz dentro de sus equipos de desarrollo, lo que aumentará la eficacia de los desarrolladores y el nivel de éxito en los proyectos de software de sus organizaciones.