5. Programación
Copy&Paste
Copy and paste programming is a pejorative term
to describe highly repetitive computer programming code
apparently produced by copy and paste operations.
It is frequently symptomatic of a lack of programming competence,
or an insufficiently expressive development environment,
as subroutines or libraries would normally be used instead.
In certain contexts it has legitimate value, if used with care.
http://en.wikipedia.org/wiki/Copy_and_paste_programming
6. Programación
Copy&Paste
• Código de programación repetitivo
Originado probablemente por operaciones copy&paste
• Síntoma de:
Carencia en el diseño de la aplicación
Carencia en el lenguaje/la tecnología de programación
• Puede ser valioso
7. Programación
Copy&Paste
• Potenciales problemas:
Propenso a errores
➢ “se me ha olvidado cambiar x después de pegar”
Difícil mantenimiento
➢ “hay que cambiar 23 archivos donde había pegado el código”
Comportamiento inesperado
➢ “pero este código... ¿en realidad qué hace y por qué funciona?
8. Programación
Copy&Paste
...puede ayudar a evitar la programación copy&paste
h t t p ://w w w .sx c .h u /p h o t o /1 1 52 1 2 7
12. Historia
• La CIT adapta Métrica III > gvMétrica
Métrica III
➢ Desarrollada por el Ministerio de Administraciones Públicas
➢ De obligada aplicación en todas las administraciones españolas
gvMétrica
➢ Se seleccionaron y adaptaron algunos Procesos, Actividades y Tareas
para satisfacer las necesidades de la Consellería.
➢ Se definieron métodos, prácticas y técnicas específicas
• La mayor parte de ellas basadas en UML.
➢ Centrada en el Desarrollo de Sistemas de Información.
13. Proyecto gvCASE
• Proyecto gvPontis
Proyecto de CIT para migrar a Software Libre
• Estudio del ecosistema de herramientas
CASE libres:
Abril 2006
No se encontrar una herramienta que soportara la mayoría de los
requisitos
• Decisión: Nueva herramienta CASE libre
La Universidad Politécnica de Valencia propone Eclipse como
plataforma base
Proyecto gvCASE: Abril 2007
14. Objetivo del
Proyecto
Crear una herramienta libre de
Crear una herramienta libre de
soporte al método de desarrollo
soporte al método de desarrollo
de software gvMétrica
de software gvMétrica
• Método de desarrollo de software
Es la aplicación de la Ingeniería al Desarrollo de Software
Utiliza Técnicas de Modelado (planos del software)
Establece unos Pasos para utilizar las técnicas
15. ¿Qué NO es MOSKitt?
• No es un dibujador (como Visio o Dia)
Aunque hace dibujos/diagramas
• No es un entorno de desarrollo
Aunque está basado en Eclipse
• No es sólo un editor de UML2
Aunque tiene un editor UML2
• No es mágico, ni tecnología alienígena
Aunque puede usarse para generar automáticamente aplicaciones
software
16. ¿Qué SÍ es MOSKitt?
Soporte al método:
gvMétrica Asistentes y Guías Método X Método Y
Transformaciones
entre modelos Trazas
Herramientas
Constructor de métodos
Editor Bases de Datos Editor Requisitos
Editor UML2 Editor BPMN
Infraestructura tecnológica
Exploradores modelos
Gestor Transformaciones
Sincronización modelos
18. Soporte al método
M aPA
Process Analysis/Design Relation DB
Model Models DB
Model
(BPMN) UML2 Postgresql
➔
G raphic Editors
➔
T ransformations DB
➔
Reverse Engineering Prototipe Oracle
➔
M odel M igrations Code DDL
Postgresql
DB
DDL MySQL
Oracle
WBS User Interface
Model (GP) Model
DDL
MySQL
19. Soporte al método
Cheatsheets
Definición y Ejecución
Tareas de Desarrollo Transformaciones
de Modelos
UML BD
BPMN UML
22. ¿Qué es DSDM?
• Desarrollo de Software Dirigido por Modelos
No es@s modelos
• Conceptos Similares
Model Driven Engineering
Model Driven Architecture
Generative Programming
h t t p ://w w w .flic k r .c o m /p h o t o s/9034 9 43 5@ N 00/33 7 44 2 75 08 /
h t t p ://w w w .flic k r .c o m /p h o t o s/9 034 9 43 5@ N 00/33 7 36 1 3 1 2 5 /
23. ¿Por qué DSDM?
• Hacer Software es Complejo
El problema que se debe solucionar ES complejo
El cliente habla con El desarrollador utiliza
conceptos del problema conceptos de la tecnología
24. ¿Por qué DSDM?
• Mismo problema → Misma Solución
No inventarse cada vez una solución
25. ¿Por qué DSDM?
• Ejemplo patrón
Aplicaciones Gestión Información
Problema: Propiedad de una Entidad
Solución:
➢ Añadir columna en BBDD
➢ Añadir widget en interfaz de usuario
➢ Añadir comprobaciones de tipo
➢ Añadir columna en selects, inserts y updates
26. ¿Por qué DSDM?
• La solución
Describir problema utilizando conceptos del problema
Aplicar automáticamente lo patrones de solución
• Evitar
El usuario explica el problema
El programador intenta entender el problema
Mentalmente, resolver el problema con la tecnología
Copiar, pegar y adaptar una solución que se aplicó anteriormente
27. ¿Cómo aplicar DSDM?
1. Definir lenguaje para el dominio
Nuevo lenguaje de dominio específico (DSL)
Extender lenguaje de propósito general (UML con perfiles)
2. Identificar patrones
¿Cómo implementar cada problema?
3. Implementar generadores
A partir de descripciones del problema, aplican los
patrones y producen soluciones (código fuente)
28. ¡¡DSDM no es la panacea!!
Analizar costes :
(inversión vs beneficio)
VS
Crear lenguaje + Programación
Identificar patrones + Copy&Paste
Implementar generador
¿Aplicación singular o repetible?
¿Personal formado?
¿Modelar y generar 100%?
29. ¿MOSKitt para DSDM?
MOSKitt + Eclipse Modeling Project
Infraestructura para desarrollar:
Editores Gráficos
Editores Formularios
Generadores de Código
33. Conclusiones
• Programación Copy&Paste
es peligrosa
• DSDM ayuda a evitarla
• MOSKitt te facilita aplicar
DSDM
• ¿Quién se anima?
h t t p ://w w w .flick r .c o m /p h o t o s/8 5 1 6 91 1 8 @ N 00/9 3 2 96 3 8 1 /
34. N o más “programación
copy & paste”
Generación automática de código con M O SKitt
Jav ie r M u ñ o z
jmunoz@ prodevelop.es
35. Creative Commons
Attribution-Noncommercial-Share Alike 3.0
Unported
• You are free:
to share — to copy, distribute and transmit the work
to Remix — to adapt the work
• Under the following conditions:
Attribution — You must attribute the work in the manner specified by the
author or licensor (but not in any way that suggests that they endorse you or
your use of the work).
Noncommercial — You may not use this work for commercial purposes.
Share Alike — If you alter, transform, or build upon this work, you may
distribute the resulting work only under the same or similar license to this
one
h t t p ://c r e at iv e c o m m o n s.o r g/lic e n se s/b y -n c -sa/3.0/