SlideShare una empresa de Scribd logo
1 de 5
Descargar para leer sin conexión
¿Permite la Ley de Contratos del Sector Público Proyectos Ágiles de Software? 1
¿Permite la Ley de Contratos del Sector Público
Proyectos Ágiles de Software?
R. Saralegui, Amper Programas
Resumen—Las metodologías ágiles de desarrollo presentan
grandes ventajas para proyectos de desarrollo de software,
mediante unos métodos iterativos y métricas que permiten
manejar la inconcreción de qué estará disponible y cuándo. La
Ley 30/2007 de Contratos del Sector Público impone
restricciones a los contratos de la Administración que en
principio hacen difícil seguir estas metodologías. Sin embargo,
mediante una cuidadosa redacción de los pliegos de
condiciones, creando las métricas adecuadas e imponiendo que
se siga un proceso iterativo durante el desarrollo, se pueden
utilizar metodologías ágiles. Como consecuencia, las dos partes
salen beneficiadas.
Palabras clave—Proyectos, agile programming,
metodologías ágiles, Ley de Contratos del Sector Público,
LCSP, software, métricas de servicio
I. INTRODUCCIÓN
El software está siendo cada vez una parte más
importante de cualquier proyecto tecnológico y, con ello, de
los grandes programas contratados por la Administración
([1], pág 14). Sin embargo, la regulación actual no hace un
tratamiento muy diferenciado de los desarrollos de software,
y se limita a encuadrarlos dentro de los contratos de
servicios ([2], art. 9b) sin que ni siquiera tengan una
mención expresa en el Anexo II (“Servicios a los que se
refiere el artículo 10”).
Por todo ello, nos preguntamos si al redactar esta ley se
tuvo en cuenta un campo tan importante como el desarrollo
de software, o al menos, si su espíritu permite emprender
desarrollos que sean tan beneficiosos y eficientes para la
Administración como los que podría encargar una empresa
privada mediante la legislación mercantil.
En este estudio, expondremos unas ideas básicas (y
contraintuitivas) sobre la complejidad de los problemas.
Pasaremos a resumir las ideas fundamentales de las
metodologías ágiles de desarrollo. A continuación,
estudiaremos cuáles son los artículos de la ley más afectados
y haremos una propuesta que sea compatible con las
prescripciones de la ley y las metodologías ágiles.
II. NO ES FÁCIL FORMULAR UN PROBLEMA
A. Un Ejemplo
Muchas veces el conseguir formular con precisión un
problema es sinónimo de alcanzar la solución. El ejemplo
por antonomasia son los bugs de software. Se comienza con
una manifestación del problema (“el dispositivo no se
comporta como yo quiero”); se investiga y, tras un complejo
proceso de búsqueda, se formula el problema con precisión
(“cuando el dispositivo parte del estado A y recibe una serie
de datos en el orden D y de longitud L, se produce un error
porque el módulo M no está preparado para ello en este
estado A”). En el momento que se ha identificado con
precisión en qué lugar del módulo M se manejan los datos
de longitud L, se puede solucionar actuando sobre ese
módulo M.
Trabajo del curso de Eficiencia en la Gestión de Recursos, Proyectos y
Contratos de la Administración Pública: Especial Referencia al Ámbito de
la Defensa. Instituto Universitario “General Gutiérrez Mellado”. UNED.
Junio de 2010
B. La Intuición No Vale
Encontrar una solución puede ser mucho más difícil que
lo que nos parece por intuición. Hay problemas con una
formulación sencilla, como el problema del viajante: “dado
un número N de ciudades, conociendo cuáles están
interconectadas por carretera y a qué distancia están unas de
otras ¿qué ruta debe seguir un viajante para visitarlas todas
recorriendo la mínima distancia total?” [3]. Pero su solución
se va haciendo más complicada conforme crece el número
de ciudades N, de tal modo no hay un algoritmo que nos
permita realizar los cálculos en un tiempo razonable más
que para un pequeño número de ciudades.
Por tanto, la intuición no nos sirve para estimar la
complejidad de un problema. Necesitamos un proceso
racional como el diálogo competitivo o similar para alcanzar
una buena comprensión de esa complejidad.
C. El Diálogo Competitivo
El legislador parece ser consciente de que formular con
precisión un problema es ya parte de la solución: el proceso
de diálogo competitivo (arts. 163 a 167 LCSP) se crea para
poder llegar a definir con precisión lo que necesita la
Administración antes de solicitar una oferta. Comprador y
vendedor siguen un proceso iterativo, con el que van
investigando el problema, y al final obtienen una
formulación precisa de qué se quiere resolver. Se sigue un
proceso racional para evitar engaños de la intuición.
D. Después del Diálogo Competitivo
Pero ¿qué ocurre una vez adjudicado un contrato? ¿Hay
métodos racionales para controlar un proyecto de desarrollo
de software de gran complejidad?
Una primera respuesta sería que se deben tener muy
claramente especificados todos los requisitos,
especificaciones, pruebas de validación y aceptación final.
También los protocolos de interconexión con otros sistemas
externos. Incluso se debería realizar un trabajo previo de
caracterización detallada del software para tener un estudio
de todos los casos y detallar con precisión absoluta lo que se
¿Permite la Ley de Contratos del Sector Público Proyectos Ágiles de Software? 2
debe hacer, los posibles problemas que se van a encontrar y
la manera de solucionarlos. Posiblemente esto constituiría
un contrato previo al de desarrollo de software. Y además,
sería sólo factible para proyectos sencillos [4]. Para
cualquier otro caso, llegar a hacer una caracterización
detallada sería equivalente a emprender el desarrollo, pues
sólo desarrollando y probando el software se puede saber
qué problemas surgen y la manera de solucionarlos.
III. MODELO ÁGIL DE DESARROLLO
El modelo ágil de desarrollo de software da una respuesta
a lo anterior mediante una metodología de desarrollo
llamada “ágil” (agile development). En el modelo clásico de
desarrollo en cascada [4] hay fases diferenciadas y estancas
de análisis, diseño, desarrollo, pruebas y entrega al cliente
(Fig. 1). Cada una se inicia sólo cuando está completamente
terminada y definida la anterior, y sólo se da una vez. En
cambio, en el modelo ágil [5] se produce un gran número de
esas iteraciones durante el proyecto, en un ciclo que suele
repetirse cada cuatro semanas (Fig. 2). El cliente debe estar
presente en la fase inicial y final de cada ciclo, viendo el
estado del desarrollo de lo que ha pedido, y tiene poder de
decisión sobre qué se va a implementar en esa iteración. En
contrapartida a esta implicación extra, tiene siempre una
visión real del avance del proyecto, con lo que evita un
“esto no es lo que yo quería” en el momento de la entrega
final y tiene una mejor comprensión de los problemas a los
que se enfrentan los desarrolladores. Esto permite una
información constante del avance del proyecto y poder
reaccionar con agilidad a cambios tecnológicos o frente a
posibles incoherencias en las prestaciones solicitadas.
Análisis
Diseño
Desarrollo
Pruebas
Entrega
Análisis
Diseño
Desarrollo
Pruebas
Entrega
Análisis
Diseño
Desarrollo
Pruebas
Entrega
FIG. 1. MODELO CLÁSICO DE DESARROLLO
A. La virtud y el defecto de este modelo: inconcreción
Debido a cómo se hace la división en tareas y su
planificación, en cada momento se puede tener una
estimación de qué estará disponible en las próximas
iteraciones, en qué estado y cuándo estará listo (Fig. 3). Esta
estimación es aproximada, pero va ganando en precisión
conforme avanza el proyecto y también en función de la
experiencia del equipo de desarrollo en utilizar esta
metodología.
Análisis
Diseño
Desarrollo
Pruebas
Entrega
Análisis
Diseño
Desarrollo
Pruebas
Entrega
Análisis
Diseño
Desarrollo
Pruebas
Entrega
Análisis
Diseño
Desarrollo
Pruebas
Entrega
FIG. 2. UNA ITERACIÓN EN LA METODOLOGÍA ÁGIL
Puede aducirse que no parece muy profesional el
formular grados de cumplimiento de requisitos o plazos de
disponibilidad de manera aproximada, pues un proyecto de
desarrollo de software debería constar de unas prestaciones
concretas que se suministren en un plazo concreto. Sin
embargo, la metodología ágil lo que hace es poner de
manifiesto de una manera honesta algo conocido por
cuantos han estado implicados en proyectos de software
complejos: conforme se va trabajando en solucionar un
problema, se formula de una manera más precisa en cada
iteración de manera similar a como explicábamos en el
capítulo II y se va perfeccionando la solución a medida que
se hace el desarrollo.
La alternativa que tiene un equipo desarrollador de
software obligado a comunicar plazos fijos es poner
“márgenes de seguridad” en todos los componentes que se
desarrollan. Unos márgenes de seguridad tan amplios como
para absorber cualquier retraso por reelaboración de
trabajos, pruebas adicionales, correcciones de errores, etc.
que pudiera darse. Evidentemente, el desarrollo de software
se hará en el plazo acordado, pero no se habrá trabajado con
la máxima eficiencia durante todo el proceso. Por desgracia,
esta es la práctica más común en proyectos de desarrollo de
software gestionados con las metodologías clásicas.
La metodología ágil pone de relieve todos los pequeños
detalles y contratiempos que pueden darse durante el
proyecto, de modo que se pueda actuar cuanto antes y en
conjunto el desarrollo se haga con la máxima eficiencia.
Gracias a ello, el equipo de desarrollo puede afrontar su
trabajo de un modo más realista. Con las frecuentes
iteraciones, en cada momento se tiene un software
funcional, con las funciones que son más importantes para
el cliente, y la incertidumbre de saber cuánto queda y en
cuánto tiempo se acabará va disminuyendo
progresivamente, gracias a que las mediciones hechas hasta
el momento sirven para predecir la evolución del trabajo
que queda por hacer.
También gracias a las revisiones continuas, se puede
reaccionar con rapidez y, siempre con el acuerdo entre
contratista y cliente:
• añadir elementos que no se tuvieron en cuenta en el
momento de concepción del proyecto pero que después
se ha decidido que son importantes, o
• eliminar aquellos que pueden ser superfluos o en los
que la relación entre coste-plazo y la funcionalidad
aportada no es satisfactoria.
Es importante la transparencia que se obtiene para el
¿Permite la Ley de Contratos del Sector Público Proyectos Ágiles de Software? 3
cliente, pues al estar presente en el proceso de desarrollo,
conoce todos los problemas y virtudes de lo que se
desarrolla, lo que evita sorpresas en el momento de la
entrega final y la tranquilidad de saber que lo recibido no
tiene fallos que el contratista le está ocultando.
B. Conflicto con la Ley de Contratos del Sector Público
Parece claro que utilizar una metodología ágil de
desarrollo para un proyecto complejo de software es
ventajoso para ambas partes. Pero en un primer análisis, la
utilización de una metodología ágil parece estar reñida con
conceptos clave de la Ley de Contratos del Sector Público:
• Se necesitan modificaciones del contrato. Hemos
expuesto más arriba que, de manera constante durante
el desarrollo del proyecto, se van a hacer cambios en el
proyecto en función de lo que se va aprendiendo sobre
el problema. En principio, esto nos lleva a una
modificación del contrato, ya que no estamos hablando
de causas imprevistas que hagan actuar al órgano de
contratación por el bien del interés público (art. 202.1
párrafo primero LCSP), sino de que el proceso de
desarrollo y aprendizaje técnico nos lleva a tomar
decisiones de modificaciones. Además, esto sólo sería
posible si estas modificaciones estuvieran previstas ya
en el expediente, en consonancia con las prescripciones
de la Junta Consultiva de Contratación Administrativa
para modificaciones de contratos [6]. Por si fuera poco,
no parece una idea realizable en la práctica: una
iteración típica en un desarrollo ágil dura cuatro
semanas, y hacer repetidas modificaciones a un
contrato cada cuatro semanas chocaría contra los
plazos que se manejan en la práctica para
modificaciones contractuales al amparo del art. 202.
• No se admite la inconcrecion. El contrato debe tener
un objeto determinado (art. 74 LCSP), que está en
contradicción con la inconcreción con la que trabajan
las metodologías ágiles, según hemos explicado en el
párrafo III.A.
• Concepto de totalidad de la prestación.
Consecuencia de la inconcreción es que no estará claro
cuándo se considera que el contratista ha realizado la
totalidad de la prestación (art. 205.1 LCSP): la
metodología ágil sólo asegura que para una fecha
concreta estará implementado un número aproximado
de funcionalidades. O que para implementar un número
concreto de funcionalidades, la fecha será aproximada
(Fig. 3). ¿Cómo conjugar esto con el concepto de
“totalidad de la prestación”?
Tiempo
Características
Entregar cuando se
alcance este nivel
(a)
Tiempo
Características
Entregar en esta
fecha
(b)
Tiempo
Características
Entregar
en esta
zona
(c)
Tiempo
Características
Entregar cuando se
alcance este nivel
(a)
Tiempo
Características
Entregar cuando se
alcance este nivel
(a)
Tiempo
Características
Entregar en esta
fecha
(b)
Tiempo
Características
Entregar en esta
fecha
(b)
Tiempo
Características
Entregar
en esta
zona
(c)
Tiempo
Características
Entregar
en esta
zona
(c)
FIG. 3. QUÉ ESTARÁ DISPONIBLE Y CUÁNDO. FUENTE: [5]
C. Qué nos permite la Ley de Contratos del Sector
Público
Sin embargo, si seguimos en nuestro análisis, podemos
descubrir que la ley nos abre las puertas al desarrollo de
software a través de metodologías ágiles:
• Tipo del contrato. Un proyecto de software complejo
debe encajar necesariamente en un contrato de
servicios (art. 9b), por tratarse de la “adquisición de un
programa de ordenador desarrollado a medida”. Y así
como los parámetros que regulan un suministro de
bienes son las unidades entregadas, los plazos y la
calidad de esas unidades, una prestación de servicios se
debe medir con un nivel de calidad de servicio (Service
Level Agreement) según unas métricas [7] acordadas
entre las partes. Si definimos de la manera adecuada en
un contrato de desarrollo de software a medida los
niveles de servicio que debe obtener la Administración
al fin del proyecto, podríamos ir calculando el nivel de
servicio que presta en cada momento el software
desarrollado, de modo que hay un paralelismo entre
estado del desarrollo del programa y nivel de servicio
prestado. Las decisiones que tomase el equipo de
desarrollo y el cliente en cada iteración irían
encaminadas a obtener el máximo nivel de calidad de
servicio.
• Criterios de evaluación de una oferta. Se permite
que la adjudicación se haga por criterios complejos, y
se dará preponderancia (art. 134.2) a aquellos criterios
mensurables, de tal manera que se cree una fórmula en
la que se ponderen los elementos que para la
Administración son más importantes. Si bien no se dice
nada de la fase de ejecución del contrato, esta
importancia que se da a criterios objetivos y
mensurables nos inclina a pensar que la evaluación de
la completitud de un suministro mediante una fórmula
que tenga en cuenta unos criterios equivalentes a los de
evaluación de la oferta encajaría con las intenciones del
legislador.
• Procesos iterativos. El diálogo competitivo, en los
arts. 163.1 y 166.4, contiene un reconocimiento
implícito de que es difícil llegar a formular un
problema, y es necesario un proceso de estudio
iterativo en el que se vaya desarrollando entre cliente y
contratista la posible solución. Sólo tras varias
iteraciones se podrá definir con más precisión el
problema. Esta descripción es muy similar a la antes
descrita del desarrollo ágil, y nos inclina a pensar que
el espíritu de la ley estaría, por tanto, a favor de que
también durante el cumplimiento de un contrato se
siguiera un método iterativo entre cliente y contratista
para ir acercándose a la solución del problema. Como
explicábamos más arriba, llegar a definir el problema
es gran parte del trabajo necesario para solucionarlo,
sobre todo en casos de software.
• Reducción de riesgos. Debido al control detallado que
se hace sobre el esfuerzo de desarrollo, se tiene
también controlado el coste del proyecto. En cuanto se
descubren elementos complejos no previstos en el
planteamiento inicial, la Administración es consciente
¿Permite la Ley de Contratos del Sector Público Proyectos Ágiles de Software? 4
de ello y recibe una valoración de la dificultad añadida.
Esto le permite tomar decisiones de proseguir o buscar
alternativas, de manera que no se generen costes extras
en el proyecto y cumpla su mandato de obtener la
prestación “más ventajosa” (art. 1 LCSP).
IV. PROPUESTA: “MÉTRICAS DE COMPLETITUD”
En resumen, si estamos convencidos de las bondades de
las metodologías ágiles para desarrollos de software y
deseamos que un proyecto se rija por ellas, debemos
asegurarnos que las sucesivas iteraciones no provocarán
modificaciones de contrato, debemos buscar que a pesar de
la inconcreción siempre tengamos un objeto determinado, y
que las variaciones que se produzcan, aunque estén
acordadas entre contratista y Administración, siempre sean
tales que se cumpla la totalidad de la prestación. Todo ello
se encuadrará en un contrato de servicios, y utilizaremos
unos criterios paralelos a los comúnmente utilizados para
evaluación de ofertas. Esto redundará en una reducción de
los riesgos para las dos partes, mayor eficiencia y
contaremos con la confianza de que el proceso iterativo que
seguimos está de acuerdo con el espíritu de la ley.
La propuesta que aquí hacemos es:
1. Que los pliegos de condiciones tengan una definición
expresa de las métricas que se utilizarán para
determinar que el software funciona correctamente y
a satisfacción de la Administración según prescribe el
artículo 205.1. Estas métricas serán semejantes a las
que se utilizan para medir prestaciones de servicios
diferentes de desarrollo de software, y se podrían basar
en las que se utilizan en la fase de evaluación de
ofertas, en las que típicamente se dividen las
características del bien deseado en diferentes niveles
(básico, deseable, opcional…) y se ponderan en función
de la importancia que cada característica tiene para la
Administración.
2. Estas métricas deberán dar la suficiente flexibilidad
para que se puedan tomar decisiones durante el
desarrollo como prescriben las metodologías ágiles sin
provocar cambios en el objeto del contrato, a la vez
que deberán asegurar que todas las funcionalidades
más importantes para la administración serán
implementadas.
3. Los pliegos de condiciones deberán establecer que
durante el desarrollo del proyecto se seguirá un proceso
iterativo para practicar el desarrollo del software, con
participación de contratista y Administración, y en el
que los resultados de cada revisión servirán para
establecer los pasos a seguir en la iteración siguiente.
Este proceso se considerará semejante al del diálogo
competitivo, pero en vez de aplicado a obtener un
conocimiento para definir una solución y concluir en
una oferta, estará aplicado a obtener un conocimiento
para definir los pasos siguientes de un desarrollo
Así, un pliego de prescripciones podría tener una tabla
con funcionalidades básicas, deseables y menores, y un
porcentaje mínimo de las funcionalidades que deben estar
implementadas para aceptar el software. De manera similar
a los típicos criterios de número de errores (bugs) que se
utilizan en la industria para aceptar una versión de software
(Tabla 1), se podría generar una tabla (Tabla 2) con los
criterios para número de funcionalidades implementadas y
con cuántas se considera el software aceptable.
Tipo de
error
Máximo
número
Explicación
Mayor 5
Impide el correcto
funcionamiento
Menor 50
El software funciona
mediante un método
alternativo
Cosmético 100
El software funciona, pero
visualmente hay elementos
incorrectos
TABLA 1: CONDICIONES DE ACEPTACIÓN TÍPICAS, NÚMERO DE ERRORES
Nótese que para las funcionalidades básicas (o
imprescindibles) proponemos una cantidad ligeramente
inferior al 100%; la razón es que, de la misma manera en
que a partir de una complejidad media es imposible ([1],
pág. 21) obtener un software absolutamente libre de errores
(y de ahí el valor no nulo para la primera línea de la Tabla
1), es también imposible que un software coincida de
manera ideal con lo que se solicitaba inicialmente, en
especial tras todo el trabajo iterativo desempeñado con la
metodología ágil. Será labor de quienes definen los criterios
de aceptación hacerlo de manera que esta teórica
imperfección no impida en la práctica que el software
funcione como se desea.
Tipo de
funcionalidad
Implementadas
al
Explicación
Básica 98%
Necesarias para el
buen funcionamiento
Muy deseable 80%
Prescindibles si entran
en conflicto con la
clase anterior
Deseable 50%
Son prescindibles si el
costo de tenerlas es
más elevado que lo
que aportan
TABLA 2: MÉTRICAS DE COMPLETITUD
V. CONCLUSIÓN
Las metodologías ágiles de desarrollo son un marco de
referencia muy prometedor para los desarrollos de software
complejo; necesitan un cambio de manera de pensar y
gestionar un proyecto, pues ponen de relieve inconcreciones
–que de cualquier manera existen– y nos obligan a
manejarlas de manera diferente a la gestión clásica de
proyectos. Su ventaja es que permiten más eficiencia en los
proyectos y mayor satisfacción para desarrollador y cliente.
La Ley de Contratos del Sector Público tiene
requerimientos que, en principio dificultan la realización de
¿Permite la Ley de Contratos del Sector Público Proyectos Ágiles de Software? 5
un proyecto siguiendo estas metodologías. Sin embargo,
aplicando métricas de nivel de servicio al objeto del
contrato, es perfectamente posible compatibilizar el
desarrollo de un software complejo según las prescripciones
de la ley y utilizando los procedimientos de las
metodologías ágiles.
Ya que la Administración habrá estado presente durante
todo el proceso de desarrollo del software, conocerá
perfectamente el estado del proyecto y sabrá que obtiene un
producto que numéricamente cumple con sus criterios y, lo
que es más importante, tiene las funcionalidades que, tras el
proceso iterativo de desarrollo ágil, ha descubierto que son
las que más le convienen y con un coste controlado.
Como en cualquier cambio tecnológico, posiblemente el
mayor obstáculo a su utilización generalizada no será el
marco legal, sino la resistencia mental al cambio y el apego
que todos tenemos a utilizar los viejos métodos conocidos,
aunque no sean tan eficientes.
REFERENCIAS
[1] A. M. Neufelder, Ensuring software reliability, Marcel Dekker, 1993,
ISBN 0-8247-8762-5
[2] Ley 30/2007 de 30 de octubre, Contratos del Sector Público
[3] Problema del viajante:
http://es.wikipedia.org/wiki/Problema_del_viajante
[4] W.W.Royce: Managing the Development of Large Software Systems.
Proceedings, IEEE WESCON, Agosto 1970, pp. 1-9
[5] Mike Cohn, Agile Estimating and Planning. Prentice Hall 2005.
[6] Informe de la Junta Consultiva de Contratación Administrativa nº
43/08, de 28 de julio de 2008 sobre modificaciones de los contratos,
pág 8.
[7] Métricas de servicio:
http://en.wikipedia.org/wiki/Service_level_agreement#Common_metr
ics

Más contenido relacionado

La actualidad más candente

proyectos informaticos
proyectos informaticosproyectos informaticos
proyectos informaticossopaipilla
 
Metodologia xp
Metodologia xpMetodologia xp
Metodologia xpCrisCobol
 
Metodologia xp
Metodologia xpMetodologia xp
Metodologia xpfiremas
 
METODOLOGIAS XP
METODOLOGIAS XPMETODOLOGIAS XP
METODOLOGIAS XPBiingeSof
 
Gestión basada en Metodologías Ágiles
Gestión basada en Metodologías ÁgilesGestión basada en Metodologías Ágiles
Gestión basada en Metodologías Ágilesnetmind
 
Reglas y Practicas en Extreme Programming
Reglas y Practicas en Extreme ProgrammingReglas y Practicas en Extreme Programming
Reglas y Practicas en Extreme ProgrammingSaviotec
 
Gestion de proyectos informaticos 2013 2
Gestion de proyectos informaticos 2013 2Gestion de proyectos informaticos 2013 2
Gestion de proyectos informaticos 2013 2Virginia Polcan
 
Monografia Metodologia Agil XP
Monografia Metodologia Agil XPMonografia Metodologia Agil XP
Monografia Metodologia Agil XPJorw Yengle
 
Metodologías Ágiles en la Práctica
Metodologías Ágiles en la PrácticaMetodologías Ágiles en la Práctica
Metodologías Ágiles en la PrácticaManuel Rubio
 
Carlos figuera-ci-19897276
Carlos figuera-ci-19897276Carlos figuera-ci-19897276
Carlos figuera-ci-19897276marlev boadas
 
Luis valles 22169276
Luis valles 22169276Luis valles 22169276
Luis valles 22169276Luis Valles
 
Contratación y gestión de desarrolladores a distancia
Contratación y gestión de desarrolladores a distanciaContratación y gestión de desarrolladores a distancia
Contratación y gestión de desarrolladores a distanciaFrancesc Font
 
Procesos de Ingenieria de Software
Procesos de Ingenieria de SoftwareProcesos de Ingenieria de Software
Procesos de Ingenieria de SoftwareAngel Macas
 

La actualidad más candente (20)

Trabajo planeamiento
Trabajo planeamientoTrabajo planeamiento
Trabajo planeamiento
 
Unidad 2 planificacion y modelado
Unidad 2 planificacion y modeladoUnidad 2 planificacion y modelado
Unidad 2 planificacion y modelado
 
Diapositivas xp
Diapositivas xpDiapositivas xp
Diapositivas xp
 
proyectos informaticos
proyectos informaticosproyectos informaticos
proyectos informaticos
 
Metodologia xp
Metodologia xpMetodologia xp
Metodologia xp
 
Metodologia xp
Metodologia xpMetodologia xp
Metodologia xp
 
METODOLOGIAS XP
METODOLOGIAS XPMETODOLOGIAS XP
METODOLOGIAS XP
 
Gestión basada en Metodologías Ágiles
Gestión basada en Metodologías ÁgilesGestión basada en Metodologías Ágiles
Gestión basada en Metodologías Ágiles
 
Proyectos I
Proyectos IProyectos I
Proyectos I
 
Reglas y Practicas en Extreme Programming
Reglas y Practicas en Extreme ProgrammingReglas y Practicas en Extreme Programming
Reglas y Practicas en Extreme Programming
 
Gestion de proyectos informaticos 2013 2
Gestion de proyectos informaticos 2013 2Gestion de proyectos informaticos 2013 2
Gestion de proyectos informaticos 2013 2
 
Ciclovida
CiclovidaCiclovida
Ciclovida
 
Monografia Metodologia Agil XP
Monografia Metodologia Agil XPMonografia Metodologia Agil XP
Monografia Metodologia Agil XP
 
Métodos agiles
Métodos agilesMétodos agiles
Métodos agiles
 
Metodologías Ágiles en la Práctica
Metodologías Ágiles en la PrácticaMetodologías Ágiles en la Práctica
Metodologías Ágiles en la Práctica
 
Carlos figuera-ci-19897276
Carlos figuera-ci-19897276Carlos figuera-ci-19897276
Carlos figuera-ci-19897276
 
Desarrollo de Sistemas de Información
Desarrollo de Sistemas de InformaciónDesarrollo de Sistemas de Información
Desarrollo de Sistemas de Información
 
Luis valles 22169276
Luis valles 22169276Luis valles 22169276
Luis valles 22169276
 
Contratación y gestión de desarrolladores a distancia
Contratación y gestión de desarrolladores a distanciaContratación y gestión de desarrolladores a distancia
Contratación y gestión de desarrolladores a distancia
 
Procesos de Ingenieria de Software
Procesos de Ingenieria de SoftwareProcesos de Ingenieria de Software
Procesos de Ingenieria de Software
 

Destacado

Historia de les presentacions digitals
Historia de les presentacions digitalsHistoria de les presentacions digitals
Historia de les presentacions digitalsJordi Vivancos
 
Tagungsdokumentation Kommunale-Wohnungspolitik 2006
Tagungsdokumentation Kommunale-Wohnungspolitik 2006Tagungsdokumentation Kommunale-Wohnungspolitik 2006
Tagungsdokumentation Kommunale-Wohnungspolitik 2006NRWBANK
 
Juan Damia - Presentación Analytics UBA
Juan Damia - Presentación Analytics UBAJuan Damia - Presentación Analytics UBA
Juan Damia - Presentación Analytics UBAJuan Damia
 
Violeta Leon IMARPE Bol. vol. 26-2
Violeta Leon IMARPE Bol. vol. 26-2Violeta Leon IMARPE Bol. vol. 26-2
Violeta Leon IMARPE Bol. vol. 26-2Jesus Ledesma
 
Tarea de matemática de karen bohórquez
Tarea de matemática de karen bohórquezTarea de matemática de karen bohórquez
Tarea de matemática de karen bohórquezkarencitah_15
 
11 fn noviembre 2011
11 fn noviembre 201111 fn noviembre 2011
11 fn noviembre 2011UNAM
 
Visita centro histórico
Visita centro históricoVisita centro histórico
Visita centro históricoalex10cz
 
Desde Casa Templaria con mucho amor
Desde Casa Templaria con mucho amorDesde Casa Templaria con mucho amor
Desde Casa Templaria con mucho amorManos Italia
 
On The Strict Rules Of Strategy And Innovation
On The Strict Rules Of Strategy And InnovationOn The Strict Rules Of Strategy And Innovation
On The Strict Rules Of Strategy And InnovationJan Willem van Eck
 
Plan de consumo de fruta en las escuelas
Plan de consumo de fruta en las escuelasPlan de consumo de fruta en las escuelas
Plan de consumo de fruta en las escuelasefcervantes
 
111115 iedbcn lavanguardiaonline_design
111115 iedbcn lavanguardiaonline_design111115 iedbcn lavanguardiaonline_design
111115 iedbcn lavanguardiaonline_designIED Barcelona
 

Destacado (20)

120404plan_estudios_D_ADE
120404plan_estudios_D_ADE120404plan_estudios_D_ADE
120404plan_estudios_D_ADE
 
El Cliente Digital
El Cliente DigitalEl Cliente Digital
El Cliente Digital
 
Juegos olimpicos
Juegos olimpicosJuegos olimpicos
Juegos olimpicos
 
Historia de les presentacions digitals
Historia de les presentacions digitalsHistoria de les presentacions digitals
Historia de les presentacions digitals
 
Tagungsdokumentation Kommunale-Wohnungspolitik 2006
Tagungsdokumentation Kommunale-Wohnungspolitik 2006Tagungsdokumentation Kommunale-Wohnungspolitik 2006
Tagungsdokumentation Kommunale-Wohnungspolitik 2006
 
Juan Damia - Presentación Analytics UBA
Juan Damia - Presentación Analytics UBAJuan Damia - Presentación Analytics UBA
Juan Damia - Presentación Analytics UBA
 
Violeta Leon IMARPE Bol. vol. 26-2
Violeta Leon IMARPE Bol. vol. 26-2Violeta Leon IMARPE Bol. vol. 26-2
Violeta Leon IMARPE Bol. vol. 26-2
 
Tarea de matemática de karen bohórquez
Tarea de matemática de karen bohórquezTarea de matemática de karen bohórquez
Tarea de matemática de karen bohórquez
 
11 fn noviembre 2011
11 fn noviembre 201111 fn noviembre 2011
11 fn noviembre 2011
 
Visita centro histórico
Visita centro históricoVisita centro histórico
Visita centro histórico
 
Farm animals
Farm animalsFarm animals
Farm animals
 
LO4
LO4LO4
LO4
 
Diapo margarita
Diapo margaritaDiapo margarita
Diapo margarita
 
Tapete
TapeteTapete
Tapete
 
Desde Casa Templaria con mucho amor
Desde Casa Templaria con mucho amorDesde Casa Templaria con mucho amor
Desde Casa Templaria con mucho amor
 
On The Strict Rules Of Strategy And Innovation
On The Strict Rules Of Strategy And InnovationOn The Strict Rules Of Strategy And Innovation
On The Strict Rules Of Strategy And Innovation
 
Pobreza cero
Pobreza cero Pobreza cero
Pobreza cero
 
Plan de consumo de fruta en las escuelas
Plan de consumo de fruta en las escuelasPlan de consumo de fruta en las escuelas
Plan de consumo de fruta en las escuelas
 
Museo del padro
Museo del padroMuseo del padro
Museo del padro
 
111115 iedbcn lavanguardiaonline_design
111115 iedbcn lavanguardiaonline_design111115 iedbcn lavanguardiaonline_design
111115 iedbcn lavanguardiaonline_design
 

Similar a Permiten las metodologías ágiles de desarrollo de software la Ley de Contratos del Sector Público

Mariannys bermudez ensayo.pdf,
Mariannys bermudez ensayo.pdf,Mariannys bermudez ensayo.pdf,
Mariannys bermudez ensayo.pdf,mariannys bermudez
 
Ing.requerimientos
Ing.requerimientosIng.requerimientos
Ing.requerimientosAlumic S.A
 
Weitzenfeld guardaticomputacion2008
Weitzenfeld guardaticomputacion2008Weitzenfeld guardaticomputacion2008
Weitzenfeld guardaticomputacion2008Cesar Jimenez
 
Analisis de factibilidad_y_propuesta_del_sistema_ciclo i-2019
Analisis de factibilidad_y_propuesta_del_sistema_ciclo i-2019Analisis de factibilidad_y_propuesta_del_sistema_ciclo i-2019
Analisis de factibilidad_y_propuesta_del_sistema_ciclo i-2019Dennis Zepeda
 
Aplicaciones de estándares de calidad en la construcción de algoritmaos
Aplicaciones de estándares de calidad en la construcción de algoritmaosAplicaciones de estándares de calidad en la construcción de algoritmaos
Aplicaciones de estándares de calidad en la construcción de algoritmaosalexisj2303
 
Ingenierýa requerimiento -_gustavo_rodrýguez_diez
Ingenierýa requerimiento -_gustavo_rodrýguez_diezIngenierýa requerimiento -_gustavo_rodrýguez_diez
Ingenierýa requerimiento -_gustavo_rodrýguez_diezkarolavergara
 
INGENIERÍA DE REQUISITOS E INGENIERÍA DE REQUERIMIENTOS
INGENIERÍA DE REQUISITOS E INGENIERÍA DE REQUERIMIENTOSINGENIERÍA DE REQUISITOS E INGENIERÍA DE REQUERIMIENTOS
INGENIERÍA DE REQUISITOS E INGENIERÍA DE REQUERIMIENTOSLenin Acosta Mata
 
MODELO DE DESARRROLLO DE SOFTWARE
MODELO DE DESARRROLLO DE SOFTWAREMODELO DE DESARRROLLO DE SOFTWARE
MODELO DE DESARRROLLO DE SOFTWAREJesus Yepez
 
Tareas de ingenieria de requerimientos
Tareas de ingenieria de requerimientosTareas de ingenieria de requerimientos
Tareas de ingenieria de requerimientosnenyta08
 
Tareas de ingenieria de requerimientos
Tareas de ingenieria de requerimientosTareas de ingenieria de requerimientos
Tareas de ingenieria de requerimientosKleo Jorgee
 
informatica
informaticainformatica
informaticayoanatec
 
Planificación y Modelado
Planificación y ModeladoPlanificación y Modelado
Planificación y ModeladoDiaNa González
 
Desarrollo de software, métodos tradicionales.pptx
Desarrollo de software, métodos tradicionales.pptxDesarrollo de software, métodos tradicionales.pptx
Desarrollo de software, métodos tradicionales.pptxJasonPadilla9
 

Similar a Permiten las metodologías ágiles de desarrollo de software la Ley de Contratos del Sector Público (20)

Mariannys bermudez ensayo.pdf,
Mariannys bermudez ensayo.pdf,Mariannys bermudez ensayo.pdf,
Mariannys bermudez ensayo.pdf,
 
Ensayo ingenieria de requisitos
Ensayo ingenieria de requisitosEnsayo ingenieria de requisitos
Ensayo ingenieria de requisitos
 
Mitos de-software
Mitos de-softwareMitos de-software
Mitos de-software
 
Mitos de-software.
Mitos de-software.Mitos de-software.
Mitos de-software.
 
Mitos de software.
Mitos de software.Mitos de software.
Mitos de software.
 
Ing.requerimientos
Ing.requerimientosIng.requerimientos
Ing.requerimientos
 
Weitzenfeld guardaticomputacion2008
Weitzenfeld guardaticomputacion2008Weitzenfeld guardaticomputacion2008
Weitzenfeld guardaticomputacion2008
 
Analisis de factibilidad_y_propuesta_del_sistema_ciclo i-2019
Analisis de factibilidad_y_propuesta_del_sistema_ciclo i-2019Analisis de factibilidad_y_propuesta_del_sistema_ciclo i-2019
Analisis de factibilidad_y_propuesta_del_sistema_ciclo i-2019
 
Aplicaciones de estándares de calidad en la construcción de algoritmaos
Aplicaciones de estándares de calidad en la construcción de algoritmaosAplicaciones de estándares de calidad en la construcción de algoritmaos
Aplicaciones de estándares de calidad en la construcción de algoritmaos
 
Mitos del Software
Mitos del SoftwareMitos del Software
Mitos del Software
 
Ingenierýa requerimiento -_gustavo_rodrýguez_diez
Ingenierýa requerimiento -_gustavo_rodrýguez_diezIngenierýa requerimiento -_gustavo_rodrýguez_diez
Ingenierýa requerimiento -_gustavo_rodrýguez_diez
 
INGENIERÍA DE REQUISITOS E INGENIERÍA DE REQUERIMIENTOS
INGENIERÍA DE REQUISITOS E INGENIERÍA DE REQUERIMIENTOSINGENIERÍA DE REQUISITOS E INGENIERÍA DE REQUERIMIENTOS
INGENIERÍA DE REQUISITOS E INGENIERÍA DE REQUERIMIENTOS
 
MODELO DE DESARRROLLO DE SOFTWARE
MODELO DE DESARRROLLO DE SOFTWAREMODELO DE DESARRROLLO DE SOFTWARE
MODELO DE DESARRROLLO DE SOFTWARE
 
Tareas de ingenieria de requerimientos
Tareas de ingenieria de requerimientosTareas de ingenieria de requerimientos
Tareas de ingenieria de requerimientos
 
Tareas de ingenieria de requerimientos
Tareas de ingenieria de requerimientosTareas de ingenieria de requerimientos
Tareas de ingenieria de requerimientos
 
informatica
informaticainformatica
informatica
 
Pym
PymPym
Pym
 
Pym
PymPym
Pym
 
Planificación y Modelado
Planificación y ModeladoPlanificación y Modelado
Planificación y Modelado
 
Desarrollo de software, métodos tradicionales.pptx
Desarrollo de software, métodos tradicionales.pptxDesarrollo de software, métodos tradicionales.pptx
Desarrollo de software, métodos tradicionales.pptx
 

Permiten las metodologías ágiles de desarrollo de software la Ley de Contratos del Sector Público

  • 1. ¿Permite la Ley de Contratos del Sector Público Proyectos Ágiles de Software? 1 ¿Permite la Ley de Contratos del Sector Público Proyectos Ágiles de Software? R. Saralegui, Amper Programas Resumen—Las metodologías ágiles de desarrollo presentan grandes ventajas para proyectos de desarrollo de software, mediante unos métodos iterativos y métricas que permiten manejar la inconcreción de qué estará disponible y cuándo. La Ley 30/2007 de Contratos del Sector Público impone restricciones a los contratos de la Administración que en principio hacen difícil seguir estas metodologías. Sin embargo, mediante una cuidadosa redacción de los pliegos de condiciones, creando las métricas adecuadas e imponiendo que se siga un proceso iterativo durante el desarrollo, se pueden utilizar metodologías ágiles. Como consecuencia, las dos partes salen beneficiadas. Palabras clave—Proyectos, agile programming, metodologías ágiles, Ley de Contratos del Sector Público, LCSP, software, métricas de servicio I. INTRODUCCIÓN El software está siendo cada vez una parte más importante de cualquier proyecto tecnológico y, con ello, de los grandes programas contratados por la Administración ([1], pág 14). Sin embargo, la regulación actual no hace un tratamiento muy diferenciado de los desarrollos de software, y se limita a encuadrarlos dentro de los contratos de servicios ([2], art. 9b) sin que ni siquiera tengan una mención expresa en el Anexo II (“Servicios a los que se refiere el artículo 10”). Por todo ello, nos preguntamos si al redactar esta ley se tuvo en cuenta un campo tan importante como el desarrollo de software, o al menos, si su espíritu permite emprender desarrollos que sean tan beneficiosos y eficientes para la Administración como los que podría encargar una empresa privada mediante la legislación mercantil. En este estudio, expondremos unas ideas básicas (y contraintuitivas) sobre la complejidad de los problemas. Pasaremos a resumir las ideas fundamentales de las metodologías ágiles de desarrollo. A continuación, estudiaremos cuáles son los artículos de la ley más afectados y haremos una propuesta que sea compatible con las prescripciones de la ley y las metodologías ágiles. II. NO ES FÁCIL FORMULAR UN PROBLEMA A. Un Ejemplo Muchas veces el conseguir formular con precisión un problema es sinónimo de alcanzar la solución. El ejemplo por antonomasia son los bugs de software. Se comienza con una manifestación del problema (“el dispositivo no se comporta como yo quiero”); se investiga y, tras un complejo proceso de búsqueda, se formula el problema con precisión (“cuando el dispositivo parte del estado A y recibe una serie de datos en el orden D y de longitud L, se produce un error porque el módulo M no está preparado para ello en este estado A”). En el momento que se ha identificado con precisión en qué lugar del módulo M se manejan los datos de longitud L, se puede solucionar actuando sobre ese módulo M. Trabajo del curso de Eficiencia en la Gestión de Recursos, Proyectos y Contratos de la Administración Pública: Especial Referencia al Ámbito de la Defensa. Instituto Universitario “General Gutiérrez Mellado”. UNED. Junio de 2010 B. La Intuición No Vale Encontrar una solución puede ser mucho más difícil que lo que nos parece por intuición. Hay problemas con una formulación sencilla, como el problema del viajante: “dado un número N de ciudades, conociendo cuáles están interconectadas por carretera y a qué distancia están unas de otras ¿qué ruta debe seguir un viajante para visitarlas todas recorriendo la mínima distancia total?” [3]. Pero su solución se va haciendo más complicada conforme crece el número de ciudades N, de tal modo no hay un algoritmo que nos permita realizar los cálculos en un tiempo razonable más que para un pequeño número de ciudades. Por tanto, la intuición no nos sirve para estimar la complejidad de un problema. Necesitamos un proceso racional como el diálogo competitivo o similar para alcanzar una buena comprensión de esa complejidad. C. El Diálogo Competitivo El legislador parece ser consciente de que formular con precisión un problema es ya parte de la solución: el proceso de diálogo competitivo (arts. 163 a 167 LCSP) se crea para poder llegar a definir con precisión lo que necesita la Administración antes de solicitar una oferta. Comprador y vendedor siguen un proceso iterativo, con el que van investigando el problema, y al final obtienen una formulación precisa de qué se quiere resolver. Se sigue un proceso racional para evitar engaños de la intuición. D. Después del Diálogo Competitivo Pero ¿qué ocurre una vez adjudicado un contrato? ¿Hay métodos racionales para controlar un proyecto de desarrollo de software de gran complejidad? Una primera respuesta sería que se deben tener muy claramente especificados todos los requisitos, especificaciones, pruebas de validación y aceptación final. También los protocolos de interconexión con otros sistemas externos. Incluso se debería realizar un trabajo previo de caracterización detallada del software para tener un estudio de todos los casos y detallar con precisión absoluta lo que se
  • 2. ¿Permite la Ley de Contratos del Sector Público Proyectos Ágiles de Software? 2 debe hacer, los posibles problemas que se van a encontrar y la manera de solucionarlos. Posiblemente esto constituiría un contrato previo al de desarrollo de software. Y además, sería sólo factible para proyectos sencillos [4]. Para cualquier otro caso, llegar a hacer una caracterización detallada sería equivalente a emprender el desarrollo, pues sólo desarrollando y probando el software se puede saber qué problemas surgen y la manera de solucionarlos. III. MODELO ÁGIL DE DESARROLLO El modelo ágil de desarrollo de software da una respuesta a lo anterior mediante una metodología de desarrollo llamada “ágil” (agile development). En el modelo clásico de desarrollo en cascada [4] hay fases diferenciadas y estancas de análisis, diseño, desarrollo, pruebas y entrega al cliente (Fig. 1). Cada una se inicia sólo cuando está completamente terminada y definida la anterior, y sólo se da una vez. En cambio, en el modelo ágil [5] se produce un gran número de esas iteraciones durante el proyecto, en un ciclo que suele repetirse cada cuatro semanas (Fig. 2). El cliente debe estar presente en la fase inicial y final de cada ciclo, viendo el estado del desarrollo de lo que ha pedido, y tiene poder de decisión sobre qué se va a implementar en esa iteración. En contrapartida a esta implicación extra, tiene siempre una visión real del avance del proyecto, con lo que evita un “esto no es lo que yo quería” en el momento de la entrega final y tiene una mejor comprensión de los problemas a los que se enfrentan los desarrolladores. Esto permite una información constante del avance del proyecto y poder reaccionar con agilidad a cambios tecnológicos o frente a posibles incoherencias en las prestaciones solicitadas. Análisis Diseño Desarrollo Pruebas Entrega Análisis Diseño Desarrollo Pruebas Entrega Análisis Diseño Desarrollo Pruebas Entrega FIG. 1. MODELO CLÁSICO DE DESARROLLO A. La virtud y el defecto de este modelo: inconcreción Debido a cómo se hace la división en tareas y su planificación, en cada momento se puede tener una estimación de qué estará disponible en las próximas iteraciones, en qué estado y cuándo estará listo (Fig. 3). Esta estimación es aproximada, pero va ganando en precisión conforme avanza el proyecto y también en función de la experiencia del equipo de desarrollo en utilizar esta metodología. Análisis Diseño Desarrollo Pruebas Entrega Análisis Diseño Desarrollo Pruebas Entrega Análisis Diseño Desarrollo Pruebas Entrega Análisis Diseño Desarrollo Pruebas Entrega FIG. 2. UNA ITERACIÓN EN LA METODOLOGÍA ÁGIL Puede aducirse que no parece muy profesional el formular grados de cumplimiento de requisitos o plazos de disponibilidad de manera aproximada, pues un proyecto de desarrollo de software debería constar de unas prestaciones concretas que se suministren en un plazo concreto. Sin embargo, la metodología ágil lo que hace es poner de manifiesto de una manera honesta algo conocido por cuantos han estado implicados en proyectos de software complejos: conforme se va trabajando en solucionar un problema, se formula de una manera más precisa en cada iteración de manera similar a como explicábamos en el capítulo II y se va perfeccionando la solución a medida que se hace el desarrollo. La alternativa que tiene un equipo desarrollador de software obligado a comunicar plazos fijos es poner “márgenes de seguridad” en todos los componentes que se desarrollan. Unos márgenes de seguridad tan amplios como para absorber cualquier retraso por reelaboración de trabajos, pruebas adicionales, correcciones de errores, etc. que pudiera darse. Evidentemente, el desarrollo de software se hará en el plazo acordado, pero no se habrá trabajado con la máxima eficiencia durante todo el proceso. Por desgracia, esta es la práctica más común en proyectos de desarrollo de software gestionados con las metodologías clásicas. La metodología ágil pone de relieve todos los pequeños detalles y contratiempos que pueden darse durante el proyecto, de modo que se pueda actuar cuanto antes y en conjunto el desarrollo se haga con la máxima eficiencia. Gracias a ello, el equipo de desarrollo puede afrontar su trabajo de un modo más realista. Con las frecuentes iteraciones, en cada momento se tiene un software funcional, con las funciones que son más importantes para el cliente, y la incertidumbre de saber cuánto queda y en cuánto tiempo se acabará va disminuyendo progresivamente, gracias a que las mediciones hechas hasta el momento sirven para predecir la evolución del trabajo que queda por hacer. También gracias a las revisiones continuas, se puede reaccionar con rapidez y, siempre con el acuerdo entre contratista y cliente: • añadir elementos que no se tuvieron en cuenta en el momento de concepción del proyecto pero que después se ha decidido que son importantes, o • eliminar aquellos que pueden ser superfluos o en los que la relación entre coste-plazo y la funcionalidad aportada no es satisfactoria. Es importante la transparencia que se obtiene para el
  • 3. ¿Permite la Ley de Contratos del Sector Público Proyectos Ágiles de Software? 3 cliente, pues al estar presente en el proceso de desarrollo, conoce todos los problemas y virtudes de lo que se desarrolla, lo que evita sorpresas en el momento de la entrega final y la tranquilidad de saber que lo recibido no tiene fallos que el contratista le está ocultando. B. Conflicto con la Ley de Contratos del Sector Público Parece claro que utilizar una metodología ágil de desarrollo para un proyecto complejo de software es ventajoso para ambas partes. Pero en un primer análisis, la utilización de una metodología ágil parece estar reñida con conceptos clave de la Ley de Contratos del Sector Público: • Se necesitan modificaciones del contrato. Hemos expuesto más arriba que, de manera constante durante el desarrollo del proyecto, se van a hacer cambios en el proyecto en función de lo que se va aprendiendo sobre el problema. En principio, esto nos lleva a una modificación del contrato, ya que no estamos hablando de causas imprevistas que hagan actuar al órgano de contratación por el bien del interés público (art. 202.1 párrafo primero LCSP), sino de que el proceso de desarrollo y aprendizaje técnico nos lleva a tomar decisiones de modificaciones. Además, esto sólo sería posible si estas modificaciones estuvieran previstas ya en el expediente, en consonancia con las prescripciones de la Junta Consultiva de Contratación Administrativa para modificaciones de contratos [6]. Por si fuera poco, no parece una idea realizable en la práctica: una iteración típica en un desarrollo ágil dura cuatro semanas, y hacer repetidas modificaciones a un contrato cada cuatro semanas chocaría contra los plazos que se manejan en la práctica para modificaciones contractuales al amparo del art. 202. • No se admite la inconcrecion. El contrato debe tener un objeto determinado (art. 74 LCSP), que está en contradicción con la inconcreción con la que trabajan las metodologías ágiles, según hemos explicado en el párrafo III.A. • Concepto de totalidad de la prestación. Consecuencia de la inconcreción es que no estará claro cuándo se considera que el contratista ha realizado la totalidad de la prestación (art. 205.1 LCSP): la metodología ágil sólo asegura que para una fecha concreta estará implementado un número aproximado de funcionalidades. O que para implementar un número concreto de funcionalidades, la fecha será aproximada (Fig. 3). ¿Cómo conjugar esto con el concepto de “totalidad de la prestación”? Tiempo Características Entregar cuando se alcance este nivel (a) Tiempo Características Entregar en esta fecha (b) Tiempo Características Entregar en esta zona (c) Tiempo Características Entregar cuando se alcance este nivel (a) Tiempo Características Entregar cuando se alcance este nivel (a) Tiempo Características Entregar en esta fecha (b) Tiempo Características Entregar en esta fecha (b) Tiempo Características Entregar en esta zona (c) Tiempo Características Entregar en esta zona (c) FIG. 3. QUÉ ESTARÁ DISPONIBLE Y CUÁNDO. FUENTE: [5] C. Qué nos permite la Ley de Contratos del Sector Público Sin embargo, si seguimos en nuestro análisis, podemos descubrir que la ley nos abre las puertas al desarrollo de software a través de metodologías ágiles: • Tipo del contrato. Un proyecto de software complejo debe encajar necesariamente en un contrato de servicios (art. 9b), por tratarse de la “adquisición de un programa de ordenador desarrollado a medida”. Y así como los parámetros que regulan un suministro de bienes son las unidades entregadas, los plazos y la calidad de esas unidades, una prestación de servicios se debe medir con un nivel de calidad de servicio (Service Level Agreement) según unas métricas [7] acordadas entre las partes. Si definimos de la manera adecuada en un contrato de desarrollo de software a medida los niveles de servicio que debe obtener la Administración al fin del proyecto, podríamos ir calculando el nivel de servicio que presta en cada momento el software desarrollado, de modo que hay un paralelismo entre estado del desarrollo del programa y nivel de servicio prestado. Las decisiones que tomase el equipo de desarrollo y el cliente en cada iteración irían encaminadas a obtener el máximo nivel de calidad de servicio. • Criterios de evaluación de una oferta. Se permite que la adjudicación se haga por criterios complejos, y se dará preponderancia (art. 134.2) a aquellos criterios mensurables, de tal manera que se cree una fórmula en la que se ponderen los elementos que para la Administración son más importantes. Si bien no se dice nada de la fase de ejecución del contrato, esta importancia que se da a criterios objetivos y mensurables nos inclina a pensar que la evaluación de la completitud de un suministro mediante una fórmula que tenga en cuenta unos criterios equivalentes a los de evaluación de la oferta encajaría con las intenciones del legislador. • Procesos iterativos. El diálogo competitivo, en los arts. 163.1 y 166.4, contiene un reconocimiento implícito de que es difícil llegar a formular un problema, y es necesario un proceso de estudio iterativo en el que se vaya desarrollando entre cliente y contratista la posible solución. Sólo tras varias iteraciones se podrá definir con más precisión el problema. Esta descripción es muy similar a la antes descrita del desarrollo ágil, y nos inclina a pensar que el espíritu de la ley estaría, por tanto, a favor de que también durante el cumplimiento de un contrato se siguiera un método iterativo entre cliente y contratista para ir acercándose a la solución del problema. Como explicábamos más arriba, llegar a definir el problema es gran parte del trabajo necesario para solucionarlo, sobre todo en casos de software. • Reducción de riesgos. Debido al control detallado que se hace sobre el esfuerzo de desarrollo, se tiene también controlado el coste del proyecto. En cuanto se descubren elementos complejos no previstos en el planteamiento inicial, la Administración es consciente
  • 4. ¿Permite la Ley de Contratos del Sector Público Proyectos Ágiles de Software? 4 de ello y recibe una valoración de la dificultad añadida. Esto le permite tomar decisiones de proseguir o buscar alternativas, de manera que no se generen costes extras en el proyecto y cumpla su mandato de obtener la prestación “más ventajosa” (art. 1 LCSP). IV. PROPUESTA: “MÉTRICAS DE COMPLETITUD” En resumen, si estamos convencidos de las bondades de las metodologías ágiles para desarrollos de software y deseamos que un proyecto se rija por ellas, debemos asegurarnos que las sucesivas iteraciones no provocarán modificaciones de contrato, debemos buscar que a pesar de la inconcreción siempre tengamos un objeto determinado, y que las variaciones que se produzcan, aunque estén acordadas entre contratista y Administración, siempre sean tales que se cumpla la totalidad de la prestación. Todo ello se encuadrará en un contrato de servicios, y utilizaremos unos criterios paralelos a los comúnmente utilizados para evaluación de ofertas. Esto redundará en una reducción de los riesgos para las dos partes, mayor eficiencia y contaremos con la confianza de que el proceso iterativo que seguimos está de acuerdo con el espíritu de la ley. La propuesta que aquí hacemos es: 1. Que los pliegos de condiciones tengan una definición expresa de las métricas que se utilizarán para determinar que el software funciona correctamente y a satisfacción de la Administración según prescribe el artículo 205.1. Estas métricas serán semejantes a las que se utilizan para medir prestaciones de servicios diferentes de desarrollo de software, y se podrían basar en las que se utilizan en la fase de evaluación de ofertas, en las que típicamente se dividen las características del bien deseado en diferentes niveles (básico, deseable, opcional…) y se ponderan en función de la importancia que cada característica tiene para la Administración. 2. Estas métricas deberán dar la suficiente flexibilidad para que se puedan tomar decisiones durante el desarrollo como prescriben las metodologías ágiles sin provocar cambios en el objeto del contrato, a la vez que deberán asegurar que todas las funcionalidades más importantes para la administración serán implementadas. 3. Los pliegos de condiciones deberán establecer que durante el desarrollo del proyecto se seguirá un proceso iterativo para practicar el desarrollo del software, con participación de contratista y Administración, y en el que los resultados de cada revisión servirán para establecer los pasos a seguir en la iteración siguiente. Este proceso se considerará semejante al del diálogo competitivo, pero en vez de aplicado a obtener un conocimiento para definir una solución y concluir en una oferta, estará aplicado a obtener un conocimiento para definir los pasos siguientes de un desarrollo Así, un pliego de prescripciones podría tener una tabla con funcionalidades básicas, deseables y menores, y un porcentaje mínimo de las funcionalidades que deben estar implementadas para aceptar el software. De manera similar a los típicos criterios de número de errores (bugs) que se utilizan en la industria para aceptar una versión de software (Tabla 1), se podría generar una tabla (Tabla 2) con los criterios para número de funcionalidades implementadas y con cuántas se considera el software aceptable. Tipo de error Máximo número Explicación Mayor 5 Impide el correcto funcionamiento Menor 50 El software funciona mediante un método alternativo Cosmético 100 El software funciona, pero visualmente hay elementos incorrectos TABLA 1: CONDICIONES DE ACEPTACIÓN TÍPICAS, NÚMERO DE ERRORES Nótese que para las funcionalidades básicas (o imprescindibles) proponemos una cantidad ligeramente inferior al 100%; la razón es que, de la misma manera en que a partir de una complejidad media es imposible ([1], pág. 21) obtener un software absolutamente libre de errores (y de ahí el valor no nulo para la primera línea de la Tabla 1), es también imposible que un software coincida de manera ideal con lo que se solicitaba inicialmente, en especial tras todo el trabajo iterativo desempeñado con la metodología ágil. Será labor de quienes definen los criterios de aceptación hacerlo de manera que esta teórica imperfección no impida en la práctica que el software funcione como se desea. Tipo de funcionalidad Implementadas al Explicación Básica 98% Necesarias para el buen funcionamiento Muy deseable 80% Prescindibles si entran en conflicto con la clase anterior Deseable 50% Son prescindibles si el costo de tenerlas es más elevado que lo que aportan TABLA 2: MÉTRICAS DE COMPLETITUD V. CONCLUSIÓN Las metodologías ágiles de desarrollo son un marco de referencia muy prometedor para los desarrollos de software complejo; necesitan un cambio de manera de pensar y gestionar un proyecto, pues ponen de relieve inconcreciones –que de cualquier manera existen– y nos obligan a manejarlas de manera diferente a la gestión clásica de proyectos. Su ventaja es que permiten más eficiencia en los proyectos y mayor satisfacción para desarrollador y cliente. La Ley de Contratos del Sector Público tiene requerimientos que, en principio dificultan la realización de
  • 5. ¿Permite la Ley de Contratos del Sector Público Proyectos Ágiles de Software? 5 un proyecto siguiendo estas metodologías. Sin embargo, aplicando métricas de nivel de servicio al objeto del contrato, es perfectamente posible compatibilizar el desarrollo de un software complejo según las prescripciones de la ley y utilizando los procedimientos de las metodologías ágiles. Ya que la Administración habrá estado presente durante todo el proceso de desarrollo del software, conocerá perfectamente el estado del proyecto y sabrá que obtiene un producto que numéricamente cumple con sus criterios y, lo que es más importante, tiene las funcionalidades que, tras el proceso iterativo de desarrollo ágil, ha descubierto que son las que más le convienen y con un coste controlado. Como en cualquier cambio tecnológico, posiblemente el mayor obstáculo a su utilización generalizada no será el marco legal, sino la resistencia mental al cambio y el apego que todos tenemos a utilizar los viejos métodos conocidos, aunque no sean tan eficientes. REFERENCIAS [1] A. M. Neufelder, Ensuring software reliability, Marcel Dekker, 1993, ISBN 0-8247-8762-5 [2] Ley 30/2007 de 30 de octubre, Contratos del Sector Público [3] Problema del viajante: http://es.wikipedia.org/wiki/Problema_del_viajante [4] W.W.Royce: Managing the Development of Large Software Systems. Proceedings, IEEE WESCON, Agosto 1970, pp. 1-9 [5] Mike Cohn, Agile Estimating and Planning. Prentice Hall 2005. [6] Informe de la Junta Consultiva de Contratación Administrativa nº 43/08, de 28 de julio de 2008 sobre modificaciones de los contratos, pág 8. [7] Métricas de servicio: http://en.wikipedia.org/wiki/Service_level_agreement#Common_metr ics