Reutilización exitosa de código con desarrollo y modelaje basado

Anuncio
Reutilización exitosa de código con desarrollo y modelaje basado en código
Español
Temas Técnicos
developerWorks
Temas Técnicos
Rational
Descargas
Comunidad
Ingrese (o Regístrese)
Search
Buscar en developerWorks
Biblioteca técnica
Reutilización exitosa de código con desarrollo y modelaje basado en
código
Joanne L. Scouler, Curriculum Architect, IBM
Martin R. Bakal, Rational Electronics Industry Offering Manager, IBM
Resumen: El modelaje es un paso esencial en el proceso de analizar el código existente
para poder tomar decisiones acerca de qué utilizar. Una vez que se conoce la arquitectura
general de un código, crear sus productos en un flujo de trabajo de PLE (ingeniería de línea
de producto) se hace mucho más sencillo de hacer y mantener. Es necesario entender cómo
se adapta el código, cómo hará mejor uso del mismo en el futuro y qué partes querrá
modificar. Las principales razones para analizar el código son la documentación, la
reutilización, la modificación o el mantenimiento. Este artículo explica los secretos de una
reutilización exitosa y cómo reutilizar código combinando desarrollo basado en código con
modelaje.
Fecha: 13-07-2012
Nivel: Introductoria
Creado originalmente en: ingles
Actividad: 2303 vistas
Comentario: 0 ( Ver | Agregar comentario - Ingrese)
Clasificación promedio (0 voto)
Califique este artículo
Los proyectos de nuevo desarrollo suelen comenzar con un código fuente existente. Entender el código es esencial para reutilizar,
lo cual no es tan simple como parece. Por ejemplo, puede suceder que el desarrollador original se haya mudado o se haya
retirado. El código puede haber sido escrito por varios desarrolladores o puede provenir de múltiples fuentes. Es posible que el
código exista como código que es propiedad de su empresa, código externo (por ejemplo, código abierto o estándar) o como
bibliotecas. Es probable que haya cambiado y evolucionado a lo largo de muchos años. Cualquiera que sea la historia del código,
usted necesita saber cómo interactúa el código fuente y qué contiene. Es necesario entender cómo se adapta el código, cómo
hará mejor uso del mismo en el futuro y qué partes querrá modificar.
Revisar o actualizar la aplicación a una versión más reciente
Mantener su código existente
Todas estas razones son un buen fundamento para entender mejor su código. Este artículo se concentra en las razones de la
reutilización y el análisis del código que es necesario para poder hacer la reutilización.
Volver arriba
Riesgos de la reutilización
Hay riesgos potenciales en la reutilización; riesgos específicos de por qué puede fallar la reutilización. Uno de los desafíos en la
justificación de la inversión es que algunos gestores no le permiten a un equipo dedicar tiempo a conocer el código antiguo. Otro
riesgo potencial que puede causar la falla es la falta de conocimiento de los dominios y de los componentes del código. La
parálisis del análisis es otro riesgo potencial.
Procurar entender todo el código puede ser una tarea descomunal - es importante desglosarlo para identificar el código principal a
reutilizar. Dedíquese desde el comienzo a evaluar qué componentes del código se deben reutilizar. En algunos casos es posible
que sea necesario documentar todo lo que hay en su código – por ejemplo, por razones reglamentarias- sin embargo, tratar de
reutilizar y documentar todo el código no suele ser eficaz. La mayoría de las veces la meta es actuar de forma inteligente al decidir
qué partes del código documentar y qué partes reutilizar.
Volver arriba
http://www.ibm.com/developerworks/ssa/rational/library/reuse-code-centric-development-modeling/[02/08/2013 10:44:50 a.m.]
Clarificar el código de software
dentro del Unified Modeling
Language
Sobre los autores
Crear una línea de producto con funcionalidad en un producto que tal vez no necesite en otro
2. Determinar qué es potencialmente reutilizable
Los cuatro secretos del éxito
Recursos
Documentar el código para entenderlo mejor y para que esté preparado para la próxima vez que el desarrollador se retire
o se mude ("documentar" implica la existencia de diagramas que explican el código)
1. Entender la arquitectura del código original para identificar los componentes, los límites y las interfaces
Riesgos de la reutilización
Resumen
Las razones principales para analizar el código se pueden resumir en: documentación, reutilización, modificación o
mantenimiento. Según la situación, los incentivos son:
Para lograr el éxito, los secretos son:
Razones para analizar el código
Reutilización e ingeniería de línea
de producto, o PLE
Razones para analizar el código
Los cuatro secretos del éxito
Tabla de contenidos
Comentarios
Reutilización exitosa de código con desarrollo y modelaje basado en código
3. Estimar el tiempo de reutilización versus la reconstrucción de los componentes
4. Tomar una decisión por cada componente acerca de qué reutilizar y cómo reutilizar -sin cambio, actualización menor,
actualización general
Volver arriba
Clarificar el código de software dentro del Unified Modeling Language
Cuando sea que quiera lograr entender claramente su código, el lenguaje Unified Modeling language (UML) es una excelente
forma de hacerlo. UML es un lenguaje gráfico estándar de representación de código. Permite ilustrar qué está haciendo realmente
el código, lo cual a su vez brinda la posibilidad de ver un plano general del diseño de los componentes. Brinda la posibilidad de
entender la arquitectura del código original para identificar los componentes, los límites y las interfaces. UML clarifica cómo se
funciona el código. El UML se usa para analizar el código. El primer paso antes de documentar el código existente es analizar.
Combinar desarrollo basado en código con modelaje UML
Uno de los cuatro secretos del éxito mencionados al comienzo de este artículo es tomar una decisión por cada componente
acerca de qué reutilizar y cómo reutilizarlo. Si desea mantener su código existente y documentarlo, puede continuar con el
desarrollo basado en código de la misma forma en que siempre lo hace, pero combinándolo con modelaje. Tal vez no necesite
generar código en el modelo pero sí querrá comunicarse mejor y aprender cómo funciona el código existente. Esto se puede
hacer combinando el desarrollo basado en código con el modelaje.
Si desea entender el código de software existente para poder reutilizarlo para crear nuevos productos o mantener múltiples
productos existentes, el desarrollo orientado a modelos puede ser la mejor solución. Al realizar desarrollo basado en código en
combinación con desarrollo orientado a modelos, se puede identificar qué parte del código querrá mantener y qué parte reutilizar.
Definiciones de terminología
Basado en modelos
El modelo no sólo orienta la arquitectura sino también su código de aplicación final.
Basado en código
El código se importa a un modelo como referencia para la visualización. Esto significa que el modelo se utiliza para
ayudar a mostrar la arquitectura pero ello nunca cambia el código. Para actualizar el diseño se necesita actualizar el
código y luego traerlo de vuelta al modelo.
Dynamic Model Code Associativity (DMCA)
En el software de modelaje IBM® Rational® Rhapsody® esto se refiere a la dirección de las actualizaciones. Se puede ir
de modelo a código, de código a modelo y se pueden hacer actualizaciones automáticas bidireccionales. Round-tripping
es el proceso de traer actualizaciones del código al modelo.
Distintos tipos de usuarios prefieren ciertos escenarios de desarrollo a otros. Los usuarios que trabajan en modelos son llamados
"usuarios basados en modelos" mientras que los usuarios basados en código prefieren hacer todo en el código. El resto están
entre unos y otros. Usted puede acomodar los variados tipos de usuarios con el tipo de reutilización de código y modelaje que
elija. Los distintos tipos de usuarios pueden colaborar y trabajar en conjunto coherentemente con una combinación de codificación
tradicional y desarrollo orientado a modelo.
Las definiciones de tecnología pueden ser correlacionadas en los tres escenarios diferentes descriptos en la sección siguiente.
Nota:
Éstos se pueden utilizar por componente, es decir, un componente de una aplicación puede estar basado en modelo mientras
que otro puede estar basado en código.
Escenarios para combinar desarrollo basado en código y orientado a modelo
Hay varias formas de combinar reutilización de código tradicional con modelaje. El espectro de opciones se puede describir, a un
nivel superior, en uno de estos cuatro escenarios:
La visualización de código externo (sólo visualización) es un proceso basado en código. El código externo permanece
externo a su herramienta visual de modelaje. Usted puede referenciar el código externo en la herramienta de modelaje
para utilizarla y probarla.
Codificación continua con documentación actualizada es un proceso basado en código con soporte para enviar
actualizaciones al modelo. Se puede visualizar el código en un modelo pero nunca se puede cambiar el modelo.
Desarrollo basado en código con algunos cambios realizados en el modelo que son generados para el código. El código
es el maestro.
Modernizar código utilizando desarrollo orientado a modelo, donde el modelo es el maestro. Una porción del código
externo es identificada para reutilizar y es traída directamente al modelo.
Visualización de código externo
Visualización implica tener diagramas que ayudan a entender el diseño, la estructura del código y las relaciones entre los objetos
(como las clases y los archivos). Como usuario, usted también puede tener la capacidad de crear nuevos diagramas basados en
los elementos del modelo, agregar comentarios en los diagramas y conectar elementos de modelos a los requisitos. Una
descripción de los elementos que llegaron desde el código se mantiene en el modelo y se puede generar a informe haciendo un
informe del modelo. Hay cambios que se pueden hacer más fácilmente en un modelo, como por ejemplo, agregar elementos que
http://www.ibm.com/developerworks/ssa/rational/library/reuse-code-centric-development-modeling/[02/08/2013 10:44:50 a.m.]
Reutilización exitosa de código con desarrollo y modelaje basado en código
se pueden incluir en un diagrama, copiar elementos en un diagrama, herencia y más.
Con visualización de código, las actualizaciones al código se pueden hacer en el código fuera de la herramienta de modelaje. La
visualización del código externo se hace para mostrar las relaciones que tiene el código con un modelo. Por ejemplo, es posible
que quiera referenciar una biblioteca externa C y mostrar la referencia en un diagrama. La relación que tiene la biblioteca en otras
partes del modelo se visualiza y se documenta de esta manera. Las pruebas orientadas a modelos de la biblioteca se pueden
hacer dentro del modelo. Con el desarrollo orientado a modelo no sólo se puede visualizar el código sino que también se puede
ejecutar el modelo para verificarlo y probarlo.
Codificación continua con documentación actualizada
En el segundo escenario, cuando se hacen cambios en el código externo, se puede hacer round-tripping para enviar los cambios
del código al modelo. Esto trae el código cambiado desde el código externo, actualizando de esta manera la documentación. Si
elige la opción de visualizar y actualizar el código, usted puede continuar desarrollando el código en el modelo o en el código
externo y mantener ambos sincronizados.
Desarrollo basado en código
Como mencionamos antes en el escenario 3, usted puede modernizar el código usando el desarrollo orientado a modelo
generando código en Rational Rhapsody y actualizando el código externo con los cambios. La generación de código se puede
realizar en la herramienta de modelaje preservando las directivas del código en los archivos fuente originales. La opción de
ejecutar la generación de código es útil para traer los cambios del modelo de vuelta al código. La animación de modelo se puede
usar para mostrar el comportamiento del código. En este escenario, el código es el maestro.
Modernizar código utilizando desarrollo orientado a modelo
Usted puede optar por mantener el código en el modelo. Esto es la base del escenario 4. El criterio fundamental a utilizar para
determinar si desea visualizar código como se hace en el escenario 1-3 ó mantenerlo directamente en el modelo para hacer
desarrollo orientado a modelo, reside en decidir si desea generar código estrictamente en el modelo, o no. Si mantiene el código
en el modelo, hacer cambios adicionales de diseño y mejoras se hacen más eficientemente. El modelo es el maestro.
Rational Rhapsody ahora muestra un ejemplo simple de cómo UML permite reutilizar el código existente. Este es ejemplo de un
usuario que crea una nueva caja registradora con base en hardware existente. El primer diagrama se llama diagrama Package.
Provee una vista de alto nivel de los paquetes del sistema. Los paquetes son CashRegister, el paquete de hardware, y un enlace
entre ellos a través del paquete Interfaces. El paquete Interface permite una sencilla reutilización del hardware, además de la
capacidad de cambiar hardware existente por hardware nuevo, según sea necesario.
Figura 1. Diagrama Package
El siguiente diagrama de clase muestra cómo la Caja Registradora hereda desde la interfaz IBarcodeReader. Esto permite que la
clase CashRegister implemente la interfaz y reciba comunicación desde la clase BarcodeReader, la cual vino desde el paquete de
hardware externo. La clase BarcodeReader no se necesita mostrar en el diagrama, a pesar de que la interfaz Barcode Reader se
muestre (Figura 2), porque CashRegister necesita implementar únicamente la interfaz para obtener el comportamiento deseado.
Figura 2. Diagrama de clase
http://www.ibm.com/developerworks/ssa/rational/library/reuse-code-centric-development-modeling/[02/08/2013 10:44:50 a.m.]
Reutilización exitosa de código con desarrollo y modelaje basado en código
El diagrama de clase de la Figura 3 muestra cómo la clase Tester hace una inclusión de un archivo de origen C desde una fuente
externa. La fuente externa se visualiza para mostrar las operaciones y variables desde el archivo point_of_sale para que la clase
Tester puede determinar qué puede llamar.
Figura 3. Clase Tester incluyendo un archivo de origen C de una fuente externa
En la Figura 4, un diagrama de secuencia animada muestra una clase CashRegister escaneando códigos de barra en los
productos y agregando los productos en la factura del cliente.
Figura 4. Diagrama de secuencia animada
http://www.ibm.com/developerworks/ssa/rational/library/reuse-code-centric-development-modeling/[02/08/2013 10:44:50 a.m.]
Reutilización exitosa de código con desarrollo y modelaje basado en código
La animación permite ejecutar una aplicación, ya fuere en un huésped o en un objetivo, y luego visualizar los resultados en el
diseño con Rational Rhapsody. Ésta es una herramienta de importancia para visualizar comportamiento de código y depurar
código, lo cual es importante para reutilizar código. Visualizar código estático muestra sólo las rutas potenciales al mismo. Un
diagrama de secuencia como el de la Figura 4 muestra cómo la ruta hacia la aplicación responde realmente al estímulo externo.
Por consiguiente, usted puede ver qué ruta se ejecuta en el ciclo de vida real de una aplicación. Por lo tanto, animar un modelo es
una forma de probar y verificar el comportamiento de su código reutilizable.
Volver arriba
Reutilización e ingeniería de línea de producto, o PLE
El Santo Grial de la reutilización es algo llamado PLE (ingeniería de línea de producto). Es la práctica de identificar recursos en
su aplicación que variarán según el producto, y de hacer la correlación de esos recursos con las variaciones específicas de cada
producto de modo que, finalmente, usted tenga un conjunto de códigos que soporte múltiples productos. Esto es un Santo Grial
porque la meta principal de la reutilización es reutilizar en el próximo producto que salga. Esto también es el objetivo de PLE.
Las otras opciones para crear múltiples productos son clonar y reconocer o utilizar ifdefs.
Clonar y reconocer crea un conjunto de cuestiones tales como cuando uno encuentra un error en un producto y se
pregunta ¿existe también en otros productos? ¿Qué sucede cuando uno quiere propagar un recurso por los productos?
Esto puede volverse una pesadilla cuando se busca cambios en los clones.
Ifdefs hacen que el código sea ilegible y muy difícil de navegar cuando se intenta trabajar en un producto específico.
El modelaje ayuda a resolver este dilema al agregar un nivel de abstracción por encima del código. Se puede identificar un
elemento de modelo específico (una clase, una función o cualquier otra cosa) que correlaciona con un recurso y luego agregar
etiquetas para las diferencias específicas de producto. Como es gráfico, las etiquetas pueden ser enlaces que se pueden
investigar como sea necesario. Además, cuando usted genera el código desde el modelo, éste utiliza sólo las etiquetas para el
producto específico, por lo tanto usted obtiene código personalizado para cada producto. Luego, usted realiza los cambios en el
modelo, y cada producto que tiene ese recurso recibe esos cambios. No hay necesidad de propagar los cambios de producto en
producto.
Volver arriba
Resumen
En resumen, dado que los plazos son cortos, la reutilización es esencial para cumplir con las fechas de entrega. El secreto es
cómo crear reutilización efectiva en lo que usted hace. Primero, asegúrese de entender su arquitectura y luego profundice en los
componentes que desea reutilizar. El modelaje es valioso en este proceso porque ayuda a analizar el código y a tomar decisiones
acerca de qué se reutiliza. Una vez que se conoce la arquitectura general, crear sus productos en un flujo de trabajo de PLE se
hace mucho más sencillo de hacer y mantener.
http://www.ibm.com/developerworks/ssa/rational/library/reuse-code-centric-development-modeling/[02/08/2013 10:44:50 a.m.]
Reutilización exitosa de código con desarrollo y modelaje basado en código
Recursos
Aprender
Para aprender más acerca de esta herramienta de desarrollo colaborativo orientada a modelos para sistemas
incorporados, comience con Introducción a Rational Rhapsody y la página de Rational Rhapsody en IBM developerWorks.
Para leer documentación, consulte el centro de información de Rational Rhapsody 7.6 (consulte Changing the location of
help content para obtener una copia local de la documentación).
Consulte el IBM® Rational® Rhapsody® Design Manager para colaborar, compartir, revisar y gestionar diseños y modelos
con todo el equipo de ingeniería.
Visite el área del software Rational en developerWorks donde encontrará recursos técnicos y mejores prácticas para los
productos Rational Software Delivery Platform.
Permanezca actualizado con los eventos técnicos y webcasts de developerWorks enfocados en una variedad de
productos IBM y de temas de la industria de TI.
Asista a presentaciones breves developerWorks Live! para actualizarse rápidamente sobre productos y
herramientas IBM y sobre las tendencias de la industria.
Vea las Demostraciones on demand de developerWorks que van desde la instalación de productos y
demostraciones de configuración para principiantes, hasta funcionalidades avanzadas para desarrolladores
experimentados.
Mejore sus habilidades. Consulte la sección de capacitación y certificación Rational, que incluye muchos tipos de cursos
en un amplio rango de temas. Usted puede tomar algunos de ellos en cualquier lugar, en cualquier momento, y muchos de
los "Iniciación a" son gratuitos.
Obtener los productos y tecnologías
Descargue Rational Rhapsody Developer y pruébelo gratis por 30 días.
Evalúe software IBM de la manera que le convenga: Descárguelo para probarlo, pruébelo online, utilícelo en un entorno de
nube, o pase un par de horas en el SOA Sandbox aprendiendo cómo implementar eficientemente la arquitectura orientada
al servicio.
Comentar
Únase a la discusión en el foro Rational Rhapsody.
Califique o reseñe Rational software. Es fácil y rápido. ¡De verdad!.
Comparta su conocimiento y ayude a otros que utilicen software Rational, escribiendo un artículo developerWorks. Sepa
qué hace que un artículo developerWorks sea bueno y cómo continuar.
Siga el software Rational en Facebook, Twitter (@ibmrational), y YouTube, y publique sus comentarios y solicitudes.
Haga y responda preguntas y aumente su experiencia y conocimiento cuando participe en los foros, cafésy la wikis
Rational.
Socialice acerca del liderazgo de pensamiento. Únase a la comunidad Rational para compartir su experiencia en el
software Rational y conectarse con sus pares.
Sobre los autores
Joanne Scouler es arquitecta de planes de estudio en IBM, donde realiza planificación empresarial y desarrollo de
cursos para software de ingeniería de sistemas. Durante los últimos seis años ella desarrolló y dio cursos de
capacitación sobre la herramienta Rational Rhapsody. Su experiencia en capacitación sobre sistemas incorporados
y modelaje de software consistió en trabajar con diversos clientes, entre los cuales se encuentran Raytheon,
Draper Lab, Pratt & Whitney, Zoll Medical, y Kollmorgren. Antes de IBM, Joanne trabajó en Telelogic, HewlettPackard, 3Com Corporation, Symantec, y Addison-Wesley.
Martin Bakal tiene 15 años de experiencia en el campo del software incorporado, incluyendo su trabajo como
ingeniero de la aplicación Rational Rhapsody de IBM, como asesor y como instructor, además de otros varios
roles. Es instructor experimentado de UML y SysML, así como también de proceso IBM Rational Harmony y de
entorno MDD (model-driven development) IBM Rational Harmony. En el transcurso de su actividad de capacitación
y asesoría sobre sistemas incorporados y modelaje de software trabajó con una amplia lista de clientes en todo el
mundo, incluyendo Lockheed Martin, General Dynamics, GM, y Philips. Escribió una multiplicidad de artículos
técnicos acerca de modelaje, reutilización y líneas de productos, además de diversos otros temas.
http://www.ibm.com/developerworks/ssa/rational/library/reuse-code-centric-development-modeling/[02/08/2013 10:44:50 a.m.]
Reutilización exitosa de código con desarrollo y modelaje basado en código
Califique este artículo
Clasificación promedio (0 voto)
1 estrella
2 estrellas
3 estrellas
4 estrellas
5 estrellas
Enviar
Comentario
Agregar comentario :
Ingrese o regístrese para publicar un comentario.
Nota: los elementos en HTML no son soportados dentro de los comentarios.
Notificarme cuando se añada un comentario
quedan 1000 caracteres
Postear
No hay comentarios en este artículo
Volver arriba
Imprimir esta página
Compartir esta página
Seguir developerWorks
Acerca de
Informar abusos
Privacidad (Inglés)
Contacto
Términos de uso
Accesibilidad (Inglés)
http://www.ibm.com/developerworks/ssa/rational/library/reuse-code-centric-development-modeling/[02/08/2013 10:44:50 a.m.]
Descargar