sábado, 15 de mayo de 2010

SISTRANS: Sistema de Administración de Transportes de Larga Distancia

Durante el segundo semestre de 2009, Pablo Linares y yo, Adrián Paredes, bajo la tutela de la Lic. Adriana Echeverría, trabajamos en este proyecto que convenimos llamar SISTRANS. Se trata de nuestro Trabajo Profesional (o trabajo de fin de carrera) para la carrera de Ingeniería en Informática de la Facultad de Ingeniería de la Universidad de Buenos Aires (FIUBA).

SISTRANS nació del deseo de realizar una implementación de Domain-Driven Design, siguiendo la filosofía planteada por Eric Evans y aplicando patrones y conceptos relacionados. Necesitábamos un dominio complejo, un dominio por el cual valiera la pena el desafío de orientar el Trabajo Profesional a un desarrollo fuertemente orientado al negocio. Comenzamos a investigar la bibliografía relacionada y así surgió que los sistemas que mayor lógica de negocio poseen son las Aplicaciones Enterprise. En este tipo de software es en donde más se busca aislar los aspectos técnicos, de la complicación intrínseca del dominio. Esto nos condujo a la conclusión de que no sólo desarrollaríamos una implementación de Domain-Driven Design, también construiríamos una aplicación enterprise.

SISTRANS es un producto básico customizable, un core de negocio capaz de adaptarse a las distintas empresas de transporte de larga distancia. Si hablamos de una arquitectura enterprise típica, lo que nosotros proveemos es una capa de acceso al negocio, una capa de dominio y las capas de infraestructura necesarias. Sobre este core se pueden montar variadas presentaciones. Las aplicaciones que se construyan sobre el sistema no estarán limitadas a una empresa de transporte en particular (como aerolíneas, barcos, micros o trenes) y por supuesto tampoco a una vista (pudiéndose construir aplicaciones web, de escritorio, para dispositivos móviles, etc). El producto es genérico, por lo cual no sólo sirve para construir aplicaciones de transporte de personas, sino también para transporte de carga o paquetes.

El Trabajo Profesional tiene una fuerte orientación a la Arquitectura. Creemos que las buenas arquitecturas son las que sirven como plataforma de los buenos sistemas. SISTRANS sigue muchos de los principios y patrones de Domain-Driven Design y del libro de Patrones Enterprise de Martin Fowler.

También hemos puesto importante énfasis en la administración del proyecto y en la elección de las tecnologías y herramientas. Elegimos Scrum como metodología de desarrollo, porque es una de las metodologías ágiles que más conocemos y los principios de Domain-Driven Design son más afines a una metodología ágil que a una orientada al plan, como puede ser RUP. Para la tecnología, optamos por Java EE + EJB3, la cual creemos que es actualmente la plataforma de desarrollo más madura y robusta para la construcción de aplicaciones enterprise. Como herramienta para la administración del proyecto usamos Assembla, que nos proporcionó un espacio para escribir documentación de forma colaborativa en formato de wiki y un repositorio SVN para alojar el código fuente y los distintos artefactos del proyecto. Otra herramienta que nos fue útil para la administración del proyecto, pero más orientada al desarrollo, fue Maven2, con la que pudimos gestionar los proyectos Eclipse, las complicadas dependencias de los mismos, empaquetar, desplegar y algunas otras cosas más.

Links

El sitio principal del proyecto lo pueden encontrar en:
http://www.assembla.com/wiki/show/sistrans

Repositorio SVN:
http://svn.assembla.com/svn/tprof2008/

Además contamos con un dominio web en el que vamos subiendo noticias relacionadas con el proyecto:
http://sistrans.com.ar/

Distribución de la Wiki

La wiki está dividida en varias secciones. En ellas encontrarán toda la documentación del proyecto. Entre las secciones más importantes tenemos:

Distribución del Repositorio

Además de la clásica distribución de branches, tags y trunk, dentro del trunk podemos encontrar cuatro distintas fases:
  • Fase0: esta fase la comenzamos a mediadios de 2008 y sirvió para definir la visión del proyecto; en esta etapa buscábamos ideas para el Trabajo Profesional.
  • Fase1: esta fase comprende el período desde que le planteamos la idea del proyecto a nuestra tutora, la Lic. Adriana Echeverría, hasta que comenzamos formalmente con la ejecución del proyecto; durante esta etapa fue cuando nos dedicamos a la redacción de la propuesta del trabajo para presentar al Consejo.
  • Fase2: esta fase comprende la ejecución completa del proyecto; en él podemos encontrar el código fuente completo de los proyectos maven que comprenden el desarrollo de SISTRANS (para más información leer la sección de Distribución de la wiki).
  • Fase3: contiene la entrega final con la documentación completa y los binarios para desplegar en los servidores respectivos.

Informe Final y Diapositivas

En la Fase3 del repositorio podemos encontrar el Informe Final del Trabajo Profesional en formato PDF:
Link de descarga del Informe Final en PDF

También podemos encontrar las Diapositivas de la Presentación Final:
Link de descarga de la Presentación Final en PDF

Tecnología y Herramientas Utilizadas

  • Assembla
  • Tortoise SVN
  • Subclipse
  • Eclipse IDE
  • Java SE 6 + Java EE 5
  • EJB 3
  • JPA + Hibernate
  • MySQL
  • Maven2
  • JBoss AS
  • Apache Tomcat
  • JBoss jBPM
  • JBoss Drools
  • RichFaces
  • Apache Commons
  • Google Docs
  • Dia
  • StarUML
  • Visio 2007

Metodologías de Desarrollo:

  • Scrum
  • Domain-Driven Design