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