Definiciones y tendencia de deuda técnica

Anuncio
Definiciones y tendencia de deuda técnica:
Un mapeo sistemático de la literatura
Alberto Villar, Santiago Matalonga
Universidad ORT Uruguay
Montevideo Uruguay
(avillar, smatalonga)@uni.ort.edu.uy
Abstract. Deuda técnica es una metáfora utilizada para explicar que cuando
una dimensión de la gestión de proyectos es priorizada a favor de otra, se
genera una deuda que tendrá que ser pagada en el futuro. Típicamente es la
dimensión calidad la que tiende a perder preferencia por sobre presiones de
recursos, fechas o funcionalidades. Consideramos que esto se da porque la
dimensión calidad es más difícil de medir cuantitativamente y por tanto los
gerentes de proyecto no tienen visibilidad de las decisiones que afectan esta
dimensión. La metáfora de deuda técnica pretende contribuir a esta visibilidad
en la gestión de proyectos.
Para entender la viabilidad del uso de la metáfora como herramienta para la
gestión de proyectos se realizó un mapeo sistemático de la literatura. El objetivo
de este trabajo es intentar responder cómo se define el concepto de deuda
técnica, cuáles son los referentes en el tema y qué nivel de actividad existe. Este
artículo presenta los resultados del mapeo sistemático de la literatura realizado.
Los principales hallazgos son que no existen definiciones consensuadas para la
metáfora de deuda técnica y que la mayoría de estas están orientadas a la
calidad de código sobre los procesos en general. La cantidad creciente de
artículos publicados muestra que es un tema de interés para la comunidad
científica.
Keywords: technical debt, design debt, systematic mapping studies.
1
Introducción
La metáfora de deuda técnica fue mencionada en primera instancia por Ward
Cunningham en el congreso de orientación a objetos OOPSLA en el año 1992[1].
Explica que la deuda técnica se genera por las actividades que los miembros del equipo
o el equipo optan por no hacerlas correctamente ahora y que impiden el desarrollo
futuro si no se resuelven. Asimismo, los intereses representan el costo que se paga día
a día por mantener la deuda y se suma al costo total de eliminarla. Desde entonces,
otros autores reconocidos la tomaron y realizaron sus propias definiciones basadas en
la metáfora original con agregados y/o diferencias según distintos puntos de vista. Por
ejemplo, Martin Fowler asocia la deuda técnica con la deuda financiera y agrega
formas de pago e intereses generados[2]. Chris Sterling suma el concepto de
degradación de los componentes la cual también es parte de la deuda técnica
generada[3]. Y Robert Martin hace una diferencia entre deuda técnica y malas
prácticas[4]. Según este autor deuda técnica se compone de decisiones que se realizan
en proyectos reales en forma consciente y, aunque riesgosas, pueden ser beneficiosas
para el mismo en un momento determinado del proyecto.
Todas estas definiciones se refieren mayoritariamente a deuda de diseño y
codificación. Chris Sterling realiza una agrupación más amplia y habla de deuda de
software. En ella describe 5 tipos de deuda: la técnica, de calidad, generada en el
manejo de la configuración, de diseño y de experiencia en la plataforma.
Más allá de las diferentes definiciones existe unanimidad de los autores
mencionados sobre la importancia del tema ya que no controlarla tiene necesariamente
consecuencias económicas negativas muy importantes sobre el proyecto hasta tal punto
que puede hacerlo fracasar. Debido a esta incidencia resulta imprescindible poder
gestionarla adecuadamente. Para poder realizar la gestión de la deuda técnica es
necesario contar con definiciones exactas así como medidas cuantitativas de los
componentes que la conforman en forma consensuada y estandarizada por parte de la
industria. La obtención de esta información ayudará a tener mayor visibilidad del
problema de la deuda técnica y poder gestionar la misma.
Este trabajo presenta los resultados de un mapeo sistemático realizado con el
objetivo de identificar el estado actual de las definiciones de deuda técnica y las
medidas utilizadas para gestionarla. Los resultados de este trabajo ayudaron a conocer
el nivel de definiciones existentes en el ámbito académico así como los autores que
están trabajando activamente en el tema.
Como síntesis de nuestras conclusiones, consideramos que analizar la deuda
técnica desde un punto de vista exclusivo de la calidad de código, como lo hace la
mayoría de las definiciones encontradas, no es suficiente. Se debe analizar la deuda
técnica desde una óptica más amplia. No solamente se genera en el código, un mal
diseño o una mala documentación, sino que es parte de la arquitectura de la solución,
de un proyecto o de toda la organización involucrando a todos los actores, no
solamente a los relacionados en la construcción del software. Algunos autores se
refieren a la deuda técnica generada a través de decisiones de la empresa, políticas y
oportunidades y que, como tal, debe ser atacada de una forma integral, por ejemplo,
administrada en un portfolio de proyectos a nivel de toda la organización[5].
Consideramos que esta forma de ver la deuda técnica desde un punto de vista más
holístico de la empresa es necesario y el involucramiento de los distintos actores
incluyendo los roles gerenciales y de toma de decisiones es imprescindible. El mapeo
realizado buscó evidencia de las distintas perspectivas del tema y realizó una
clasificación al respecto la que evidenció un crecimiento en los últimos años de
artículos orientados a una visión más general e integral del tema, aunque también se
siguen generando artículos orientados a las primeras definiciones orientadas
fuertemente a la calidad de código.
Por último, el mapeo sistemático también confirmó la importancia creciente del
tema evidenciado por la cantidad de artículos que se están generando en los últimos
años.
El artículo está organizado de la siguiente manera. La sección 2 describe el proceso
seguido para el mapeo sistemático, las preguntas de investigación, los criterios de
inclusión, exclusión y las clasificaciones realizadas. La sección 3 presenta los
resultados obtenidos del mismo. La sección 4 analiza las preguntas abiertas para
nuevas líneas de investigación. La sección 5 describe las posibles amenazas a la
validez encontradas en este mapeo. Finalmente la sección 6 detalla las conclusiones
alcanzadas.
2
MAPEO SISTEMÁTICO DE LA LITERATURA
En base a los lineamientos provistos en[6] y[7], los pasos seguidos para el mapeo
sistemático son:
1)
Definición de las preguntas de investigación (desarrollado en el apartado A
de esta sección).
2)
Búsqueda de la literatura relevante (desarrollado en el apartado B de esta
sección)
3)
Selección de los estudios pertinentes (desarrollado en el apartado B y C de
esta sección)
4)
Clasificación de los artículos (desarrollado en el apartado C de esta
sección)
5)
Extracción y agregación de los datos (desarrollado en la sección
Resultados obtenidos).
2.1
Preguntas de investigación
El objetivo principal de este mapeo sistemático es tener una visión del estado del
arte realizada en torno al tema de deuda técnica para obtener información de
actividades y evolución del tema.
Para este estudio, las preguntas que se buscan responder son las siguientes:
P1. ¿Cuáles son las definiciones encontradas de deuda técnica y deuda de diseño?
P2. ¿Qué actividad de investigación ha habido a lo largo del tiempo?
P3. ¿Cuál es la evolución de los temas a lo largo del tiempo?
P4. ¿Cuáles son los principales investigadores en el tema?
2.2
Selección de los motores de búsquedas y artículos pertinentes
Para las búsquedas se utilizaron las siguientes bases de datos bibliográficas: ACM,
Springer, IEEE Explore, SciVerse y CiteSeerx. La selección de los motores de
búsqueda se vio limitada por la disponibilidad de los mismos en el Portal Timbo1 y la
biblioteca de la Universidad ORT Uruguay con el agregado de Citeseerx ya que es un
motor de búsqueda de acceso libre.
Para la construcción de las cadenas de búsquedas se utilizaron las palabras claves:
“technical debt”. En las primeras lecturas de los artículos seleccionados, en muchos de
ellos, aparecieron referencias de deuda de diseño por lo que se agregó a la búsqueda las
palabras “design debt” y así obtener un alcance más amplio de las mismas. Como
consecuencia también se agregaron a la pregunta de investigación las definiciones
encontradas para estos términos. (Pregunta P1). El filtro inicial fue el menos restrictivo
posible y el filtro de exclusión es más intensivo (ver apartado C de esta sección). Con
este formato se redujo el riesgo de eliminar artículos útiles. La tabla 1 presenta los
resultados crudos de las búsquedas y las fechas en que se ejecutaron las mismas.
Tabla1.Resultados de las búsquedas
Identificador
Cant.
(SR)***
TD+DD
14/06/2012
70
ACM
TD+DD
27/05/2012
31
Springer
TD+DD
27/05/2012
100
IEEE
TD
28/05/2012
18
SciVerse TD
DD
27/05/2012
6
SciVerse DD
TD
13/06/2012
17
Citeseerx TD
DD
28/05/2012
43
Citeseerx DD
TOTAL
285
*Se utilizó el string de búsqueda “tecnical debt” “design debt” o ambos
** Fecha de ejecución de las búsquedas en los distintos motores
***Cantidad de artículos excluyendo los repetidos
2.3
TD/DD*
Fecha**
Cantidad
Artículos
71
31
100
18
8
17
47
Selección de los artículos pertinentes
Se definieron los siguientes criterios de inclusión:
 todos los artículos, libros y reportes indexados en los motores de búsqueda
utilizados que definan y/o nombren “technical debt” o “design debt” en
cualquier parte del documento o metadata (título, abstract, cuerpo).
 No existe límite de fecha de publicación.
Los criterios de exclusión son los siguientes:
 No es del tema software (D_NET).
 Es un artículo que podría ser clasificado (analizando el abstract si tiene)
pero no es posible accederlo (NA).
 No hay datos, no se puede leer el documento ni hay abstract (D_NHD).
 No existe el documento, tiene entrada en el buscador pero el link es
inválido (NED).
 Descartado por lectura del abstract (D_PA).
1www.timbo.org.uy
Portal uruguayo de búsqueda.



Descartado por lectura del cuerpo del artículo (D_PL).
Descartado porque es un índice, una tabla de contenido, son notas de
publicación o presentaciones de simposios (D_ITOC).
Repetido (REP).
La tabla 2 muestra los resultados de los artículos excluidos.
D_ITOC
0
0
5
0
3
8
9
0
12
8
2
31
Total
2
0
1
0
5
8
REP
27
8
3
7
3
48
D_PL
0
4
2
0
36
42
D_PA
D_NET
ACM
Springer
IEEE
SciVerse
Citeseerx
Total
NA
Motor de
búsqueda
Tabla2.Resultados excluidos por motor de búsquedas
20
1
1
1
4
27
58
13
24
16
53
164
Luego de aplicar los criterios de exclusión mencionados, de un total de 285
artículos accedidos por las búsquedas se seleccionaron 121 artículos que contienen las
palabras claves, su texto es accesible y pertenecen al tema.
3
Resultados obtenidos
Este apartado presenta los resultados obtenidos de clasificar los artículos para dar
respuesta a las preguntas de investigación. Para cada pregunta se realizó una
clasificación que se muestra con su correspondiente tabla, exceptuando las definiciones
que por ser descriptivas se listan.
P1. ¿Cuáles son las definiciones encontradas de deuda técnica y deuda de diseño?
A continuación se detallan todas las definiciones encontradas sin exclusión para
poder obtener conclusiones al respecto. En caso de que fueran referencias, si la
definición está escrita en el artículo se tomó en cuenta, tal es el caso de las dos
definiciones de deuda de diseño. El orden que se muestran es el ascendente por año de
publicación.
TDD_1: Es de esperar que una falta de foco en la arquitectura fuerce el punto ideal
hacia lo cierto: el esfuerzo necesario para refactorizar el código para posibilitar el
desarrollo del siguiente sistema. Este efecto es también conocido como deuda
técnica[8].
TDD_2: La deuda técnica se refiere a los costos del envejecimiento del software
que no son atendidos, los cuales por consiguiente, necesitan ser reparados en una fase
posterior. Parnas asevera que "nuestra experiencia con el envejecimiento del software
nos dice que debemos ver más allá de la primera versión hasta el momento en que el
producto es viejo", indicando que hay una necesidad de considerar aspectos a largo
plazo[9].
TDD_3: Deuda técnica es el crédito que el equipo de desarrollo asume por atajos
tomados durante los ciclos de desarrollo previos. Dichos atajos consisten en poca
revisión de código, unidades de testeo no automáticas, carencia de calidad en el testing
y la pobre implementación[10].
TDD_4: El entorno de desarrollo, la base de datos, el control del código y el
manejo de dependencias en instalación de un proyecto no conocido pueden ser
extremadamente complicados. Esto es esencialmente "Deuda técnica", que también
aparece en Scrum normal, pero es mucho más aparente en Scrum de empresas cuando
los equipos se mueven entre diferentes productos[11].
TDD_5: Deuda técnica es algo en lo que no podemos improvisar, específicamente
en el código fuente. Por ejemplo, un módulo existente puede ser refactorizado para
ganar mejor cobertura de testeo o para limpiar código innecesario[12].
TDD_6: Deuda técnica es una metáfora para los inmaduros, incompletos o
inadecuados artefactos en el ciclo de vida del desarrollo de software, que pueden
causar altísimos costos y baja calidad en el largo plazo, dicen los autores
de “Measuring and Monitoring Technical Debt”, Carolyn Seaman y Yuepu Guo[13].
TDD_7: Los proyectos de mantenimiento de software son a menudo ajustados por
el presupuesto, fechas y recursos. Para hacer frente a esos ajustes, se hacen
compensaciones durante todo el ciclo de desarrollo del software. Cuando esas
compensaciones permiten a los equipos del proyecto hacer frente a las expectativas de
la dirección y del cliente en el corto plazo, el compromiso resulta en costo adicional
posterior en el proceso de mantenimiento. Este fenómeno es conocido como "deuda
técnica"[14].
TDD_8: Deuda técnica es una metáfora que describe las concesiones entre las
actividades de desarrollo técnico que son demoradas para conseguir el pago de
compensaciones en el corto plazo, como ser una versión del software a tiempo. El
término "deuda" es usado para describir como esas actividades pueden ser saldadas en
el corto plazo. Como entrar en una deuda financiera para comprar un nuevo auto,
aunque igual la paguemos más tarde. Si se acumula demasiada deuda técnica en el
proyecto de software, se retrasará el desarrollo, por ejemplo, por incrementar el pobre
mantenimiento del código[15].
TDD_9: Deuda técnica es una metáfora usada para describir la práctica de
sacrificar las metas a largo plazo a cambio de un [barato y rápido] logro de metas a
corto plazo[16].
TDD_10: Deuda técnica es una metáfora que describe situaciones en las cuales los
desarrolladores aceptan sacrificios en una dimensión del desarrollo (por ejemplo,
calidad de software) para optimizar otra dimensión (por ejemplo, características de
implementación necesarias antes del tiempo límite)[16].
TDD_11: Deuda técnica es una metáfora que ha ganado popularidad en la
comunidad del desarrollo ágil para describir la brecha entre el estado actual del sistema
y el estado ideal del mismo, usualmente en situaciones en donde un compromiso es
hecho durante el desarrollo para satisfacer demandas en una dimensión, como el
tiempo de entrega, sacrificando trabajo en otra dimensión, como la arquitectura[17].
En el caso de las definiciones de deuda de diseño se encontraron solamente dos
definiciones que se detallan a continuación:
DDD_1: Evitar la tentación de parar el trabajo y refactorizar por varias semanas.
Aun el equipo más disciplinado inadvertidamente asume deuda de diseño, por lo tanto
eliminar la deuda es una actividad continua. Tenga su equipo acostumbrado a
refactorizar como parte de su trabajo diario. En este caso son dos artículos los que
referencian esta definición[18][19].
DDD_2: Además, el costo se incrementa largamente en las deficiencias
tecnológicas no corregidas, hasta que el código se transforma en inmanejable y
esencialmente debe ser completamente reescrito. Este creciente problema es llamado
deuda de diseño[20].
P2. ¿Qué actividad de investigación ha habido a lo largo del tiempo?
De la agrupación de los artículos seleccionados por año puede observarse una
tendencia ascendente en cantidades absolutas de publicaciones sobre el tema. En la
figura 1 se ve esta tendencia ascendente a través de los años.
50
40
30
20
10
0
Fig. 1. Gráfica de resultados agrupados por año de publicación. *Año 2012 representado hasta las
fechas de búsquedas (ver tabla 1)
P3. ¿Cuál es la evolución del concepto a lo largo del tiempo?
Para responder a esta pregunta, además de la agrupación de los artículos por año de
publicación, se categorizaron en 4 grupos. Las agrupaciones son:
N_NOM: Son los artículos que solo nombran el término de deuda técnica y que en
su contexto no se pueden clasificar de otra forma. Estos artículos realmente están
relacionados con el tema y podrían aplicar tanto a N_TD_C como N_TD_A no así para
N_TD_I.
N_TD_C: Los artículos clasificados bajo esta agrupación son los que referencian
solamente al tema del código. Utilizan el término para referirse a la deuda generada por
código mal construido por no seguir buenas prácticas, la no aplicación de patrones, el
bajo nivel de testing del mismo y la poca experiencia del desarrollador, es decir, la baja
calidad del código generado.
N_TD_A: Esta clasificación incluye la anterior y además agrega factores de pobre
arquitectura, infraestructura mal dimensionada, requerimientos mal detallados,
documentación desactualizada y valor del negocio solo desde el punto de vista del
costo de pagar la deuda técnica. En este caso se ve un alcance más amplio del concepto
integrando más actores.
N_TD_I: Esta clasificación incluye la anterior y además agrega otros stakeholders
(jefes de proyecto, todas las demás áreas de la empresa, directorio, PMO) al problema
de la deuda técnica. Los generadores de deuda técnica no son solamente los integrantes
del grupo técnico (arquitectos, diseñadores, implementadores, testers, etc.) sino que
también se da por otras necesidades de la organización como son oportunidades de
negocio y ventanas de tiempo. Por la forma de la deuda y cómo influye en la
organización se debe tratar su pago, generación y pago de intereses como un elemento
más del portfolio de proyectos y actividades de la organización, además de la
necesidad de involucrar a toda la organización en el tratamiento del problema.
La tabla 3 muestra las cantidades de artículos encontrados para cada una de las
clasificaciones.
Estas categorizaciones son ordenables desde el punto de vista del alcance del uso
del término. Alcance se refiere a las etapas y/o actividades que comprende el concepto.
En este caso van desde un alcance centrado solamente en la codificación hasta uno que
cubre todas las etapas, actividades y roles involucrados en un proyecto de software.
2000
2004
2005
2006
2007
2008
2009
2010
2011
2012*
TOTAL
2
1
2
2
1
8
1
4
3
2
8
8
14
12
23
5
80
1
2
1
4
8
1
17
2
3
8
3
16
TOTAL
N_TD_I
N_TD_A
N_TD_C
Año
N_NOM
Tabla3.Resultados agrupados por criterios
1
4
4
2
8
14
16
21
41
10
121
P4. ¿Cuáles son los principales investigadores en el tema?
Se seleccionaron los autores con más de 2 publicaciones realizadas.
Algunas de las publicaciones son capítulos de libros y se contaron como
publicaciones independientes. La tabla 4 muestra los resultados obtenidos. Aunque se
contabilizaron los capítulos de un mismo libro como publicaciones independientes se
marcó con asteriscos esta situación.
Tabla4.Autores con mayor actividad de publicaciones
Autores
Kruchten, Philippe
Seaman, Carolyn
Gee, Joseph
Holtsnider, Bill
Martin, Angela
Shull, Forrest
Stragand, George
Sutherland, Jeff
Wheeler, Tom
Blankenship, Jerrel
Guo, Yuepu
Millett, Scott
Brown, Nanette
Murphy-hill, Emerson
Ozkaya, Ipek
Wall, Anders
Zazworka, Nico
Cantidad
6
6
5*
5*
5
5
5*
5
5*
4*
4
4*
3
3
3
3
3
* Son capítulos de libros expuestos en los motores de búsquedas como artículos, por lo que se
contabilizaron como tales.
Por lo mostrado en la tabla 4 solamente el 10% de los autores publicaron más de 2
artículos. Este dato se puede interpretar como que la mayoría de los autores que
publicaron artículos de deuda técnica no es su tema principal de investigación. Por el
tipo de tema este dato es esperable ya que es un concepto amplio que impacta en varios
aspectos (como se explicó anteriormente) y por consiguiente es normal que aparezca
en artículos de software relacionados indirectamente. Cabe recordar que la inclusión
del artículo en el mapeo alcanzó solamente con nombrar el tema. Esto hace que exista
un conjunto grande de los mismos que nombra el tema para soportar solamente una
sección del mismo.
4
Trabajos futuros
Como se mencionó en la sección II, el objetivo de un mapeo sistemático de la
literatura es identificar los actores clave y abrir líneas de investigación en el tema. En
esta sección se analizan algunas de las preguntas abiertas que pueden conducir a
nuevas líneas de investigación.
4.1
¿Qué medidas se pueden utilizar para medir la deuda técnica desde los
distintos aspectos y etapas del proceso de software?
Las definiciones encontradas apuntan a que no hay una definición aceptada, sino
que hay diferentes definiciones que tienen distintos matices de orientación. La mayoría
de las mismas se orientan a la deuda generada en el código. En este aspecto existen
varias medidas de calidad de código que son universalmente aceptadas.
Como ya se comentó, otros trabajos analizan la deuda técnica desde un punto de
vista más amplio que incluyen documentación, requisitos, decisiones de arquitectura,
etc. Sobre tales artículos se investigó qué clase de medidas de calidad aparecían y qué
valores tomaban. Cabe aclarar que no se agregó a las preguntas a responder por el
mapeo sistemático la búsqueda de medidas ya que se analizaron únicamente un
subconjunto de los artículos seleccionados, exactamente los agrupados en N_TD_A y
N_TD_I. En este caso se observa que las medidas definidas no están consensuadas, es
decir, no existe un conjunto de medidas aceptadas por la comunidad y además son
medidas de calidad que no están cuantificadas, en particular en costos económicos.
Estas características dificultan el cálculo de deuda técnica.
Desde este punto de vista creemos que es importante tener definido un conjunto de
medidas universalmente aceptadas que cubra la totalidad de los factores generadores de
deuda técnica que sirvan de referencia para el cálculo de la misma. Este enfoque
aseguraría un cálculo más exacto de la deuda ya que se estarían incluyendo todos los
factores y además se obtendría un marco de referencia que, con adecuaciones, pueda
ser aplicado a distintos entornos. Además la estandarización de este conjunto de
medidas hace posible obtener estadísticas tanto dentro de la propia empresa como en
toda la industria por lo que se alcanza una ventaja de reducción de costos y esfuerzo en
el cálculo de la deuda técnica que, por la cantidad de variables en juego, no es un valor
despreciable.
4.2
¿Se puede utilizar el concepto de deuda técnica en etapas tempranas de un
proyecto de software para la toma de decisiones?
Los artículos analizados ven la deuda técnica como un elemento a ser eliminado.
Desde este punto de vista existen propuestas de cuándo y cómo pagarla luego de
generada la misma[21]. Algunos artículos tratan la deuda como un costo a ser
enfrentado por la empresa y por consiguiente manejado desde un punto de vista global
[22] y por lo tanto compite en recursos con otros proyectos[23]. Sin embargo no
encontramos evidencia que analice la deuda no generada aún y que esta definición sea
analizada en el contexto de todo el proyecto de desarrollo. Desde este punto de vista no
existen métricas que provean una visión holística del tema y que a partir de ella se
pueda inferir cuál es el nivel de deuda técnica aceptable que se pueda incurrir en un
proyecto, en qué etapa del mismo y en qué momento se debería pagar.
4.3
¿Existe evidencia de experimentación en deuda técnica?
El mapeo sistemático realizado no consideró en sus criterios la búsqueda de
evidencia de experimentación en deuda técnica. Existen casos de estudio asociados a la
calidad de código[24], calidad de diseño[25], costo en el mantenimiento[26] y
mediciones de esfuerzo en arquitectura como un componente de calidad en los
proyectos[8]. Todos estos factores aplican sobre algunas de las medidas que conforman
la deuda técnica. Tales casos de estudio no están directamente asociados al concepto de
deuda técnica por lo que las búsquedas deberán orientarse sobre cada una de las
medidas que la componen. En este sentido el mapeo podría ser inalcanzable en una
primera aproximación. Quizás una forma de atacar este problema es realizar mapeos
independientes para cada uno de los componentes de la deuda técnica definidos.
5
Amenazas a la validez
Al igual que la mayoría de los estudios empíricos, el estudio del mapeo sistemático
se ve amenazado por la forma en que la investigación se lleva a cabo. Por lo general, la
motivación para llevar a cabo estudios sistemáticos es que otros investigadores puedan
reproducir los resultados obtenidos por el investigador inicial. En este trabajo se
visualizan cuatro amenazas a la validez.
En primer lugar, el alcance del mapeo se acotó a 5 motores de búsqueda, cuatro de
ellos accedidos desde Portal Timbo y un quinto de acceso libre (Citeseerx). Estos
motores indexan en sus bases de datos artículos de ciertas características, como ser
journals, procedings y capítulos de libros presentados como artículos independientes.
Esta selección deja fuera toda la bibliografía gris como son sitios web de autores, blogs
de discusión, etc. Al ser un tema relativamente nuevo en algunos conceptos podemos
estar excluyendo artículos, notas y discusiones que estén más avanzados en el tema y
que modifiquen nuestros resultados. Por ejemplo, pueden existir autores que están
trabajando fuertemente en deuda técnica que en este trabajo no aparezcan, o tengan
otras definiciones que no aparezcan en los artículos obtenidos.
En segundo lugar, el acceso a los motores de búsqueda se limitó a la capacidad de
acceso de los investigadores. Pueden existir otros motores que no se pudieron acceder.
En este caso creemos que la amenaza es baja ya que se utilizaron los motores más
significativos en el área de software. A su vez no se pudo tener acceso al texto
completo de todos los artículos por lo que algunos de ellos se clasificaron solamente
por abstract. En este caso pudo perderse alguna definición y los valores de agrupación
pueden ser diferentes, aunque por la cantidad no accesible del total consideramos que
no cambia la tendencia de los mismos.
En tercer lugar, los criterios de agrupación de los artículos son criterios que en su
definición contienen al anterior, es decir, un criterio de agrupación contiene las
características del criterio anterior y agrega nuevas características. Por ejemplo,
N_TD_A incluye las características de N_TD_C más las características de pobre
arquitectura, etc. Al no ser ortogonales las clasificaciones seleccionadas se puede
incurrir en errores en la clasificación de artículos donde las características buscadas no
se encuentren claramente identificadas. Un caso particular es la separación entre
arquitectura de bajo nivel y el diseño de alto nivel. En este caso la distancia es corta y
define características de distintos grupos.
Por último siempre existe el error de interpretación del investigador en la cual
algunos artículos podrían ser clasificados de distinta manera por otros investigadores.
6
Conclusiones
Este artículo presentó los resultados del mapeo sistemático de la literatura con el
objetivo de evaluar la literatura disponible sobre el tema de deuda técnica para analizar
la importancia y vigencia del mismo en ámbitos de investigación. Las preguntas
planteadas apuntaron hacia tal objetivo.
Los resultados obtenidos en las definiciones encontradas de deuda técnica y deuda
de diseño muestran que ambas siguen siendo orientadas fuertemente a deuda de código
y, con diferencia de matices, siguen siendo similares a la primera definición de
Cunningham. No se encontró una definición consensuada del término, sino que cada
autor ha ampliado o modificado la misma para cubrir su visión. Tampoco se
encontraron definiciones que amplíen el concepto desde el punto de vista general de la
organización más adecuadas a las características de la clasificación de tipo N_TD_I.
El aumento de las publicaciones sobre el tema muestra interés por parte de la
comunidad científica. El crecimiento es general para todas las clasificaciones aunque
se muestra un crecimiento más marcado en los orientados a una visión más integral
(los clasificados como N_TD_A y N_TD_I) principalmente en los últimos 4 años.
Este es un indicador esperado ya que las tendencias a atacar la deuda técnica desde
estos puntos de vista son nuevas mientras que las definiciones de deuda técnica
orientadas a código existen desde las primeras definiciones.
Como trabajo futuro, pretendemos orientar la investigación a la obtención de
medidas de deuda técnica a lo largo del proyecto así como el uso del concepto para la
toma de decisiones podría mejorar el entendimiento del tema y aportar en información
que ayude a las organizaciones a controlar el problema de la deuda técnica.
Referencias
[1]
W. Cunningham, “The wycash portfolio management system,” in OOPSLA
’92: Addendum to the proceedings on Object-oriented programming systems,
languages, and applications (Addendum), 1992, pp. 29–30.
[2]
M. Fowler, “Technical debt,” 2009. [Online]. Available:
http://martinfowler.com/bliki/TechnicalDebt.html.
[3]
C. Sterling, Managing Software Debt, 1st ed. Westford,Massachusetts:
Addison Wesley, 2010.
[4]
M. R, “A mess is not a Technical Debt,” 2009. [Online]. Available:
http://blog.objectmentor.com/articles/2009/09/22/a-mess-is-not-a-technicaldebt.
[5]
T. Klinger, P. Tarr, P. Wagstrom, and C. Williams, “An enterprise perspective
on technical debt,” in Proceeding of the 2nd working on Managing technical
debt - MTD ’11, 2011, p. 35.
[6]
K. Petersen, R. Feldt, S. Mujtaba, and M. Mattsson, “Systematic mapping
studies in software engineering,” pp. 68–77, Jun. 2008.
[7]
H. Arksey and L. O Malley, “Scoping studies: towards a methodological
framework,” International Journal of Social Research Methodology, vol. 8,
no. 1, pp. 19–32, 2005.
[8]
E. Rommes, A. Postma, and P. America, “Measuring Architecting Effort,” in
5th Working IEEE/IFIP Conference on Software Architecture (WICSA’05),
2005, pp. 229–230.
[9]
M. Lindgren, R. Land, C. Norstrom, and A. Wall, “Key Aspects of Software
Release Planning in Industry,” in 19th Australian Conference on Software
Engineering (aswec 2008), 2008, pp. 320–329.
[10]
J. Thomas, “Introducing Agile Development Practices from the Middle,” in
15th Annual IEEE International Conference and Workshop on the
Engineering of Computer Based Systems (ecbs 2008), 2008, pp. 401–407.
[11]
D. R. Greening, “Enterprise Scrum: Scaling Scrum to the Executive Level,”
in 2010 43rd Hawaii International Conference on System Sciences, 2010, pp.
1–10.
[12]
J. Blankenship, M. Bussa, and S. Millett, Pro Agile .NET Development with
Scrum. Berkeley, CA: Apress, 2011, pp. 84–129.
[13]
C. Seaman and Y. Guo, Chapter 2 – Measuring and Monitoring Technical
Debt, vol. 82. Elsevier, 2011, p. Pages 25–46.
[14]
Y. Guo, C. Seaman, R. Gomes, A. Cavalcanti, G. Tonin, F. Q. B. Da Silva, A.
L. M. Santos, and C. Siebra, “Tracking technical debt — An exploratory case
study,” in 2011 27th IEEE International Conference on Software
Maintenance (ICSM), 2011, pp. 528–531.
[15]
N. Zazworka, C. Seaman, and F. Shull, “Prioritizing design debt investment
opportunities,” in Proceeding of the 2nd working on Managing technical debt
- MTD ’11, 2011, p. 39.
[16]
M. Smit, B. Gergel, H. J. Hoover, and E. Stroulia, “Code convention
adherence in evolving software,” in 2011 27th IEEE International Conference
on Software Maintenance (ICSM), 2011, pp. 504–507.
[17]
K. Wiklund, S. Eldh, D. Sundmark, and K. Lundqvist, “Technical Debt in
Test Automation,” in 2012 IEEE Fifth International Conference on Software
Testing, Verification and Validation, 2012, pp. 887–892.
[18]
E. Murphy-hill and A. P. Black, “Refactoring tools: Fitness for purpose,”
IEEE SOFTWARE, 2008.
[19]
E. Murphy-hill and X. Codeguide, “– Only 2 used Refactoring Tools.”
Portland State University, p. 36, 2007.
[20]
J. Heidenberg and I. Porres, “Metrics Functions for Kanban Guards,” in 2010
17th IEEE International Conference and Workshops on Engineering of
Computer Based Systems, 2010, pp. 306–310.
[21]
F. Buschmann, “To Pay or Not to Pay Technical Debt,” IEEE Software, vol.
28, no. 6, pp. 29–31, Nov. 2011.
[22]
T. Theodoropoulos, M. Hofberg, and D. Kern, “Technical debt from the
stakeholder perspective,” in Proceeding of the 2nd working on Managing
technical debt - MTD ’11, 2011, p. 43.
[23]
Y. Guo and C. Seaman, “A portfolio approach to technical debt
management,” in Proceeding of the 2nd working on Managing technical debt
- MTD ’11, 2011, p. 31.
[24]
B. Curtis, J. Sappidi, and J. Subramanyam, “Measuring the Structural Quality
of Business Applications,” in 2011 AGILE Conference, 2011, pp. 147–150.
[25]
N. Brown, I. Ozkaya, R. Sangwan, C. Seaman, K. Sullivan, N. Zazworka, Y.
Cai, Y. Guo, R. Kazman, M. Kim, P. Kruchten, E. Lim, A. MacCormack, and
R. Nord, “Managing technical debt in software-reliant systems,” in
Proceedings of the FSE/SDP workshop on Future of software engineering
research - FoSER ’10, 2010, p. 47.
[26]
A. Nugroho, J. Visser, and T. Kuipers, “An empirical model of technical debt
and interest,” in Proceeding of the 2nd working on Managing technical debt MTD ’11, 2011, p. 1.
Descargar