Fuentes utilizadas por desarrolladores de software en Argentina para elicitar requerimientos Leandro Antonelli1, Alejandro Oliveros2 1LIFIA, Facultad de Informática, Universidad Nacional de La Plata, lanto@sol.info.unlp.edu.ar 2 Departamento de Computación, Facultad de Ingeniería,Universidad de Buenos Aires, oliveros@fibertel.com.ar Abstract. Este artículo analiza cuales son las fuentes de requerimientos utilizadas por los desarrolladores de software en la Argentina. Realizamos una encuesta a 38 personas con formación académica y experiencia en la industria. Estas personas tomaron un curso de ingeniería de requerimientos de la maestría en Ingeniería de Software de la Universidad Nacional de La Plata en el año 2001. Al final del curso les pedimos que completen un cuestionario. Los participantes, basándose en su experiencia y en los conocimientos adquiridos durante el curso, respondieron a preguntas sobre su educación académica, experiencia profesional y, técnicas y fuentes utilizadas para elicitar requerimientos. Los resultados muestran que las fuentes utilizadas son principalmente las personas y los formularios. Keywords: requerimientos, fuentes, traceability. 1 Introducción Ackoff [1] es el que mejor describe la importancia de los requerimientos: “Fallamos más a menudo porque resolvemos el problema incorrecto, que porque obtenemos una solución deficiente del problema correcto”. Sin embargo, no es el único que relaciona a los requerimientos y a su gerenciamiento con aspectos de calidad en el software ([2], [3], [4], ISO/IEC 12207, MIL-STD-498 y DOD-STD-2167A). Traceability es una característica que debe poseer los requerimientos (la especificación de requerimientos de software) y de su gerenciamiento ([5], [3], [6] y [7]). Muchas soluciones se han propuesto en esta área ([8], [3], [9] y [10]). Sin embargo, traceability de requerimientos (RT), en particular pre-traceability backward [10], permanece como un área de problema ampliamente reportada. Esto se debe a que no hay un análisis de las fuentes de requerimientos utilizadas en los desarrollos de software para poder desarrollar una solución de pre-traceability backward adecuada. Fuentes Utilizadas por Desarrolladores de Software en Argentina 107 En este artículo presentamos una encuesta sobre las fuentes de requerimientos utilizadas por los desarrolladores de software en la Argentina. Un grupo de 38 profesionales, con formación académica y experiencia en la industria, tomó un curso de maestría de ingeniería de requerimientos, y al final del mismo les pedimos que completen un cuestionario. Éste último indaga sobre las técnicas de requerimientos (para inferir las fuentes) y también consulta directamente sobre las fuentes utilizadas.El contexto de esta investigación es obtener referencias de fuentes utilizadas para elicitar requerimientos a fin de tener basamento real para desarrollar un modelo conceptual de pre-traceability backward. En este contexto resulta relevante apelar al segmento de la comunidad de desarrolladores que resulta más activo en la utlización de técnicas de ingeniería de software. Los estudiantes de un curso de maestría en ingeniería de software constituyen un grupo representativo de dicho segmento. El cuestionario es descripto en la sección 2. Los participantes son analizados en la sección 3. Los resultados sobre las técnicas y las fuentes usadas por los profesionales son mostrados en las secciones 4 y 5 respectivamente. 2 Cuestionario El cuestionario está compuesto por preguntas cerradas divididas en 3 secciones. La primera sección pregunta datos personales, estudios académicos y experiencia en el desarrollo de software. Algunas preguntas de esta sección son: ¿Qué edad tiene? ¿Cuándo obtuvo su primer título universitario? ¿Cuánto tiempo ha trabajado en la industria en el desarrollo de software? ¿Qué tareas ha desempeñado? ¿Cuánto tiempo duró un proyecto de magnitud media en el cual ha trabajado? ¿Cuántas personas participaron de él? ¿Qué técnicas de elicitación ha utilizado? La segunda sección recaba información sobre las técnicas de elicitación utilizadas. A partir de las mismas determinamos las fuentes utilizadas. Los participantes debieron elegir todas las técnicas con los cuales trabajaron. Las mismas se agruparon en 6 grupos [11]: Técnicas tradicionales Técnicas de elicitación grupales Prototipación Técnicas model-driven Técnicas cognitivas Técnicas contextuales La última sección pregunta los productos (fuentes) de las cuales elicitaron requerimientos. Un total de 29 productos se agruparon en 4 categorías: Entrevistas Análisis de formularios Desarrollos previos Productos del mundo real. 108 WER 2002 Los participantes debieron indicar la relación que más los involucraba con cada producto: lo utilizo frecuentemente, lo utilizo ocasionalmente, alguna vez lo usé, lo conozco o conozco alguien que lo utiliza. 3 Participantes La cantidad de personas involucradas en la encuesta es relativamente chica (38), sin embargo ellos conforman un grupo de personas con variada formación académica y experiencia en la industria, lo que permite que los resultados sean imparciales. Los participantes provienen de dos ciudades en donde la situación económica y social es diferente, y por lo tanto poseen distintas prácticas de ingeniería de requerimientos. Las ciudades son La Plata y Córdoba, y se hayan aproximadamente a 700 kilómetros de distancia. En La Plata contestaron la encuesta 21 personas y 17 lo hicieron de Córdoba. La formación académica de los participantes también es variada. Participaron personas que se graduaron entre el año 1973 y el 2000. La mayoría de las personas se graduaron entre 1996 y 2000. Sin embargo más del 33% lo hizo antes de 1995 (tabla 1), cuando la ingeniería de requerimientos era una disciplina inmadura aún. Por lo tanto, quienes se graduaron antes del 1995 aprendieron las técnicas de elicitación de requerimientos a través de su propia práctica, y está experiencia es invaluable para nuestra encuesta, ya que establecen que les ha dado resultado en la práctica. Tabla 1. Año de graduación de los participantes Año de graduación 1970-1980 1981-1990 1991-1995 1996-2000 Personas 2 5 6 25 La experiencia en el desarrollo de software también ofrece un amplio rango. El rango incluye personas sin nada de experiencia hasta personas de hasta 25 años de experiencia. A pesar de ser un rango amplio, en general la mayoría de los participantes poseen vasta experiencia. La mediana de años de experiencia es de 5 años. Y más del 50% de los participantes tienen 5 o más años de experiencia (tabla 2). Tabla 2. Años de experiencia Años de experiencia 0-5 6-10 11-15 16-20 Más de 20 Personas 22 10 3 1 2 Fuentes Utilizadas por Desarrolladores de Software en Argentina 109 Los tamaños de los grupos de desarrollos en los cuales los participantes estuvieron involucrados también fueron diferentes. Ellos variaron desde 2 personas hasta equipos de 15 personas. Y el tiempo que los proyectos duraron variaron desde 2 meses hasta 2 años y medio. Estas dos variables permiten determinar la complejidad de los proyectos. En resumen, los participantes poseen variedad en conocimientos académicos y experiencia de desarrollo (tabla 3), esta variedad determina que los resultados sean imparciales. Además, el predominio de personas con más de 5 años de experiencia de desarrollo de software en la industria, determinan que el grupo conformado sea un buen grupo para analizar las fuentes de requerimientos utilizadas. Tabla 3. Perfil de los participantes Año de graduación Experiencia en desarrollo de software Personas involucradas en un proyecto mediano Duración de un proyecto mediano Mínimo 1973 Máximo 2000 Promedio 1994 7 años y 4 meses 0 25 años 2 15 5 2 meses 2 años y medio 7 meses 4 Técnicas de elicitación Utilizamos el framework de Nuseibeh [11] para determinar las técnicas de elicitación utilizadas. El mismo agrupa las técnicas en 6 categorías. Cada participante debió elegir las técnicas con las cuales tiene experiencia de uso. La primera categoría refiere a técnicas tradicionales. Comprende las técnicas más antiguas como encuestas, entrevistas, cuestionarios y análisis de documentación existente. Las técnicas tradicionales extraen requerimientos de las personas individuales y de los documentos. La segunda categoría comprende técnicas grupales como brainstorming y focus group. Estas técnicas intentan promover el consenso entre un grupo de personas para lograr un entendimiento más rico de las necesidades. La tercera categoría es prototipación. Cuando las personas no pueden establecer las necesidades, ya que hay una gran incertidumbre sobre los requerimientos, un desarrollo temprano de la aplicación puede ayudar en la tarea. Las últimas 3 categorías agrupan las técnicas desarrolladas recientemente. La cuarta categoría contiene técnicas model-driven. Estas técnicas están basadas en objetivos y escenarios, e intentan estudiar profundamente una organización para extraer requerimientos de sus objetivos y operaciones. 110 WER 2002 Las técnicas cognitivas integran la quinta categoría. La categoría incluye una serie de técnicas, como por ejemplo análisis de protocolo, originalmente desarrolladas para la tarea de adquisición de conocimiento. La última categoría contiene técnicas contextuales. Comprende técnicas etnográficas, etnometodologícas y análisis de conversación. Si bien estas técnicas trabajan sobre las personas, se ocupan del lenguaje tácito a diferencia de las técnicas tradicionales. Las respuestas muestran que el 100% de las personas usan técnicas tradicionales. Las técnicas grupales y prototipación se utilizan en un 29%. Las últimas 3 técnicas: model-driven, cognitivas y contextuales se usan en un 3%, 0% y 16% respectivamente (Tabla 4). Tabla 4. Técnicas de elicitación Técnicas de elicitación Tradicionales: entrevistas, cuestionarios, encuestas y análisis de formularios. Grupales: brainstorming y focus group Prototipación Model-Driven: goal-based y scenarios. Cognitivas: análisis de protocolo, laddering, card sorting, repertory grids Contextuales: observación de participantes, etnomethodología, análisis de conversación % Respuestas 100 38 29 29 3 11 11 1 0 0 16 6 El esfuerzo necesario para llevar adelante estas técnicas no es el mismo. Mientras las técnicas tradicionales como el análisis de formularios se pueden desarrollar sin interacción con los stakeholders, las técnicas grupales exigen muchos de ellos. Algunas técnicas, como cuestionarios, demandan poco trabajo previo a las sesiones mientras que prototipación demanda el desarrollo de una aplicación. Algunas técnicas, como las tradicionales, pueden ser desarrolladas por personas sin ningún tipo de entrenamiento, sin embargo, técnicas cognitivas y contextuales demandan una especialización de las personas. Por lo tanto, el esfuerzo necesario para aplicar una técnica puede ser cuantificado en términos de: Disponibilidad de los stakeholders: cantidad de personas y el tiempo de disponibilidad Trabajo de preparación de las sesiones Entrenamiento de los ingenieros de requerimiento Las respuestas sugieren que la cantidad de personas que usan una técnica es inversamente proporcional a los esfuerzos necesarios para aplicar una técnica. Este resultado es independiente de los años de experiencia de los participantes y del año de graduación. Agrupamos a los participantes de acuerdo a su experiencia en 3 grupos para verificar la independencia. El primer grupo contiene las personas con menos de 2 años Fuentes Utilizadas por Desarrolladores de Software en Argentina 111 de experiencia, el segundo grupo es de personas entre 3 y 5 años y el último es de personas con más de 6 años. Los porcentajes obtenidos fueron similares. La única excepción es las técnicas grupales del grupo de 3-5 años, que está por encima de los demás grupos (Tabla 5). Tabla 5. Utilización de las técnicas de elicitación de acuerdo a la experiencia. Miembros Experiencia Técnicas de elicitación Tradicionales Grupales Prototipación Model-Driven Cognitivas Contextuales Grupo 1 6 <=2 años Grupo 2 20 3-5 años Grupo 3 12 >= 6 años 100% 17% 33% 0% 0% 17% 100% 40% 25% 5% 0% 15% 100% 17% 33% 0% 0% 17% Dividimos los años de graduación en 3 grupos para verificar su independencia. El primer grupo lo integran los graduados más recientes (años 1999-2000). El segundo grupo lo integran graduados los años 1994 y 1998. El ultimo grupo lo conforman los graduados más antiguos (antes del año 1993). El uso de las técnicas, salvo dos excepciones, no varía entre los distintos grupos de graduados. La primera excepción es la de los graduados entre 1994-1998que se destaca en las técnicas grupales. La segunda excepción es la del grupo hasta el año 1993 que se destaca en las técnicas de prototipación (Tabla 6) Tabla 6. Utilización de las técnicas de elicitación de acuerdo al año de graduación. Miembros Año de graduación Técnicas de elicitación Tradicionales Grupales Prototipación Model-Driven Cognitivas Contextuales Grupo 1 9 1999- Grupo 2 22 1994-1998 Grupo 3 7 -1993 100% 22% 22% 0% 0% 22% 100% 36% 23% 5% 0% 14% 100% 14% 57% 0% 0% 14% En conclusión, las técnicas tradicionales son principalmente utilizadas en la elicitación de requerimientos, independiente de la experiencia y de la educación académica de los ingenieros de requerimientos. 112 WER 2002 5 Fuentes de requerimientos El fin del proceso de elicitación de requerimientos es obtener el conocimiento para construir una especificación del sistema de software. Aunque el conocimiento es generalmente obtenido de los usuarios, hay otras fuentes. Loucopoulos [12] propone seis fuentes de donde elicitar requerimientos. 1. 2. 3. 4. 5. 6. Expertos del dominio Literatura sobre el dominio Software existente acerca del dominio Software de otros dominios Estándares nacionales e internacionales Otros stakeholders del sistema de información que albergarán el sistema de software Sin embargo, nosotros usamos una taxonomía de fuentes de 4 categorías, la cual incluye los 6 de Loucopoulos. Personas Formularios Conocimiento adquirido de desarrollos previos Productos del mundo real Las personas conforman distintos tipos de fuentes según el número del cual se elicita, la estructura de la información obtenida de ellos y el autor de esta información. Es distinto elicitar información de una sola persona, que de dos o tres personas, o de un grupo. Son distintas fuentes las anotaciones libres que se escriben como resultado de las entrevistas que las minutas. Y existe diferencia si uno mismo realiza las anotaciones que si las hace un tercero. Se corresponden con las fuentes 1 y 6 de Loucopoulos. La segunda categoría la integran los formularios de uso en la organización. El conocimiento adquirido por la organización de desarrollo en desarrollos previos es la tercera categoría. Consideramos los elementos generados a lo largo de todo el proceso de desarrollo del software: documentos de especificación de requerimientos, diagramas ER, documentos de diseño estructurado, documentos de diseño orientado a objetos, prototipos, aplicaciones, guías del usuario y guías del operador. La cuarta categoría la integran productos externos al sistema de software que inciden sobre el sistema de información. Los productos que incluimos son: leyes, reglamentos, tratados, normas internas, estándares generales, información institucional, publicidad y la opción otros, para que se indique cualquier elemento no tomado en cuenta. Se corresponde con las categorías 2 a 5 de Loucopoulos Se le pidió a los participantes que califiquen a cada ítem de acuerdo al contacto con la fuente: Usó regularmente Fuentes Utilizadas por Desarrolladores de Software en Argentina 113 Usó ocasionalmente Usó alguna vez La conoce Conoce personas que la usan Los resultados muestran que las personas individuales son las fuentes favoritas. Ellas se usan frecuentemente en un 60%. Grupos de a 2 o 3 personas se usan frecuentemente en un 42%. Y grupos mayores sólo se usan en un 0.5%. Con respecto de los resultados escritos de las entrevistas, las anotaciones personales se usan frecuentemente por el 71% de los participantes. Por el contrario, el 42% usa frecuentemente minutas y 13% cuestionarios. Con relación al origen de esta información, 21% de las personas usan productos redactados por terceros. Los participantes prefieren elicitar la información directamente de las personas en lugar de leerla, ya que los documentos son usados con frecuencia en 28%. El conocimiento es reusado en poca medida. La utilización de productos de proyectos previos es muy baja. Los diagramas ER se reusan en un 42%, documentos de especificación de requerimientos se reusan en un 28% y las aplicaciones se reusan en 26%. Los restantes elementos se reusan por debajo del 12% (Fig. 1). Reuso 14 12 10 8 6 4 2 D Pr ot ot ip Ap os lic ac io M ne an s us M an uar io op er ad or oc es pe c re D qu ia e gr am r O tro a ER m od da to C s ar ta D de FD es tru D ct ia ur g a de cl as es D ia g de D ia es g ta de do ac s tiv id ad es 0 Fig. 1. Reuso de productos de proyectos previos. Una curiosa situación ocurre con los diagramas UML de clases, interacciones, estados y actividades. Los participantes conocen estos diagramas en un rango entre 25% y 50%. Pero, menos del 10% los usa. Y la opción ‘conozco personas que lo usaron’ alcanza 15%. La fig. 2 muestra el porcentaje de reuso de diagramas UML. 114 WER 2002 18 16 14 12 Diag de clases 10 Diag de interacción 8 Diag de estados 6 Diag de actividades 4 2 0 us a u reg lar me us nte ao ca n sio alm z ve na lgu a ó us en te lo n co co oc no eg ce en t u eq el ou sa Fig. 2. Reuso de diagramas UML. La categoría formada por productos del mundo real muestra que las normas internas alcanzan niveles similares a los de las personas individuales. En un nivel más bajo se encuentran reglamentos y estándares generales. Las personas y los documentos son las fuentes más utilizadas. Se comparó el uso de las fuentes contra el mero conocimiento. Para ello se agruparon las respuestas ‘Usó frecuentemente’, ‘Usó ocasionalmente’ y ‘usó alguna vez’, y por otro lado las respuestas ‘la conoce’y ‘conoce personas que la usan’. En general, las personas utilizaron en mayor porcentaje las fuentes de lo que conocen su uso por terceros (Tabla 7). Tabla 7. Comparación de personas y documentos entre usar y conocer. Fuente Usó Conoce Una Dos o tres Más de tres 71% 68% 39% 11% 21% 26% Documentos Leyes Reglamentos Tratados Normas internas Éstándares generales Información institucional Publicidades Otros 58% 61% 24% 71% 61% 58% 21% 11% 21% 18% 29% 13% 16% 18% 21% 0% Personas Fuentes Utilizadas por Desarrolladores de Software en Argentina 115 6 Conclusión Las fuentes más utilizadas son las personas y los formularios. Se acceden a ellas a través de entrevistas y de análisis de formularios. Los participantes prefieren utilizar productos del mundo real que no hayan sido procesados por otro ingeniero de requerimiento. Las anotaciones personales de entrevistas son preferidas a las de terceros. Son evitados los diagramas. Y el reuso de cualquier producto de un desarrollo previo es mayormente evitado. Un dato curioso, es que la opción “otros” de los cuestionarios casi no se usó. Ésta opción permite incorporar opciones no indicadas. Su bajo uso sugiere que la taxonomía propuesta es completa. Contrariamente, el ítem documentación fue muy utilizado. Así que necesitamos hacer un análisis con detenimiento de este ítem. 7 Futuras investigaciones Vamos a utilizar consultas directas para verificar los resultados de esta investigación. A partir de estos resultados desarrollaremos un modelo de pre-traceability backward hacia las fuentes más utilizadas. Como soporte de este modelo, implementaremos en el Baseline Mentor Workbench [13] las herramientas necesarias. Referencias [1] Ackoff, R.: Redesigning The Future. Wiley. (1974) [2] Garvin, D.: “What does product quality really mean?”, Sloan Management Review, Vol 26, No 1 (1984) [3] Davis, A.: Software Requirements: Objects, Functions and States, Englewood Cliffs, Prentice Hall, New Jersey (1993) [4] Mizuno, Y.: “Software Quality Improvement”, IEEE Computer, Vol. 16, No. 3, Marzo (1983) 66-72 [5] Katonya, G., Sommerville, I.: Requirements Engineering Processes and Techniques, Chichester, John Wiley & Sons (1998) [6] Sommerville, I., Sawyer, P.: Requirements Engineering, Chichester, John Wiley & Sons (1997) [7] Hilburn, T.B., Hirmanpour, I., Khajenoori, S. Turner, R. Qasem, A.: “A Software Engineering Body of Knowledge”, Version 1.0, SEI, Technical Report, CMU/SEI-99-TR-004, ESC-TR-99-004 (1999) [8] Pinheiro, F.A.C.: “Formal and Informal Aspects of Requirements Tracing”, III Workshop de Engenharia de Requisitos, WER’2000, Rio de Janeiro, Brasil, Julio (2000) 116 WER 2002 [9] Wieringa, R.: An Introduction to Requirements Traceability, Technical report, Faculty of Mathematics and Computer Science, Vrije Universiteit, Esprit Project 2RARE, Noviembre 1 (1995) [10] Gotel, O.C.Z., Finkelstein, A.C.W.: “An Analysis of the Requirements Traceability Problem”, International Conference on Requirements Engineering, ICRE’94, Los Alamitos, California, Abril (1994) 94-101 [11] Nuseibeh, B., Easterbrook, S.: “Requirements engineering: a roadmap”, International Conference on Software Engineering, ICSE 2000, Future of SE Track 2000 (2000) 35-46 [12] Loucopoulos, P., Karakostas, V.: System Requirements Engineering, McGraw-Hill (1995) [13] Antonelli, L., Oliveros, A., Rossi, G.: “Baseline Mentor, An Application that Derives CRC Cards from Lexicon and Scenario” XXVIII JAIO, II Workshop Iberoamericano en Ingeniería de Requerimientos, WER’99, Buenos Aires, Argentina, Septiembre 9-10 (1999)