Professional Documents
Culture Documents
Mifisis2004 PDF
Mifisis2004 PDF
Resumen
Con el fin de acometer las tareas de investigación, los grupos de investigación deben definir
una estrategia de trabajo que permita combinar el trabajo académico en laboratorio con
experiencias reales de aplicación de tecnología en empresas de la industria de software. El
grupo de investigación LIDIS ha propuesto un esquema en donde se sintetizan algunos de
las estrategias y clasificaciones definidas en los últimos años por diversos autores,
ofreciendo orientaciones básicas sobre el desarrollo de estas actividades.
Palabras claves
1. Antecedentes
Esta reflexión se ha visto complementada por una serie de trabajos realizados por la
comunidad científica internacional sobre caracterizaciones de los trabajos investigativos
que se realizan en ingeniería de software [9] [14], los atributos de calidad deseables de este
tipo de trabajo [19][20][21] y las bases conceptuales para la realización de diseños de
investigación en el área [25][26].
Al interior del grupo, y a partir de una serie de talleres realizados a finales de 2002, un
modelo de las actividades de investigación fue definido, identificando las estrategias de
trabajo que se aplicarían para desarrollar las tareas investigativas y estableciendo también
algunas áreas conceptuales en donde es necesario lograr mayores definiciones.
La Ingeniería de Software, como cualquier otra ingeniería, es una profesión tecnológica [5],
centrada en la elaboración de productos tecnológicos de software de calidad. Por su propia
naturaleza, la ingeniería de software se encuentra estrechamente ligada a la industria de
software. En realidad, tanto la industria necesita de la ingeniería para desarrollar sus
productos, como los ingenieros requieren de una industria para realizar sus proyectos y
tecnofactos.
Sin embargo, desde hace algún tiempo se han observado diferencias entre el conocimiento
generado en el ámbito académico e investigativo, y su aplicación real en las empresas
[7][8]. En muchos casos, problemas y situaciones analizadas y solucionadas en el plano
investigativo siguen sin trascender al plano empresarial.
Las diferentes etapas de este proceso de maduración han sido analizadas por diferentes
autores. Una de las primeras propuestas, elaborada por Martin y McClure [15], establece
primordialmente tres fases: (1) Crisis y reconocimiento, (2) Énfasis Académico y (3)
Asimilación y Madurez.
Siguiendo estos lineamientos, los centros de investigación deben realizar una estrategia de
investigación que permita desarrollar y madurar las tecnologías a través del trabajo
conjunto de universidades, grupos de investigación, empresas de la industria de software y
entidades gubernamentales relacionadas con el sector [4][25].
Algunos de los trabajos iniciales de Basili, Taschi y Zelkowitz [1] [2] se centraron en el
carácter experimental de los proyectos de investigación en ingeniería de software y los
diseños que deberían emplearse para su ejecución. Zelkowitz y Wallace definieron una
clasificación de doce (12) modelos diferentes de verificación experimental en ingeniería de
software [25][26].
Otros autores han propuesto clasificaciones sobre los tipos de investigaciones aplicados en
Ingeniería de Software. Basili [2] propuso clasificar las investigaciones a partir de los
experimentos que se definen en su interior : (1) “in vivo”, cuando se desarrollan al interior
de organizaciones que desarrollan software e (2) in vitro” cuando se realizan en entornos
controlados. Kitchenham [12] por otra parte, clasificó los modelos experimentales en (1)
cuantitativos, cuando se analizan variables cuantificables en los experimentos, (2)
cualitativos, cuando se realizan revisión intersubjetiva de algunos atributos (por ejemplo,
atributos de calidad) y (3) benchmarking, cuando se realizan pruebas comparativas de
diferentes tecnologías para analizar su rendimiento y beneficio relativo.
Al interior de cada una de las fases de la estrategia de una iniciativa o línea de investigación
deben diseñarse proyectos de investigación y desarrollo que permitan madurar la tecnología
apropiada y solucionar los problemas específicos definidos en cada una de las iniciativas o
línea de investigación.
Para diseñar los diferentes proyectos de investigación, es necesario considerar el conjunto
de elementos básicos de evaluación de la investigación establecidos por Shaw [19]: (1) el
tipo de pregunta, (2) el producto final, y (3) el mecanismo de verificación.
Según la misma clasificación el tipo de resultado de cada proyecto puede ser: (1)
Procedimiento o técnica, cuando se define un conjunto de pasos para acometer una tarea,
(2) Modelo cualitativo o descriptivo, cuando se define una estructura o taxonomía para
algún área problema, (3) Modelo empírico, cuando se define un modelo predictivo basado
en datos observados, (4) Modelo analítico, cuando se define un modelo estructural que
permite un análisis formal o la manipulación automática, (5) Herramienta o notación,
cuando se implementa una herramienta que apoya algún procedimiento o técnica, (6)
Solución específica o prototipo, cuando se desarrolla una aplicación problema que permite
observar algún principio de ingeniería, y (7) Reporte de experiencia, cuando se muestra
resultados preliminares y observaciones que no han sido suficientemente generalizadas o
sistematizadas.
Patrones de
diseño de la Diseño (Método) de la
investigación investigación
Con el fin diseñar sus proyectos, el investigador puede utilizar alguno de los arquetipos o
patrones de diseño de investigación utilizados a nivel internacional. Zelkowitz y Wallace
[25] [26] definen tres categorías para los diferentes arquetipos de métodos de investigación
y verificación en ingeniería de software: (1) Métodos de Observación, donde se recopila
información durante la ejecución de los proyectos, (2) Métodos Históricos, cuando se revisa
información de proyectos ya terminados, y (3) Métodos controlados, cuando se establecen
mecanismos con múltiples observaciones para hacer verificación estadística o de otro tipo.
Los métodos de Observación normalmente son mecanismos que permiten detectar aspectos
interesantes al interior de proyectos de software y podrían servir de base para nuevos
proyectos experimentales. Este tipo de métodos incluyen: (1) Monitoreo de proyecto, donde
se recopila información sin ánimo de influir en el desarrollo del mismo, (2) Estudio de
caso, donde la información se recopila siguiendo un método y un propósito especial, (3)
aserción, cuando se recopila información para demostrar algún planteamiento o idea, y (4)
estudio de campo, cuando se revisan de forma simultánea varios proyectos.
A partir de este trabajo, nuevas ideas de investigación han surgido, en especial en el campo
de la “migración de aplicaciones” y “rediseño de arquitectura”. Situación que podrá
conducir en un futuro al establecimiento de nuevas iniciativas de investigación y a un
nuevo conjunto de etapas de una estrategia de investigación en esa área.
6. Conclusiones
Bibliografía
[1] Basili, V. The experimental paradigm in software engineering en Rombach, D., Basili,
V., Selby, R. Experimental Software Engineering Issues: Critical Assessment and Future
Directives. Proceedings of Dagstuhl-Workshop. publicado en Lecture Notes in Computer
Science #706. Springer-Verlag. 1993.
[2] Basili, V. R., The Role of Experimentation: Past, Present, Future, (Keynote
presentation), 18th International Conference on Software Engineering, Berlin, Germany,
March, 1996.
[3] Campos, F. J. Reingeniería de la Metodología en MIFISIS 2002. En MIFISIS 2002. I
Workshop sobre Métodos de Investigación y Fundamentos Filosóficos en Ingeniería del
Software y Sistemas de Información. Universidad Rey Juan Carlos. Noviembre 18 de 2002.
http://kybele.escet.urjc.es/MIFISIS/Articulos/Art10.pdf
[4] Consortium for Software Engineering Research. http://www.cser.ca
[5] Chavarriaga, J. La Ingeniería de Software como profesión tecnológica: Implicaciones en
la investigación. Métodos de Investigación y Fundamentos Filosóficos en Ingeniería del
Software y Sistemas de Información. Madrid: Universidad Rey Juan Carlos, 2003. p.162 -
178
[6] Dewayne, P. Porter, A. Votta, L. Empirical Studies of Software Engineering: A
roadmap. en Finkelstein, A. (editor) Proceedings of the Conference on The Future of
Software Engineering. ACM Press. 2002. http://www.softwaresystems.org/front.html
[7] Finkelstein, A. Kramer, J. Software Engineering: a roadmap en Finkelstein, A. (editor)
Proceedings of the Conference on The Future of Software Engineering. ACM Press. 2002.
http://www.softwaresystems.org/front.html
[8] Glass, R. The Software Research Crisis, IEEE Software, Noviembre 1994.
http://csdl.computer.org/comp/mags/so/1994/06/s6042abs.htm
[9] Galan, F.J. Cañete, J.M. ¿Qué se entiende en España por Investigación en Ingeniería de
Software? En MIFISIS 2002. I Workshop sobre Métodos de Investigación y Fundamentos
Filosóficos en Ingeniería del Software y Sistemas de Información. Universidad Rey Juan
Carlos. Noviembre 18 de 2002. http://kybele.escet.urjc.es/MIFISIS/Articulos/Art09.pdf
[10] Jacobson, I. Object Oriented Software Engineering: A Use Case Driven Approach.
Addison-Wesley. 1992.
[11] Johnson, R. Beck, K. Booch. G. Cook, W. Gabriel, R. Wirfs-Brock, R. How to get a
Paper Accepted at OOPSLA. Panel. OOPSLA’93.
http://www.acm.org/sigs/sigplan/oopsla/oopsla96/how93.html
[12] Kitchenham B. A., Evaluating software engineering methods and tool, ACM
SIGSOFT Software Engineering Notes, (January, 1996) 11-15.
[13] Koen, B. Definition of the Engineering Method. American Society for Engineering
Education. Washington. 1985.
[14] Marcos, E. Investigación en Ingeniería de Software vs. Desarrollo de Software en
MIFISIS 2002. I Workshop sobre Métodos de Investigación y Fundamentos Filosóficos en
Ingeniería del Software y Sistemas de Información. Universidad Rey Juan Carlos.
Noviembre 18 de 2002. http://kybele.escet.urjc.es/MIFISIS/Articulos/Art11.pdf
[15] Martin, J. y McClure, C. Structured Techniques for Computing. Prentice-Hall /
Englewood Cliffs, NJ, EE.UU. 1985
[16] Parnas, D. "Successful Software Engineering Research". Software Engineering Notes,
Vol. 23, No. 3, May 1998, pp. 64-68
[17] Potts, C. Software Engineering Research Revisited, IEEE Software. Septiembre 1993.
[18] Seaman, C., Conradi, R. Qualitative Methods in Software Engineering Research. en la
Conferencia ISERN, Octubre 2000. http://csdl.ics.hawaii.edu/isern/slides/seaman.qual.ppt
[19] Shaw, M. What makes Good Research in Software Engineering?. European Joint
Conference on Theory and Practice of Software ETAPS 2002. Abril 2002. http://www-
2.cs.cmu.edu/~Compose/ftp/shaw-fin-etaps.pdf
[20] Shaw, M. Designing Good Research Projects in Software Engineering… and getting
results accepted for publication. Carnegie Mellon University.
http://www.csc.calpoly.edu/~csturner/courses/shaw.pdf
[21] Shaw, M. Writing Good Software Engineering Research Papers. Minitutorial.
Internacional Conference on Software Engineering, ICSE 2003. Mayo 2003. http://www-
2.cs.cmu.edu/~Compose/shaw-icse03.pdf
[22] Snyder, A. How to get a Paper Accepted at OOPSLA. OOPSLA’91 Proceedings.
http://www.acm.org/sigs/sigplan/oopsla/oopsla96/how91.html
[23] Software Engineering Institute. Carnegie Mellon University. http://www.sei.cmu.edu
[24] Sprague de Camp, L. The Ancient Engineers. Barnes & Noble. New Cork. 1993.
[25] Zelkowitz, M. Wallace, D. Experimental Models for Validating Technology. IEEE
Computer . Mayo 1998, pp 23-31.
[26] Zelkowitz, M. Wallace, D. Experimental Validation in Software Engineering.
Conference of Empirical Assessment & Evaluation in Software Engineering, Keele
University. Marzo 1997. http://hissa.nist.gov/exper/ease.html