Hacia Procesos de desarrollo que –además de...
Transcript of Hacia Procesos de desarrollo que –además de...
1
Hacia Procesos de desarrollo que –ademásde software– construyan confianza
Victor Manuel Toro [email protected]
CincoSOFT Ltda.
Tel.: (1)6226350, (1)6230180
Bogotá - Colombia
XXVII Salón de Informática - Septiembre'2007 2
El contexto
● Proyectos de desarrollo de software en modalidadoffshore.
● Proyectos de desarrollo de software locales
● Compañías desarrolladoras pequeñas
XXVII Salón de Informática - Septiembre'2007 3
El Offshore
Offshore:
● Desarrollar en un país de bajos salarios y bajos costos deinfraestructura, software requerido en países de altossalarios y altos costos de infraestructura.
Problemas:
● obtener contactos de negocios
● conocimiento tecnológico efectivo
● gerencia de proyectos
● protección de propiedad intelectual
● Construir confianza !!!
XXVII Salón de Informática - Septiembre'2007 4
El Offshore:
La competencia es en serio!
● Diferencia de precios:
➢ $(1 ingeniero gringo)
➢ = $(2.5 ingenieros colombianos)
➢ = $(4 ingenieros de India)
➢ = $(6 ingenieros de China) ...
● Diferencia de empresas:
➢ India: compañías de mas de 3.000 Ingenieros, con una larga
trayectoria
➢ China: Costos muy bajos ... compañías con gran solidez
financiera
XXVII Salón de Informática - Septiembre'2007 5
El Offshore:
No todos están de acuerdo !
XXVII Salón de Informática - Septiembre'2007 6
El Offshore:
No todos están de acuerdo !
XXVII Salón de Informática - Septiembre'2007 7
El Offshore:
Inicialmente no hay confianza !
xxxxxxxxx
XXVII Salón de Informática - Septiembre'2007 8
Devolvámonos un poco,para aclarar algunos conceptos
XXVII Salón de Informática - Septiembre'2007 9
Cinco conceptos relacionados pero distintos:
Lenguaje
Herramienta
ProcesoMetodología
Teo
ría
XXVII Salón de Informática - Septiembre'2007 10
Aclarando algunos conceptos:
Lenguaje
● Forma de expresión:➢ Sintaxis (elementos del lenguaje)
➢ + Gramática (reglas para combinar dichos elementos)
➢ + Semántica (significado de las frases del lenguaje).
● Ejemplos de Lenguajes:➢ Programación: Java, C, VisualBasic, RPG, Cobol, C#, ...
➢ Análisis/Diseño:➥ Diagramas Entidad-Relación, Diagramas de Flujo de Datos, ...
➢ Especificación: Z, B, VDM, ...
➢ Ingeniería de Software: UML
Lenguaje
Herramienta
ProcesoMetodología
Teo
ría
XXVII Salón de Informática - Septiembre'2007 11
Aclarando algunos conceptos:
Teoría
● Abstracción / idealización:➢ Lenguaje (definiciones, símbolos)
➢ + Axiomas
➢ + Reglas de inferencia.
● Ejemplos de Teorías:➢ Matemáticas
➢ Teoría de Conjuntos
➢ Autómatas finitos
➢ Lenguajes formales
➢ ...
Lenguaje
Herramienta
ProcesoMetodología
Teo
ría
XXVII Salón de Informática - Septiembre'2007 12
Aclarando algunos conceptos:
Herramienta
● Medio de trabajo:
➢ Editor de un(os) lenguaje(s)
➢ + Librería de elementos reutilizables
➢ + Ayudas “inteligentes”
➢ + Compilador ó Traductor hacia/desde otro(s) lenguaje(s)
● Ejemplos de Herramientas:➢ Eclipse, JEdit, JBuilder, JDevelopper, ...
➢ VisualStudio.NET
➢ Designer-2000, Erwin, PowerBuilder, OracleForms,...
Lenguaje
Herramienta
ProcesoMetodología
Teo
ría
XXVII Salón de Informática - Septiembre'2007 13
Aclarando algunos conceptos:
Metodología
● Forma ordenada de pensar:➢ Lenguajes (para expresar el problema y la solución)
➢ + forma de plantear problemas
➢ + forma de construir poco a poco una solución
➢ + forma de verificar que una solución es correcta
➢ + conjunto de patrones (ó paradigmas deseables)
● Ejemplos de Metodologías:➢ Programación Estructurada {Pre y Post condiciones, invariantes, ...}
➢ Metodología Entidad-Relación para diseño de B. de D.
➢ Metodología Orientada a Objetos
Lenguaje
Herramienta
ProcesoMetodología
Teo
ría
XXVII Salón de Informática - Septiembre'2007 14
Aclarando algunos conceptos:
Proceso
● Organización de actividades y personas:➢ La secuencia de actividades
➢ + el conjunto de Entregables(documentos, código, pantallas, manuales, ...)
donde cada Entregable:➥ se produce siguiendo cierta metodología
➥ se desarrolla usando ciertas herramientas, y
➥ se expresa en determinado lenguaje
➢ + una asignación de responsabilidades
➢ + una dinámica de interacción entre los miembros del grupo
➢ + un conjunto de herramientas adecuadamente sintonizadas
que sigue un grupo para desarrollar software.
Lenguaje
Herramienta
ProcesoMetodología
Teo
ría
XXVII Salón de Informática - Septiembre'2007 15
Lenguaje
Herramienta
ProcesoMetodología Ejemplos de
Proceso de desarrollo de Software
● “USDP Unified Software Development Process”
● También se le llama “RUP Rational Unified Process”
XXVII Salón de Informática - Septiembre'2007 16
Lenguaje
Herramienta
ProcesoMetodología Ejemplos de
Proceso de desarrollo de Software
● “Extreme Programming”
● También se le llama XP ó XProgramming
XXVII Salón de Informática - Septiembre'2007 17
Lenguaje
Herramienta
ProcesoMetodología Ejemplos de
Proceso de desarrollo de Software
● “TSP Team Software Process”
● Respaldado por el “SEI Software Engineering Institute”
XXVII Salón de Informática - Septiembre'2007 18
Lenguaje
Herramienta
ProcesoMetodología Ejemplos de
Proceso de desarrollo de Software
● “Su propio proceso”
XXVII Salón de Informática - Septiembre'2007 19
Madurez de un Proceso de Desarrollo
● Un Proceso Desarrollo de Software es MADURO en
la medida que:
➢ Está escrito
➢ Es usado por TODOS los miembros del grupo
➢ Cubre todas las etapas del desarrollo
➢ Es efectivo
➢ Es eficiente
➢ Es repetible, medible, optimizable, ...
● Ver Software Process Capability Maturity Model
Integration CMMI [http://www.sei.cmu.edu/cmmi]
XXVII Salón de Informática - Septiembre'2007 20
CMM / CMMI
XXVII Salón de Informática - Septiembre'2007 21
¿ Qué es una compañía de software certificada ?
● Hace explícito su proceso de desarrollo de software
● Documenta su proceso de desarrollo (por escrito)
● Estandariza sus entregables (i.e., crea plantillas)
● Sintoniza sus herramientas para apoyar el proceso
● ...
● Incorpora en su proceso de software las recomenda-ciones de algún Estándar de Calidad (CMMI, ISO)
● Contrata Inspectores autorizados para que revisen, yeventualmente certifiquen, que su proceso dedesarrollo cumple con el Estándar de Calidad.
XXVII Salón de Informática - Septiembre'2007 22
¿Qué es implantar un estándar de Calidad de Software?
Nuestro Procesode Software
Planeación------------------Seguimiento de Proyectos-------------------Capacitación------------------------Control de Versiones------------------Revisiones de código por pares------------------Administración de Requerimientos---------
Estándar deCalidad de Software
XXVII Salón de Informática - Septiembre'2007 23
Proceso de Desarrollo de Software:
● Secuencia de actividades, con
asignación de responsabilidades
● Definición y estandarización de entregables(documentos, código, pantallas, manuales, ...)
● Dinámica del ciclo central del desarrollo:
➢ (ajustes al) diseño detallado
➢ creación (modificación) del código fuente
➢ pruebas/registro de problemas (errores, cambios, malentendidos,
mal uso)
XXVII Salón de Informática - Septiembre'2007 24
Proceso de desarrollo de software:
Definición y Estándarización de Entregables
● Documentos que se elaboran y entregan a lo largo delproyecto (especificación de lógica del negocio, diseño de casos de uso,
diseño de B.D., registros de prueba, manuales, …)
● Cada entregable:➢ tiene una Tabla de Contenido definida de antemano
➢ se produce siguiendo cierta metodología
➢ se desarrolla usando ciertas herramientas
➢ se expresa en determinado lenguaje(s)
● Con excepción de los “Manuales de Usuario”, lacantidad y nivel de detalle de los entregables debemantenerse en el “mínimo necesario”.
XXVII Salón de Informática - Septiembre'2007 25
Prácticas de Extreme Programming
XXVII Salón de Informática - Septiembre'2007 26
Dos prácticas básicas
● Estandarización del código:➢ Indentación
➢ Nomenclatura
➢ Organización en directorios
➢ Documentación
● Propiedad colectiva del código:➢ El código no es de quien lo escribió ...
➢ ... el código es del grupo
➢ Cualquier miembro del grupo lo puede modificar ...
➢ ... si sigue las reglas
XXVII Salón de Informática - Septiembre'2007 27
Estándar de organización y documentación del código:
Nuestra experiencia
Estandar de organización:
• TODO el proyecto bajo una misma jerarquía(código, descriptores, sql, librerias, manuales …)
• Organizado por Módulos
• Dentro de cada módulo, organizado por casos de Usoy Web-services
• Correspondencia de nombres(directorio = caso de uso = clase java, …)
• Administrado por un controlador de versiones(CVS, SubVersion, …).
XXVII Salón de Informática - Septiembre'2007 28
Integración Permanente
?
XXVII Salón de Informática - Septiembre'2007 29
Desarrollo en Grupo
Repositorio deVersiones
Servidor deBase de Datos
ServidorJ2EE
XXVII Salón de Informática - Septiembre'2007 30
Integración permanente
Cada desarrollador:
● tiene copia completa de todo el sistema
● modifica ó agrega algunos archivos fuentes
● recompila el sistema completo
● corrige problemas en los fuentes que está agregando ómodificando ... ó en otros
● corre las pruebas unitarias
● compara su versión con la versión del repositorio
● actualiza y/ó mezcla su copia con la del repositorio
● registra su nueva versión
XXVII Salón de Informática - Septiembre'2007 31
Integración permanente
Se requiere:
● Computador potente para cada desarrollador
● Todas las herramientas en cada desarrollador
● Estandarizar el código: ← XP !➢ organización
➢ documentación
➢ indentación
➢ nomenclatura
● Propiedad colectiva del código ← XP !
XXVII Salón de Informática - Septiembre'2007 32
Sistema de software
Pruebas a lo largo de todo elproceso de construcción
Unitarias Integración Funcional
<--
----
Ent
rada
s --
----
>
<--
----
Sal
idas
---
--->
XXVII Salón de Informática - Septiembre'2007 33
Pruebas permanentes:
Pruebas Unitarias
● OBJETIVO: Ejercitar frecuentemente los métodospúblicos de las clases.
● CÓMO ?: Escribir/generar código que invoque cadamétodo público con distintas combinaciones de susargumentos, y verificar que la respuesta (ó el efectocausado) sean correctos.
● CUÁNDO ?: Se aplican automáticamente cada vezque:
➢ Hay cambios en la implementación de un método
➢ Se hace un Refactoring
➢ Como pre-requisito para registrar una nueva versión
XXVII Salón de Informática - Septiembre'2007 34
Pruebas permanentes:
Pruebas Unitarias
● El conjunto de pruebas:
➢ se va incrementando a lo largo del proyecto.
➢ hace parte del proyecto (en un árbol paralelo)
➢ está incluído en el sistema de versiones.
● JUnit (Java) y NUnit (.NET) son herramientas libres
que ayudan a:
➢ construir las pruebas
➢ aplicarlas automáticamente
➢ obtener diversos reportes.
XXVII Salón de Informática - Septiembre'2007 35
Construir confianza con el cliente en el exterior
● NO a la estrategia usual en Colombia:
➢ 30% al inicio
➢ 30 % en la mitad
➢ 40 % al final
● SI a muchos pagos pequeños “contra entrega”:
➢ Cronograma muy detallado de actividades y “Entregables”
➢ Estimación “sustentada” de tiempo y esfuerzo
➢ Un pago pequeño asociado a cada entregable
XXVII Salón de Informática - Septiembre'2007 36
Proceso de Desarrollo de Software:
Nuestra experiencia
Inicio Elaboración Transición1 2 3
Construcción
...Ent
rega
Ent
rega
Ent
rega
Ent
rega
RU
P
Ext
rem
eP
rogr
amm
ing
Tests de carga
Tests funcionales
Tests integración
Tests unitariosRefinar InterfazPantallas / Web-Servicey Navegación
Refinar Modelo de Datosdel Caso de Uso / Web-Service
Aprobacióndel usuario
ProgramaciónPara cadaCaso de Uso ó Web-Service:
Con
trat
o 1
Esp
ecifi
caci
ón
Pro
pues
ta
Con
trat
o 3
Sop
orte
Con
trat
o 2
Des
arro
llo
XXVII Salón de Informática - Septiembre'2007 37
Proceso de desarrollo de software ==> Estandarización de Entregables:
Nuestra experiencia
Ext
rem
eP
rogr
amm
ing
Inicio Elaboración Transición1 2 3
Construcción
Tests de carga
Tests funcionales
Tests integración
Tests unitarios
• Inventario Casos de Uso• Descripción global Casos de Uso• Modelaje BPM
• Especificación de la Lógica del Negocio
• Modelaje E-R (global)
Programación
...Ent
rega
Ent
rega
Ent
rega
En
treg
a
RU
P
• Diseño detallado deinterfaz del Caso deUso ó del Servicio
• Diseño de datosdel Caso de Uso ódel servicio
• Nueva versión del software(incremental y acumulativa)
• Manual de usuario del módulo
• Manuales definitivos
Aprobacióndel usuario
Refinar InterfazPantallas / Web-Servicey Navegación
Refinar Modelo de Datosdel Caso de Uso / Web-Service
Para cadaCaso de Uso óWeb-Service:
XXVII Salón de Informática - Septiembre'2007 38
AmbienteDesarrollo
Stakeholders
Architecture & Designteam
Business LogicTeam
Quality Assuranceteam
Development Team1
Development Team2
Directives,GuidelinesPriorities,Learned lessons
Business Logic
knowledge
New releases
Improvements
New
code, fixesNew
cod
e, fi
xes
Detailed design, test scripts,
errors detected, modifications
Det
aile
d de
sign
, tes
t scr
ipts
,
erro
rs d
etec
ted,
mod
i fica
tions
Architecture:detailed
specification
Formalspecification
of key aspects
Standards:programming,
screens,...
Globaldesign
Developmentenvironment,tools selection
& configuration
Central Repository:Configuration control
Version controlTesting environment
Bug database and trackingDemo environment
De
taile
d d
esi
gns
Co
nfig
ura
tion
&a
dmin
istr
atio
n
Te
st s
crip
ts
Co
de(c
ritic
al s
ubsy
ste
ms)
Error report
New releases Changes
XXVII Salón de Informática - Septiembre'2007 39
Conclusiones
● Los proyectos de software con las tecnlogías actuales(Java EE ó Microsoft .NET) son de alto riesgo.
● Los procesos iterativos e incrementales mitiganrápidamente los riesgos.
XXVII Salón de Informática - Septiembre'2007 40
Referencias
● http://www.martinfowler.com
● http://www.extremeprogramming.org
● http://www.xprogramming.com
● http://www.junit.org
● http://groups.yahoo.com/group/extremeprogramming
● http://www.google.com + “Extreme Programming”
41
¿ Preguntas ?
¿ Comentarios ?
¿ Otros puntos de vista ?