Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Juan Palacio
http://www.navegapolis.net
jpalacio@navegapolis.net
Rev. Nov - 2005
consecuencia el nivel de garantía que ofrece en cuanto esta travesía tomar como medio de transporte la gestión
a calidad, predictibilidad en los resultados y eficiencia por procesos.
en el desarrollo de software, este tipo de organi- Sí, no es nada nuevo, y leerlo a estas alturas puede dar
zaciones se quedan, lógicamente, en el 1. la sensación de estar desayunando con el periódico del
Que, ¡ojo cuidado! no quiere decir que necesariamente día anterior.
van a producir mal software, de forma ineficiente y con Aparte de las excelencias recogidas en el manual del
retraso, sino que las probabilidades de cumplir las tres consultor sobre la transversalidad de los procesos, que
facetas es baja. atravesando a toda la organización dibuja modelos
Hay equipos que lo consiguen, pero son pocos. La organizacionales sin rigideces departamentales, y
razón es sencilla, los resultados en estos casos son tan alinea con sus flujogramas a toda la empresa en el
buenos como las personas que los desarrollan, y lo mismo sentido con visión centrada en el cliente, y bla,
cierto es que los buenos programadores escasean. bla, bla.
A este modo de producción se le ha venido a llamar Lo cierto es que la gestión por procesos encierra cuatro
"programación heroica", porque todo el peso del factores que hacen posible pasar de grupo de empren-
resultado descansa sobre el "saber-hacer" de los dedores a empresa:
programadores.
El éxito o fracaso de las organizaciones que trabajan
• Repetibilidad de resultados. Al conseguir que la
sin metodologías depende del conocimiento tácito de
calidad del resultado sea consecuencia del proceso,
su personal, pero teniendo en cuenta que se trata del
producir aplicando el mismo proceso garantiza la
conocimiento que cada uno traía ya de la calle, o del
homogeneidad de los resultados.
que adquiere motu proprio, porque estamos hablando
de "ninguna metodología", lo que implica que como • Escalabilidad. Es una consecuencia de la repe-
mucho los procesos de formación de la empresa llegan tibilidad. No sólo un equipo consigue resultados
al "ahí tienes manuales y libros, por si hubiera algo que homogéneos en todos los proyectos, sino que los
no sabes". obtienen todos los equipos.
• Mejora continua. Al aplicar meta-procesos que
Este es sin duda el modelo con el que empiezan
muchas empresas "start-up": un equipo de empren- trabajan sobre los propios procesos de producción,
dedores con talento, capaces de construir sistemas de midiendo y analizando los resultados se obtienen
los criterios de gestión necesarios para aplicar
software con calidad.
Los resultados serán tan buenos como ellos los sepan medidas que mejoran de forma continua la
hacer. El cumplimiento de agendas dependerá de su eficiencia y calidad de los procesos base, y por
capacidad de previsión y organización. Pero no hay que tanto de los resultados.
engañarse; en este caso no se trata de empresas que • Un know-how propio, consiguiendo finalmente
saben hacer software, sino de personas que saben hacer una empresa que sabe hacer, porque su modelo de
software. procesos termina conteniendo un activo valioso de
Y esta situación dibuja el guión común a todas las la organización: la clave para hacer las cosas bien,
pequeñas empresas de desarrollo de soft que surgen de con eficiencia y de forma homogénea.
cero, impulsadas tan sólo por el empuje de sus
emprendedores: pueden llegar todo lo lejos que la
combinación del talento y de la capacidad de marketing No sólo son procesos
de sus creadores les permitan.
O sea, en ocasiones acabarán cerrando, y en otras Los procesos marcan pautas para realizar el trabajo,
alcanzarán un nivel de estabilidad tan mediocre o tan pero sin las personas y las herramientas (tecnología)
brillante como dicha combinación les permita. Y si una necesarias, lo que se puede producir con ellos es más
vez logrado ese nivel de equilibrio desean proyectar bien poco.
mayor crecimiento a su organización se enfrentan a un Las únicas combinaciones válidas para formar
reto importante: sistemas capaces de producir resultados son:
pasar de personas que saben hacer software a empresa
que sabe hacer software. Salto que supone que no van a Personas + tecnología Producción heroica
ser ya ellos, sino su empresa quien deberá producir de
Personas + procesos + Producción basada en
forma eficiente y repetible en todos sus proyectos,
tecnología procesos
resultados de calidad. Y esta es otra aventura en la que
muchos fracasan teniendo que regresar a la casilla de
salida, o si el "roto" del intento ha sido muy grave,
terminar cerrando, o como mal menor dejándose
adquirir por algún competidor más o menos grande del
sector.
de relevancia que van a tener el capital humano y el lo que éstos dependen mucho menos del conocimiento
estructural. tácito de sus cocineros, y en su mayor parte se deben a
los procesos y la tecnología empleada.
Veámoslo con un ejemplo, comparando la relevancia
de ambos en dos empresas del mismo sector: Los hornos regulan automáticamente el tiempo y la
hostelería. temperatura, los ingredientes se producen también en
Por un lado pensemos en un exquisito restaurante de base a unos procesos, y se distribuyen de forma masiva
cocina vasca (por ejemplo), y por el otro en un a todos los establecimientos en estuches, ambientes
establecimiento de PhonoPizza (también por ejemplo). frigoríficos y medios de transporte en base a unos
Al margen de consideraciones gastronómicas, ambos procesos que son los principales responsables de los
negocios tienen perfectamente claros su identidad, resultados.
personalidad y segmento; ambos tienen también su
propio patrón de atributos de calidad sobre el que Por esta razón resulta mucho más fácil, o en lenguaje
medirse. empresarial, menos costoso, reemplazar al personal de
cocina de un establecimiento de PhonoPizza que al de
En el segundo modelo la empresa tiene una serie de un restaurante de cocina vasca.
procedimientos para garantizar de forma continua la
calidad de sus resultados (calidad y repetibilidad), por
Figura 2
En esta tarea nunca está dicha la última palabra, y la La visión: Qué quiere llegar a ser la organización y
labor de innovación constante en procesos y tecnología cuál es su meta.
puede ir ampliando los límites de valor a un factor para Estrategia:, foco y plan de negocio, contemplando el
conseguir un nuevo equilibrio con mejores parámetros mercado, las fortalezas y debilidades propias, etc. Cuál
de eficiencia y calidad en el sistema. es la ruta que se ha perfilado para alcanzar esa meta.
Sin saber adónde se va, difícilmente se puede diseñar la
estrategia para lograr el objetivo, y sin estrategia
también es difícil que un gestor pueda ejecutar la
táctica adecuada, que es la que deberá incluir, entre
otras cosas, el modelo de producción empleado.
Gestión y procesos en empresas de software 6
Fig. 4
La norma que se considera como punto de arranque de Un marco de procesos determinará, por ejemplo, la
los posteriores estándares, marcos y modelos que se necesidad de gestionar adecuadamente las modif.-
han extendido a todas las industrias es la desarrollada caciones de requisitos, o de realizar un diseño detallado
por EE.UU. en 1959: “Quality Program Requirements” antes de comenzar la codificación. El valor de los
MIL-Q-9858, que, inicialmente diseñada para el modelos de procesos radica en el conocimiento que
ámbito militar, estableció un esquema auditable (a aportan al señalar las actividades cuya omisión
través de la norma de inspección MIL-I.45208) de los incrementa las posibilidades de fracaso en los
requisitos que los proveedores debían cumplir. proyectos.
El uso de esta norma se fue generalizando, pero de Sin embargo el marco de procesos no dirá, por
forma paralela diferentes países y organizaciones ejemplo, que deba emplearse un sistema basado en
comenzaron a desarrollar las suyas propias. Así por documentos o en base de datos para la gestión de los
ejemplo la OTAN en 1968 adoptó las especificaciones requisitos; o si el diseño debe realizarse con diagramas
AQAP “Allied Quality Assurance Procedures”). IDEF o UML.
Este es el campo de la técnica de la ingeniería del
El estándar británico BS5750, adoptado en el Reino software.
Unido en 1979 fue el siguiente hito relevante en el
camino de las normalizaciones, al lograr gran En la línea de los modelos de procesos (qué cosas hay
reconocimiento en varios países. que hacer) a partir de finales de los 80 se comenzaron a
Esta normativa fue en realidad la precursora de ISO desarrollar marcos específicos para el software, para
9000. dar la cobertura necesaria a las particularidades de
nuestro producto, donde las normas generales se
Las normas y estándares que fueron surgiendo de los quedaban cortas.
años 60 a los 90 dieron respuesta a las garantías de
homogeneidad, calidad y predectibilidad que los En esta línea ISO 9000 desarrolló una norma específica
entornos de fabricación, y especialmente el desarrollo para el software: ISO 9000-3, y la BSI (British
de sistemas complejos requería al agrupar en proyectos Standards Institution) hizo lo propio desarrollando
la construcción de artefactos que imbricaban tecno- TickIT.
logías e ingenierías diferentes: mecánica, aero-espacial,
naval, atómica, etc. En esta primera aparición de estándares surgieron
En estos sistemas se requería la integración, cada vez también, aunque con menor repercusión: Trillium y
con mayor protagonismo, de una ingeniería que en base Bootstrap.
al conocimiento que había desplegado en esos años, no El primero desarrollado por la empresa Bell Canadá,
podía considerarse aún ni asentada ni consensuada: la que liberó sus derechos, haciéndolo de dominio
ingeniería del software. público.
Algunos de los fiascos que se produjeron en Bootstrap es una metodología para la evaluación,
determinados sistemas por la introducción del software medición y mejora de los procesos de software. Su
sin que éste pudiera dar garantías de resultados a la desarrollo lo llevó a cabo una comisión del ESPRIT
altura de ingenierías más maduras, son ya parte de la (European Strategic Program for Research).
historia de nuestra profesión.
Sin embargo las dos líneas que surgieron a principios
Esbozar este marco histórico resulta necesario, porque de los 90 y que continúan como referentes en la
es la causa de la actual sopa de letras capaz de marear actualidad son. CMM, y las normalizaciones de ISO
al gestor más dispuesto con sólo ennumerarla: ISO 12207 y 15504.
900-3, TicIT, ISO 12207, CMM-SW, ISO 15504,
CMMI, ASD, XP, SCRUM, DSDM, PP, MSF… CMM
Tomando un poco de perspectiva (tan sólo 3 décadas), SEI (Software Engineering Institute), un auténtico peso
al software se le ha juntado la necesidad de encajar en pesado en la normalización de los procesos del
marcos de calidad para ofrecer garantías de perfección, software, desarrolló su línea de trabajo sobre el
eficiencia y consistencia en los resultados; con la concepto de “madurez” de las organizaciones para
creación de su propia base de conocimientos técnicos producir software.
para desarrollar y mantener software (requisitos, Por madurez se entiende la capacidad que tiene la
codificación, pruebas, diseño, etc.) organización para asegurar la calidad de sus proyectos
(fecha, coste y funcionalidad), la homogeneidad
En este punto es interesante diferenciar entre marco o (siempre y en todos sus proyectos) y la capacidad de
modelo de procesos y técnica o base de conocimiento aprendizaje de sus propia experiencia y su aplicación
técnico. en la mejora continua.
La primera línea tiene como objetivo fijar qué es lo
que hay que hacer para ofrecer garantías en los Como resultado de estas líneas de trabajo, en 1990
proyectos, y la segunda cómo debe realizarse. publicó el modelo de madurez de la capacidad para el
desarrollo de software (CMM-SW), que tras más de
Gestión y procesos en empresas de software 8
una década de existencia ha demostrado que en muchas CMM). Fue el nuevo modelo CMMI (Capability
organizaciones ha resultado eficaz. Maturity Model Integration).
Este modelo crea una escala de cinco niveles para
determinar la madurez de una organización. En la actualidad hay varios modelos CMMI, en función
de las áreas que integran
• Nivel 1.- INICIAL • CMMI-SE/SW/IPPD/SS (Systems Engineering,
Pertenecen a él las empresas que no basan el Software Engineering, Integrated Product and
desarrollo en procesos definidos, y no aplican Process Development, Supplier Sourcing).
técnicas de gestión de proyectos.
• CMMI-SE/SW/IPPD (Systems Engineering,
El modelo se refiere a entornos de producción
Software Engineering, Integrated Product and
caóticos con técnicas de programación heroica
Process Development).
cuyos resultados no son predecibles y dependen
exclusivamente de la valía de las personas. • CMMI-SE/SE (Systems Engineering, Software
Engineering)
• Nivel 2.- REPETIBLE.
Define a las organizaciones que aplican técnicas de
Además de la integración de varias disciplinas, los
gestión de proyectos, aunque no dispongan de
modelos CMMI introdujeron otra novedad que
procesos definidos.
afectaba a su implantación:
• Nivel 3.- DEFINIDO CMMI al igual que CMM tiene dos utilidades. Puede
Pertenecen a él las organizaciones que disponen de servir tanto como guía para la mejora en una
procesos definidos con precisión y ejecutados de organización, o como criterio para evaluar su nivel;
forma regular. Las empresas con este nivel de pero mientras CMM centraba estas dos finalidades en
madurez examinan la experiencia de los proyectos la dimensión de la madurez de la organización, CMMI
que realizan y emplean las lecciones aprendidas introduce una segunda dimensión, también válida para
para mejorar sus procesos. guiar las actividades de mejora y para evaluar a las
organizaciones: la capacidad de los procesos.
• Nivel 4.- GESTIONADO
En el cuarto nivel de madurez se sitúan las
CMMI establece 6 niveles para determinar la capacidad
organizaciones que han depurado el análisis de los
de un proceso:
proyectos realizados, hasta institucionalizarlo
como procesos que miden cuantitativamente la • Nivel 0.- INCOMPLETO
capacidad de los procesos de desarrollo, de forma El proceso no se realiza.
que pueden predecir de forma cuantificable los
• Nivel 1.- REALIZADO
resultados, y evaluar las mejoras con mediciones
Se lleva a cabo el proceso, consiguiendo
objetivas.
transformar elementos de entrada identificados, en
• Nivel 5.- OPTIMIZADO productos de salida.
Las organizaciones con un nivel 5 de madurez
• Nivel 2.- GESTIONADO
tienen definidos, y practican de forma
El proceso se ejecuta siempre de la misma manera,
institucionalizada, procesos de mejora continua
de una forma gestionada.
que se nutren con la información cuantificada de
los procesos del nivel 4. • Nivel 3.- DEFINIDO
El proceso está definido en la organización y se
Tras el desarrollo del modelo SW-CMM, surgieron ejecuta siempre.
otros para la medición y mejora de la capacidad de los
• Nivel 4
procesos, todos ellos centrados en áreas relacionadas
CUANTIFICADAMENTE GESTIONADO
con el foco original del SW-CMM: el desarrollo de
software: La ejecución del proceso tiene institucionalizado
en la organización un sistema de medición objetivo
• Systems Engineering Capability Maturity Model y cuantificable de su capacidad.
(SE-CMM)
• Nivel 5.- OPTIMIZADO
• Integrated Product Development Capability El proceso, que se ejecuta siempre, está definido
Maturity Model (IPD-CMM) en la organización, se mide y está integrado en un
plan, también institucionalizado, de mejora
• People Capability Maturity Model (P-CMM)
continua basada en las mediciones de los procesos.
• Software Acquisition Capability Maturity Model
(SA-CMM) De esta forma los modelos CMMI presentan 2
versiones:
En 2000 el modelo SW-CMM se actualizó en otro que
• Versión escalonada. Guía a la organización sobre
facilitaba su implantación de forma conjunta y
las áreas de procesos que debe ir abordando, las
simultánea con otros modelos (SE-CMM o IPD-
Gestión y procesos en empresas de software 9
prácticas que debe implantar y los objetivos que Momento en el que ya es necesario comenzar a actuar
debe alcanzar para ir consiguiendo los sucesivos de manera ortodoxa para describir el ámbito del
niveles de madurez. problema, las soluciones posibles, etc.
• Versión continua. Permite cierta libertad a la
El ciclo de vida comprende también el desarrollo,
organización sobre las áreas de proceso que desea
mantenimiento y operación y no concluye hasta que el
mejorar, y le orienta para ir elevando su nivel de
sistema deja de utilizarse y es definitivamente retirado.
capacidad.
SPICE – ISO/IEC STD. 15504.
Consecuentemente al evaluar a una organización se
puede hacer sobre la dimensión de su madurez, En enero de 1993 la comisión ISO/IEC JTC1 aprobó
estableciendo cuál es el nivel que ha alcanzado, o sobre un programa de trabajo para el desarrollo de un modelo
la dimensión de la capacidad, reflejando cuál es el que fuera la base de un futuro estándar internacional
nivel de cada una de las áreas de proceso contempladas para la evaluación de los procesos del ciclo de vida del
por el modelo. software.
Este trabajo recibió el nombre de proyecto SPICE
Mientras SEI publicaba y comenzaba a definir su (Software Process Improvement and Capability
modelo CMM, ISO emprendía los otros dos proyectos dEtermination), y en junio de 1995, con la publicación
que hoy forman los principales puntos de referencia en de su primer borrador, desde ISO fueron invitadas
el ámbito de la calidad para nuestra industria: ISO diferentes organizaciones para aplicarlo y valorar sus
12207 e ISO 15504. resultados.
En 1998, pasada la fase de proyecto, y tras las primeras
ISO/IEC 12207 evaluaciones, el trabajo pasó a la fase de informe
técnico con la denominación ISO/IEC TR 15504.
Es el estándar internacional que ha determinado cuál es
La instrucción técnica consta de 9 apartados, recogidos
el ciclo de vida de un proyecto de software, y cuáles
en volúmenes independientes, que se han ido
los procesos y tareas que intervienen en cada una de
publicando como redacción definitiva del estándar
sus fases.
internacional ISO/IEC 15504 durante el periodo 2003-
2005.
15504 tiene gran similitud con la representación • Consenso y aceptación por la comunidad que
continua de CMMI. Al igual que este último centra el ejerce la profesión.
foco en la capacidad de los procesos, y permite trabajar
• Desarrollo de de currículos profesionales, que
sólo con una parte de ellos en lugar de hacerlo con
gracias al consenso resulten homogéneos sobre
todos los de la organización.
centros de formación, universidades y países
diferentes.
ISO 15504 agrupa los procesos de las organizaciones
de software en cinco categorías: • Desarrollo de las organizaciones académicas y
profesionales de autorregulación.
• Cliente – proveedor
Con este esquema se podrá estar más o menos de
• Ingeniería acuerdo, pero es el que emplea la sociedad para dar el
rango de profesión a los trabajos no regulados. Para
• Soporte
cambiar el título de curandero por el de médico, el de
• Gestión sacamuelas por odontólogo, o el de alquimista por el de
químico.
• Organización
• 0 Proceso incompleto
• 1 Proceso realizado
• 2 Proceso gestionado
• 3 Proceso establecido
• 4 Proceso predecible
• 5 Proceso optimizado.
Y para conseguir el “más difícil todavía”, hay que 2.- Son bienvenidos los requisitos cambiantes, incluso
contar con una tercera tendencia de normalización. O, si llegan tarde al desarrollo. Los procesos ágiles se
quizá habría que llamarla de des-normalización: doblegan al cambio como ventaja competitiva para el
cliente.
Los métodos ágiles. 3.- Entregar con frecuencia software que funcione, en
periodos de un par de semanas hasta un par de meses,
A finales de los 90, reputados profesionales con con preferencia en los periodos breves.
renombre y eco en diferentes foros técnicos, 4.- Las personas del negocio y los desarrolladores
comenzaron a cuestionar las metodologías deben trabajar juntos de forma cotidiana a través del
formales, que representadas por CMM e ISO proyecto.
15504, y respaldadas por la autoridad y los 5.- Construcción de proyectos en torno a individuos
medios de sus respectivas organizaciones, estaban motivados, dándoles la oportunidad y el respaldo que
configurando una ingeniería del software basada necesitan y procurándoles confianza para que realicen
la tarea.
en los procesos.
6.- La forma más eficiente y efectiva de comunicar
información de ida y vuelta dentro de un equipo de
En marzo de 2001, 17 críticos de estos modelos, desarrollo es mediante la conversación cara a cara.
convocados por Kent Beck, que acababa de 7.- El software que funciona es la principal medida del
definir una nueva metodología denominada progreso.
Extreme Programming, se reunieron en Salt Lake 8.- Los procesos ágiles promueven el desarrollo
City para discutir sobre los modelos de desarrollo sostenido. Los patrocinadores, desarrolladores y
de software. usuarios deben mantener un ritmo constante de forma
En la reunión se acuñó el término “Métodos indefinida.
Ágiles” para definir a aquellos que estaban 9.- La atención continua a la excelencia técnica
enaltece la agilidad.
surgiendo como alternativa a las metodologías
10.- La simplicidad como arte de maximizar la
formales, a las que consideraban excesivamente cantidad de trabajo que se hace, es esencial.
“pesadas” y rígidas por su carácter normativo y 11.- Las mejores arquitecturas, requisitos y diseños
fuerte dependencia de planificaciones detalladas, emergen de equipos que se auto-organizan.
previas al desarrollo. 12.- En intervalos regulares, el equipo reflexiona sobre
la forma de ser más efectivo y ajusta su conducta en
Los integrantes de la reunión resumieron en consecuencia.
cuatro postulados lo que ha quedado denominado
como “Manifiesto Ágil”, que compendia el
espíritu en el que se basan estos métodos:
Aunque hay valor en los elementos de la derecha, Los propios integrantes del manifiesto se auto-califican
valoramos más los de la izquierda. como “anarquistas organizacionales”, y en estos años,
desde uno y otro lado se han lanzado argumentos
Manifiesto Ágil punzantes buscando más la descalificación ajena que la
justificación propia.
Los firmantes afirman que los puntos de su manifiesto
se sustentan en 12 principios:
Los principales métodos ágiles son complementan unas a otras y deben implementarse en
un entorno de desarrollo cuya cultura se base en los
DSDM (Dynamic Systems Development cuatro valores citados:
Method)
Comunicación
Es la metodología más veterana de las auto- XP pone en comunicación directa y continua a clientes
denominadas ágiles. Surgió en 1994 de los trabajos de y desarrolladores. El cliente se integra en el equipo
Jennifer Stapleton, la actual directora del DSDM para establecer prioridades y resolver dudas. De esta
Consortium. forma ve el avance día a día, y es posible ajustar la
agenda y las funcionalidades de forma consecuente.
DSDM es la metodología ágil más próxima a los
métodos formales, de hecho la implantación de un Feedback rápido y continuo
modelo DSDM en una organización la lleva a alcanzar Una metodología basada en el desarrollo incremental
lo que CMM consideraría un nivel 2 de madurez. de pequeñas partes, con entregas y pruebas frecuentes y
Sin embargo los aspectos que DSDM reprocha a CMM continuas, proporciona un flujo de retro-información
son: valioso para detectar los problemas o desviaciones.
• Aunque es cierto que se ha desarrollado con éxito De esta forma fallos se localizan muy pronto.
en algunas organizaciones, lo que funciona bien en La planificación no puede evitar algunos errores, que
unos entornos no tiene por qué servir para todos. sólo se evidencian al desarrollar el sistema.
La retro-información es la herramienta que permite
• CMM no le da al diseño la importancia que reajustar la agenda y los planes.
debería tener.
• CMM plantea un foco excesivo en los procesos, Simplicidad
olvidando la importancia que en nuestra industria La simplicidad consiste en desarrollar sólo el sistema
tiene el talento de las personas. que realmente se necesita. Implica resolver en cada
momento sólo las necesidades actuales.
• El tener procesos claramente definidos no es “Los costes y la complejidad de predecir el futuro son
sinónimo de tener buenos procesos. muy elevados, y la mejor forma de acertar es esperar
al futuro.”
En común con los métodos ágiles, DSDM considera Con este principio de simplicidad, junto con la
imprescindible una implicación y una relación estrecha comunicación y el feedback resulta más fácil conocer
con el cliente durante el desarrollo, así como la las necesidades reales.
necesidad de trabajar con métodos de desarrollo
incremental y entregas evolutivas. Coraje
DSDM cubre los aspectos de gestión de proyectos, El coraje implica saber tomar decisiones difíciles.
desarrollo de los sistemas, soporte y mantenimiento y Reparar un error cuando se detecta. Mejorar el código
se autodefine como un marco de trabajo para desarrollo siempre que tras el feedback y las sucesivas iteraciones
rápido más que como un método específico para el se manifieste susceptible de mejora.
desarrollo de sistemas. Tratar rápidamente con el cliente los desajustes de
agendas para decidir qué partes y cuándo se van a
Extreme Programming entregar.
Este es el método que más popularidad ha alcanzado
Las 12 prácticas que aplicadas sobre esta cultura
entre las metodologías ágiles, y posiblemente sea
conforman Extreme Programming son:
también el más transgresor de la ortodoxia basada en
procesos.
PRÁCTICAS DE CODIFICACIÓN
Su creador, Kent Beck fue el alma mater del
1.- Simplicidad de código y de diseño para producir
Manifiesto Ágil.
software fácil de modificar.
Extreme Programming (XP) se irgue sobre la
2.- Reingeniería continua para lograr que el código
suposición de que es posible desarrollar software de
tenga un diseño óptimo.
gran calidad a pesar, o incluso como consecuencia del
3.- Desarrollar estándares de codificación, para
cambio continuo. Su principal asunción es que con un
comunicar ideas con claridad a través del código.
poco de planificación, un poco de codificación y unas
4.- Desarrollar un vocabulario común, para comunicar
pocas pruebas se puede decidir si se está siguiendo un
las ideas sobre el código con claridad.
camino acertado o equivocado, evitando así tener que
echar marcha atrás demasiado tarde.
PRÁCTICAS DE DESARROLLO
1.- Adoptar un método de desarrollo basado en las
Cuatro son los valores que lo inspiran: simplicidad,
pruebas para asegurar que el código se comporta según
feedback, coraje y comunicación.
lo esperado.
XP no es un modelo de procesos ni un marco de
trabajo, sino un conjunto de 12 prácticas que se
Gestión y procesos en empresas de software 13
2.- Programación por parejas, para incrementar el desbordamiento de agendas implique consecuencias
conocimiento, la experiencia y las ideas. graves, deben adoptar metodologías más pesadas.
3.- Asumir la propiedad colectiva del código, para que
todo el equipo sea responsable de él. Los métodos Crystal no prescriben prácticas concretas,
4.- Integración continua, para reducir el impacto de la y se pueden combinar con técnicas como XP.
incorporación de nuevas funcionalidades.
ASD (Adaptative Software Development)
PRÁCTICAS DE NEGOCIO
1.- Integración de un representante del cliente en el Método que como alternativa a los procedimientos
equipo, para encauzar las cuestiones de negocio del formales, aborda el desarrollo de grandes sistemas con
sistema de forma directa, sin retrasos o pérdidas por el uso de técnicas propias de las metodologías ágiles.
intermediación.
2.- Adoptar el juego de la planificación para centrar en No se trata de una metodología, sino de la implantación
la agenda el trabajo más importante. de una cultura en la empresa, basada en la
3.- Entregas regulares y frecuentes para satisfacer la adaptabilidad.
inversión del cliente.
4.- Ritmo de trabajo sostenible, para terminar la PP (Pragmatic Programming)
jornada cansado pero no agotado. Pragmatic Programming es la colección de 70 prácticas
de programación, comunes a otros métodos ágiles,
cuya aplicación resulta útil para solucionar los
SCRUM problemas cotidianos.
No es propiamente un método o metodología de
desarrollo, e implantarlo como tal resulta insuficiente. AM (Agile Modeling)
Scrum define métodos de gestión y control para Agile Modeling es la presentación de un nuevo
complementar la aplicación de otros métodos ágiles enfoque para realizar el modelado de sistemas,(diseño)
como XP que, centrados en prácticas de tipo técnico, y basado en los principios de los métodos ágiles
carecen de ellas. remarca la conveniencia de reducir el volumen de la
documentación.
Los principios de Scrum son:
• Equipos autogestionados. ISD (Internet-Speed Development)
• Una vez dimensionadas las tareas no es posible Es el más reciente de los métodos ágiles, surgido como
agregarles trabajo extra. respuesta para las situaciones que requieren ciclos de
desarrollo muy breves con entregas rápidas.
• Reuniones diarias en las que los miembros del
Se centra en el talento de las personas sobre los
equipo se plantean 3 cuestiones:
procesos.
¿Qué has hecho desde la última revisión? ISD es un entorno de gestión orientado al negocio.
¿Qué obstáculos te impiden cumplir la
FDD (Feature Driven Development)
meta?
¿Qué vas a hacer antes de la próxima Prescribe un proceso iterativo de 5 pasos, con
reunión? iteraciones de dos semanas.
El punto de referencia son las características que debe
• Iteraciones de desarrollo de frecuencia inferior a reunir el software, y se centra en las fases de diseño e
un mes, al final de las cuales se presenta el implementación del sistema.
resultado a los externos del equipo de desarrollo, y
se realiza una planificación de la siguiente
MÉTODOS DE PROPIEDAD COMERCIAL
iteración, guiada por cliente.
MSF (Microsoft Solutions Framework)
OTROS MÉTODOS ÁGILES
MSF es la metodología empleada por Microsoft para el
Familia de métodos Crystal desarrollo de software.
Hasta su versión 3 (principios de 2005) MSF se definía
La familia de metodologías Crystal ofrece diferentes como un marco de desarrollo flexible para adaptarse a
métodos para seleccionar el más apropiado para cada las necesidades de cada proyecto, en oposición a lo que
proyecto. sería una metodología prescriptiva; porque parte de la
Crystal identifica con colores diferentes cada método, y base de que no hay una estructura de procesos óptima
su elección debe ser consecuencia del tamaño y para las necesidades de todos los entornos de desarrollo
criticidad del proyecto, de forma que los de mayor posibles.
tamaño, o aquellos en los que la presencia de errores o
Gestión y procesos en empresas de software 14
El marco MSF se asienta sobre unos Principios RUP integra un conjunto de “buenas prácticas” para el
Fundamentales que definen la cultura del entorno de desarrollo de software en un marco de procesos válido
desarrollo: para un rango amplio de tipos de proyectos y
organizaciones.
• Fomento de la comunicación abierta.
Las principales buenas prácticas cubiertas son:
• Trabajo en torno a una visión compartida.
• Desarrollo iterativo.
• Apoderar a los integrantes del equipo
• Gestión de requisitos.
(“empowerment”)
• Uso de arquitecturas basadas en componentes.
• Establecimiento de responsabilidades claras y
compartidas. • Uso de técnicas de modelado visual.
• Centrar el objetivo en la entrega de valor para el • Verificación continua de la calidad.
negocio.
• Gestión y control de cambios.
• Permanecer ágiles y esperar e cambio.
En su visión estática, el modelo RUP está compuesto
• Invertir en calidad.
por:
• Aprender de la experiencia.
• Roles: analista de sistemas, diseñador, diseñador
de pruebas, roles de gestión y roles de
Para la aplicación de estos principios en los procesos y
administración.
en las personas, MSF define un Modelo de Equipo y
un Modelo de Procesos. • Actividades: RUP determina el trabajo de cada rol
a través de actividades. Cada actividad del
Sobre los Modelos, y trabajando con la cultura de sus proyecto debe tener un propósito claro, y se asigna
Principios Fundamentales, las Disciplinas que a un rol específico. Las actividades pueden tener
establece para el desarrollo del software son: duración de horas o de algunos días; y son
elementos base de planificación y progreso.
• Gestión de proyectos.
• Artefactos: Son los elementos de entrada y salida
• Gestión de riesgos.
de las actividades. Son productos tangibles del
• Gestión de la mejora del talento. proyecto. Las cosas que el proyecto produce o usa
para componer el producto final (modelos,
Si bien, MSF despliega la gestión de proyectos y la documentos, código, ejecutables…)
gestión de riesgos con algunas diferencias sobre las
• Disciplinas: son “contenedores” empleados para
visiones clásicas de estas áreas.
organizar las actividades del proceso. RUP
comprende 6 disciplinas técnicas y 3 de soporte.
El marco de desarrollo incluye también Conceptos
Técnicas: modelado del negocio, requisitos,
Clave, Prácticas Contrastadas y Recomendaciones
análisis y diseño, implementación, pruebas y
para la ejecución de las tareas concretas en el
desarrollo.
desarrollo de software.
Soprte: gestión de proyecto, gestión de
configuración y cambio, y entorno.
En 2005, el desarrollo del nuevo producto de Microsoft
“Visual Studio 2005 Team System” ha ganerado la • Flujos de trabajo: son el “pegamento”de los roles,
evolución de MSF hacia la nueva versión 4.0 con dos actividades, artefactos y disciplinas, y constituyen
líneas paralelas: la secuencia de actividades que producen
resultados visibles.
• Microsoft Solutions Framework (MSF) for Agile
Software Development.
En su visión dinámica, la visión de la estructura del
• Microsoft Solutions Framework (MSF) for CMMI ciclo de vida RUP se basa en un desarrollo iterativo,
Process Improvement. jalonado por hitos para revisar el avance y planear la
continuidad o los posibles cambios de rumbo.
RUP (Rational Unified Process) Cuatro son las fases que dividen el ciclo de vida de un
proyecto RUP:
Es un proceso de Ingeniería del Software que
proporciona una visión disciplinada para la asignación 1.- Inicio. Es la fase de la idea, de la visión inicial de
de tareas y responsabilidades en las organizaciones de producto, su alcance. El esbozo de una arquitectura
desarrollo de software. posible y las primeras estimaciones. Concluye con el
RUP es un “modelo-producto” desarrollado y “hito de objetivo”.
mantenido por Racional Software, integrado en su
conjunto de herramientas de desarrollo, y distribuido 2.- Elaboración. Comprende la planificación de las
por IBM. actividades y del equipo necesario. La especificación
Gestión y procesos en empresas de software 15
de las necesidades y el diseño de la arquitectura. Considerar que hay dos formas de realizar los
Termina con el “hito de Arquitectura”. proyectos es una visión simplificada, pero refleja el
hecho de que en la realidad, cada técnica se define en
3.- Construcción. Desarrollo del producto hasta que se uno u otro bando, y con mayor o menor proximidad del
encuentra disponible para su entrega a los usuarios. extremo.
Termina con el “hito del inicio de la capacidad
operativa”. Los métodos formales llevados hasta su máximo nivel
de madurez se situarían en el extremo de la ortodoxia,
4.- Transición. Traspaso del producto a los usuarios. (lado izquierdo de la fig. 8) si bien es cierto que las
Incluye: manufactura, envío, formación, asistencia y el representaciones continuas de estos modelos permiten
mantenimiento hasta lograr la satisfacción de los adoptar sólo las prácticas para determinadas áreas de
usuarios. Termina con el “hito de entrega del procesos, y llevarlos hasta el nivel de capacidad que se
producto”. estime oportuno, por lo que un conocedor del modelo
puede emplearlo como guía para realizar una
Métodos ortodoxos y métodos ágiles implantación relativamente ágil, más o menos
adecuada a las características de la organización.
Se dice que hay dos formas de abordar los proyectos:
1.- Dedicar escaso tiempo a la preparación y
planificación, e invertir la mayor parte del tiempo en el
desarrollo, probando y rectificando hasta conseguir el
resultado adecuado.
2.- Invertir mucho tiempo y esfuerzo en la preparación
y planificación para conseguir que el desarrollo se
ejecute en el menor tiempo y con los menores
incidentes posibles.
de desarrollo de software sea fácil. Basta con echar un Visión, misión y negocio de la organización.
vistazo a nuestro alrededor.
Las preguntas relativas a la organización que ayudan a
El mayor o menor grado de éxito en la calidad y diseñar el aludido equilibrio son:
eficiencia en el desarrollo de software depende del
equilibrio que se consiga al conjugar los siguientes ¿Para qué desarrolla software la organización?
factores: ¿Es una empresa con un producto definido que debe
dar beneficios?
¿Es el departamento de sistemas de una entidad
• Características de los proyectos de software bancaria que centra su misión en la seguridad?
gestionados. ¿Es una asociación de ingenieros para el desarrollo de
• Visión de la organización. un proyecto Open-Source?
En algunos casos se tratará de gestionar una normativa ¿Se trata de una organización con niveles jerárquicos y
funciones claramente definidos?
contable u otro negocio o entorno suficientemente
conocido en el que un proceso formal de requisitos ¿Cuáles son los niveles de confianza, delegación,
inicial puede capturar con bastante detalle todas las empowerment y responsabilidad?.
funcionalidades esperadas.
En otros, la novedad o complejidad del entorno en el ¿Clima laboral, motivación?
que se integrará el sistema, hacen difícil, si no
imposible descubrir qué debe hacer el software si no es
a través de prototipado o desarrollo evolutivo. Diseño y gestión del equilibrio productivo
personas-procesos-tecnología
El tamaño también importa. Un sistema puede requerir La estrategia productiva.
el esfuerzo de un programador durante un par de ¿Qué tecnología emplea para el desarrollo?. Equipos,
meses, o de un equipo de varias decenas de personas red, sistemas de pruebas, plataformas operativas,
durante un par de años. plataformas de desarrollo, pruebas, herramientas
CAD…?
Por las características del proyecto quizá la
funcionalidad alcanzada en cada versión, así como la ¿Qué porcentaje o peso del conocimiento necesario
precisión en el cumplimiento de las fechas puede ser para la ejecución de los proyectos lo garantizan la
poco trascendente o vital para el negocio del cliente. ejecución de los procesos, y cuánto las personas?.
En este aspecto, la diferencia de criticidad entre el ¿Son coherentes las políticas o procesos de formación,
desarrollo de un sistema open-source sin ánimo de contratación, planes de carrera, diseño del modelo de
lucro, o de un sistema de gestión para una empresa que procesos, calidad y mejora…?
depende de él para abrir su negocio, es muy diferente.
El éxito: ¿Gestión o azar?
El nivel de integridad del sistema, o daño que pueden
producir los fallos del sistema, también determina el
“Para todo problema complejo hay siempre una
rigor de los procesos que deben aplicarse en su
solución simple, que es errónea”
desarrollo. Un error en el aplicativo de una entidad George Bernard Shaw
bancaria puede suponer pérdidas económicas o de
imagen que comprometan la continuidad de su Cuando se desconocen las variables que actúan sobre
negocio. Errores en otros sistemas pueden producir un sistema, y su influencia, se habla de que presenta un
pérdidas humanas. La presencia de errores en la página comportamiento aleatorio (“caótico”).
web de un pequeño comercio tiene repercusiones de Por definición, no es posible predecir cuáles serán los
menor alcance. resultados al actuar sobre un entorno caótico.
Gestión y procesos en empresas de software 17
La acción externa modificará algunas variables, pero al management, de comportamiento organizacional, los
no saber cuántas más están actuando, y cuál es su modelos de calidad, etc.
repercusión, no se pueden predecir los resultados. Porque claro, uno siempre hace las cosas bien. Por eso
Cuantas más variables se conocen, éste se va tornando si los resultados salen mal el problema está fuera de él.
más predecible y menos caótico, como ha ido
ocurriendo, por ejemplo, en las últimas décadas con la
predicción meteorológica. Conclusiones
La diferencia entre un sistema caótico y un sistema
complejo es que en el primero son tantas las fuerzas Para diseñar y gestionar entornos de producción
que actúan que resulta materialmente imposible eficientes se debe trabajar con pensamiento sistémico,
predecir su resultado (Ej: comportamiento de las bolas comprendiendo que todos los factores implicados en la
en un bombo). producción de software componen un sistema
interrelacionado, imbricado y alineado con la misión de
En sistemas complejos, aunque son varias las fuerzas, la organización.
sí que resulta posible su conocimiento, o el
conocimiento de las más relevantes, y actuar con Lo contrario, y probablemente más habitual consiste en
probabilidades de certidumbre muy altas sobre las actuar desde una visión fáctica e inmediata, buscando
consecuencias. relaciones lineales causa–efecto, sin apreciar la
Desde este punto de vista, un entorno de desarrollo de relación y armonía del sistema, que las integra y les da
software es un sistema complejo en el que se pueden sentido (y que no se ciñe al área de desarrollo, sino a la
combinar y poner en interacción múltiples elementos, y organización en su conjunto).
con diferentes pesos y formas de gestión (Véanse en el
artículo los modelos y técnicas que pueden conjugarse, No se trata por tanto de conocer cuál es la mejor
y los factores que apuntan las preguntas del apartado metodología para el diseño de bases de datos, cuál el
anterior). mejor modelo de procesos o cuáles las mejores técnicas
de gestión de recursos humanos.
Aunque sobre los sistemas complejos, a diferencia de
los aleatorios, sí es posible actuar con factores de La multiplicidad de técnicas, modelos, herramientas,
predictibilidad elevados, si desconocemos su ecuación modos de gestión, es consecuencia de la diversidad de
de fuerzas, se presentan de comportamiento tan organizaciones y tipos de proyectos posibles.
aleatorio como los sistemas caóticos.
Para ser más exactos en esta apreciación, lo cierto es
que un sistema complejo parece caótico, a quien
Evitar la gestión lineal
desconoce cuáles son sus variables y su relación, pero
esto no es muy frecuente que ocurra, ya que si alguien El error habitual es trabajar con gestión lineal y a-
sabe que hay variables aprehensibles y que sistémica, administrando soluciones sintomáticas para
conociéndolas podrá actuar con mayor seguridad, no es cada situación.
normal que continúe jugando al azar.
El hombre, por su naturaleza necesita seguridad, y si La gestión lineal, carece de la perspectiva necesaria, y
sabe que las reacciones de un sistema responden a un responde de forma azuzada a la presión del día a día.
mecanismo más o menos complejo, no es normal que Sin esa perspectiva no se ve el sistema, y el marco de
prefiera ignorarlo. trabajo se presenta como un campo de batalla
desordenado que requiere actuaciones en cada uno de
Por eso el error más habitual consiste en actuar bajo el los frentes que presenta.
fenómeno de la “superstición”, tomando como
referencia variables falsas, o creyendo que son tan sólo Si los proyectos se retrasan será preciso sugerir, animar
una o dos las fuerzas que deciden el comportamiento o presionar a las personas (allá cada cual con el estilo
del sistema. de gestión que aplique) para que alarguen sus jornadas
De esta forma, al igual que el jugador de ruleta de trabajo, o restrinjan los tiempos de café…
supersticioso se aferra a su camisa de la suerte, por la
razón de que le dio un par de noches afortunadas, un Si programamos con mayores costes que nuestra
gestor se puede aferrar a determinadas prácticas de competencia, habrá que contener los salarios, o
gestión, porque una vez funcionaron con éxito, o contratar más barato, o aplicar procesos de calidad para
porque el último libro de management las considera reducir los tiempos, o… (también aquí cada cual
“mano de santo”. sintonizará mejor con unas u otras decisiones.).
La presión del día a día ofrece dos atajos muy Un “know-how” adecuado, basado en el conocimiento
tentadores que se deben evitar: tácito de las personas, compaginado con equipos
desmotivados no es una buena combinación.
• Aplicar soluciones enfocadas en resultados en
el corto plazo. Un método ágil puede resultar idóneo para el tamaño
• Obtener mediciones y datos que demuestren de equipos y de empresa, pero si sus procesos no
un buen comportamiento. cubren las facetas contractuales de la adquisición,
generará problemas en la validación del producto.
Con carácter general, las soluciones a corto, hipotecan
el futuro. son sintomáticas, y generan resistencia, de A modo de síntesis, las claves para conseguir
forma que la próxima vez que se vuelva a generar un organizaciones eficientes de desarrollo de software
problema similar, el remedio sintomático tendrá menos son:
eficacia.
Cerrar rápido un proyecto, hará más duro su • Personalidad de la organización.
mantenimiento (sistema peor diseñado, mayor densidad Esta es la referencia final con la que deben
de errores…). alinearse y sincronizarse todas las variables que
operan juntas para lograr los objetivos. Cuanto
Presionar a los programadores para cumplir fechas es más nítida sea la visión, misión, estrategia,
también una solución a corto, que no ofrece soluciones segmento y objetivos de la organización, con
a largo. Si se mantiene la presión como una norma, mayor atino y precisión se podrán imbricar los
generará desmotivación y degradación en la calidad de componentes del sistema y orientar la gestión de
lo producido. su funcionamiento.
Las mediciones sobre los procesos son una herramienta • Conocimiento de la propia empresa.
útil para comprender el funcionamiento general del Sus objetivos, debilidades y fortalezas. Relevancia
sistema y trabajar en su mejora. Emplearlas como del capital estructural y del capital humano. Cuál
justificación ante instancias superiores, es también una es su configuración actual y cuál la óptima para la
búsqueda de la solución a corto, interesada en que las personalidad de la organización.
cosas pinten bien. De esta forma las organizaciones Este es el conocimiento que orientará el diseño y la
pueden llegar a agonizar con una apariencia de salud gestión del sistema de desarrollo (en realidad de
envidiable. todos los subsistemas de la organización).
• Conocimiento de la industria.
Gestión sistémica Características del producto del negocio: el
La eficiencia es el resultado de la idoneidad y software. Las áreas de conocimiento implicadas en
equilibrio de todos los componentes de la producción. su desarrollo, las técnicas de construcción, los
métodos y procesos posibles para su desarrollo y
¿Cuál es el mejor modelo de procesos para el mantenimiento (ISO, CMM, Métodos Ágiles…)
desarrollo de software?. Es la información de referencia, con el
¿La cultura de empresa más adecuada? conocimiento acumulado por nuestra industria. Su
¿Las mejores técnicas de gestión de RR.HH:? comprensión y visión general ayuda a seleccionar
¿Las mejores plataformas de progrmación? las prácticas más adecuadas para la organización, o
da el conocimiento de causa necesario para el
Para la gestión de las personas, los procesos y la diseño de modelos híbridos propios.
tecnología, no hay métodos simples, absolutos con • Gestión sistémica.
resultados inmediatos. Guiar las decisiones de gestión desde la
perspectiva general del sistema que compone la
Un modelo de procesos CMMI con nivel 5 de madurez organización.
puede garantizar resultados en línea con la misión de Huir de las soluciones sintomáticas, y evaluar sus
una gran empresa integradora de grandes sistemas idoneidad más allá del corto plazo, y su coherencia
críticos, pero resulta excesivamente pesado para una con el sistema en su conjunto.
“Start-up” de diseño web.
• Revisión y adaptación.
El modelo “bueno” no es Scrum, o CMMI o XP, sino El mercado, el entorno tecnológico, la misma base
el que mejor encaje en su sistema. de conocimiento de nuestra industria, están en
continua evolución.
Gestión y procesos en empresas de software 19
Bibliografía