Modelo de Investigación en Ingeniería del Software: Una propuesta

Anuncio
Modelo de Investigación en Ingeniería del Software:
Una propuesta de investigación tecnológica
Jaime A. Chavarriaga L.
Hugo F. Arboleda J.
Grupo LIDIS
Universidad San Buenaventura, Cali, Colombia
{jaime,huarbole}@usb.edu.co
Resumen
La Ingeniería de Software es una profesión de naturaleza tecnológica, que retoma teorías y
conocimientos de diversas fuentes y aborda el desarrollo de software de calidad y a nivel
industrial. Como tal, la Ingeniería de Software construye conocimiento en torno a estas
prácticas de desarrollo de software, concretado en la definición métodos, modelos y
esquemas de funcionamiento que pueden ser aplicados por los ingenieros en sus actividades
profesionales.
La forma como se construyen estos métodos, modelos y esquemas de funcionamiento que
constituyen el conocimiento propio de la Ingeniería de Software se basa en la revisión y
formalización de heurísticas surgidas de la experiencia real en procesos y productos de
software. Situación esta que obliga a definir métodos de investigación que aborden
problemas y situaciones reales de la Industria de Software, que busquen identificar,
formalizar y teorizar sobre las mejores prácticas de la misma y sobre su aplicabilidad
general en diferentes empresas a nivel regional y mundial.
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
Ingeniería, Método de Investigación, Ingeniería del Software.
1. Antecedentes
La investigación en ingeniería de software es un tema que requiere de una reflexión
permanente por parte de los grupos que desean acometer su realización. Máxime aún
cuando en algunos ámbitos este tipo de actividad no es considerada algún tipo de
investigación en estricto o se confunde con cualquier tipo de proceso de desarrollo de
software [3][8].
Conscientes de esta situación, un proceso permanente de reflexión se inició al interior del
grupo de investigación LIDIS desde mediados del 2000. En principio, basado en una
reflexión epistemológica en torno al conocimiento propio de la ingeniería, de la ingeniería
de software, los métodos que se han desarrollado en la historia de la ingeniería [13] [24] y
sus posibilidades de aplicación en la Ingeniería de Software [5].
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.
2. Consideraciones para una Estrategia de Investigación
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.
Uno de los ejemplos de esta situación, y de la necesidad de adaptaciones de la teoría a la
práctica, fue planteada por Jacobson al establecer diferencias entre el método y el proceso
[10]. El método hace referencia a la secuencia de actividades que permiten lograr un
desarrollo específico en el laboratorio. El método, como tal, no puede ser aplicado
directamente y sin diferencias en todas las organizaciones. El proceso representa el
conjunto de actividades que se definen para su realización al interior de un grupo de
trabajo, considerando su cultura organizacional, su recurso humano y sus experiencias
tecnológicas.
Aunque podría pensarse que la aplicación de las investigaciones en el plano empresarial es
un proceso lineal, en realidad es un proceso iterativo. Por ejemplo, aunque podría pensarse
que la secuencia se presenta llevando la teoría a la práctica (Teoría Práctica) o adaptando
el método al proceso (Método
Proceso), en realidad la teoría se alimenta de la práctica y
el método de las adaptaciones a procesos (Método
Proceso
Método). Las diferentes
tecnologías, teorías y métodos sufren un proceso de “maduración” que solo puede lograrse
a través de su aplicación en entornos empresariales reales. Algunos métodos de ingeniería
de software, como por ejemplo el Rational Unified Process (RUP), ha evolucionado a
través de diferentes versiones fruto de un proceso iterativo establecido desde su creación a
mediados de los noventa.
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].
El Instituto de Ingeniería de Software [23] en Estados Unidos define tres etapas en su
estrategia de investigación: (1) Creación, donde se identifican las tendencias y necesidades
del departamento de defensa de los Estados Unidos, y se maduran las tecnologías en el
ámbito académico, (2) Aplicación, donde se aplica en entornos empresariales reales
mediante proyectos de desarrollo y consultoría con el soporte del grupo de investigación
para continuar madurando la tecnología, y (3) Amplificación, donde se definen estrategias
de transferencia, como cursos, conferencias, libros y licencias de uso.
3. Propuesta de Estrategia de Investigación
La estrategia de investigación propuesta, basada en los modelos de Martin y McClure y del
SEI, y consiste en tres grandes fases: (1) investigación y desarrollo inicial, (2) Investigación
aplicada, y (3) Transferencia. Cada iniciativa o línea de investigación debe cumplir con
estas tres fases, en el proceso de maduración de la tecnología. Cada una de ellas
involucrando el desarrollo de varios proyectos de investigación, posiblemente cada uno de
ellos con métodos y técnicas diferentes.
- Tendencias de
la tecnología
- Necesidades
del entorno
- Casos de éxito
- Soluciones en
casos concretos
- Diagnósticos
- Revisión del
estado del arte
- Investigación
académica en
laboratorio
- Pruebas de
concepto
- Proyectos
piloto
- Uso en
proyectos reales
- Desarrollo de
productos
- Cursos
- Conferencias
- Licenciamiento
Transferencia
Investigación
aplicada
Investigación
y desarrollo
inicial
Retroalimentación a partir de experiencias
en proyectos reales
Figura 1. Esquema de la estrategia de investigación
3.1. La investigación y desarrollo inicial: representa el comienzo de cualquier iniciativa o
línea de investigación. En ella se delimita el área de trabajo investigativo que se busca
desarrollar en la iniciativa. Normalmente surge a partir de una serie de lluvia de ideas en las
cuales se busca determinar las principales necesidades de la industria o las tendencias de la
tecnología que deben ser analizadas al interior del grupo. En algunos casos, puede surgir
también a partir de una solución innovadora e interesante encontrada en la industria o por
alguno de los investigadores. Para el desarrollo de esta etapa, normalmente se requieren
varios tipos de investigaciones: diagnósticos, revisiones del estado del arte, investigaciones
académicas y desarrollo de soluciones en el laboratorio (pruebas de concepto). Una
iniciativa culminará esta etapa cuando pueda establecer, por lo menos en ambientes
controlados, la factibilidad técnica de una solución al problema propuesto.
En algunos centros de investigación [23] existen procedimientos definidos para establecer
las nuevas iniciativas o líneas de investigación. Algunas de estas, de hecho, pueden no
superar la etapa inicial y no desarrollarse a través de proyectos piloto en empresas reales.
En algunos casos se define un etapa de estudio de factibilidad que puede durar unos ocho o
nueve meses antes de constituirse una nueva iniciativa.
3.2. La investigación aplicada: es la etapa en donde se busca madurar la tecnología
definida en la etapa inicial, trabajando en el desarrollo de la tecnología y en su aplicación
en situaciones reales. A medida que se tienen experiencias de aplicación de la tecnología
por parte del grupo de investigación y empresas de la industria, se encuentran las posibles
fallas en el modelo de solución propuesto y se definen las adaptaciones que puedan ser
requeridas para su aplicación en empresas. En esta etapa normalmente se desarrollan
proyectos investigativos de naturaleza más empírica y aplicada, en muchos casos siguiendo
también esquemas de investigación-acción-participativa. Una iniciativa culminará esta
etapa cuando pueda configurar una solución madura a alguna problemática en ingeniería de
software, incluyendo consideraciones sobre las limitaciones e implicaciones de su
implementación en empresas reales que realicen procesos de desarrollo de software.
3.3. La transferencia: es la etapa que busca amplificar el impacto de las nuevas
tecnologías, prácticas y conocimientos, más allá de las empresas con las cuales se trabajó
en el proceso de investigación aplicada. Para cumplir su objetivo, los grupos de
investigación desarrollan otros tipos de actividades, tales como cursos, conferencias, y
licenciamiento de la tecnología.
4. Consideraciones para los Tipos de Investigaciones
En la actualidad se ha logrado un consenso en la comunidad científica sobre el reducido
nivel de impacto de las investigaciones en el ámbito empresarial. En parte debido a la falta
de evidencia sustancial sobre el valor derivable de la aplicación de estos nuevos
conocimientos [7]. Situación que ha motivado la definición de modelos y esquemas de
investigación empírica [18] y cualitativa [6].
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.
Trabajos posteriores centrados en la estructura de los documentos técnicos que se presentan
a las conferencias internacionales motivaron una serie de nuevas clasificaciones y
consideraciones [11][22]. Shaw definió una serie de atributos de calidad que podrían
evaluarse en un proyecto de investigación, así como una serie de recomendaciones para su
diseño [19][20] [21].
4.1. Tipos de Investigaciones
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.
De acuerdo a la clasificación de Shaw, el tipo de pregunta puede corresponder a: (1)
Método de desarrollo, cuando se desea definir la forma de construir un tipo de producto
particular o desarrollar alguna actividad específica, (2) Método de análisis o evaluación,
cuando se establecen mecanismos para evaluar alternativas o determinar el nivel de algún
atributo del producto, (3) Diseño, evaluación o análisis de una instancia particular, cuando
se analiza alguna propiedad de un producto o proyecto, o se hacen comparaciones entre las
mismas, (4) Generalización o caracterización, cuando se busca definir reglas o heurísticas
que apliquen en un dominio de la ingeniería, y (5) Estudio de factibilidad o exploración,
cuando se busca vislumbrar alguna forma o técnica que no ha sido posible hasta el
momento.
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.
El Mecanismo de validación, que garantiza la aplicabilidad de los resultados en otros
ámbitos y empresas, puede ser: (1) Análisis, cuando se aplica algún mecanismo riguroso de
verificación formal o empírica, (2) Evaluación, cuando se revisan los resultados a partir
unos criterios predefinidos, (3) Experiencia, cuando se usan evidencias encontradas en
varias aplicaciones reales, (4) Ejemplo, cuando se muestra una sola aplicación que sirve de
verificación, (5) Persuasión, cuando se pretende confirmar la validez de la propuesta solo
con argumentos no verificables, y (6) Afirmación evidente, cuando no se plantea ninguna
argumento de validez. Como es de suponer, los dos últimos mecanismos de verificación
son inaceptables (o, por lo menos, los menos deseables) para los investigadores en el área.
El investigador, de acuerdo a la fase de la estrategia de investigación, debe seleccionar la
combinación adecuada de los elementos de la investigación que le permita cumplir con los
objetivos propuestos. Al conjugar el tipo de pregunta, el tipo de resultado y el mecanismote
validación, se configura el método o el diseño concreto de la investigación.
Tipo de
pregunta
Tipo de
Resultado
Mecanismo de
Validación
Pregunta
Resultado
Validación
Patrones de
diseño de la
investigación
Diseño (Método) de la
investigación
Figura 2. Esquema de los diseño de 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.
Los métodos Históricos permiten recopilar experiencias y conocimientos de proyectos y
productos ya elaborados, permitiendo reconocer y recopilar patrones y heurísticas, así como
definir bases para nuevos proyectos experimentales. Los métodos Históricos son: (1)
Investigación literaria, cuando se revisa información de documentos y artículos
públicamente disponibles, (2) datos legados, cuando se revisan los artefactos y documentos
productos de un proyecto de desarrollo ya terminado, (3) lecciones aprendidas, cuando se
analizan los resultados de un proyecto para establecer aspectos cualitativos que puedan
aplicarse a nuevos desarrollos, y (4) análisis estático, cuando la revisión se hace sobre
productos terminados y no sobre los documentos generados en su construcción.
Los métodos Controlados, están diseñados para establecer conclusiones fácilmente
verificables, normalmente permitiendo corroborar descubrimientos, técnicas o modelos
encontrados mediante las otras técnicas. Los métodos controlados son: (1) experimento
replicado, cuando se aplican métodos o técnicas diferentes en varios proyectos de forma
simultánea para realizar comparaciones, (2) experimento en entorno sintético, cuando se
utilizan proyectos “simulados” en laboratorio o en ambientes controlados, (3) análisis
dinámico, cuando se modifica un producto para analizar su comportamiento y hacer
comparaciones, y (4) simulación, cuando se hacen simulaciones de los proyectos o
productos en modelos del mundo real.
5. Experiencias utilizando el Modelo de Investigación
La primera iniciativa del grupo de investigación LIDIS en donde se ha intentado aplicar
parte de este modelo general de investigación, se inició a finales de 2001 en el tema de
“diseño y reutilización de arquitecturas de software”. Esta iniciativa surgió con el fin de
apoyar los procesos de fortalecimiento en temas de diseño de software y mejoramiento de
productos de la red de Parques Tecnológicos de Software (ParqueSoft) y algunas empresas
de desarrollo de software en Colombia.
Durante su desarrollo, la iniciativa ha incluido una gran variedad de proyectos, incluyendo
la definición de dominios de aplicación, el diagnóstico sobre los productos y prácticas al
interior de ParqueSoft, el establecimiento de nuevos estilos de arquitectura utilizando
herramientas opensource, la documentación de patrones de diseño, la elaboración de
librerías y marcos de trabajo (frameworks) y la construcción de herramientas de desarrollo
y generación de código.
En su primera etapa, Investigación y desarrollo inicial, el grupo de investigadores trabajó
en la configuración varios proyectos que nos permitieran caracterizar mejor el problema y
encontrar soluciones a los mismos. Muchos de estas investigaciones requirieron diseños
variados: investigación literaria, estudio de campo, estudio de caso, experimento replicado
y monitoreo de proyectos, entre otros.
En esta primera etapa, desarrollada en el transcurso de un año y medio, se realizaron
algunas actividades tanto en el laboratorio, como en dos de las empresas de desarrollo de
software. En esta primera etapa se buscaron proyectos que, por sus propias características,
permitieran cubrir el más amplio espectro de posibilidades en términos de tipos de
requerimientos funcionales y no funcionales aplicables a ese contexto. Al final de esta etapa
se definió con un conjunto de métodos, técnicas, patrones, estilos y herramientas de
software que podrían resolver el problema en una gran variedad de empresas con
características similares.
En la segunda etapa de la estrategia, Investigación aplicada, una gran variedad de proyectos
piloto fueron propuestos y realizados. En total se han desarrollado hasta el momento unos
siete proyectos piloto con empresas reales en donde los modelos, esquemas y herramientas
propuestos se han colocado a prueba y han servido como retroalimentación a las
investigaciones. Proyectos que nos han permitido constatar y comparar los resultados y
hacer modificaciones y mejoras sobre los planteamientos.
En la actualidad, la iniciativa se halla revisando muchos de los resultados de los proyectos
piloto, trabajando en refinar las soluciones planteadas, definir modelos predicativos más
confiables y establecer una tecnología madura que pueda solucionar algunos de los
problemas y pueda aplicarse en otros entornos. Seguramente, la iniciativa tendrá que seguir
desarrollando investigaciones aplicadas durante algún tiempo más antes de consolidar un
paquete tecnológico maduro que pueda ser presentado a la comunidad científica o
licenciado a la industria.
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
La Ingeniería de Software no es una ciencia, es una profesión tecnológica. Una profesión
que aborda la construcción e implementación de un tipo particular de tecnología, el
software, y genera conocimientos relacionados con el desarrollo de estas prácticas en
proyectos y situaciones reales. Por esta razón, esta profesión, como cualquier profesión
tecnológica, se encuentra íntimamente relacionada con la industria de software y sus
procesos de mejoramiento y fortalecimiento.
Plantear una estrategia de trabajo investigativo que considere el desarrollo de la tecnología,
la puesta a prueba de la misma en situaciones reales y su transferencia a las empresas de la
industria de software, debe ser un aspecto clave en el proceso de consolidación de los
grupos y líneas de investigación.
El involucrar actividades al interior de empresas de software, incluyendo proyectos piloto
de algunas tecnologías y/o proyectos de consultoría o desarrollo, no significa que la
estrategia de investigación no involucre el rigor apropiado o no se convierta solamente en
una estrategia comercial. Involucrar a las empresas de software en realidad es una
necesidad en el desarrollo de tecnologías realmente utilizables en la industria.
El desarrollo de las investigaciones debe realizarse con un rigor apropiado, buscando
mecanismos de verificación que posibiliten determinar la veracidad y aplicabilidad de sus
resultados. Comprendiendo que los métodos no aplican indistintamente a todo tipo de
proyectos u organizaciones y que una mayor comprensión sobre la forma como ellos
aplican en un caso determinado o no es necesaria.
La reflexión permanente sobre la estrategia y sobre los métodos de investigación
apropiados, son en sí mismas, actividades que buscan definir el rigor apropiado a las
actividades de los grupos de investigación.
En la actualidad, una gran variedad de autores e investigadores han desarrollado algunos
modelos y teorías relacionadas con los procesos de investigación en ingeniería de software.
Lamentablemente, muchos de ellos parecen esquemas aislados o no articulados
apropiadamente.
Los grupos de investigación pueden establecer su propio esquema de trabajo a partir de la
articulación de las diferentes teorías y modelos existentes, buscando establecer con claridad
(1) la estrategia general para el trabajo investigativo, (2) las áreas temáticas que deben ser
abordadas, (3) los elementos básicos del diseño de la investigación y (4) una serie de
arquetipos o patrones de diseño de las investigaciones.
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://www2.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://www2.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
Descargar