El documento describe seis mejores prácticas para el desarrollo de software: 1) desarrollo iterativo e incremental, 2) gestión de requerimientos, 3) uso de arquitecturas basadas en componentes, 4) modelado visual, 5) comprobación continua de calidad, y 6) control de cambios. La aplicación de estas prácticas permite una detección temprana de problemas, mejora la comunicación en el equipo, y reduce el costo de corrección de errores.
1. Seis mejores prácticas:
1. Desarrollo iterativo.
2. Gestión de los requerimientos.
3. Uso de arquitecturas basadas en
componentes.
4. Modelado visual.
5. Comprobación continua de la calidad.
6. Control de los cambios.
2. Desarrollo iterativo e incremental:
◦ No se realiza una sola entrega del sistema sino
una serie de entregas, cada una con sus
funcionalidades incrementadas.
+ + =
3. Análisis Diseño Codificación
Prueba de
integración Entrega
Iteración 1
Iteración n
Cada iteración
implementa un
subconjunto de la
funcionalidad
total.
Cada iteración
debe tener
definida su
planificación de
tiempos
4. Soluciones a los problemas del
desarrollo:
◦ Los malentendidos se hacen evidentes al principio del
ciclo de vida, cuando es posible reaccionar a ellos.
◦ Incentiva el feedback con el usuario permitiendo
ahondar en los requerimientos.
◦ Las pruebas continuas permiten un mejor conocimiento
del estado del proyecto.
Análisis Diseño Codificación
Prueba de
integracio
n
Entrega
5. Soluciones a los problemas del
desarrollo:
◦ Detección temprana de inconsistencias entre los
requerimientos, el diseño y la implementación.
◦ Balanceo de la distribución de la carga de trabajo en el
equipo (por ejemplo equipo de pruebas).
Análisis Diseño Codificación
Prueba de
integracio
n
Entrega
6. Requerimientos:
◦ Condición o capacidad que debe cumplir una
aplicación.
◦ Son “dinámicos”, cambian durante el ciclo de
vida del desarrollo.
◦ La detección de los requerimientos
fundamentales es un proceso continuo, no es
posible completar esta tarea al comienzo del
desarrollo.
7. ¿En qué consiste la gestión de los
requerimientos?
◦ Recabar
◦ Organizar
◦ Documentar
◦ Evaluar los cambios y su impacto.
◦ Documentar análisis de costo-beneficio y
decisiones tomadas.
8. Soluciones a los problemas del
desarrollo:
◦ Las comunicaciones en el equipo se basan en
requerimientos definidos.
◦ Facilita la priorización y filtrado de los
requerimientos.
◦ Posibilita la valoración objetiva de las
funcionalidades y el desempeño de la
aplicación.
9. Soluciones a los problemas del
desarrollo:
◦ Facilita la detección de inconsistencias.
◦ Utilizando la herramienta adecuada es posible
mantener un repositorio de requerimientos.
10. Componente:
◦ Pieza de software que encapsula funcionalidad.
Gestión de
Clientes
UML 1.x y reconocido en UML 2.0 por
compatibilidad hacia atrás UML 2.0
11. Una arquitectura basada
en componentes define:
◦ La organización de una
aplicación o conjunto
de aplicaciones.
◦ Elementos
estructurales e
interfaces entre ellos.
12. La definición de la arquitectura de un
sistema :
◦ Permite gestionar los distintos puntos de vista
existentes en un proyecto (usuarios, analistas,
desarrolladores, etc.).
◦ Facilita el control del proceso de desarrollo
iterativo e incremental.
13. Soluciones a los problemas del
desarrollo:
◦ La utilización de componentes facilita la
creación de arquitecturas robustas.
◦ La modularidad permite una clara división de
responsabilidades entre los elementos del
sistema.
◦ Se favorece la reutilización del software a
través de la utilización de componentes
comerciales.
15. Octubre 2009
Jorge Alberto Lorenzo Losada
jorge.lorenzo@ono.com
Modelo
Ayuda a
razonar y
sacar
conclusiones
Puede
extenderse
para abarcar
otros
modelos
posibles
Permite
compartir el
conocimiento
acerca de una
situación real
17. Modelo visual:
◦ Facilita la gestión de los distintos modelos permitiendo
exponer los detalles necesarios.
◦ Mejora la capacidad del equipo de gestionar la
complejidad del software.
◦ Combinado con el desarrollo iterativo permite exponer,
valorar y comunicar los cambios en la arquitectura.
◦ Con herramientas adecuadas es posible sincronizar los
modelos con el código fuente en cada iteración.
18. Soluciones a los problemas del
desarrollo:
◦ Los diagramas de casos de uso permiten
especificar el comportamiento de una no
ambigua.
◦ Se captura el diseño sin ambigüedades.
◦ Quedan en evidencia las arquitecturas no
modulares o rígidas.
◦ Es posible ocultar los detalles cuando es
necesario.
19. Arreglar los problemas del software se torna más
caro cuanto más tarde se los trate:
20. En cada iteración del desarrollo:
◦ Crear un plan de pruebas para cada uno de los
escenarios clave.
◦ Evaluar la funcionalidad del sistema recabando
los escenarios donde se han producido fallos.
21. Soluciones a los problemas del
desarrollo:
◦ La valoración del estado del proyecto se hace objetiva al
basarse en los resultados de las pruebas.
◦ Se exponen las inconsistencias en los requerimientos,
diseños e implementaciones.
◦ Detección temprana de los defectos del software,
reduciendo el coste de arreglarlo.
22. Coordinación de las actividades de los
desarrolladores y sus equipos estableciendo
workflows para la gestión de los cambios.
La coordinación permite la mejor asignación de
los recursos basada en la prioridades del
proyecto y sus riesgos.
23. Soluciones a los problemas del
desarrollo:
◦ Los requerimientos de cambios facilitan las
comunicaciones claras.
◦ Las estadísticas de cambios proveen buenas métricas
para valorar objetivamente el estado del proyecto.
◦ Permite valorar y controlar la propagación de los
cambios.
24. Mejores prácticas que permiten atacar las causas
principales de los problemas en el desarrollo del
software:
1. Desarrollo iterativo.
2. Gestión de los requerimientos.
3. Uso de arquitecturas basadas en
componentes.
4. Modelado visual.
5. Comprobación continua de la calidad.
6. Control de los cambios.