DESARROLLO ADAPTABLE DE SOFTWARE, UNA SOLUCIÓN ÁGIL PARA APLICACIONES E-COMMERCE DIEGO ANDRÉS GONZÁLEZ MORENO JOSÉ LUIS PEREA ÁLVAREZ PONTIFICIA UNIVERSIDAD JAVERIANA FACULTAD DE INGENIERÍA CARRERA DE INGENIERÍA DE SISTEMAS BOGOTA D.C. 2005 DESARROLLO ADAPTABLE DE SOFTWARE, UNA SOLUCIÓN ÁGIL PARA APLICACIONES E-COMMERCE DIEGO ANDRÉS GONZÁLEZ MORENO JOSÉ LUIS PEREA ÁLVAREZ Proyecto de grado presentado para optar el título de Ingeniero de Sistemas Director MIGUEL EDUARDO TORRES MORENO Ingeniero de Sistemas. PONTIFICIA UNIVERSIDAD JAVERIANA FACULTAD DE INGENIERÍA CARRERA DE INGENIERÍA DE SISTEMAS BOGOTA D.C. 2005 PONTIFICIA UNIVERSIDAD JAVERIANA FACULTAD DE INGENIERÍA CARRERA DE INGENIERÍA DE SISTEMAS Rector magnífico: R.P. Gerardo Remolina Vargas, S.J. Decano académico: Ing. Francisco Javier Rebolledo Muñoz Decano del Medio Universitario: R.P. Antonio José Sarmiento Nova, S.J. Director de Carrera: Ing. Hilda Cristina Chaparro López Director Departamento: Ing. Germán Alberto Chavarro Flórez Nota de aceptación ____________________________________________________ ____________________________________________________ ____________________________________________________ ______________________________________ Director del proyecto ______________________________________ Jurado ______________________________________ Jurado BOGOTA, D.C JUNIO DE 2005 Artículo 23 de la Resolución No. 1 de Junio de 1946 “La universidad no se hace responsable de los conceptos emitidos por sus alumnos en sus proyectos de grado. Sólo velará porque no se publique nada contrario al dogma y la moral católica y porque no contengan ataques o polémicas puramente personales. Antes bien, que se vean en ellos el anhelo de buscar la verdad y la Justicia.” A nuestras madres quienes son la mayor inspiración en nuestras vidas AGRADECIMIENTOS Los autores expresan sus agradecimientos a: Nuestras Familias por toda su colaboración. Nuestros compañeros por aguantarnos toda la carrera y por su continua ayuda y apoyo (ellos saben quienes son). Miguel Eduardo Torres, Ingeniero de Sistemas y Director de este proyecto, por su motivación y determinación en este trabajo. Profesores, docentes y colaboradores quienes hicieron posible nuestro desarrollo profesional. TABLA DE CONTENIDO Pág. 0. 1. INTRODUCCIÓN ...................................................................................................... 12 MARCO TEORICO................................................................................................... 14 1.1. EL DESARROLLO DE SOFTWARE ............................................................. 14 1.2. EXTREME PROJECTS .................................................................................... 15 1.3. DESARROLLO ÁGIL ....................................................................................... 16 1.3.2. Modelamiento ágil (AM) ........................................................................... 17 1.3.3. Scrum........................................................................................................... 17 1.3.4. Metodologías Cristal .................................................................................. 17 1.3.5. Feature Driven Development Method (FDD) .......................................... 17 1.4. ADAPTIVE SOFTWARE DEVELOPMENT (DAS) ..................................... 18 1.4.1. Ciclo de vida del Desarrollo Adaptable de Software............................... 19 1.5. FRAMEWORK .................................................................................................... 20 1.5.1. Patrones utilizados en el desarrollo de un Framework según Craig Larman 22 1.5.2. Patrones utilizados en el proceso de desarrollo de un Framework según Brent Carlson y James Carey.................................................................................... 23 1.6. E-COMMERCE................................................................................................... 26 2. DESCRIPCION DEL PROYECTO ......................................................................... 28 3. DESARROLLO ADAPTABLE DE SOFTWARE .................................................. 29 4. DESARROLLO DEL FRAMEWORK ...................................................................... 35 4.1. PLAN DE CICLOS DE DESARROLLO ADAPTABLE ............................... 35 4.2. ANALISIS ........................................................................................................... 36 4.3. DISEÑO............................................................................................................... 38 4.4. IMPLEMENTACION I ..................................................................................... 41 4.5. IMPLEMENTACION II.................................................................................... 49 4.6. PRUEBAS Y DOCUMENTACION.................................................................. 54 4.6.1. Pruebas ........................................................................................................ 54 4.6.2. Documentación ........................................................................................... 54 5. DESARROLLO DE LA APLICACIÓN PARA LA VENTA DE DVD ................ 56 5.1. PLAN DE CICLOS DE DESARROLLO ADAPTABLE ............................... 56 5.2. ANALISIS ........................................................................................................... 56 5.3. DISEÑO............................................................................................................... 57 5.4. IMPLEMENTACION I ..................................................................................... 59 5.5. IMPLEMENTACION II.................................................................................... 60 5.6. PRUEBAS Y DOCUMENTACION.................................................................. 65 5.6.1. Pruebas ........................................................................................................ 65 5.6.2. Documentación ........................................................................................... 65 6. CONCLUSIONES Y RECOMENDACIONES ....................................................... 66 TRABAJO A FUTURO ..................................................................................................... 72 BIBLIOGRAFIA ................................................................................................................ 73 LISTA DE FIGURAS Ilustración 1. Ciclo de Vida del Desarrollo Adaptable......................................................... 19 Ilustración 2. Diagrama de Casos de Uso del Framework ................................................... 37 Ilustración 3. Modelo de Datos del Framework ................................................................... 38 Ilustración 4. Diagrama de Arquitectura del Framework..................................................... 39 Ilustración 5. Clases Producto, BackupAdmin, Cliente y Administrador. ........................... 42 Ilustración 6. Clases TipoTarjeta, OrdenCompra, Tarjeta Credito y Producto Fisisco....... 43 Ilustración 7. Clases Service Locator y Factory.................................................................. 44 Ilustración 8. ClienteMgr Session EJB ................................................................................. 45 Ilustración 9. AdministradorMgr Session EJB. .................................................................... 46 Ilustración 10. TiendaMgr Session EJB ............................................................................... 47 Ilustración 11. EntidadFinancieraMgr y KartMgr SessionsEJB........................................... 48 Ilustración 12. Clases DAO's................................................................................................ 49 Ilustración 13. EJB EntitiesEJB CMP'S ............................................................................... 50 Ilustración 14. EJB EntitiesEJB CMP .................................................................................. 51 Ilustración 15. Clase Bussines Delegate............................................................................... 53 Ilustración 16. Diagrama Casos de Uso Aplicación DVD ................................................... 57 Ilustración 17. Modelo de Datos Aplicación DVD .............................................................. 58 Ilustración 18. Diagrama de Arquitectura Aplicación DVD ................................................ 59 Ilustración 19. Clase DVD y ProductoCreator ..................................................................... 60 Ilustración 20. Clase DAOProductos Aplicación DVD ....................................................... 60 Ilustración 21. BMPDVDProducto Aplicación DVD .......................................................... 62 Ilustración 22. Clase BusinessDelegate Aplicación DVD.................................................... 64 Ilustración 23. Clase Servlet Aplicación DVD..................................................................... 65 GLOSARIO DAS: Desarrollo Ágil de Software, metodología de desarrollo ágil la cual provee un marco de trabajo para sistemas de desarrollo iterativos largos y complejos. Framework: Un Framework es un conjunto de componentes reutilizables, los cuales intentan resolver determinado número de problemas en uno o más dominios. E-commerce: Es el tipo de transacción económica -compra y venta- que se realiza a través de sistemas electrónicos. Una empresa, comúnmente presente en la red, vende productos o servicios a través de Internet. Base de Datos: Una base de datos es un conjunto de información estructurada, como por ejemplo las cifras de ventas de un año. Las bases de datos tradicionales están diseñadas para gestionar datos tales como importes, cantidades, fechas y, limitadamente, texto. DAO: Data Access Object, este es un patrón el cual tiene como fin abstraer y encapsular todos los accesos a la fuente de datos, logrando así desacoplar la lógica de negocios de la lógica de acceso a datos. El DAO maneja la conexión con la fuente de datos para obtener y almacenar datos. Enterprise Java Beans EJB: Los EJBs proporcionan un modelo de componentes distribuido estándar para el lado del servidor. El objetivo de los Enterprise Beans es dotar al programador de un modelo que le permita abstraerse de los problemas generales de una aplicación empresarial (concurrencia, transacciones, persistencia, seguridad, etc.) para centrarse en el desarrollo de la lógica de negocio en sí. El hecho de estar basado en componentes nos permite que éstos sean flexibles y sobre todo reutilizables. EJBs de Entidad (Entity EJBs): Su objetivo es encapsular los objetos de lado de servidor que almacenan los datos. Los EJBs de entidad presentan la característica fundamental de la persistencia: • • Persistencia gestionada por el contenedor (CMP): El contenedor se encarga de almacenar y recuperar los datos del objeto de entidad mediante un mapeado en una tabla de una base de datos. Persistencia gestionada por el bean (BMP): El propio objeto entidad se encarga, mediante una base de datos u otro mecanismo, de almacenar y recuperar los datos a los que se refiere. 10 EJBs de Sesión (Session EJBs): Gestionan el flujo de la información en el servidor. Generalmente sirven a los clientes como una fachada de los servicios proporcionados por otros componentes disponibles en el servidor. Puede haber dos tipos: • • con estado (StateFul). Los Beans de sesión con estado son objetos distribuidos que poseen un estado. El estado no es persistente, pero el acceso al bean se limita a un solo cliente. sin estado (Stateless). Los Beans de sesión sin estado son objetos distribuidos que carecen de estado asociado permitiendo por tanto que se los acceda concurrentemente. No se garantiza que los contenidos de las variables de instancia se conserven entre llamadas al método. Business Delegate: Patrón que se utiliza para reducir el acoplamiento entre los clientes de la capa de presentación y los servicios de negocio. El Business Delegate oculta los detalles de la implementación del servicio de negocio, como los detalles de búsqueda y acceso de la arquitectura EJB. Java: Es una plataforma de software desarrollada por Sun Microsystems. Esta plataforma ha sido desarrollada de tal manera que los programas desarrollados para ella puedan ejecutarse de la misma forma en diferentes tipos de arquitecturas y dispositivos computacionales. J2EE: Se refiere a la plataforma Java 2 Edición Empresarial que define un estándar para desarrollar aplicaciones empresariales en lenguaje de programación Java. Oracle: Es un sistema de administración de base de datos (o RDBMS por el acrónimo en inglés de Relational Data Base Management System), fabricado por Oracle Corporation. SQL: El Lenguaje de Consulta Estructurado (Structured Query Language) es un lenguaje declarativo de acceso a Bases de Datos relacionales que permite especificar diversos tipos de operaciones sobre las mismas, aún a características del Álgebra y el Cálculo relacional permitiendo lanzar consultas con el fin de recuperar información de interés de una base de batos, de una forma sencilla. Carro de Compras: Entidad encargada de guardar en memoria los productos que el cliente desea comprar. JNDI: Una extensión de la plataforma Java que provee una interfaz estándar para nombres heterogéneos y directorio de servicios. Data Source: Un sitio de datos específico, donde la información es almacenada y puede ser obtenida. 11 0. INTRODUCCIÓN Cuando se desarrolla software es importante saber manejar los problemas comunes que pueden presentarse, por ejemplo el cambio en los requerimientos, mientras se desarrolla una aplicación, lo cual es una situación muy normal, debido a lo volátil que son las organizaciones hoy en día, y a la fuerte competencia que hay entre éstas. También el cambio de ámbito de las aplicaciones y la introducción de nuevas tecnologías pueden derivar en serios problemas de desarrollo, como estos hay muchos factores que hacen que el desarrollo de software sea una tarea compleja; estas situaciones son totalmente ajenas al equipo de trabajo. Lo que el desarrollo ágil de software busca es una fácil solución a estos problemas, mejorando el manejo de los cambios inevitables del proyecto y reduciendo los costos que nacen gracias a éstos, ya que facilitar el cambio es más efectivo que tratar de prevenirlo. El desarrollo ágil de software se enfoca más en los individuos y sus respectivas interacciones, que en los procesos y herramientas y le da mayor importancia al trabajo de software que las documentaciones. Es por eso, que la mayor prioridad del desarrollo ágil de software es la satisfacción del cliente, pero para llegar a ese punto es necesario la colaboración de todas las partes, ya sean patrocinadores, clientes, usuarios y por supuesto los desarrolladores. En el mundo de los procesos, se cree en la eficiencia de controlarlos y llevar un seguimiento para poder optimizarlos, pero la época en la que estamos viviendo no se rige por estas leyes o fundamentos, ya que el desarrollo de aplicaciones se ha vuelto en cierta forma impredecible, ya que es imposible controlar el cambio constante de las variables del entorno. El desarrollo adaptable de software, a diferencia de muchas otras metodologías, entiende que el mundo del dominio esta cambiando, por lo cual el desarrollo de software no puede verse desde una perspectiva lineal en ningún caso. Por lo que cada proyecto tiene un contexto y forma de resolución diferente. En Colombia, el desarrollo de software para e-commerce en las empresas es cada vez más fuerte y tiene más acogida1, por lo que cada vez mas grupos de desarrollo de software optan por diferentes metodologías para agilizar los procesos en su entorno. El desarrollo de aplicaciones reutilizables, se ha vuelto una costumbre, tanto para las empresas, como para los desarrolladores independientes. Es por eso que el diseño e implementación de Frameworks, ha ido creciendo de una forma acelerada ya que al ser reutilizables, reducen drásticamente los costos y la complejidad de los proyectos de 1 ACIS Asociación Colombiana de Ingenieros de Sistemas, http://www.acis.org.co/ 12 software. “Un Framework es un conjunto de clases reutilizables para el diseño e implementación de un clase de software específico. Extendiendo un poco esta definición se puede decir que un Framework es un conjunto de componentes que pueden solucionar problemas en uno o más dominios de aplicación”2. Es el encargado de manejar el núcleo de la aplicación. El objetivo de este proyecto es el desarrollo de un Framework para aplicaciones e-commerce utilizando el desarrollo adaptable de software. Para verificar la funcionalidad del Framework y ver su fácil adaptación y utilización, se desarrolló una aplicación específica de e-commerce, en este caso la venta de DVDs3 por Internet. Por medio del uso del desarrollo adaptable de software en este proyecto de investigación, se pretende mostrar la aplicación de una metodología diferente en el desarrollo de software, a las comúnmente usadas, para que esta pueda ser utilizada por personas interesadas en conocer el desarrollo de aplicaciones por medio de una metodología ágil. También se quiere mostrar, la importancia del análisis y el diseño a la hora de desarrollar aplicaciones reutilizables como el Framework, ya que estas etapas y sus respectivos entregables hacen parte de dicha reutilización. Esperamos que este Proyecto colme las expectativas del lector y deje un aporte en cada uno de ellos. 2 3 Carey, James y Carlson, Brent. Framework Process Patterns Pág. 1 Digital Video Disc 13 1. MARCO TEORICO Muchos autores a través de los años han comparado el desarrollo de software, con el alpinismo4, en esta disciplina, el objetivo es escalar la montaña, para conseguir esto el escalador debe tener ciertas habilidades dependiendo de las características de la montaña, es decir la altura, la inclinación, temperatura, clima y demás factores externos y además determinadas herramientas como botas, arnés, poleas, cuerdas, guantes y otras herramientas necesarias, las cuales aumentan o disminuyen la dificultad y el tiempo del ascenso (sin ellas puede llegar a ser imposible la escalada). En el desarrollo de software debemos tener ciertas habilidades y herramientas de acuerdo al tipo de proyecto (montaña) y su entorno (altura, clima etc.), ya que como en el alpinismo éstas nos ayudan o dificultan el logro de los objetivos planteados en el mismo. Este trabajo se enfoca en una forma particular de escalar montañas y de desarrollar software, de alta velocidad y rápido cambio. 1.1.EL DESARROLLO DE SOFTWARE A finales de los 70`s el desarrollo de software no era tarea compleja, eran comunes los “mainframe”5, y los requerimientos a cumplir eran pocos. COBOL era el lenguaje del momento y la ingeniería de la información era el camino, los modelos se caracterizaban por diagramas de flujo de datos y diagramas entidad relación. A esta época de desarrollo de software, Ken Orr la llama “Monumental Software Development” (Desarrollo de software monumental)6. Esta época se caracterizaba por un desarrollo “top-down” y “long-term” empezando en lo alto de las organizaciones, trasladando las necesidades del negocio en modelos de datos, e implementándolos en bases de datos para después construir aplicaciones. Todo esto tomaba varios años por lo que lo ideal era producir el software correcto en el primer intento. El punto más alto de esta época fueron las metodologías definidas en 14 volúmenes, en los cuales se detalla cada tarea, documento o forma, que debe tenerse en cuenta en el desarrollo de software, de estas prácticas se derivó lo que ahora conocemos como herramientas CASE (Computer-Aided Software Engineering). Hasta finales de los años 90 muchos productos de software fueron construidos utilizando estas técnicas de desarrollo, los cuales sufrieron varios tipos de inconvenientes, tales como: 4 James Highsmith, Adaptive Software Development, 2000 Capítulo 1, Computador Central 6 HIGHSMITH, James. Agile Software Development: The People Factor. En Institute of Electrical and Electronics Engineers (IEEE) magazine, Noviembre de 2001. 5 14 • Los clientes no estaban satisfechos, ya que después de ciclos tan largos de desarrollo, muchas aplicaciones no cubrían sus necesidades, ya que los requerimientos habían cambiado durante el desarrollo. • El tiempo que se tomaba el proceso era muy largo, y el negocio era muy variable, su cambio era muy rápido para ese tipo de ciclo de vida de desarrollo. • En general los métodos del desarrollo monumental de software no se adaptan bien al rápido y constante cambio de las condiciones y el entorno de algunos negocios. A principios de los años 90 esta perspectiva cambió debido a la aparición de los computadores personales, de C++, Java, Delphi, Visual Basic, etc., surgiendo una nueva forma de desarrollo que Ken Orr llama “Accidental Software Development” (Desarrollo accidental de software)7. Esta época al contrario de la Monumental, se caracteriza por la no existencia de métodos o metodologías, ya que se creía que el proceso solo demoraría el desarrollo, utiliza una metodología “bottom-up” y “short-term”, la cual empieza con el desarrollo inmediato de aplicaciones que cubren las necesidades de los clientes, dándole poca importancia a la integración con las demás aplicaciones, el código debía ser rápido sin prestarle mucha atención al diseño. El desarrollo de estas aplicaciones oscilaba entre los 2 a 6 meses, ya que se consideraba que si un proyecto duraba más tiempo sería un producto obsoleto al finalizar el proceso. El desarrollo accidental de software, también tenía varios inconvenientes: • La poca integración del software con las demás aplicaciones • Fragmentación de datos y redundancia múltiple, ya que el tener los datos sincronizados era un reto permanente, esto debido a la poca si no nula integración del software. • El software final requería mantenimiento constante, ya que las aplicaciones tenían datos redundantes, y diferentes modelos de datos. En conclusión este tipo de desarrollo termina siendo largo y costoso debido a la cantidad de correcciones y mantenimiento general que deben ser realizadas después de implantar el software. 1.2.EXTREME PROJECTS “Las organizaciones hoy en día, suelen tener problemas con los proyectos de alta velocidad y rápido cambio, que son comunes de e-business y e-commerce”8. Estos proyectos son desarrollados como proyectos comunes de software, por lo cual terminan siendo difíciles, problemáticos y comúnmente fallidos, ya que su entorno cambia constantemente, y su margen de error debe ser mínimo. Algunos de este tipo de proyectos se conocen como “Extreme Projects”, y difieren mucho de los proyectos comunes de software en que requieren menos velocidad y menos cambio. 7 HIGHSMITH, James. Agile Software Development: The People Factor. En Institute of Electrical and Electronics Engineers (IEEE) magazine, Noviembre de 2001. 8 James Highsmith Adaptive Software Development, 2000 Capitulo 1 15 “Para desarrollar esta clase de proyectos se requiere mas que una nueva herramienta o técnica, una nueva manera de pensar a la hora de desarrollar software”9. 1.3.DESARROLLO ÁGIL En el desarrollo de software es importante saber enfrentarse a problemas comunes, por ejemplo el cambio en los requerimientos, lo cual es una situación muy normal, debido a la competencia y los cambios que se viven en las organizaciones día a día. También el cambio de ámbito de las aplicaciones y la introducción de nuevas tecnologías, hacen que el desarrollo de software sea una tarea compleja; estas situaciones son totalmente ajenas al equipo de trabajo y usualmente ocurren a lo largo del ciclo de vida del proyecto, generando de este modo que el costo del proyecto cambie. Lo que el desarrollo ágil de software busca, es mejorar el manejo de los cambios inevitables, reduciendo costos que nacen a través del proyecto, ya que facilitar el cambio es más efectivo que tratar de prevenirlo.10 “El desarrollo ágil de software se enfoca más en los individuos y sus respectivas interacciones, que en los procesos y herramientas. Así como es más importante el trabajo de software que las documentaciones, y se preocupa por la colaboración con el cliente que en el contrato de negociación”.11 Es por eso, que la mayor prioridad del desarrollo ágil de software es la satisfacción del cliente, pero para llegar a ese punto es necesaria la colaboración, ya sea de patrocinadores, clientes, usuarios y por supuesto los desarrolladores. El desarrollo ágil de software se ha vuelto más popular en los últimos años, por lo que diversos métodos de desarrollo ágil han sido implementados, con el ánimo de poder entregar al usuario un software mucho más rápido. Los métodos de desarrollo ágil de software son basados en satisfacer al máximo al cliente, adaptarse al cambio fácilmente, hacer entregables frecuentemente y que exista una estrecha colaboración hacia el equipo de trabajo, por parte del personal del negocio. En comparación con los procesos de software tradicionales, los métodos de desarrollo ágil de software son orientados mucho más al código y a las entregas, por lo que la documentación no es el centro del proceso de desarrollo, donde al usuario le importa más la entrega realizada después de cada ciclo del desarrollo que el propio documento. 12 Los métodos de desarrollo ágil de software se preocupan más por la adaptabilidad que por la predicción, por lo que fueron desarrollados para adaptase y prosperar rápidamente a los cambios frecuentes. 9 HIGHSMITH, James. Agile Software Development: The Business of Innovation. En Institute of Electrical and Electronics Engineers (IEEE) magazine, Septiembre de 2001. 10 HIGHSMITH, James. Agile Software Development: The Business of Innovation. En Institute of Electrical and Electronics Engineers (IEEE) magazine, Septiembre de 2001. 11 HIGHSMITH, James. Requirements Engineering and Agile Software development. 2001. 12 HIGHSMITH, James. Requirements Engineering and Agile Software development. 2001. 16 Entre los métodos más comunes de desarrollo de Software están XP (Extreme Programming), Modelamiento Ágil (AM), Scrum, metodologías Cristal, FDD (Feature Driven Development), DSMD (Dynamic Systems Development Methods) y en la que se enfoca este trabajo DAS (Adaptive Software Development).13 A continuación se hará una breve reseña de las más importantes metodologías de desarrollo ágil de software 1.3.1. Extreme Programming (XP) Esta basado en simplicidad, retroalimentación y comunicación, donde los ciclos recomendados o iteraciones deben ser de 2 a 6 semanas, esto con el fin de producir entregas rápidas y una retroalimentación más continua, inventando soluciones simples, para que los cambios sean menores y corregirlos tome menos tiempo. Desarrollado para sistemas en constante cambio y basado en desarrollo en parejas. 1.3.2. Modelamiento ágil (AM) Da a los desarrolladores una base de cómo construir modelos, que resuelven problemas de diseño, para no construirlos nuevamente. No es un proceso de desarrollo completo, únicamente para el diseño. 1.3.3. Scrum Es un método para la gestión del proceso de desarrollo del sistema, aplicando ideas de flexibilidad, adaptabilidad y productividad para aplicaciones de proceso industrial. Scrum se basa en dar a conocer como un equipo de trabajo debe trabajar unido para producir una excelente calidad de trabajo en un ambiente en constante cambio. 1.3.4. Metodologías Cristal Son una familia de diferentes metodologías, las cuales pueden ser escogidas, dependiendo del tipo de proyecto, dentro de los tipos se encuentran Clear, Yellow, Orange, Red, Magenta, Blue, Violet. Entre más oscuro el color, más personas deben estar involucradas en el desarrollo, debido a la complejidad. 1.3.5. Feature Driven Development Method (FDD) Es una metodología que provee un marco de trabajo adecuado para el desarrollo de aplicaciones rápidas. Existen dos pasos en esta metodología, el primero es el estudio de factibilidad y el segundo es el estudio del negocio. A su vez la parte de pruebas, es integrada a la parte de desarrollo, es decir se van haciendo pruebas a medida que avanza el desarrollo. 13 HIGHSMITH, James. Agile Software Development: The Business of Innovation. En Institute of Electrical and Electronics Engineers (IEEE) magazine. 2001. 17 1.4.ADAPTIVE SOFTWARE DEVELOPMENT (DAS) Provee un marco de trabajo para sistemas de desarrollo iterativos largos y complejos. Se basa en un desarrollo iterativo e incremental con constantes entregas de prototipos. Debido a que los sistemas tienen múltiples cambios, DAS se basa en métodos tolerantes al cambio, donde los primeros ciclos deben ser cortos, y asegurarse de que el cliente esté totalmente envuelto en el proyecto y que el proyecto a su vez sea viable. Cada ciclo finaliza con las revisiones pertinentes por parte de el/los cliente/s y estas reuniones son documentadas para dejar por escrito los cambios y correcciones. 14 Las principales características del ciclo de vida adaptable son las siguientes • Enfocado a una Misión • Basado en Componentes • Iterativo • Tiempos de entregas • Mitigación de Riesgos • Tolerancia a cambios La cultura de optimización, cree en el rigor de los procesos, pero la era del Internet ha alterado estos fundamentos, ya que estas aplicaciones trabajadas vía Web son comúnmente impredecibles, porque tienen variables que están cambiando constantemente, como por ejemplo los requerimientos, los productos, la tecnología, etc. Es ahí donde el desarrollo adaptable de software entiende que para tener éxito en este tipo de aplicaciones, se debe aprender que el desarrollo de software no es un procedimiento mecánico sino uno orgánico, no lineal y no determinístico. Por lo que cada proyecto tiene un contexto y forma de resolución diferente. 14 HIGHSMITH, James. Requirements Engineering and Agile Software development. 2001. 18 1.4.1. Ciclo de vida del Desarrollo Adaptable de Software Ilustración 1. Ciclo de Vida del Desarrollo Adaptable El ciclo de vida Especular-Colaborar-Aprender, es un ciclo orientado al cambio, ya que esta dedicado al continuo aprendizaje, y a una alta colaboración entre los desarrolladores y sus clientes. A diferencia de la mayoría de metodologías de desarrollo de software las cuales utilizan un ciclo de vida estático: Planear-Diseñar-Construir, DAS ofrece un ciclo de vida iterativo no lineal, donde cada ciclo puede iterar y ser modificado al tiempo que otro lo hace. El desarrollo adaptable de software utiliza un ciclo de desarrollo dinámico e iterativo conocido como Especular-Colaborar-Aprender, este ciclo esta dedicado a un constante aprendizaje y a una intensa colaboración entre desarrolladores y clientes, esto debido al constante cambio en el ambiente de los negocios. • Especulación: Ofrece más espacio para explorar, para darse cuenta que no todo es seguro, permitiendo desviarse del plan sin ningún temor. Muchas veces desviarse del plan original puede considerarse un error, mas que una oportunidad de aprendizaje, es ahí donde la especulación incita a explorar y a experimentar. Si se admite que no se conoce todo, se está más dispuesto a aprender. • Colaboración: Las aplicaciones complejas requieren, la recolección y el análisis de un gran volumen de información, lo cual no puede ser controlado por una sola persona. A su vez aplicaciones con ambientes cambiantes como las de e-commerce producen un gran flujo de datos, los cuales no pueden ser manejados por una persona, o un grupo pequeño, ya que estos no pueden saberlo todo. • Aprendizaje: Se debe evaluar el conocimiento constantemente, realizando retroalimentaciones y reuniones de grupo, al final de cada ciclo iterativo, en lugar 19 de al final del proyecto, ya que esto ayuda a soportar y solucionar de una mejor manera el constante cambio que puede tener el proyecto, su adaptación. 1.5.FRAMEWORK Para aquella persona que está familiarizada con el desarrollo orientado a objetos (objectoriented development), estará a su vez familiarizado con el desarrollo de un Framework, ya que éste se basa en el diseño orientado a objetos, y a su vez es muy importante la entrega de componentes y la entrega limitada de documentación hecha anteriormente. Tal vez esto último suene conocido, ya que se basa en aspectos donde el Desarrollo Adaptable de Software también lo hace. Craig Larman define un Framework como “un conjunto extensible de objetos para funciones relacionadas”, como ejemplo podemos ver Frameworks de interfaz grafica de usuario, como AWT y SWING de Java15. Por otro lado se puede ver la definición de James Carey y Brent Carlson donde afirman que un Framework es una serie de componentes trabajando de forma unida, que direccionan el número de problemas en uno o más dominios16. Un Framework proporciona muchas clases e interfaces para las funciones principales que manejan los datos, interfaces, persistencia, etc. Gracias a esto los desarrolladores pueden crear subclases o redefinir ciertos métodos, dependiendo de las necesidades de su aplicación. Además pueden conectar diversos comportamientos de respuesta a los eventos en las clases de los elementos predefinidos. En general un Framework se caracteriza por: 17 • Ser un conjunto cohesivo de clases e interfaces que colaboran para proporcionar los servicios de la parte central e invariable de un sistema lógico. • Contiene clases concretas y abstractas que definen, las interfaces a las que deben ajustarse, interacciones de objetos en las que participar, y otras variantes. • Normalmente requiere que el usuario del Framework, defina subclases que extiendan o implementen las clases del Framework, con el fin de adaptar y extender los servicios de este. • Tener clases abstractas que podrían contener tanto métodos abstractos como concretos. • Confía en el Principio Hollywood, “No nos llame, nosotros le llamaremos”. Esto significa que las clases definidas por el usuario recibirán mensajes desde las clases predefinidas del Framework. 15 Larman, Craig. Applying UML and patterns: An introduction to object-oriented analysis and design. 1998. Carey, James and Carlson, Brent. Framework Process Patterns. 2002 17 Carey, James and Carlson, Brent. Framework Process Patterns. 2002 16 20 • Ofrecer un alto grado de reutilización. • Hay que tener en cuenta que un Framework no es una clase librería, ya que un Framework no provee clases y funciones al punto de ser únicas, sino que provee la reutilización al siguiente nivel de clases y funciones. Esto sin dejar atrás que un Framework puede ser construido mediante el uso de una librería. • El desarrollo de un Framework no es solo un grupo de patrones, sino que a su vez es la combinación de diseños e implementaciones, enfocados a encontrar una serie de necesidades en general y una construcción acorde a las necesidades de las cuales se pueda extender y personalizar para que se ajuste a las necesidades anteriormente descritas. • Existen 6 disciplinas las cuales se debe tener en cuenta para un desarrollo de un Framework de forma adecuada, como lo son la comunicación, consistencia, iteración, incompletitud, flexibilidad y desconfianza. o Comunicación: Debido a que la información debe ser comunicada a tiempo y de una manera precisa o Consistencia: Las cosas iguales deben ser hechas de igual manera. o Iteración: Debido a que debe estar en constante refinamiento. o Incompletitud: Esto con el fin de que los usuarios tengan la habilidad de completarlo para sus necesidades particulares. o Flexibilidad: Se debe determinar hasta donde debe llegar el grado de extensión del Framework, con el fin de que el usuario pueda implementar ciertas cosas a su gusto. o Desconfianza: Las cosas que son obvias, a su vez pueden generar problemas sino se tiene cuidado. Con el fin de desarrollar un Framework de buena calidad se deben o pueden utilizar distintos patrones de software, que permitan realizar un buen diseño e implementación de éste, esto depende en general de los siguientes factores: • Correspondencia: Se debe establecer alguna correspondencia (mapping), entre una clase y su almacenamiento persistente, y entre los atributos de los objetos y los campos en un registro. • Identidad de Objeto: Existe un único identificador de registros y objetos, con el fin de asegurar que no haya duplicados. • Conversor de base de datos: Un Mapper encargado de la materialización y desmaterialización de la base de datos. • Materialización y Desmaterialización: Transformar una representación de datos no orientada a objetos de un almacenamiento persistente a objetos y viceversa. • Caché: Los servicios persistentes almacenan en un caché los objetos materializados por razones de rendimiento. • Estado de Transacción de Objeto: Es útil conocer el estado de los objetos en función de sus relaciones con la transacción actual. 21 • Operaciones de transacción: Commit y Rollback. • Materialización Perezosa: No todos los objetos se materializan de una vez, solo lo hacen por demanda. A partir de estos factores, se seleccionan los patrones de software a utilizar en la construcción del Framework. 1.5.1. Patrones utilizados en el desarrollo de un Framework según Craig Larman18 Representación de Objetos como tablas: Este patrón propone la definición de una tabla en una base de datos relacional por cada clase de objeto persistente. Los atributos de los objetos que contienen tipos de datos primitivos, se corresponden con las columnas. Por lo que si un objeto tiene atributos de tipos de datos primitivos la correspondencia es directa. Identificador de objetos: Es muy conveniente contar con una forma de relacionar los objetos y los registros y asegurar que la materialización no proporciona objetos duplicados. Este patrón propone asignar a cada objeto y registró un identificador único (Object ID). Este identificador usualmente es un valor alfanumérico. En el campo de los objetos, un OID se representa mediante una interfaz o clase OID, que encapsula su valor real y su representación, en el caso de las bases de datos comúnmente se almacena como un carácter de longitud fija. Cada tabla tendrá un OID como llave primaria y cada objeto tendrá un OID asociado, con esto cada objeto se corresponde de manera 1 a 1 con un registro de una tabla. Un OID también proporciona un tipo de llave consistente para utilizarla en la interfaz con el servicio de persistencia. Fachada: La fachada se encarga de proporcionar una interfaz uniforme a un subsistema. Método Plantilla: Este patrón es un parte esencial en el diseño del Framework, la idea es crear un método en una superclase que defina el esqueleto de un algoritmo, con sus partes variables e invariables. El método plantilla invoca otros métodos, algunos de estos pueden ser redefinidos en una subclase, de esta manera se puede añadir un comportamiento propio y único a los puntos de variabilidad, dependiendo de las necesidades del usuario. Estado: Para este patrón debemos asumir que los objetos persistentes pueden, insertarse, eliminarse o modificarse. Pero operar sobre un objeto persistente no provoca una actualización inmediata de la base de datos. 18 Larman, Craig. Applying UML and patterns: An introduction to object-oriented analysis and design. 1998 22 Por esto el patrón crea clases de estado para cada estado, que implementa una interfaz común, ya que el comportamiento de un objeto depende de su estado y sus métodos contienen la lógica de casos que reflejan las acciones dependientes del estado. Command: Una transacción es un conjunto de tareas las cuales deben completarse todas con éxito o no se debe completar ninguna (atomicidad). En cuanto a los servicios de persistencia, las tareas de una transacción (insertar, eliminar, actualizar) podrían ser varias, por ejemplo 2 insertar y 1 actualizar. Para esto se define una clase por cada tarea que implemente una interfaz común, así las acciones se convierten en objetos y de esta forma se pueden ordenar. Cada tarea o acción de la transacción se representa mediante un objeto que posee un método polimórfico “ejecutar”, este nos proporciona flexibilidad ya que la respuesta es tratada como un objeto en si.19 1.5.2. Patrones utilizados en el proceso de desarrollo de un Framework según Brent Carlson y James Carey20 Los patrones que se mencionan a continuación son patrones que tienen que ver con el todo el proceso de desarrollo del Framework, su arquitectura y ciertos aspectos a considerar en la ejecución del proceso de desarrollo. Seguir un proceso de desarrollo metódico: Para el desarrollo de un Framework es necesario seguir con un proceso metódico, este podrá ser cualquiera que sea acorde a lo que se quiere, ya que el proceso escogido le permitirá crear los artefactos de las necesidades del usuario del Framework de forma consistente. Conectar Dominio y técnicos expertos: Debido a que el software se mueve en dirección al reino de la aplicación del negocio y las tecnologías permanecen en constante avance, es muy difícil tener una persona en algún momento determinado que posea el dominio y la experiencia técnica necesarias, a su vez es necesario que se incremente la conexión entre expertos, ya que esto mejorará el software que se produce. Este patrón se conoce también como “Preguntas Inocentes”. Dividir y Conquistar: Este es una frase conocida, la cual significa que los problemas grandes deben ser divididos para convertirlos en pequeños problemas para facilitar su solución. El Framework deberá ser dividido en partes que sean más fáciles de desarrollar y llevar a cabo. La consistencia es el Rey: 19 20 Larman, Craig. Applying UML and patterns: an introduction to object-oriented analysis and design. 1998 Carey, James and Carlson, Brent. Framework Process Patterns. 2002 23 Este patrón conocido también como “Mantener la consistencia a través del Framework”, lo que quiere es mostrar que una de las mejores cosas que se puede hacer es mejorar el entendimiento y la utilidad del Framework a construir, haciéndolo más consistente. Tres iteraciones para validar: Como cualquier desarrollo de software orientado a objetos, la iteración es un aspecto muy importante en el desarrollo de un Framework. Estas iteraciones permitirán un refinamiento del Framework, y según los autores el número de iteraciones es importante definirlo, pero 3 iteraciones es la clave según autores21. Exponerlo todo: Conocido también como “El cliente del Framework es su compañero”, ya que el usuario es parte del equipo de desarrollo del Framework, por lo que el Framework deberá ser compartido y explicado al usuario. Una de las principales tareas del desarrollo de un Framework, y se podría decir que es la más importante, es la definición de requerimientos, ya que identificarlos y capturarlos es la clave para la construcción exitosa del Framework. Un buen levantamiento de requerimientos ayuda a asegurarse de que el Framework esta bien enfocado. Según Carey y Carlson de esta tarea depende todo de ahí en adelante, si se construye una buena base, el éxito será más fácil de alcanzar.22 Existen ciertos patrones para la recolección de requerimientos.23 Identificar la personalización: Para encontrar puntos potenciales que se han perdido o no se han detectado, se puede escuchar al experto del dominio en sus discusiones y argumentos, de allí se pueden recaudar ideas interesantes. Cuando algo es realmente extremo: Saber identificar cuando un requerimiento es extremo e innecesariamente aumenta la complejidad del Framework. Por lo que se debe tener en cuenta cuando refinar, explorar y evaluar un requerimiento para que sea manejable. Implementación haciéndose pasar por requerimientos: Debe tenerse en cuenta en la evaluación de requerimientos, que esos requerimientos no estén únicamente describiendo una implementación en disfraz, sino que hay que tomarse el tiempo para explorar los objetivos que están detrás de los requerimientos ya declarados. Como segundo ciclo se puede ver el ciclo del Análisis, que según los autores Carey y Carlson antes mencionados24, si la fase anterior eran los requerimientos, y estos son la 21 Carey, James and Carlson, Brent. Framework Process Patterns. 2002 Carey, James and Carlson, Brent. Framework Process Patterns. 2002 23 Carey, James and Carlson, Brent. Framework Process Patterns. 2002 22 24 materia prima, el análisis es el que comienza con su proceso de refinamiento. Si el análisis es bueno, debe identificar entidades y definir responsabilidades. Existen ciertos patrones que sirven para asistir en la fase del análisis. Descomponiendo el problema: Conocido también como “Comerse el elefante (un mordisco a la vez)”, lo que trata de mostrar es que cuando se esta analizando el dominio del problema del Framework, se debe buscar oportunidades de separar aspectos grandes en componentes que tienen un mínimo de interacción con otros componentes y las clases de análisis con una alta afinidad con otras clases deberán ser agrupadas entre sí para facilidad en el manejo de dependencias. Algo es mejor que nada: Conocido también como “Documentar lo que conoces cuando lo conoces”. Este patrón es básico, ya que lo que indica es que a medida que se va adelantando, se debe documentar, claro que esta documentación deberá ser sencilla e informal, ya que no se pretende tardar mucho tiempo documentando. A su vez cuando se piense en algo que necesite hacerse, deberá escribirse con el fin de que esto no que de en el aire y se olvide. Comunicación entre dominio y equipo: Debe haber una excelente comunicación y profunda información entre los desarrolladores y las funciones del dominio para las cuales ellos tienen la responsabilidad. A su vez si existe un error debido a la constante comunicación que debe haber, la corrección de este se hará de forma temprana y su costo será mucho menor. El tercer ciclo llamado el Diseño se encarga de convertir o transformar la información que provee el análisis y los requerimientos en verdaderos anteproyectos (blueprints). Es aquí donde los métodos, las clases y las relaciones son definidos y trabajan juntas para completar el comportamiento descrito en los casos de uso. Existen patrones que sirven para asistir en la fase del Diseño. Conocer cuando un Framework no debería hacer algo: Este patrón es usado, para ayudar en la implementación de lo funcional, que pueda quedar algo a la imaginación del usuario, ya que en ciertos casos deberá dejarse abierto para que el comportamiento del Framework no sea tan estricto, y el usuario pueda personalizarlo. Desarrollar y aplicar patrones: Los patrones son la clave del desarrollo exitoso de un Framework. Ellos llevan a la consistencia, crear un nivel alto de lenguaje y a aumentar la velocidad de desarrollo. Los Frameworks no están exentos de prácticas buenas o malas de ser orientados a objetos: 24 Carey, James and Carlson, Brent. Framework Process Patterns. 2002 25 Se debe tener en cuenta que el desarrollo de Frameworks debe ser orientado a objetos, por lo que las malas prácticas en proyectos orientados a objetos no deberán ser usadas para el desarrollo de un Framework. 1.6. E-COMMERCE La introducción del comercio electrónico en los países en desarrollo, ha provocado cambios dramáticos en la forma en que se desarrollan los negocios, incluso en aquellas que parecían perpetuarse. Nuestro país no es un caso aislado a los demás. Uno de los objetivos primarios del comercio electrónico es la contribución al aumento de la capacidad competitiva en el mercado, mediante el fortalecimiento del mercado, de los clientes del negocio, también tiene como objetivo en muchos de los casos, ampliar el mercado del negocio a un nivel interregional e internacional si es posible. Para ello el comercio electrónico tendrá implicaciones que afecten a otros (empresas, proveedores, clientes). Así que ante este nuevo entorno, las empresas buscarán calidad y menor precio, y si en su actual red comercial de distribución no satisfacen estos factores, debe pensarse en el rediseño de la misma o en prescindir de ella. Este tipo de cambios dramáticos no ha sido únicamente característico de esta era digital, también ha sucedido en otras etapas del desarrollo tecnológico de la comunicación. Una nueva tecnología siempre cambia la manera de actuar de las sociedades. El trabajo cotidiano, la educación, la política, el comercio, y en general la forma de desenvolvimiento de las organizaciones se transforma con la introducción de una tecnología. De acuerdo a Neil Postman25, Internet podría definirse como una tecnología similar a la televisión o a la radio, considerando su formidable capacidad para introducir e imponer profundos cambios culturales, los cuales repercuten en distintas dimensiones de las organizaciones sociales. Según la Organización Mundial de Comercio, las tecnologías de Internet ofrecen a los países en desarrollo grandes oportunidades para obtener información que antes era inaccesible para ellos. La transferencia de conocimientos resultante puede estimular el crecimiento de esos países y contribuir a su integración en los mercados mundiales. El crecimiento de Internet y el comercio electrónico ha sido, cuando menos, meteórico, y este ritmo vertiginoso no parece decaer. Nuevos elementos y estimaciones en los medios de información y otras publicaciones, sobre todo en los tres últimos años, explican las razones de ese auge. Como observación de carácter general, las múltiples previsiones que se han hecho de ese fenómeno en crecimiento se han puesto una y otra vez en tela de juicio, en respuesta a una tendencia (que ahora está desapareciendo) a subestimar la expansión de ese fenómeno. Los avances tecnológicos de la computación y las comunicaciones por Internet han ido evolucionando las actividades de las personas, así como la forma de hacer negocios. Internet se ha consolidado como la plataforma ideal para el desarrollo de pequeñas y grandes empresas, al permitir la globalización de productos y servicios. El comercio 25 CHERNIAK, 1998 26 también se ha visto beneficiado con estos avances, con el llamado e-commerce o comercio electrónico. El e-commerce (Comercio Electrónico) es la compra y venta de bienes y servicios través de Internet. Podríamos decir que el e-commerce está estructurado por "Tiendas virtuales" en sitios Web que ofrecen catálogos en línea. Incluso se han creado "Centros comerciales virtuales" con gran cantidad de tiendas con todo tipo de accesorios para la venta. Esta forma de comercio electrónico ha consolidado a grandes empresas que ya figuran en la bolsa de valores y son de los portales de Internet más visitados. Cuando se habla de transacciones comerciales se distinguen claramente los distintos roles de una transacción. Los compradores que desean cierto bien o servicio, por otra parte los vendedores, que son aquellos interesados en ofrecer sus productos, el mercado o lugar físico donde se realiza la transacción, el dinero o medio de pago y por último el producto o servicio a comercializar. En el e-commerce también se pueden distinguir ciertos actores o elementos además de los anteriores: • Un producto o servicio, el que puede ser virtual o real • El lugar físico es ahora reemplazado por un sitio Web abierto las 24Hs. • Compradores que son los navegantes de la tienda virtual • Vendedores que operan a través de la tienda virtual • Una cuenta comercial con un Banco para hacer efectivas las transacciones por lo general a través de la validación de tarjetas de crédito • Un sistema de distribución de los productos • Un sistema de atención al cliente, vía mail, Internet, Chat, etc. 27 2. DESCRIPCION DEL PROYECTO A continuación veremos una breve descripción general del proyecto con el fin de ubicarnos, y poder hacer un mejor seguimiento de las partes que lo componen. El proyecto de investigación se dividirá en 3 etapas: • Investigación Desarrollo Adaptable de Software y desarrollo de Framework • Desarrollo de Framework utilizando DAS • Desarrollo de Aplicación Venta DVD utilizando el Framework y DAS La primera etapa de la investigación comenzó después de entregada la propuesta y se continuó a medida que el proyecto avanzaba, ya que la información relacionada con estos temas es muy nueva y surgía constantemente. La segunda etapa consistió en la construcción de un Framework para el desarrollo de aplicaciones e-commerce, para la venta o alquiler de bienes materiales, a consumidores individuales. La tercera etapa consiste en el desarrollo e implantación de una aplicación específica de e-commerce, utilizando el Framework elaborado en la etapa anterior. Esta aplicación estará orientada a la venta y alquiler de DVDs, todo esto se hará basado en la metodología Desarrollo Adaptable de Software. De acuerdo a los resultados obtenidos en cuanto a tiempo de desarrollo, calidad del software, dificultades, ventajas y desventajas del DAS para este tipo de aplicaciones, se podrá obtener una aplicación tangible de ecommerce la cual podrá ser utilizada en el mercado colombiano, incluyendo el desarrollo del Framework el cual podrá ser usado para el desarrollo de otro tipo de aplicaciones ecommerce diferente a la desarrollada por nosotros. Para la construcción del Framework, nos basaremos en la metodología del desarrollo adaptable de software. La implementación del mismo tendrá 3 etapas generales, la especulación en la cual se realiza el análisis y el diseño, la colaboración la cual cubre el desarrollo componentes (diseño del Framework, y la instanciación del mismo), y por último el aprendizaje el cual se refiere al control de calidad y la entrega final del Framework. Estas 3 actividades se llevaron a cabo de manera iterativa, pero no necesariamente lineal, se realizaron 6 ciclos (el número de ciclos es el aconsejado por James Highsmith en su libro “Adaptive Software Development” de acuerdo a la duración del proyecto), hasta obtener el producto final acorde a los requerimientos establecidos. 28 3. DESARROLLO ADAPTABLE DE SOFTWARE Se investigaron las empresas de desarrollo de software colombianas, con el fin de conocer si alguna trabajaba o había trabajado con el desarrollo adaptable de software en alguno de sus procesos de desarrollo, para esto se seleccionaron 8 empresas al azar estas empresas se nombran a continuación • Incubeit En esta compañía se utiliza una metodología de cascada, no se utiliza ni se conoce nada sobre DAS • Asesoftware Se utiliza la metodología RUP, no se utiliza ni se conoce nada sobre DAS • Bisa Corporation Se utiliza UML, bajo un estándar propio de la compañía, no se utiliza ni se conoce nada sobre DAS • DataSixx Se utiliza una metodología propia basada en SAP Blueprint no se utiliza ni se conoce nada sobre DAS • Heinsohn Se utiliza UML, bajo un estándar propio de la compañía, no se utiliza ni se conoce nada sobre DAS • EDS Se utiliza RUP y se están realizando investigaciones para la utilización de XP (Programación extrema), no se utiliza DAS • CSI- Complex Systems Inc. Se utiliza una metodología propia de la compañía, no se utiliza ni se conoce nada sobre DAS • Alpha GL Se utiliza UML, bajo un estándar propio, no se utiliza ni se conoce nada sobre DAS • Sybase No se conoce nada sobre DAS, en cuanto a la metodología utilizada la información no fue suministrada 29 • TinySoft No se conoce nada sobre DAS, en cuanto a la metodología utilizada la información no fue suministrada De acuerdo a la información ninguna de las 10 empresas seleccionadas había trabajado ni conocía el desarrollo adaptable de software. En conclusión son muy pocas las empresas las cuales utilizan metodologías de desarrollo ágil de software. A continuación veremos el proceso de desarrollo adaptable de software que se utilizó en la realización del framework. • 1 Ciclo Para el Plan de Ciclos de desarrollo adaptable se realizaron 7 iteraciones en total. o Primera iteración 15/08/2004 Corresponde a la especulación, se definieron el número de ciclos que se realizarían y sus correspondientes actividades, esta información era tentativa, ya que se tenía muy poco conocimiento e información del desarrollo del Framework en general. o Segunda iteración 20/08/2004 A medida que se obtuvo más información acerca del desarrollo del Framework, Se replantearon los ciclos que debían llevarse acabo, en consecuencia se cambiaron el nombre, actividades y objetivos de los ciclos 2, 3, 4, 5, 6. Al redefinirse los ciclos, las actividades y el cronograma cambiaron acorde al documento Gracias al DAS estos cambios no causaron ningún trauma en el desarrollo del proyecto. o Tercera iteración 21/08/2004 Se encontró un problema en las actividades a realizarse en el ciclo 3, ya que estas no estaban bien definidas. o Cuarta iteración 15/10/2004 Debido a cambios en el análisis y el diseño del Framework, se cambiaron algunos componentes de los ciclos de implementación, se realizó la correspondiente corrección de la lista de actividades y el cronograma. Se redefinió el ciclo 6, igual que sus objetivos y componentes. o Quinta iteración 16/10/2004 Se corrigieron algunas actividades y componentes de los ciclos de análisis, diseño e implementación. o Sexta iteración 18/10/2004 Corrección de algunas de las actividades y componentes de los ciclos de implementación. 30 o Séptima iteración 28/03/2005 De acuerdo a la recomendación del comité de investigación se cambió el término e-business por e-commerce • 2 Ciclo Para el ciclo de Análisis se realizaron 8 iteraciones. o Primera iteración 24/09/2004 Se realizó una primera versión del documento (borrador) propuesto en el 1 ciclo o Segunda iteración 28/09/2004 Se complemento el documento de análisis, se agregaron diagramas de casos de uso y su correspondiente documentación o Tercera iteración 02/10/2004 Se corrigió la documentación de los casos de uso y se cambio el tiempo de respuesta o Cuarta iteración 04/10/2004 Se agregaron comentarios referentes al desarrollo del Framework, se corrigió documentación de los casos de uso o Quinta iteración 10/10/2004 Se agregaron casos de uso, y se realizó una identificación de objetos inicial, con su correspondiente diagrama de dominio o Sexta iteración 11/10/2004 Se corrigieron errores en la documentación o Séptima iteración 30/10/2004 Se corrigieron los requerimientos del sistema de acuerdo a la implementación, además se agregaron casos de uso y su correspondiente documentación o Octava iteración 28/03/2005 De acuerdo a la recomendación del comité de investigación se cambió el término e-business por e-commerce. • 3 Ciclo Para el ciclo de Diseño se realizaron 11 iteraciones. o Primera iteración 26/10/2004 31 Se realizó una primera versión del documento (borrador) propuesto en el 1 ciclo o Segunda iteración 28/10/2004 Se completo la descomposición por entidades o Tercera iteración 31/10/2004 Se agregaron más entidades, y una descripción de componentes J2EE o Cuarta iteración 10/11/2004 Se agrego el modelo de datos y su documentación, se corrigieron algunos errores en la arquitectura o Quinta iteración 11/11/2004 Se corrigió el modelo de datos o Sexta iteración 20/11/2004 Se agregaron componentes J2EE (SessionsEJB y EntitiesEJB) y Patrones de Software a la arquitectura o Séptima iteración 23/11/2004 Se agregó un ejemplo de creación de tablas (script) de acuerdo al modelo de datos, se agregaron diagrama de clases de los componentes J2EE y diagrama de clases o Octava iteración 24/11/2004 Se corrigió el modelo de datos o Novena iteración 26/11/2004 Se cambio el diagrama de arquitectura, y cambio el diagrama de componentes J2EE o Décima iteración 27/11/2004 Se mejoro la descripción de la arquitectura, y algunos diagramas de componentes, se corrigió el modelo de datos o Undécima iteración 28/03/2005 De acuerdo a la recomendación del comité de investigación se cambió el término e-business por e-commerce. • 4 Ciclo Para el ciclo de Implementación I se realizaron 8 iteraciones. o Primera iteración 16/11/2004 Se implementaron las clases correspondientes a la lógica del negocio, la clase ProductoCreator(Factory) y la clase Service Locator 32 o Segunda iteración 18/11/2004 Se corrigieron errores de configuración del Service Locator o Tercera iteración 22/11/2004 Se corrigieron errores de conectividad del Service Locator o Cuarta iteración 26/11/2004 Se implementaron los Session EJB y las bases de datos o Quinta iteración 10/12/2004 Se corrigieron errores en la conectividad de los Session Bean, se modificaron algunas tablas de la base de datos de acuerdo a cambios en el diseño o Sexta iteración 15/12/2004 Se corrigieron problemas en la funcionalidad de los Session Bean o Séptima iteración 20/012005 Se modificaron algunos atributos de las tablas debido a desbordamiento de información o Octava iteración 31/01/2005 Se realizaron ajustes de acuerdo a las pruebas realizadas. • 5 Ciclo Para el ciclo de Implementación II se realizaron 6 iteraciones. o Primera iteración 28/11/2004 Se implementaron las clases DAO, los Entities CMP y la clase Business Delegate o Segunda iteración 3/12/2004 Se corrigieron errores de conectividad y consultas en los DAO o Tercera iteración 10/12/2004 Se corrigieron errores en la transaccionalidad de los CMP o Cuarta iteración 15/12/2004 Se agregaron métodos a la clase Business Delegate o Quinta iteración 07/01/2005 Se integraron todos los componentes del Framework y la lógica del negocio o Sexta iteración 31/01/2005 Se realizaron ajustes de acuerdo a las pruebas realizadas. 33 • 6 Ciclo Para el ciclo de Pruebas se realizaron 5 iteraciones. o Primera iteración 08/01/2005 Se realizó una primera versión del documento (borrador) propuesto en el 1 ciclo o Segunda iteración 22/01/2005 Se realizaron el manual de usuario y el manual de instalación y configuración o Tercera iteración 25/01/2005 Se realizó la guía de extensión del Framework o Cuarta iteración 30/01/2005 Se cambio la estructura de algunas pruebas o Quinta iteración 15/02/2005 Se corrigieron errores en los manuales y la guía del Framework Estas iteraciones fueron realizadas de una manera no lineal y se basaron en el aprendizaje de la iteración previa. Además los ciclos y sus actividades se fueron modificando de acuerdo al avance del proyecto. 34 4. DESARROLLO DEL FRAMEWORK Como se dijo anteriormente la 1 etapa se baso en investigación, ahora describiremos mas detalladamente las siguientes 2 etapas. La segunda etapa de nuestro proyecto como ya se dijo consistió en la construcción de un Framework para el desarrollo de aplicaciones e-commerce, para la venta de bienes materiales, a consumidores individuales. Aplicando la metodología ágil DAS, se definieron el número de ciclos que tendría el desarrollo del Framework. Se realizaron 6 ciclos - el número de ciclos aconsejado por James Highsmith26 - de acuerdo a la duración del proyecto, hasta obtener el producto final acorde a los requerimientos establecidos. 4.1. PLAN DE CICLOS DE DESARROLLO ADAPTABLE Una vez definido el número de ciclos, se realizó el plan de ciclos de desarrollo adaptable (ver Anexo A Plan de Ciclos de Desarrollo Adaptable Framework), aquí se siguieron los siguientes pasos27, se definió una misión ya que el ciclo de vida del desarrollo adaptable, debe estar enfocado en esta, después se definieron los marcos de tiempo de cada ciclo de trabajo lo cual dependió de los componentes que se desarrollarían en cada uno de ellos. Se definió un objetivo para cada uno de los ciclos, y un entregable para cada uno de ellos, de igual manera se definieron las herramientas tecnológicas que se usarían y cada uno de los componentes que se desarrollaría en cada uno de los ciclos, por último se definió una lista de actividades que cubriría todo el proyecto. Para finalizar el documento se definió un cronograma tentativo para cada una de las actividades. Este plan de desarrollo de ciclos fue sometido a varias revisiones, ya que el desarrollo adaptable de software se desarrolla de una forma iterativa, esto nos ayudo a controlar los cambios que fueron surgiendo en el proyecto, en este caso surgieron varios cambios debido al poco conocimiento que se tenia sobre el tema al iniciar el proyecto. El desarrollo adaptable de software permite seleccionar cualquier estándar para el desarrollo de las aplicaciones, ya que se enfoca en la administración de software, y no en una metodología de desarrollo específica. Para la documentación nos basamos en los estándares de la IEEE, y se manejo un control de versiones para cada uno de ellos. Después de definido y aprobado el plan de ciclos de desarrollo adaptable, empezaron los ciclos y las actividades definidas allí. 26 27 James Highsmith, Adaptive Software Development, 2000 James Highsmith, Adaptive Software Development, 2000 35 4.2. ANALISIS Primero se empezó con el ciclo de análisis de la aplicación, este ciclo nos plantea las siguientes actividades: • Definir el dominio del Framework: Esta actividad es muy importante, ya que aquí se definió el alcance a nivel funcional que tendrá nuestro Framework, además este factor es de vital importancia para el éxito del desarrollo ya que es imposible intentar cubrir todos los requerimientos de todas las aplicaciones en todos los dominios28. • Análisis de Requerimientos: Después de observar varias tiendas de comercio electrónico, en Latinoamérica y en el mundo (DeRemate.com, ebay, exitovirtual.com, TowerRecords, Amazon) se sacó una lista preliminar de requerimientos de acuerdo a la funcionalidad y transaccionalidad que manejan en común estas tiendas. Esta lista se fue refinando, a medida que avanzaba el proyecto. Los requerimientos obtenidos fueron los siguientes: o Agregar o eliminar productos del carro de compras o Agregar o modificar productos del sistema o Agregar Tipos de Tarjeta o Consultar detalle orden de compra o Consultar Inventario de productos o Consultar ordenes de compra o Consultar productos o Consultar clientes o Desactivar clientes no deseados o Generar una orden de compra o Modificar el stock de productos del inventario (Agregar o Disminuir) o Modificar información del cliente o Registrar la fecha de backup de la información o Registrar una orden de compra enviada o Registrar usuarios en el sistema o Seleccionar forma de pago o Validación y autenticación de usuarios o Ver los detalles del producto o Manejar Carro de Compras o El tiempo de respuesta deberá ser menor a 7 segundos o El tiempo de disponibilidad de la base de datos deberá ser de un 90% anual. o Deberá soportar hasta 1000 clientes al mismo tiempo. o El sistema deberá ser seguro, confiable y protegido. Después de esto se identificaron los actores del sistema, estos fueron el administrador y el cliente. 28 Carey, James and Carlson, Brent. Framework Process Patterns. 2002 36 • Diagrama de Casos de Uso En este punto se definieron los casos de uso de la aplicación en su primera versión de acuerdo a los requerimientos obtenidos, y se documentaron de acuerdo a la plantilla de Alistair Cockburn.29. Ilustración 2. Diagrama de Casos de Uso del Framework 29 http://alistair.cockburn.us 37 Para una información mas detallada acerca del análisis del Framework (Ver Anexo B Análisis Framework). Con esto se finalizo el segundo ciclo, del desarrollo del Framework, este ciclo fue revisado y corregido a medida que se fueron implementando los otros ciclos. 4.3. DISEÑO El tercer ciclo de la aplicación, se dedicó al diseño de Framework, en esta etapa se definió el modelo de datos que se usaría, la arquitectura del sistema, y los diagramas de clases correspondientes a la aplicación. Las actividades que se llevaron a cabo en este ciclo son las siguientes: • Definición Modelo de Datos: De acuerdo a los requerimientos definidos en el ciclo de análisis se diseño un modelo de datos para la aplicación, en este se especificaron las entidades y sus correspondientes relaciones. El modelo de datos puede verse a continuación. Ilustración 3. Modelo de Datos del Framework 38 • Arquitectura del Framework: Para este desarrollo utilizaremos una arquitectura J2EE, se escogió este tipo debido a que es una de las arquitecturas mas utilizadas para el desarrollo de aplicaciones empresariales de e-commerce. Esta arquitectura nos provee: o Un modelo de desarrollo de aplicaciones basado en componentes o Un modelo de desarrollo de aplicaciones distribuidas basado en múltiple capas y multired. o Esta constituido por un conjunto de tecnologías estándar, Servlets, EJB, JSP etc. De acuerdo con esto tendríamos la siguiente arquitectura (Ilustración 4): Ilustración 4. Diagrama de Arquitectura del Framework En este diagrama tenemos que nuestro cliente accedería al sistema por medio de el Business Delegate para obtener la lógica del negocio del sistema, esto puede ser mediante interfaces graficas, JSP dependiendo de las necesidades del cliente, es decir nos da acceso a los servicios del negocio, este a su vez hace una petición al ServiceLocator el cual es el encargado de ubicar los servicios, este realiza la conexión con la tienda (SessionEJB), Tienda es de tipo Stateless y Carro de compras StateFul, debido a que necesitamos que este guarde su estado dependiendo de la sesión (cliente), es decir necesitamos que los productos que 39 estén en el carro de algún cliente se mantengan si se presenta algún problema en la sesión (error de conexión), estos productos se eliminarán una vez el cliente haya terminado su sesión. A su vez el Session Tienda se comunica con un Session Cliente y un Session administrador dependiendo la clase de usuario, estos dos Session a su vez se comunican y administran los Entities Cliente, Administrador, Tarjeta, Orden de compra y ProductoFisico, encargados de la comunicación con la Base de Datos. El producto depende del tipo de producto que se quiera vender, es decir es configurable según las necesidades del cliente. Además dependiendo del servicio que se necesite la tienda puede acceder a la base de datos mediante un DAO, el cual es el encargado de realizar consultas, y/o peticiones (Querys) que no pueden hacer los EntitiesEJB. En el caso del Framework este producto es configurable, además que no tiene que ser solo uno pueden ser varios, por lo cual el usuario debe implementar tantos BMP EntitiesEJB como productos desee vender en su tienda, todo esto depende de las necesidades del usuario. De la misma forma la Base de datos que se vaya usar también es configurable por parte del cliente según el motor de Base de Datos que se vaya a utilizar, como Oracle, SQL Server, Point Base etc. También es necesario que al utilizar el Framework se defina y utilice un Servidor de Aplicaciones (Application Server) acorde a las necesidades del usuario, tales como JBoss, Sun One Application Server, Websphere etc. En cada uno de estos debe configurarse una fuente de datos (DataSource), un correspondiente Pool de conexiones (Connection Pool) y un administrador de persistencia (Persistence Manager), con el fin de que la aplicación pueda acceder a la Base de Datos. Además de esto el servidor de aplicaciones esta encargado de realizar el Despliegue (‘deploy’) de la aplicación. El Framework cuenta con una clase, NombreReferencia, la cual nos permite configurar los JNDI Names, de la aplicación. • Patrones: Con el fin de fortalecer el diseño y la implementación de la aplicación, se seleccionó una serie de patrones acorde al desarrollo del Framework. Dentro de estos patrones se encuentran: o Business Delegate Para la aplicación se utilizó una clase Business Delegate30 la cual es la encargada de proporcionar el acceso a la lógica del negocio, esta a su vez es la encargada de comunicarse con el Session tienda. El cliente utiliza a esta clase para acceder a todos los métodos de la lógica del negocio. 30 Patrón de Diseño de Software, Larman, Craig. Applying UML and patterns: An introduction to objectoriented analysis and design. 1998. 40 o Service Locator Es el encargado de realizar las conexiones entre los Beans, la base de datos, Data Source, y demás componentes que requieran un servicio. o Data Access Object (DAO) Estas son varias clases ya que se implementa de acuerdo a las tablas a las cuales se va a acceder. Son los encargados de realizar las consultas y Querys, las cuales no puedan ser manejadas por los Entity Beans. o Factory (ProductoCreator) Esta clase permite crear varias clases de productos específicos a través de la herencia de la clase producto. Para este, las clases de productos específicos que se vayan a crear deben extender de la clase producto, la cual maneja unos atributos y métodos generales de los productos. • Módulos: El sistema se dividió en 4 módulos de acuerdo a su funcionalidad, la interfaz cliente, la interfaz administrador, la tienda, y el carro de compras, correspondientes a ClienteMgr Bean, AdministradorMgr Bean, TiendaMgr Bean y KartMgr Bean respectivamente. • Diagrama de Clases: Para el diseño de las clases se siguió la metodología propuesta por Bernd Bruegge en su libro Ingeniería de Software Orientada a Objetos31, la cual nos dice que deben definirse unas entidades correspondientes a la aplicación y de acuerdo a las entidades definidas, se construyó un diagrama de clase que podemos ver en el disco anexo en la carpeta de gráficos. Para una explicación mas detallada del ciclo de diseño (Ver Anexo C Diseño Framework). 4.4. IMPLEMENTACION I El cuarto ciclo de la aplicación se dedicó a la implementación de la arquitectura y las clases definidas en la fase de diseño. Como primera actividad se definió la implementación de las clases, correspondientes a las entidades de la aplicación, a continuación se definen las clases y los métodos que se implementaron. 31 BRUEGGE Bernd y DUTOIT Allen, Ingeniería de Software Orientada a Objetos, Capitulo 6. 41 Ilustración 5. Clases Producto, BackupAdmin, Cliente y Administrador. Estas clases se implementaron de acuerdo a los objetos identificados en el análisis y el diseño, están la clase producto la cual es la encargada de manejar la información referente a los productos a vender en la tienda, la clase cliente y administrador manejan la respectiva clase de usuario, y el BackupAdmin, en la cual se guardan los registros de la realización de Backup del sistema. 42 Ilustración 6. Clases TipoTarjeta, OrdenCompra, Tarjeta Credito y Producto Fisisco Se implementaron de igual forma la clase tipo tarjeta la cual nos indica el tipo de las tarjetas (visa, diners, american, etc.), la clase orden de compra para el manejo de estas, y la clase producto físico la cual hace referencia al producto físico en sí (inventario). Después de las clases se implementaron, el patrón Factory y el Service Locator 43 Ilustración 7. Clases Service Locator y Factory El patrón Factory nos permite manejar la creación de productos, cuando se quiera agregar un producto esta clase debe modificarse. El Service Locator es una clase la cual solo puede instanciarse una vez (patrón Singleton), la cual esta encargada de localizar los servicios y componentes de la aplicación (“lookup”) Seguimos con la implementación de los Session Beans, Un Session EJB permite realizar cierta lógica solicitada por un cliente ya sea un JSP|Servlet, Applet e inclusive otro EJB. Existen dos tipos de Session EJB's: • Stateless (Session) EJB's Este tipo de EJB como su nombre lo indica no mantiene estado ("Stateless") en el "EJB Container", estos EJB's son utilizados para realizar tareas rutinarias que no requieren identificar o rastrear al cliente, algunos EJB's de este tipo son: operaciones matemáticas complejas, búsquedas generales, etc. • StateFul (Session) EJB's A diferencia de "Stateless (Session) EJB's" este tipo de EJB's permiten mantener la sesión del cliente en el "EJB Container", de esta manera el cliente puede trabajar con cierto juego de datos específico administrado por el "EJB Container", la aplicación ideal para este tipo 44 de EJB es un componente de compra ("Shopping Cart") el cual puede identificar artículos e información personal del cliente a través de un lapso de tiempo extenso ("Session"). A continuación veremos los Session EJB, que se implementaron en el desarrollo del Framework. Ilustración 8. ClienteMgr Session EJB El clienteMgr es el encargado de manejar todas las transacciones requeridas por el cliente y de administrar el carro de compras de cada uno de ellos 45 Ilustración 9. AdministradorMgr Session EJB. 46 Ilustración 10. TiendaMgr Session EJB 47 La clase TiendaMgr es la encargada de manejar todas las transacciones de la tienda, tanto las del cliente como las del administrador, es la fachada del sistema, ya que a esta se le hacen todas las peticiones. Ilustración 11. EntidadFinancieraMgr y KartMgr SessionsEJB El KartMgr es el encargado de manejar las transacciones correspondientes al carro de compras y el EntidadFinancieraMgr es el encargado de manejar la validación local de las tarjetas. Este es el encargado de comunicarse con la aplicación seleccionada para el manejo de los pagos. Estos Session EJB (Ilustración 9, 10, 11, 12) fueron los definidos para el Framework. Después de la implementación de los Session, se generó un script para la creación del modelo de datos, este script se realizó para la especificación Ansi Sql 92. Para ver de forma más detallada el script y la información de las clases (ver Anexo C Diseño Framework o referirse al código adjunto). 48 4.5. IMPLEMENTACION II En el 5 ciclo se terminaron los componentes que faltaban en la aplicación. Se escribieron los DAO, los EJB Entity CMP y EJB Entity BMP y por último el “Business Delegate” pagina 47, después se hizo la integración de todo el Framework. Los DAO son los encargados de realizar las conexiones a la Base de Datos, de una forma transparente. (Ilustración 13). Ilustración 12. Clases DAO's Se realizó un DAO para cada una de las tablas que fueron utilizadas, cada uno de los DAO tiene sus correspondientes métodos los cuales son los encargados de realizar las consultas, las inserciones y las actualizaciones respectivas. 49 Ilustración 13. EJB EntitiesEJB CMP'S 50 Cada uno de estos CMP (Ilustración 14, 15), esta encargado de manejar la persistencia de la información correspondiente, por ejemplo el CMPClienteBean esta encargado de los datos específicos del cliente Ilustración 14. EJB EntitiesEJB CMP Entity BMP El Entity BMP no se implementó ya que esta clase de Entity depende de los productos que quiera vender el cliente, es decir se debe implementar un Entity BMP para cada uno de los productos que se deseen vender en la tienda, en este bean deben implementarse los correspondientes métodos para obtener acceso a los atributos del producto, además debe implementarse un método del negocio (“business method”) que sirva para modificar el producto y un buscador (“finder”) el cual devuelva el Entity BMP de acuerdo a la llave primaria buscada. 51 Este o estos EntitiesEJB (de acuerdo a las necesidades del cliente), permitirán manejar la información referente a los productos específicos que ofrecerá el cliente. En cada uno de los Entibies BMP que se creen se deben declarar 3 atributos obligatoriamente, el Id. del Producto, el nombre y su correspondiente precio, esto debido a que son características fundamentales que debe tener todo producto. Además las distintas características específicas del producto deben agregarse como atributos al BMP, los atributos que se agreguen son opcionales y dependen de la decisión del usuario. 52 Ilustración 15. Clase Bussines Delegate 53 Por último se implementó la clase Business Delegate de acuerdo con lo descrito en la pagina 47. Para información mas detallada acerca de las clases (ver anexo C Diseño Framework o código adjunto). En este ciclo terminó la implementación de nuestro Framework. 4.6. PRUEBAS Y DOCUMENTACION En el sexto y último ciclo se desarrollaron las pruebas específicas para la aplicación y se definió la documentación que se realizaría. 4.6.1. Pruebas Para el desarrollo de las pruebas se definió un plan de pruebas, de acuerdo al estándar IEEE32, se realizaron pruebas de caja negra a todas las funciones del Framework. Las pruebas de caja negra se centran en lo que se espera de un módulo, es decir, intentan encontrar casos en que el módulo no se atiene a su especificación. Por ello se denominan pruebas funcionales, y el probador se limita a suministrarle datos como entrada y estudiar la salida, sin preocuparse de lo que pueda estar haciendo el módulo internamente. Las funciones referentes al producto no fueron probadas, ya que su implementación depende del cliente. Para las pruebas se definieron, un objetivo y un alcance con el fin de delimitar, las pruebas que se realizarían. Después se seleccionaron los procedimientos a ser probados en cada uno de los módulos, se definieron casos de prueba para cada uno de los procedimientos a probar. Se realizaron pruebas de conectividad, pruebas al modulo cliente y pruebas al modulo administrador. Para todas las pruebas fueron definidos criterios de Aprobación y Fallo. Para obtener información detallada del desarrollo de las pruebas (ver Anexo D Pruebas Framework). 4.6.2. Documentación Para la documentación de la aplicación además de los entregables de cada uno de los ciclos se definieron tres guías o manuales33: • 32 33 Manual de Usuario Framework. IEEE standard for software test documentation Carey, James and Carlson, Brent. Framework Process Patterns. 2002 Pág. 202 54 Con este manual nos aproximamos al Framework desde una perspectiva de domino, para que los usuarios obtengan un mayor entendimiento del Framework, con lo cual puedan llegar a usarlo para el desarrollo de sus aplicaciones. Esta manual contiene una descripción general de las funciones que nos provee el Framework y una pequeña descripción de su funcionalidad. • Manual de Instalación y Configuración Framework. Este manual es una guía en la cual se puede observar detalladamente el proceso de instalación y configuración de varios de los componentes utilizados en el Framework. Esta guía se dividió en tres partes ya que son tres los componentes principales a instalar, en cada una de estas se explica detalladamente la instalación y configuración de sus componentes. • • • Base de Datos Servidor de Aplicaciones Aplicación En este manual se encuentran ejemplos con un software específico, de igual manera se dan las pautas generales para que el usuario pueda trabajar en otros programas. • Guía de Extensión Framework. Este manual es una guía en la cual se puede observar detalladamente el proceso de extensión del Framework, con el fin que el usuario, pueda implementar sus propias aplicaciones basándose en la tecnología usada en el Framework, su documentación, implementación y arquitectura. En esta guía el usuario encontrara la forma de implementar, paso a paso, sus propios productos para la venta en la tienda virtual. Para obtener información detallada acerca de los manuales (ver Anexos E, F, G). 55 5. DESARROLLO DE LA APLICACIÓN PARA LA VENTA DE DVD La tercera etapa como se explicó en la descripción del proyecto consistió en el desarrollo de una aplicación para la venta de DVDs, para el desarrollo de esta se utilizó el Framework construido en la segunda etapa del proyecto, extendiendo de su documentación y funcionalidad, para esta aplicación también se aplicó la metodología DAS. El producto elegido, en este caso películas DVD, se seleccionó debido a la gran acogida que tiene este producto a nivel comercial. Se decidió tomar este producto a gusto propio y aprobado por el director de proyecto, quien a su vez le pareció una muy buena elección. Como en la etapa anterior se definió el número de ciclos que se utilizarían para desarrollar la aplicación, al igual que en el Framework, se definieron seis ciclos debido a que el tiempo de ejecución del proyecto era el mismo. 5.1. PLAN DE CICLOS DE DESARROLLO ADAPTABLE Al igual que en el Framework, al definir el número de ciclos se prosiguió a realizar el plan de ciclos de desarrollo adaptable (ver Anexo H Plan de Ciclos de Desarrollo Adaptable Aplicación DVD), de la misma forma que en el plan de ciclos del Framework, se definió una misión para el proyecto, además se definieron los marcos de tiempo, los objetivos, entregables y actividades que se realizaría en cada uno de los ciclos. Los ciclos prácticamente son los mismos, pero al utilizar el Framework se variaron las actividades de cada uno de ellos, ya que muchos de los componentes necesarios para la aplicación los provee el Framework. El desarrollo de este plan fue más sencillo ya que se uso el Framework como base. Al igual que en el Framework todos los entregables se basaron en estándares IEEE34 y se manejo un control de versiones en cada uno de ellos. 5.2. ANALISIS En este ciclo se definió un dominio de la aplicación, unos requerimientos y unos casos de uso. El dominio que se selecciono es el de una aplicación e-commerce que basada en la venta de películas de DVD35 por Internet, la cual maneja registro de usuarios, inventario, órdenes de compra (ventas), detalles del producto y registro de envíos. Después de esto se definieron los requerimientos correspondientes. Como primera medida se tiene que esta aplicación de venta de películas en DVD, se basa en el uso del Framework para aplicaciones e-commerce. Los requerimientos funcionales 34 35 Los estándares IEEE utilizados se pueden consultar en la Bibliografía Disco de video digital 56 abarcan toda la parte que el Framework cubre (ver Anexo B Análisis Framework). A su vez para esta aplicación nacen estos requerimientos presentados a continuación: • • • • • Agregar o modificar películas DVD del sistema Consultar Inventario de películas DVD Consultar películas DVD Modificar el stock de películas DVD del inventario (Agregar o Disminuir) Ver los detalles de las películas DVD Ilustración 16. Diagrama Casos de Uso Aplicación DVD Como se explicó esta aplicación extiende del Framework por lo cual solo se muestran los casos de uso pertenecientes a la aplicación. Para ver información detallada sobre el ciclo de análisis (ver Anexo H Análisis Aplicación DVD). 5.3. DISEÑO Para elaborar el diseño de la Aplicación de DVD se utilizó el modelo de datos definido en el Framework, ya que este nos provee la información requerida para nuestra aplicación, la única modificación que se realizó a este modelo fue la agregación de una tabla DVD, ya que este será el producto específico a vender en la aplicación, esto podemos verlo en el modelo descrito a continuación. 57 Ilustración 17. Modelo de Datos Aplicación DVD Utilizamos la arquitectura propuesta en el Framework, para la capa de presentación, se utilizaron Servlets y JSP y a una de las capas de interacción se le agregara un BMPDVDProducto. De acuerdo con este modelo se tiene la siguiente arquitectura: 58 Interacción Presentación * Logica del Negocio Interacción EIS * * * DAO * JSP * * * * Service Locator * CMPBackUp Session Administrador «uses» Servlets * * * * * Business Delegate * * *** * CMPTipoTarjeta * Session Tienda * * * * * Data CMPProductoFisico * ** * * Session Cliente Cliente ** * * * CMPOrdenCompra * * * ** * * * CMPCliente SessionKart * * * BMPDvdProducto * * * * * * Ilustración 18. Diagrama de Arquitectura Aplicación DVD En este diagrama tenemos que nuestro cliente accederá al sistema por medio de Internet y los JSP, estos se comunican con los Servlets los cuales utilizan el Business Delegate para obtener la lógica del negocio del sistema, además se agregara un Entity BMP llamado BMPDVDProducto, el cual se encarga de la comunicación y el manejo de la información con la tabla DVD y la tabla producto respectivamente. A los componentes se les agregaron y/o modificaron algunas funciones de acuerdo a los requerimientos de la aplicación (solamente se muestran las clases que tendrán algún cambio). Se agrego la clase BMPDVDProducto, la cual nos representa el producto que se venderá en la tienda virtual. Se utilizaron los patrones definidos en el Framework, y se realizaron las respectivas modificaciones de acuerdo a la configuración de la aplicación Para ver información detallada sobre el ciclo de diseño (ver Anexo H Diseño Aplicación DVD). 5.4. IMPLEMENTACION I En esta fase se implementaron y reutilizaron, las clases y los EJB de la aplicación modificándolos si era necesario. Se creó la clase DVD que extiende de producto y se modificaron el producto creador, el Service Locator. 59 Ilustración 19. Clase DVD y ProductoCreator Además se modificaron los Session EJB y la base de datos según el modelo de datos. Para ver más detalladamente estas modificaciones, (ver código de la Aplicación Adjunto). 5.5. IMPLEMENTACION II En este ciclo se modificaron los DAO’s y el Business Delegate, se implementó el BMP y los Servlets y JSP’s. Ilustración 20. Clase DAOProductos Aplicación DVD 60 Se creó una clase DAOProductos, ya que era necesario manejar las transacciones a la base de datos, como se explicó anteriormente se utilizó un patrón DAO para esto, además se le agregaron los métodos necesarios a los demás DAO’s y al Business Delegate, para completar la funcionalidad de la aplicación desarrollada, específicamente la que corresponde a los productos. 61 Ilustración 21. BMPDVDProducto Aplicación DVD 62 En este Entity CMP (Ilustración 23) se declararon los 3 atributos obligatorios detallados en el diseño del Framework, el Id. del Producto, el nombre y su correspondiente precio, Además de los atributos específicos del producto. En este bean también se debe implementar una función constructora (create) y un buscador (finder) con el fin de encontrar y cargar los correspondientes productos. 63 Ilustración 22. Clase BusinessDelegate Aplicación DVD 64 Ilustración 23. Clase Servlet Aplicación DVD Se creó una clase ServletDvd, la cual es la encargada de manejar las peticiones y respuestas vía Internet Para más detalles sobre la implementación (ver el código de la aplicación adjunto). 5.6. PRUEBAS Y DOCUMENTACION De la misma forma que en el Framework en el sexto y último ciclo se desarrollaron las pruebas específicas para la aplicación y se definió la documentación que se realizaría. 5.6.1. Pruebas Para las pruebas se utilizó el mismo plan que en el Framework pero se le agregaron casos de prueba a la funcionalidad creada específicamente para la aplicación. Se realizaron las mismas pruebas del Framework, más los casos de prueba nuevos. 5.6.2. Documentación Para la documentación se definieron dos manuales, un manual de usuario y un manual de instalación y configuración. Para ver información detallada de los manuales y las pruebas (ver Anexos K, L, M). 65 6. CONCLUSIONES Y RECOMENDACIONES Debido a que la metodología ágil DAS se basa en la administración de proyectos de software e intenta solucionar el constante cambio de los proyectos, esto permitió que los cambios presentados durante el desarrollo del Framework y de la aplicación Web de administración y venta de películas DVD, fueran manejados de manera simple y ágil debido al ciclo de vida que presenta la metodología DAS, donde alguna modificación, cambio o mejora al componente que se va a entregar al finalizar el ciclo, se realiza mediante una iteración al ciclo que es afectado únicamente y no una revisión exhaustiva a todo el proyecto. La metodología DAS basada en la adaptabilidad al cambio y no en la prevención de éste, promueve reuniones periódicas para mirar el avance del proyecto, es aquí donde uno de los principales factores para que los cambios se realizaran rápidamente en el desarrollo del Framework y de la aplicación Web, fueron las constantes reuniones que se llevaron a cabo en el proyecto (cada 15 días). Esto permitió detectar errores en el proceso de desarrollo de forma rápida, al identificar los problemas o cambios oportunamente se hizo mucho más manejable su solución, sin llegar a afectar gravemente el cronograma del proyecto. Otro de los factores es que al realizar modificaciones no se generaron documentos nuevos, estos cambios se manejaron en las iteraciones correspondientes de cada ciclo. Por ejemplo en las pruebas se encontró un error en el tipo de dato de una de las tablas, esto provocó el desarrollo de una nueva iteración en el diseño y por lo tanto en la implementación, estas iteraciones fueron manejadas mediante un control de cambios que se maneja en cada uno de los documentos. El manejo de componentes del DAS nos permitió dividir un proyecto extenso y complejo como lo es el desarrollo de un Framework, en pequeños problemas a solucionar, esto hizo más manejable y sencillo el desarrollo del proyecto. El proyecto fue dividido en tres partes, la investigación, el desarrollo del Framework y el desarrollo de la aplicación. Para el desarrollo del Framework y de la aplicación, fueron seleccionados 6 ciclos, donde cada uno de los ciclos era un pequeño problema a solucionar. El manejo de los ciclos como lo presenta DAS, permitió una mayor organización, ya que cada uno de los ciclos fue planeado y enfocado a una misión. La metodología DAS presenta el refinamiento como parte del ciclo de vida en la parte del aprendizaje. Es por eso que los entregables realizados en cada ciclo como los documentos de análisis, diseño y pruebas y componentes desarrollados en los ciclos de implementación fueron mejorados y refinados en cada iteración, como lo presenta DAS para la etapa de aprendizaje y en las reuniones periódicas que deben realizarse para mirar el seguimiento y avance del proyecto. 66 Uno de los principales obstáculos del proyecto, fue el no tener un cliente ya que debido a esto toda la parte del análisis de requerimientos debió tratarse de una forma poco común (visitar tiendas virtuales), esto llevó a desacuerdos en cuanto a los requerimientos que se cubrirían. A pesar de esto se seleccionaron los requerimientos a común acuerdo más importantes basándonos en el dominio definido en la aplicación, de aquí la importancia de la definición del dominio acorde con lo que se quiere realizar en la aplicación. Una de las grandes complicaciones que dificultó la investigación y el desarrollo del proyecto, fue la falta de muchos recursos y la reciente metodología ágil como lo es el desarrollo adaptable de software. A su vez el desarrollo de un Framework es algo que es una tarea compleja, por lo que llevar a cabo el desarrollo de este proyecto fue bastante complicado, ya que los artículos encontrados sobre esta metodología, no son explicativos sino informativos, lo que quiere decir que nombran la metodología y las explicaciones son superficiales, con el fin de atraer al lector, pero no profundizar en la metodología de desarrollo adaptable. Se dice que lo más difícil es comenzar, por lo que iniciar el proyecto usando DAS, fue difícil sin tener una guía o proyecto anterior, pero a medida que el proyecto avanzaba, el desarrollo del proyecto se hizo más fácil ya que todos los ciclos fueron manejados de la misma manera y guiados por el ciclo de vida que presenta DAS. Desarrollo Adaptable de Software El Desarrollo Adaptable de Software no se centra en la metodología de construcción de software, o en las buenas practicas de programación como Extreme Programming, este se basa en la administración de proyectos de software, ya que intenta solucionar el constante cambio de los proyectos • Adaptable y tolerante al cambio La metodología desarrollo adaptable de software se basa en la adaptabilidad y tolerancia al cambio, lo que permitió que un desarrollo complejo y extenso como lo fue el desarrollo de un Framework y de una aplicación e-commerce, cuando se quisieron realizar innovaciones, cambios, ajustes e incluso mantenimiento, fuera una tarea sencilla y poco dispendiosa, ya que al realizar modificaciones no se generan documentos nuevos, estos cambios se manejan en las iteraciones correspondientes de cada ciclo. Por ejemplo en las pruebas se encontró un error en el tipo de dato de una de las tablas, esto provocó el desarrollo de una nueva iteración en el diseño y por lo tanto en la implementación, estas iteraciones fueron manejadas mediante un control de cambios que se maneja en cada uno de los documentos. • Ciclos manejados por una misión La metodología DAS, deja al desarrollador la propiedad de hacer cuantos ciclos se crean convenientes, pero define una pauta muy importante la cual es definir antes de cada ciclo una misión a seguir. La misión deberá abarcar el problema a tratar lo más que se pueda, dando una guía posterior a donde se quiere llegar y que se quiere hacer para que al final de cada ciclo se obtenga lo que realmente se desea obtener. La definición de la misión la propone DAS, haciendo referencia a como una empresa trabaja, es decir, el ejemplo de una empresa que tiene su misión apenas es creada para que sus objetivos 67 puedan cumplirse y muestre los beneficios al final de cada año. De esta manera DAS, da una idea de cómo al final de cada ciclo los objetivos pueden llegar a cumplirse. La planeación de los ciclos fue de vital importancia a la hora de desarrollar el componente de determinado ciclo. Dentro de la planeación de cada ciclo se determinaba una misión, lo que ayudó a seguir siempre un camino y no desbordarse, siempre sabiendo cual era la meta para cada ciclo. • Los ciclos adaptables son basados en componentes La metodología DAS define que en cada uno de los ciclos se haga entrega de un componente, es decir que para cada iteración se obtenga un entregable mejor al anterior. Para DAS el cliente es lo más importante, por lo que se debe tener al cliente totalmente satisfecho a largo del ciclo de vida del desarrollo de la aplicación y por supuesto al final de éste. Esto permite al cliente tener un avance en cada ciclo y mirar el progreso del desarrollo y dar su opinión. En el desarrollo del Framework y de la aplicación ecommerce cada iteración dejó como resultado un entregable, y al final de cada ciclo un componente desarrollado y refinado, para poder proseguir al siguiente ciclo. El hecho de que esta metodología esté basada en componentes permitió que el desarrollo del Framework siendo una aplicación tan extensa y compleja, se dividiera en pequeños problemas a solucionar, con soluciones más sencillas para cada componente para facilitar el desarrollo. • Los ciclos adaptables son planeados y programados El hecho de que los ciclos sean planeados y programados permitió una mayor organización para cada uno de los entregables realizados. En ningún momento el desarrollo de algún componente fue realizado a la deriva y sin un objetivo a cumplir. Al inicio de cada ciclo, como lo define DAS, el ciclo fue planeado y programado, por lo que se estimaba el tiempo para cada tarea y actividad dentro de cada uno de los ciclos. El hecho de planear y programar cada ciclo por separado, permitió tener una mejor planeación de todo el proyecto, ya que generó una planeación por partes y no una global que es más compleja de realizar y monitorear. En cada uno de los ciclos la planeación facilitó la repartición de las actividades a realizar para cada uno de los implicados en el proyecto y facilitó la estimación de tiempo para cada ciclo. • Establece colaboración por parte del usuario al equipo de trabajo y viceversa. Este es un factor destacado en la metodología DAS, ya que en todo momento existe un acercamiento con el cliente. Esto permite que el cliente exprese sus ideas de cómo le gustaría cada cosa y que el equipo de trabajo opine en la viabilidad de cumplir el requerimiento, esto con el fin de que al final del desarrollo del proyecto el equipo de desarrollo entregue realmente lo que el cliente deseaba. A su vez el cliente puede ayudar con los requerimientos del proyecto supliendo información suficiente a medida que avanza el proyecto. • La satisfacción del cliente es lo primordial Para DAS, aparte de las diferentes características para el desarrollo de una aplicación y la metodología a seguir para cada uno de los ciclos, es primordial y fundamental que todo el desarrollo de alguna aplicación este enfocado a la satisfacción del cliente por 68 encima de todo. Según esta metodología, no habrá un buen resultado si el cliente no esta de acuerdo con la entrega final. Para el desarrollo del Framework y de la aplicación ecommerce de venta de películas DVD, el resultado fue satisfactorio ya que cumplió los objetivos planteados para cada uno de los ciclos (ver anexos A, H), por lo que se cumple esta parte de la metodología ágil que nos presenta el desarrollo adaptable de software. • El cliente no es un usuario. El cliente hace parte del equipo de trabajo. Debido a que el cliente debe estar involucrado todo el tiempo en el desarrollo de la aplicación, se puede decir que él no es un usuario, sino parte del equipo de trabajo, ya que su colaboración es de vital importancia para obtener un resultado final satisfactorio. Para este proyecto, fue fácil notar esto, ya que en el desarrollo del Framework y de la aplicación de DVDs, el usuario y el equipo de trabajo eran el mismo, por lo que de forma literal se logró darse cuenta de que el producto final es más fácil obtenerlo si el cliente y el equipo de trabajo, se unen para trabajar en uno solo. • Metodología realmente nueva El desarrollo adaptable de software es una metodología ágil, esto hace en principio que se tome como una metodología realmente nueva. Es una metodología que no ha sido utilizada en muchos proyectos, por lo que casos de estudio realizados por DAS, son realmente pocos. En este proyecto, logró darse cuenta que foros de discusión y proyectos realizados por DAS eran pocos, lo que hizo menos fácil el desarrollo de estas dos aplicaciones. • Pocos desarrollos en Colombia usando como metodología el desarrollo adaptable de software Debido a que es una metodología nueva en el ámbito del desarrollo de software como se menciona anteriormente, cabe anotar que en Colombia el desarrollo de proyectos usando como metodología de desarrollo DAS es muy poco como pudimos observar a través de la consulta de algunas empresas que desarrollan software en Bogota, por ende se hizo difícil un contacto personal, con el fin de encontrar puntos de vista sobre esta metodología no implantada en proyectos colombianos, y experiencias obtenidas en sus propios desarrollos de aplicaciones. • Poca documentación La documentación obtenida sobre esta metodología adaptable es realmente poca, lo que hace difícil la investigación de la metodología, artículos, casos de estudio y textos guía. Realmente el libro que muestra la metodología es uno solo36. Los artículos encontrados sobre esta metodología, no son explicativos sino informativos, lo que quiere decir que nombran la metodología y las explicaciones son superficiales, con el fin de atraer al lector, pero no profundizar en la metodología de desarrollo adaptable. 36 James Highsmith, Adaptive Software Development, 2000 69 • Manejo con el cliente se puede complicar En puntos anteriores, se nombra que el trabajo unido con el cliente es de vital importancia para el DAS, lo que tiene a su vez en contra, es que el cliente en ciertas ocasiones no tiene idea de cómo se desarrollan las cosas, es decir el cliente puede llegar a ver las cosas desde una perspectiva diferente a la del equipo de trabajo, llegando así a un mal entendimiento con el personal de desarrollo, y por qué no a problemas en el resultado final. Otro problema que existe en el trabajo conjunto con el cliente, es que algunas veces el cliente cree que las aplicaciones a desarrollar son sencillas, cuando en realidad son tareas complejas y extensas, que requieren de validaciones y procesos realmente agotadores. Framework El desarrollo de aplicaciones reutilizables (Frameworks), se esta convirtiendo en uno de los principales factores a la hora de diseñar software. Pero, ¿Cómo es posible crear una aplicación que nos provea un núcleo de funcionalidad, que nos permita construir distintas aplicaciones a través de éste? El proceso de desarrollo del Framework, debe basarse en las instancias comunes del desarrollo de software, Análisis, Diseño, Implementación, etc. Pero cada una de estas etapas debe realizarse de una manera más profunda y detallada (en algunos casos se realizan actividades especificas para el Framework), debido a la necesidad de reutilización propia del Framework. Al igual que las otras aplicaciones, es importante la iteración de cada una de las etapas, con el fin de corregir errores o cambios en los requerimientos. El desarrollo del Framework exige un tratamiento especial al análisis y al diseño de la aplicación, ya que debe definirse un dominio claro y conciso. Esto debido a que es imposible desarrollar un núcleo el cual sea útil para todas las aplicaciones que quieran desarrollarse, por eso es necesario definir el alcance, en cuanto a requerimientos y funcionalidad que nos prestará el Framework. Al diseñar el Framework, debe definirse claramente que componentes o módulos serán configurables, ya que estos son los que mayor atención deben tener, debido a que en ellos recae la correcta reutilización de la aplicación. Para esta clase de desarrollos es necesario apoyarse en una gran cantidad de patrones, los cuales garanticen el correcto desarrollo de la aplicación. Para esto se seleccionaron los patrones que solucionan determinada problemática en el desarrollo de la aplicación. Una de las principales diferencias cuando se desarrolla un Framework contra cualquier otra clase de software es la importancia de la documentación. Ya que con el Framework la documentación no solo es un soporte al producto, sino que en realidad es parte del producto. 70 Para los usuarios del Framework es importante el mapeo explícito de la aplicación contra el Framework, a medida que el mapeo se haga mas temprano en el proceso de desarrollo de la aplicación, mayor será el uso que se le de al Framework, hasta llegar a su mayor capacidad. Los usuarios del Framework, deben basar su documentación en la del Framework, esta debe ser el punto de partida y debe expandirse a los requerimientos específicos de la aplicación. En conclusión al construir aplicaciones reutilizables, debe analizarse específicamente el nivel de reutilización que se quiere obtener de dicha aplicación, y que tipo de funcionalidad prestara y a que tipo de usuarios estará dirigida, esto con el fin que el usuario aproveche el Framework al máximo, y pueda sacar el mayor provecho de este. 71 TRABAJO A FUTURO A un futuro debe mejorarse el diseño gráfico de la aplicación DVD ya que el realizado solo se hizo para probar la funcionalidad de la aplicación y del Framework, mas no se hizo pensando en el usuario final. Por esto las pantallas pueden llegar a ser poco atractivas a la vista. Validar los campos de la interfaces graficas con sus correspondientes tipos de datos como el correo electrónico. La aplicación podrá ser complementada con el desarrollo correspondiente al alquiler de bienes materiales. Reutilización del Framework para otro producto diferente. 72 BIBLIOGRAFIA [1] AMOR, Daniel. The E-Business Revolution, 1999. [2] BRUEGGE Bernd y DUTOIT Allen, Ingeniería de Software Orientada a Objetos. [3] Carey, James y Carlson, Brent. Framework Process Patterns. [4] Asociación Colombiana de Ingenieros de Sistemas, www.acis.org, 5 mayo de 2004. [5] FOWLER, Martin y HIGHSMITH, James. The Agile Manifesto. En Software Development Magazine, Agosto de 2001. [6] FOWLER, Martin. The new Methodology (online) Abril de 2003. http://martinfowler.com/articles/newMethodology.html [7] Guía al “Software Engineering Book of Knowledge”, www.swebok.org. [8] HAMEL, Sylvian y HIGHSMITH, James. Optimize or Apapt En Software Development Magazine, Abril de 2000. [9] HIGHSMITH, James. Adaptive Software Development, A collaborative approach to managing complex systems, 2001. [10] HIGHSMITH, James. Agile Software Development: The Business of Innovation. En Institute of Electrical and Electronics Engineers (IEEE) magazine, Septiembre de 2001. [11] HIGHSMITH, James. Agile Software Development: The People Factor. En Institute of Electrical and Electronics Engineers (IEEE) magazine, Noviembre de 2001. [12] HIGHSMITH, James. Project Management at the edge. The It Project Leader Magazine, Febrero de 2000. [13] HIGHSMITH, James. Retiring Lifecycle Dinosaur. En Software and Testing & Quality Engineering, Agosto de 2000. [14] HIGHSMITH, James. Software Ascents. En American Programmer Magazine, junio de 1992. [15] IEEE standard for software test documentation 73 [16] IEEE Recommended Practice for Software Requirements Specifications [17] IEEE Recommended Practice for Software Design Descriptions [18] IEEE standard for software user documentation [19] KALAKOTA, Dr. Ravi. E-Business, Roadmap for Success, 1999. [20] Larman, Craig. Applying UML and patterns: An introduction to object-oriented analysis and design. 1998. 74