Download Proyecto: Título del Proyecto Identificación de participantes
Document related concepts
no text concepts found
Transcript
Seminario de Arquitectura e Implementación de Aplicaciones Inalámbricas SAPI, una plataforma para aplicaciones inalámbricas basada en software open source Fecha: 26 de Junio de 2003 Autor: Cristian Ferretti Temario Página 2 Reuso y Open Source Open Source en SAPI SAPI Iteración 2: Descripción del proyecto SAPI Iteración 2: Arquitectura Componentes Open Source Utilizadas • Infraestructura y Middleware • Bibliotecas Java • Herramientas de Desarrollo Conclusiones Preguntas Referencias Arquitectura e Implementación de Aplicaciones Inalámbricas SAPI, una plataforma para aplicaciones inalámbricas basada en software open source Reuso, conceptos generales Reuso Simplemente, no reinventar la rueda Promesa fundamental: ahorro en el desarrollo al evitar construir todas las componentes necesarias para un sistema a construir Reuso oportunista: cada programador Página 3 “Copiar y pegar” trozos de código “Robo de ideas” desde otros proyectos: código fuente, diseño Quien “reusa” de esta manera, hereda los esfuerzos asociados al código, replicando mantención, testing y verificación, etc. Reuso sistemático: la organización Reuso de componentes (rutinas, bibliotecas, middleware, frameworks) Evolución y habilitadores: • ‘70 – ’80 Dominios altamente especializados, como cálculo numérico: netlib • ‘80 – ’90 Frameworks & toolkits, especialmente interfaces • ‘90 – Lenguajes OO (C++, Java). Bibliotecas estándares de componentes. Middleware (CORBA, J2EE). Lenguajes de scripting. Open Source. Patrones de Diseño. Arquitectura e Implementación de Aplicaciones Inalámbricas SAPI, una plataforma para aplicaciones inalámbricas basada en software open source Reuso, nuestra experiencia en SAPI Página 4 Crear componentes reusables requiere un esfuerzo adicional Una componente no es “general” hasta que ha sido usada con éxito en más de un proyecto No “diseñe” una componente para ser general. Diseñe una componente simple. Si la necesita de nuevo, aplique refactoring. Después de algunas iteraciones (2?), puede ser candidata a convertirse en una componente reusable Una componente que ha sido usada en más de un proyecto con éxito, debe ser mantenida en forma separada de cada proyecto particular (control de configuración independiente) ¡Mover una componente al estatus de reusable no es gratis! Moraleja: Una componente no es general “antes” (por diseño)... es general “después” (por uso) Arquitectura e Implementación de Aplicaciones Inalámbricas SAPI, una plataforma para aplicaciones inalámbricas basada en software open source Reuso, nuestra experiencia en SAPI (2) ¿Quién paga? Cuando una componente reusable quiere ser utilizada por un proyecto que necesita “casi” la misma funcionalidad... ¿Quién paga por el cambio? Respuesta: el proyecto que requiere la funcionalidad nueva implementa dicha funcionalidad, y se hace responsable de mantener compatibilidad hacia atrás ¿Qué proporción? Página 5 En SAPI, de 80.000 líneas en Java, 5.000 corresponden a componentes reutilizables desarrolladas in-house ¿Cuándo? Antes del diseño/codificación Arquitectura e Implementación de Aplicaciones Inalámbricas SAPI, una plataforma para aplicaciones inalámbricas basada en software open source Open Source Concepto. ¿Cuándo una componente es Open Source? Página 6 Libre distribución Disponibilidad del código fuente Permite trabajos derivados Además, típicamente (pero no necesariamente) Desarrollada por un grupo geográficamente disperso, coordinado en forma ad-hoc a través de Internet Grupo de desarrollo abierto a recibir contribuciones y cambios en el tronco principal de distribución Releases frecuentes Comunidad de usuarios de tamaño considerable (fenómeno de debugging y beta testing distribuído) Arquitectura e Implementación de Aplicaciones Inalámbricas SAPI, una plataforma para aplicaciones inalámbricas basada en software open source Open Source (2) Más de una licencia GNU, obliga a entregar el código fuente de la componente junto con un desarrollo derivado de ella. Si el desarrollo incluye una modificación de la componente misma, obliga a entregar los fuentes de la modificación BSD, sin restricciones de distribución o uso, basta mantener el reconocimiento del trabajo original Muchos esquemas intermedios: licencias apache, netscape, etc. Si no es necesario modificar los fuentes, cualquiera de estas licencias permite que la componente sea utilizada en un sistema comercial Open Source en la industria Página 7 IBM, Sun, RedHat Open Source en Motorola A nivel de productos: Embedded Linux A nivel de ingeniería de software: SourceForge, Bugzilla Arquitectura e Implementación de Aplicaciones Inalámbricas SAPI, una plataforma para aplicaciones inalámbricas basada en software open source Reuso, una perspectiva diferente Página 8 Nuevamente, el objetivo: ahorro en el esfuerzo de desarrollo ¿Componentes reusables disponibles? Componentes Open Source ¿Mercado de componentes? Muy pequeño (excepto en infraestructura) Infraestructura: sistema operativo, administrador de bases de datos, servidor de aplicaciones Java, etc. Bibliotecas: Numéricas, Grafos, Interfaces, HTTP... ¡cientos! Herramientas: Compiladores, IDEs, Herramientas de construcción Elegir una componente Open Source ¿Cumple mi objetivo? Documentación y Soporte (sí, usted tiene el fuente, pero no tiene tiempo) Continuidad del proyecto No es distinto de evaluar componentes comerciales Sólo parece serlo: caemos en la tentación de creer que si es comercial, esas preguntas son menos relevantes Arquitectura e Implementación de Aplicaciones Inalámbricas SAPI, una plataforma para aplicaciones inalámbricas basada en software open source Caso: SAPI Iteración 2 Página 9 Agrega la funcionaldiad “Encuesta Inteligente”, sobre la ya existente “Cápsulas Personalizadas” Produce “delta” de código Hereda la batería de tests del incremento anterior Aplica refactoring Utiliza dos componentes reusables a nivel organizacional: Scheduler, para agendamiento de eventos, y Swarm, herramienta de testing Infraestructura (sistema operativo, middleware, base de datos) totalmente open source Alta reutilización de bibliotecas open source Herramientas de desarrollo utilizadas también open source Arquitectura e Implementación de Aplicaciones Inalámbricas SAPI, una plataforma para aplicaciones inalámbricas basada en software open source Diagrama de Arquitectura Suscripción Conección directa ó través de Internet Motor de Despacho de Contenido Canal de Log Motor de AgendaMiento y Notifiación SMS-C Portador BD Suscripción Motor de Suscripción Internet Despachador de bajo nivel (Motorola ó Portador) Página 10 BD Contenido Interfaz Web @ Portal Web del Portador Suscripción Despacho Suscripción Motor de Personalización BD Personalización Motor de logging BD Log Arquitectura e Implementación de Aplicaciones Inalámbricas SAPI, una plataforma para aplicaciones inalámbricas basada en software open source Infraestructura y Middleware RedHat Linux Comunicación segura y encriptada JBoss Servlet Container OpenSSL / OpenSSH Servidor Web para las componentes estáticas Tomcat Conección con SMS-C / Simulación de SMS-C utilizando un módem GSM Apache Administrador de Bases de Datos Utilizado como Data Store para J2EE, incluyendo replicación Kannel Sistema operativo de destino, y plataforma de pruebas MySQL Página 11 EJB Container Velocity Framework para uso de plantillas Usado para generar contenido Web dinámico a través de servlets Arquitectura e Implementación de Aplicaciones Inalámbricas SAPI, una plataforma para aplicaciones inalámbricas basada en software open source Bibliotecas Java Java Standard Library / Extensions Conección cliente HTTP 1.1 incluyendo soporte de autentificación y cookies util.concurrent Colecciones (Iterator, HashMap, Hashtable, LinkedList, TreeMap, TreeSet, Vector) Manipulación de fechas (Date, DateFormat, Calendar, GregorianCalendar) Properties JDBC Mail Servlets, EJB, JNDI IO AWT, Swing Java Media Framework (JMF) HTTPClient Página 12 Clases para soportar el desarrollo de aplicaciones concurrentes Pools de threads, primitivas de sincronización, etc. Xerces Parser XML para Java Archivos de configuración y comunicación con componentes externas Arquitectura e Implementación de Aplicaciones Inalámbricas SAPI, una plataforma para aplicaciones inalámbricas basada en software open source Bibliotecas Java (2) Element Construction Set (ECS) Log de sucesos al nivel de aplicación Usado para logs del servicio y debugging Torque Creación de contenido para markup languages Usada para generación de contenido WAP Log4J (Log for Java) Página 13 Framework para mapeo Objeto-Relacional Java Graph Editing Framework, GEF Tipo de datos, algoritmos y visualización de grafos Usado para una demo Arquitectura e Implementación de Aplicaciones Inalámbricas SAPI, una plataforma para aplicaciones inalámbricas basada en software open source Diagrama de Arquitectura (2) Página 14 J2EE Application Server Internet SMS-C (Portador)) Interfaz Web @ Portal Web del Portador Presentation Layer Conección directa ó través de Internet EJB Container Scheduler Beans User Profile Beans Subscription Beans Content Beans EJB Local Method Invocation Suscripción Servlet Container Despachador de bajo nivel (Motorola ó Portador) Suscripción Despacho RDBMS Suscripción Como capa de persistencia para J2EE Arquitectura e Implementación de Aplicaciones Inalámbricas SAPI, una plataforma para aplicaciones inalámbricas basada en software open source Herramientas de Desarrollo Ant Framework de pruebas unitarias para Java Cactus Realiza pruebas de carga de servicios Web JUnit Editor Inteligente de código fuente Java Extensible mediante plug-ins JMeter Entorno Integrado de Desarrollo (IDE) Extensible mediante plug-ins JEdit Herramienta de construcción, estilo make, estándar en la comunidad Java Parte del Proyecto Apache Jakarta Eclipse Página 15 Extensión de JUnit para pruebas unitarias en J2EE Cygwin Utilitarios UNIX y capa de emulación POSIX para Win32 Arquitectura e Implementación de Aplicaciones Inalámbricas SAPI, una plataforma para aplicaciones inalámbricas basada en software open source Conclusiones Página 16 El reuso sistemático al interior de una organización requiere de un esfuerzo adicional para la mantención y configuración de dichas componentes Desde el punto de vista de un proyecto, la disponibilidad de componentes reusables al inicio permite apalancar el esfuerzo de desarrollo Existe una GRAN cantidad de componentes Open Source disponibles en Internet Como parte de la planificación asociada al diseño, pueden tomarse las decisiones para explorar y/o utilizar componentes reusables, en particular Open Source El reuso efectivo requiere de un esfuerzo de “marketting”: ¡Para poder reusar una componente, es necesario saber que existe! Realizar una búsqueda al inicio de un proyecto puede ahorrar mucho esfuerzo de desarrollo: Freshmeat, SourceForge, etc. Arquitectura e Implementación de Aplicaciones Inalámbricas SAPI, una plataforma para aplicaciones inalámbricas basada en software open source Seminario de Arquitectura e Implementación de Aplicaciones Inalámbricas ¿Preguntas? ? Gracias ! Página 18 Esta presentación está disponible en http://www.motorola.com/cl/seminario Referencias: 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. SourceForge Freshmeat mySQL JBoss Java@sun IBM Developerworks Proyecto Jakarta Alphaworks Open Source Initiative (OSI) Biblioteca util.concurrent Biblioteca HTTPClient Framework JUnit 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. Cygwin RedHat Linux JEdit The Cathedral and the Bazaar Why software reuse has failed and how to make it work Netlib Worse is better GNU Proyecto Apache Graph Editing Framework Arquitectura e Implementación de Aplicaciones Inalámbricas SAPI, una plataforma para aplicaciones inalámbricas basada en software open source Seminario de Arquitectura e Implementación de Aplicaciones Inalámbricas SAPI, una plataforma para aplicaciones inalámbricas basada en software open source Backup Modelo J2EE de tres capas Página 20 Arquitectura e Implementación de Aplicaciones Inalámbricas SAPI, una plataforma para aplicaciones inalámbricas basada en software open source Fast V-Model MIL_01 Look Ahead Activities Página 21 MIL_02 Look Ahead Activities MIL_02 Design MIL_03 Code & UT MIL_05 MIL_01 Reqs. Gathering and Planning MIL_04 Test Execution and Release Test Development 3s 1s 1s 4s 3s Arquitectura e Implementación de Aplicaciones Inalámbricas SAPI, una plataforma para aplicaciones inalámbricas basada en software open source