Enseñanza del concepto de arquitectura de tres capas integrado

Anuncio
Enseñanza del concepto de arquitectura de tres capas integrado con UML
Marta E. Calderón y Allan Cedeño
Escuela de Ciencias de la Computación e Informática
Universidad de Costa Rica
marta.calderon@ecci.ucr.ac.cr, allan.cedeno@ecci.ucr.ac.cr
1
Introducción
El programa de Bachillerato en Computación e Informática de la Universidad de Costa Rica
incluye en su pensum los cursos Ingeniería de software 1 e Ingeniería de software 2. El objetivo
de estos cursos es introducir métodos, técnicas, herramientas y estándares modernos de
ingeniería de software orientado a objetos, para resolver problemas de 1) análisis de
requerimientos y diseño de sistemas de información en el curso Ingeniería de software 1 y 2)
diseño arquitectónico, programación y pruebas de sistemas de software en el de Ingeniería de
software 2. A lo largo de los dos cursos, los estudiantes llevan a cabo a un proyecto, el cual
consiste en el desarrollo de un sistema de software.
Durante el año 2011, los autores impartimos dos grupos de Ingeniería de software 1 en el
primer semestre y dos grupos de Ingeniería de software 2 durante el segundo semestre. Durante
el primer curso, introducimos la notación UML, incluidos todos los modelos que creemos
suficientes para plantear la especificación de requerimientos y el diseño del sistema. Empezamos
con el diagrama de casos de uso y la descripción detallada de estos. Continuamos con la
identificación de las entidades necesarias y con ellas creamos un modelo estático conceptual. El
modelo estático conceptual es un diagrama de clases de UML en el cual todas las clases son
entidades.
A partir de las descripciones detalladas de los casos de uso y del modelo estático conceptual,
enseñamos a los estudiantes a extraer el diagrama detallado de clases y el modelo dinámico de
UML. En el modelo dinámico tomamos en cuenta en diagrama de secuencia, el de actividades y
de estados, aunque empezamos por el de secuencia.
En este punto y pese a que el tema de arquitectura de sistemas de software corresponde al
segundo curso, debimos tomar una decisión para evitar a los estudiantes doble trabajo.
Consideramos que era importante introducir en este momento una arquitectura y no esperar al
segundo curso, con el fin de que tanto el diagrama detallado de clases como el modelo dinámico
fueran hechos desde el principio tomando en cuenta la arquitectura del sistema. En (Pressman,
2010) se recomienda que la arquitectura del sistema sea considerada lo más temprano que se
pueda en el ciclo de desarrollo. Decidimos introducir la arquitectura de 3 capas por las ventajas
que ofrece sobre facilidad de mantenimiento y posibilidades de crecimiento del software. El
problema con que nos encontramos es que no existe material en el que pudiéramos apoyarnos
para ayudar a la población estudiantil a asimilar y dominar el concepto de arquitectura de 3
capas. Por esta razón, nos dimos a la tarea de plantear una metodología para enseñar a nuestros
estudiantes, a un nivel muy detallado, cómo se modela una arquitectura de tres capas con los
modelos estáticos y dinámicos que ofrece el UML.
2
Metodología
Para desarrollar la metodología de enseñanza de los conceptos de arquitectura de tres capas,
tuvimos que optar por crear una versión simplificada de una arquitectura de tres capas utilizada
comercialmente. Se definieron las clases que se requieren en cada capa y sus funciones y
relaciones con otras clases. Posteriormente planteamos un sistema de información muy sencillo,
y generamos el modelo de clases (modelo estático de UML) específico para este sistema y
distintos escenarios o casos de uso comunes, tales como inserción, borrado y actualización de
entidades. Estos escenarios fueron representados por medio de diagramas de secuencia (modelo
dinámico de UML), de modo que fuera más fácil para nuestra población estudiantil comprender
el concepto de la arquitectura de tres capas. Casos de uso más complejos son, por lo general,
combinación de casos de uso sencillos como los que planteamos.
La arquitectura de tres capas simplificada que utilizamos consta de la capa de presentación,
la de lógica de negocio y la de acceso a datos, tal como se muestra en la Figura 1. La capa de
presentación también es conocida como el Front end. Las capas de lógica de negocio y de acceso
a datos constituyen el Back end. Para que los estudiantes practicaran y asimilaran los conceptos
de la arquitectura antes de trabajar en su proyecto, se generaron varias prácticas de laboratorio.
La arquitectura podría ser utilizada en otros cursos, como los de programación o bases de
datos, pues se adapta al conocido patrón arquitectónico de software modelo-vista-controlador,
conocido como MVC (Buschmann et al., 1996).
Figura 1. Arquitectura de 3 capas
3
Componentes de la arquitectura
El Front End está compuesto por objetos de cuatro clases principales: form, process,
validator y helper, como se ve en la Figura 1. Los forms son los componentes de interfaz. Que
muestran información al usuario. Los objetos de la clase process procesan las solicitudes
realizadas en los componentes de interfaz. Los objetos de la clase validator permiten validar
información del usuario. Los objetos de la clase helper son auxiliares que facilitan resolver una
solicitud, como por ejemplo un formateador de fecha.
El Back End representa las capas de lógica de negocio y de acceso a datos. En la capa de
lógica de aplicación se encuentran los objetos de la clase action, que se encargan de llevar el
control de la ejecución de una solicitud. Otras clase en la capa de lógica de negocio son service,
view y converter. Un service contiene la lógica de negocio, pues implementa las operaciones que
se muestran en los distintos Front Ends de la aplicación. Un objeto de la clase view proporciona
el medio de comunicación entre la capa de lógica de negocios y la capa de presentación. La view
es una clase de propiedades, o sea que no contiene lógica implementada, sino solo atributos y
métodos get y set. La clase converter se utiliza para convertir un objeto de la clase view en uno
de la clase DTO de la capa de acceso a datos, y viceversa.
La capa de acceso a datos se compone por objetos de las clases DAO y DTO. DAO es la
sigla de data access object y DTO de data transfer object. Un objeto de la clase DAO permite el
acceso a los datos. La clase DTO representa una entidad de un modelo de clases conceptual de
UML.
4
Evaluación
Evaluar el éxito que tuvimos en conseguir nuestro objetivo de transmitir a nuestros
estudiantes el concepto de arquitectura de tres capas no es fácil. Los estudiantes de los dos
grupos se organizaron en 8 grupos para efectos de desarrollar el proyecto. Todos los grupos
utilizaron la arquitectura que les suministramos, lo cual fue ya un gran logro. Sin embargo,
también hicimos, al finalizar el segundo curso, una breve evaluación individual que nos
permitiera determinar el grado de comprensión que habían alcanzado los estudiantes.
Participaron 26 de los 27 estudiantes inscritos en ambos grupos. En la evaluación planteamos
preguntas teóricas sobre la arquitectura y planteamos un escenario para un caso de uso en el que
se valida una tarjeta de crédito o bien se realiza un pago con una tarjeta de crédito. El escenario
se les presentó como un diagrama de secuencia en el que participan objetos de varias clases de
las distintas capas de la arquitectura. Queríamos evaluar qué tanto dominan los conceptos de la
arquitectura en términos prácticos. A la pregunta sobre cómo podría llamarse el caso de uso que
se representa con el diagrama de secuencia, 100% de los 26 estudiantes que tomaron la
evaluación acertaron la pregunta.
Referencias
Buschman, F., Meunier, R., Rohnert, H., Sommerlad, P. y Stal, M. (1996) Pattern-Oriented
Software Architecture: A System of Patterns. Primera edición. West Sussex, Inglaterra, John
Wiley & Sons Ltd.
Pressman, R.S. Ingeniería del software: Un enfoque práctico. (2010) Sétima edición.
México, McGraw-Hill.
Descargar