0% found this document useful (0 votes)
35 views32 pages

Resumen CAP 1 UD 3399 v1.5

resumen software

Uploaded by

mateo olivas
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
35 views32 pages

Resumen CAP 1 UD 3399 v1.5

resumen software

Uploaded by

mateo olivas
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 32

Capítulo 1.

Introducción a la experimentación en ingeniería de software

Sumario

1.1 Ingeniería de software


1.2 Ingeniería de software empírica o experimental
1.3 Metodologías empíricas de investigación
1.4 Áreas de investigación en ingeniería de software

© Christian Quesada-López [email protected]


Objetivos de aprendizaje

El objetivo de aprendizaje de este capítulo consiste en analizar la ingeniería de software


empírica. Para esto se estudia su definición y características y su relación con la
evaluación de los procesos de la ingeniería de software.

Al finalizar el estudio del capítulo, el estudiantado será capaz de:

1) Explicar la relación entre la ingeniería de software y la ingeniería de software


empírica.
2) Identificar las características y limitaciones de la ingeniería de software empírica.
3) Explicar los aspectos fundamentales que hacen que la investigación empírica sea
esencial en los procesos de la ingeniería de software.
4) Describir los alcances y limitaciones de la ingeniería de software empírica con
respecto a sus metodologías empíricas.

Conceptos clave

Ingeniería de software
Ingeniería de software empírica o experimental
Ingeniería de software basada en evidencia
Metodologías empíricas
Estudios primarios
Estudios secundarios
Modelo GQM

2
© Christian Quesada-López [email protected]
Introducción

En este capítulo se estudia la ingeniería de software experimental, también conocida


como ingeniería de software empírica. Primero se discute qué es la ingeniería de
software, posteriormente, el concepto de la ingeniería de software empírica y la relación
que existe entre ambas. Además, se presentan metodologías empíricas de investigación
que se utilizan en la ingeniería de software y se ejemplifican áreas de investigación en
contextos académicos y profesionales.

Una lectura detallada del capítulo es fundamental para aproximarse a una primera
definición del objetivo que le permita, posteriormente, desarrollar una investigación
empírica. Los contenidos de este capítulo son un punto de referencia para el resto de la
unidad didáctica, por lo tanto, se requiere de una lectura cuidadosa y comprensiva.

Este primer capítulo le ayuda a comprender los conceptos básicos de la ingeniería de


software empírica para los procesos de investigación posteriores que usted aplicará en
el Trabajo Final de Graduación (TFG) del Programa de Licenciatura, así como para la
práctica profesional en la industria de software.

Atención

Mientras estudie el capítulo contextualice y relacione los contenidos con los


problemas a los que comúnmente se ha enfrentado durante la aplicación
de procesos ingenieriles en su práctica académica y profesional.

3
© Christian Quesada-López [email protected]
1.1 Ingeniería de software

Análisis ¿Qué entiende usted por ingeniería de software?

________________________________________________________
________________________________________________________
________________________________________________________
________________________________________________________

La Sociedad de la Computación de la IEEE (Instituto de Ingenieros Eléctricos y


Electrónicos, por sus siglas en inglés) define la ingeniería de software como “… la
aplicación de un enfoque sistemático, disciplinado y cuantificable para el desarrollo,
operación y mantenimiento de software …” (IEEE, 1990, p. 67). Es decir, la aplicación de
la ingeniería al software mediante un proceso definido y sistemático, donde se
cuantifican los resultados para garantizar la calidad del producto (Sommerville, 2016).

Concepto clave Ingeniería de software

La aplicación de un enfoque sistemático, disciplinado y cuantificable


para el desarrollo, operación y mantenimiento de software (IEEE, 1990, p.
67).

En ingeniería de software, a partir de una idea del producto y los recursos disponibles,
se definen los procesos, métodos, metodologías y herramientas del proceso y se
desarrolla un producto de software que cumpla con las metas de calidad, tal como se
muestra en la Figura 1.1.

4
© Christian Quesada-López [email protected]
FIGURA 1.1 Proceso de desarrollo de software. La figura muestra el proceso general de desarrollo
de software con entradas de recursos (económicos, humanos y tecnológicos) y la idea de
producto que son los requerimientos del cliente o negocio para obtener una salida que es el
producto software.

Fuente: Wohlin et al., 2012.

El desarrollo de un producto de software es, en la mayoría de los casos, una tarea


compleja. Las organizaciones están continuamente mejorando sus procesos de software
para aumentar la calidad de los productos, incrementar la productividad y reducir los
costos (Wohlin et al., 2012).

En este contexto, donde se requieren productos de calidad, la medición es fundamental


para la disciplina de la ingeniería de software (Abran, 2010). A partir de la medición y
evaluación continua de los procesos durante la evolución de un proyecto, es que se
puede identificar si se están alcanzando las metas de calidad definidas. En particular, es
posible determinar medidas que permitan recolectar datos para la toma de decisiones
desde cualquiera de las especialidades del Programa de Licenciaturas.

La ingeniería de software experimental, también conocida como ingeniería de software


empírica, enfatiza la necesidad de que la ingeniería de software sea más científica y para
lograrlo analiza el rol que cumplen los estudios empíricos (Wohlin et al., 2012).

Dados los fracasos reportados en los proyectos de desarrollo, la ingeniería de software


ha identificado la necesidad de una mejor gobernanza en su desarrollo y
mantenimiento, lo que ha potenciado la aplicación de la ingeniería de software basada

5
© Christian Quesada-López [email protected]
en evidencia y en los métodos de investigación empírica (Genero, Cruz-Lemus, Piattini,
2014).

Concepto clave Ingeniería de software basada en evidencia

Esta disciplina se fundamenta en los resultados experimentales y datos


empíricos para proponer soluciones a los problemas que se presentan
en la ingeniería de software (Kitchenham, Dyba & Jorgensen, 2004).

Los métodos empíricos proveen los lineamientos para los procesos de medición
confiables, fundamentales en la ingeniería de software. Dichos procesos se llevan a cabo
mediante la conducción de estudios empíricos que requieren la medición de las entradas
y salidas, así como la cuantificación del efecto causado y la identificación de las
relaciones entre los objetos de estudio y las intervenciones (mediante la aplicación de
nuevos métodos, técnicas y herramientas de la ingeniería de software). Sin las métricas
de software, no sería posible controlar estos estudios empíricos para determinar su
efectividad (Wohlin et al., 2012).

Concepto clave Métricas de software


Una métrica de software es una medida cuantitativa que indica el grado
en que un sistema, componente o proceso posee una propiedad (IEEE,
1990, p. 47).

Por lo tanto, la medición de software y la conducción de estudios empíricos resultan


fundamentales para el control de proyectos, productos y procesos (Shull, Singer,
Soberg, 2007; Wohlin et al., 2012) dado que en la práctica de la ingeniería de software
no es posible controlar lo que no se puede medir (DeMarco, 1986). Por consiguiente,
si no se controla el desarrollo de software, no se puede mejorar.

6
© Christian Quesada-López [email protected]
1.2 Ingeniería de software empírica o experimental

Análisis
¿Por qué cree usted que surge la ingeniería de software experimental? Comente.
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________

De acuerdo con Wohlin et al. (2012), en el contexto competitivo actual las personas
profesionales de software no solo deben conocer los métodos, técnicas y herramientas
de la ingeniería de software, sino también las metodologías para poder evaluarlas de
forma sistemática y rigurosa y, a la vez, mejorar los procesos de toma de decisiones.

Concepto clave Ingeniería de software experimental o empírica

Provee las metodologías para investigar los fenómenos de la ingeniería de


software mediante procesos sistemáticos que miden, analizan y evalúan
los métodos, metodologías, procesos y herramientas de desarrollo,
operación y mantenimiento (Wohlin et al., 2012; Felderer & Travassos, 2020).

Lo anterior permite a las personas profesionales de una organización de software


incrementar la productividad, la calidad y, de esta manera, hacerla más competitiva en
sus procesos de toma de decisiones a partir de la evidencia empírica (Basili, Selby &
Hutchens, 1986).

Con la aparición de la ingeniería de software continua (Bosch, 2014), aquellos métodos


que apoyan los procesos de medición y mejora, así como la experimentación e
innovación adquieren relevancia en la práctica profesional actual. El desarrollo continuo
inicia como una metodología de desarrollo de software, cuyo objetivo es entregar el

7
© Christian Quesada-López [email protected]
software a los clientes, en pequeños incrementos, tan pronto como se complete y se
pruebe (Bosch, 2014).

Concepto clave Ingeniería de software continua

Esta disciplina proporciona la información esencial sobre la adopción de


prácticas modernas de ingeniería de software en grandes empresas que
producen software, y donde muchos ingenieros colaboran para entregar
nuevas versiones de los sistemas (Bosch, 2014).

A continuación, se le presenta un ejemplo de la relación entre los métodos empíricos y


los programas de medición.

Ejemplo Métodos empíricos y programas de medición

Los programas de medición de las organizaciones de desarrollo de software que


comparan los datos de los procesos (benchmarking) y evalúan modelos de calidad,
predicción de fallos, estimación de esfuerzo, productividad y costos requieren de los
métodos empíricos para implementar y mejorar sus procesos. Además, proporcionan
información confiable para la toma de decisiones.

Las organizaciones de desarrollo de software deben tener muy presente la calidad en


sus procesos y productos, determinar las causas de los éxitos y fracasos y aprender de
ellos, crear bases de datos de conocimiento, y reutilizar las experiencias exitosas
(Genero et al., 2014). Esto conlleva a que los profesionales en ingeniería de software se
hagan las siguientes preguntas:

 ¿Cuáles tecnologías (métodos, metodologías, herramientas) deben ser consideradas


para el proceso de desarrollo de software en mi organización, mi equipo y proyecto?
 ¿Cómo mejorar la productividad de los equipos de desarrollo en mi organización?
 ¿Cuál es la calidad de los productos de software que se desarrollan en mi
organización?

8
© Christian Quesada-López [email protected]
 ¿Cómo seleccionar una nueva tecnología para saber cuánto es el costo y el beneficio
de introducir una nueva tecnología de software en mi organización?
 ¿Cuándo y cómo se calcula el retorno de inversión en proyectos de desarrollo de
software de mi organización?

Análisis ¿Alguna vez, en su práctica académica o profesional, se ha cuestionado sobre la


selección y uso de nuevas tecnologías (métodos, metodologías, herramientas) para
el desarrollo de software? ¿Podría cuantificar el costo y los beneficios de adoptar
nuevas tecnologías para el desarrollo de software en su organización? Comente.
a) _______________________________________________________________
_______________________________________________________________
b) _______________________________________________________________
_______________________________________________________________

Como profesionales de la ingeniería de software, es necesario preguntarse acerca de las


decisiones que impactan la calidad de los productos y servicios que se ofrecen a los
usuarios. Además, deben tener claridad acerca de la aplicación y evolución de las
prácticas, métodos y herramientas para implementar procesos de mejora continua que
apoyen la toma de decisiones en las organizaciones. De acuerdo con Wohlin et al. (2012),
la ingeniería de software empírica es necesaria porque:

 Ha generado conocimiento por medio de la aplicación del método científico.


 Ha demostrado ser esencial para la evolución de la ingeniería de software.
 Ha permitido la transferencia de las tecnologías de software a la industria y ha
mejorado los procesos de software.
 Ha generado evidencia científica sobre el éxito de la adopción de nuevos métodos,
procesos y tecnologías.

La ingeniería de software empírica provee distintos métodos que permiten realizar


investigación de pequeña a gran escala, y de bajo, mediano y alto riesgo. También
proporciona marcos de trabajo para la adopción ordenada de estos métodos empíricos
en los procesos de mejora que se implementan en la industria de software (Wohlin et al.,
2012).

9
© Christian Quesada-López [email protected]
Las metodologías de la ingeniería de software empírica apoyan la evaluación y
comparación de tecnologías permitiendo, a la vez, adoptar nuevos métodos, prácticas,
procesos, técnicas, lenguajes y herramientas. En este sentido, la capacitación de sus
profesionales en la selección, el diseño, la conducción y el análisis de resultados de los
estudios empíricos les permite discernir cuáles estrategias aplicar según el contexto, los
recursos de la organización, así como los objetivos de la investigación.

Implicaciones académicas
y profesionales
El estudio de las metodologías empíricas le aporta una visión
teórica y práctica sobre el proceso de experimentación en la
ingeniería de software. El desarrollo de las destrezas iniciales para
el diseño, recolección de datos y análisis de resultados de los
estudios empíricos permiten una visión más amplia para la toma
de decisiones sobre el uso de marcos de trabajo, mejores
prácticas y herramientas en el desarrollo de proyectos de software
con un enfoque empírico y científico. Las habilidades en
investigación que se generen con el estudio de esta unidad
didáctica serán un aliado para la escritura del TFG de licenciatura
y en su labor profesional.

Análisis Ahora bien, con sus propias palabras, escriba una definición de ingeniería de software
empírica.
___________________________________________________________________
___________________________________________________________________
___________________________________________________________________
___________________________________________________________________

Según Wohlin et al. (2012) la ingeniería de software experimental o ingeniería de


software empírica investiga los fenómenos de dicha ingeniería; además, provee
metodologías para medir, analizar y evaluar los métodos, las prácticas y los procesos de
desarrollo, operación y mantenimiento de software. Además, se enfoca en estudios
empíricos sobre los sistemas de software, los cuales involucran productos, procesos y
recursos (Wohlin et al., 2012; Felderer & Travassos, 2020). En síntesis, la experimentación
empírica contribuye a evaluar, predecir, entender, controlar y mejorar el software y sus

10
© Christian Quesada-López [email protected]
productos (Basili, Selby & Hutchens, 1986). Más adelante en este capítulo, se trabajará en
un ejemplo sobre la aplicación de la ingeniería de software empírica.

Los procesos de experimentación en los métodos empíricos brindan una manera


sistemática, cuantificable y controlada para evaluar diversas actividades en la ingeniería
de software (Wohlin et al., 2012). Su objetivo es proporcionar hechos para sustentar las
suposiciones y supuestos, especulaciones y creencias que existen alrededor de la
construcción de software (Juristo & Moreno, 2013). La ingeniería de software empírica
estudia los artefactos relacionados con la caracterización, comprensión, evaluación,
predicción, control, gestión y mejora de software a través de procesos cualitativos o
cuantitativos. Los métodos cuantitativos apoyan la ejecución de experimentos
controlados, así como los estudios de caso. Ambos deben estar bien diseñados y
realizarse de forma rigurosa con el fin de generar evidencia empírica valiosa (Felderer &
Travassos, 2020). Algunos ejemplos de métodos empíricos para investigar procesos y
productos son las encuestas, casos de estudio, experimentos controlados y estudios de
campo, entre otros.

Para aprender más Puede encontrar información detallada sobre los métodos cuantitativos
y cualitativos en Metodología de la investigación: las rutas cuantitativa,
cualitativa y mixta, de Hernández-Sampieri y Torres (2018).

También esta área se ocupa de la planeación de los estudios empíricos; por ejemplo:
estudios de caso, encuestas, cuasi experimentos y experimentos, así como en
recolección de datos y desarrollo de teorías a partir del análisis de resultados. Asimismo,
se interesa en que la experimentación como método científico contribuya con nuevo
conocimiento a través de la evidencia (Wohlin et al., 2012).

El cuadro 1.1 lista los principales métodos empíricos que se usan para investigar
procesos y productos de software.

11
© Christian Quesada-López [email protected]
Cuadro 1.1. Métodos empíricos

• Encuestas
• Casos de estudio
• Experimentos controlados
• Estudios de campo

Análisis ¿Ha utilizado alguno de estos métodos empíricos? Comente.


_____________________________________________________________________
_____________________________________________________________________
¿Conoce usted algunos otros? Si así fuera, indíquelos en el siguiente espacio.
_____________________________________________________________________
_____________________________________________________________________

La ingeniería de software empírica es interdisciplinaria, por esta razón, se utilizan


técnicas de análisis cuantitativos y cualitativos para la experimentación. En los últimos
años, la popularidad de los métodos empíricos formales que en ella se aplican ha
aumentado y desde el año 2014 forman parte del cuerpo de conocimiento de esta
disciplina (Bourque & Fairley, 2014).

Análisis Investigue sobre los estudios experimentales que se han realizado en ingeniería de
software en Guide to the Software Engineering Body of Knowledge, Version 3.0, en
IEEE Computer Society de Bourque & Fairley, 2014 y luego describa sus hallazgos
en el siguiente espacio.
___________________________________________________________________
___________________________________________________________________
___________________________________________________________________
___________________________________________________________________

En resumen, la ingeniería de software experimental es la investigación aplicada a la


ingeniería de software con un fuerte contenido empírico y científico donde los

12
© Christian Quesada-López [email protected]
resultados y hallazgos son relevantes para investigadores y profesionales (Wohlin et. al.,
2012).

La figura 1.2 describe aspectos relacionados con los estudios empíricos en la ingeniería
de software.

FIGURA 2.2. Estudios empíricos en la ingeniería de software. La figura presenta características de


los estudios empíricos en la industria, las personas, así como el análisis de los datos que realiza.
Fuente: Adaptado de Wohlin et al., 2012.

1.3 Metodologías empíricas de investigación

La ingeniería de software se fundamenta en disciplinas ingenieriles y científicas, las


cuales exigen de metodologías claras en sus estudios empíricos (Wohlin et al., 2012). La
experimentación, en algunos casos, genera volúmenes grandes de datos, información y
conocimiento científico para estudiar sistemas de software complejos. Por lo tanto, la
divulgación del conocimiento representa un reto para esta disciplina.

Ejemplo Una de las principales líneas de interés de la ingeniería de software experimental es la


definición de metodologías sistemáticas para sus estudios empíricos.

13
© Christian Quesada-López [email protected]
Los estudios empíricos se dividen en primarios, secundarios y terciarios.

 Los primarios permiten realizar directamente la recolección y análisis de datos


de un fenómeno determinado en un contexto particular y con instrumentos de
elaboración propia. Se basan en el estudio directo de fuentes primarias de datos.
 Los secundarios revisan la literatura existente; a saber: fuentes primarias que se
han producido en la comunidad de investigación para responder una o más
preguntas de investigación.
 Los terciarios se concentran en la investigación de artículos secundarios.
Recolecta sistemáticamente y sintetiza información sobre colecciones de
estudios primarios disponibles en la literatura científica.

En los siguientes capítulos se analiza en profundidad las distintas metodologías de


estudios empíricos. Entre las principales metodologías empíricas para llevar a cabo los
primarios se encuentran los estudios de caso, encuestas, cuasi experimentos y
experimentos y los secundarios abarcan las revisiones sistemáticas de literatura y los
mapeos sistemáticos de literatura. En los terciaros se utilizan los principios de la
metodología de revisión de literatura para agregar evidencia a partir del estudio de los
artículos secundarios, con un enfoque en amplitud sobre el área de investigación. La
figura 1.3. presenta estas metodologías empíricas.

FIGURA 1.3. Metodologías empíricas. Resumen las categorías y los tipos de los estudios
empíricos de la ingeniería de software experimental.

14
© Christian Quesada-López [email protected]
La ingeniería de software experimental estudia procesos de software y proporciona
metodologías empíricas para realizar mediciones y recolectar las métricas que se utilizan
para el control estadístico de procesos de software (Wohlin et al., 2012, Abran, 2010, Florac
& Carleton, 1999), el cual determina la estabilidad y la capacidad de los procesos para la
toma de decisiones de las organizaciones. También permite recolectar y analizar datos
para el monitoreo de la productividad y calidad del software.

Ejemplo La estabilidad del proceso; en otras palabras, la consistencia con respecto a los atributos
medidos y la capacidad del proceso, permite determinar el cumplimiento de las metas de
productividad o calidad.

Implicaciones académicas y profesionales Desde una perspectiva ingenieril, el rol de la


medición y del control estadístico de
procesos de software es esencial en la
práctica profesional. Por otra parte, en los
estudios empíricos, la definición de las
etapas y pasos mejora su rigurosidad y
permite la reproducibilidad y repetibilidad.

En la figura 1.4 se muestran las fases y actividades generales de un proceso experimental


para estudios primarios en la ingeniera de software (Wohlin et al., 2012). A partir de una
idea de experimentación se delimita su alcance mediante el objetivo de investigación,
se desarrolla el planeamiento, se define el contexto, las preguntas o hipótesis, las
variables, los objetos y sujetos, el diseño experimental, los instrumentos y las amenazas
a la validez. Posteriormente, se lleva a cabo la preparación, conducción y validación.
Finalmente, se realiza el análisis de resultados, la interpretación (estadística descriptiva
e inferencial), el reporte y el paquete experimental.

En los siguientes capítulos se estudiarán, en profundidad, cada una de estas etapas en


las que la ética tiene un papel fundamental pues se deben conocer las normas y valores
que están presentes en las organizaciones y en el individuo, además de las regulaciones
legales. Las actividades en las investigaciones y la divulgación de los resultados
requieren de un compromiso ético de sus participantes.

15
© Christian Quesada-López [email protected]
FIGURA 1.4. Proceso de experimentación. Indica el flujo de las etapas y actividades para realizar
un proceso de experimentación.
Fuente: Tomado y adaptado de Wohlin et al., 2012.

16
© Christian Quesada-López [email protected]
Análisis Explique cuáles aspectos éticos se deben considerar cuando se aplican
metodologías empíricas en una investigación. Considere aspectos del contexto
para formular su respuesta.
______________________________________________________________
______________________________________________________________
______________________________________________________________
______________________________________________________________

1.4. Áreas de investigación en la ingeniería de software

Análisis Desde su especialidad, ¿cuál sería un área de investigación en la cual le interesaría


realizar un estudio empírico?

_____________________________________________________________________
_____________________________________________________________________
_____________________________________________________________________
_____________________________________________________________________
Los procesos de investigación empírica se pueden realizar sobre cualquier área de la
ingeniería de software. Cuando se hace una investigación empírica, primero se debe
acotar el alcance del proyecto de investigación a temas específicos que busquen
resolver problemas en un contexto particular. El Cuerpo de Conocimiento de la
Ingeniería de Software (SWEBOK, por sus siglas en inglés) describe una estructura de
contenidos de esta disciplina que sus profesionales deberían conocer (Bourque &
Fairley, 2014). La figura 1.5 muestra las 15 áreas de ese conocimiento.

17
© Christian Quesada-López [email protected]
1. Requerimientos de software

2. Diseño de software

3. Construcción de software

4. Pruebas de software

5. Mantenimiento de software

6. Administración de la configuración de software

7. Proceso de la ingeniería de software


Áreas del conocimiento
8. Modelos y métodos de ingeniería de software
de SWEBOK
9. Calidad de software

10. Práctica profesional de la ingeniería de software

11. Administración de la ingeniería de software.

12. Economía de la ingeniería de software

13. Fundamentos de la computación

14. Fundamentos matemáticos

15. Fundamentos de la ingeniería

FIGURA 1.5. Áreas del conocimiento de SWEBOK. Estas 15 áreas indican el cómo desarrollar,
administrar y dar mantenimiento al software.

Fuente: Adaptado de Bourque, P. & Fairley, R.E., 2014.

En la ingeniería de software empírica y, en particular, en la ingeniería de software


basada en evidencia, se utilizan metodologías de investigación para obtener la evidencia
actual sobre los procesos de desarrollo y mantenimiento de software que se puedan
integrar con la práctica profesional y los valores éticos humanos, los cuales dan soporte
a la toma de decisiones (Genero et al. 2014).

Cada una de las áreas de la ingeniería de software se divide en múltiples subáreas que a
la vez pueden convertirse en distintos temas de investigación. El cuadro 1.2 lista
temáticas que se han trabajado en conferencias científicas de esta disciplina. Estos
ejemplos, así como los artículos científicos (investigaciones empíricas) asociados,

18
© Christian Quesada-López [email protected]
proporcionan insumos que el estudiantado puede utilizar para entender el alcance de
un estudio empírico en este campo.

Ejemplos

Cuadro 1.2. Ejemplos de áreas de investigación en la ingeniería de software

Desarrollo de software ágil Ingeniería de requerimientos Seguridad y privacidad


Computación en la nube y Sistemas de recomendación Calidad de software y pruebas
orientada a servicios de software
Ingeniería de software basada Análisis de programas Reutilización de software
en componentes
Administración de la Ingeniería reversa Frameworks, API, Middleware
configuración y el desarrollo
Ingeniería de software Ingeniería de software basada Sistemas paralelos, distribuidos
colaborativa, cooperativa y en búsqueda y concurrentes
distribuida
Factores humanos y sociales de Arquitectura de software Métodos formales, verificación
la ingeniería de software y síntesis
Evolución y mantenimiento de Líneas de producción de Aplicaciones móviles
software software
Trazabilidad de software Economía de software, Inteligencia artificial
administración y métricas
Modelo y diseño de software Procesos de software y mejora Software embebido y sistemas
de procesos cibernéticos
Sistemas web, previsivos y Comprensión y visualización de …
ubicuos programas
Interacción humano … …
computador

19
© Christian Quesada-López [email protected]
Para aprender más

Para identificar artículos científicos acerca de investigaciones


empíricas, usted puede explorar en los enlaces que se brindan a
continuación.

 Conferencia Internacional de Ingeniería de Software (ICSE, http://www.icse-conferences.org/).


 Simposio Internacional en Ingeniería de Software Empírica y Medición (ESEM, http://www.esem-
conferences.org/).
 Conferencia internacional sobre Mejora de Procesos y Productos de Software (PROFES,
https://www.profes-conferences.org/).
 Revista de la IEEE Transacciones en Ingeniería de Software (IEEE TSE,
https://www.computer.org/csdl/journal/ts).
 Revista de Ingeniería de Software Empírica (EMSE, https://www.springer.com/journal/10664).
 Revista de Tecnologías de Información y Software (IST,
https://www.journals.elsevier.com/information-and-software-technology).
 Revista de Software y Sistemas (JSS, https://www.journals.elsevier.com/journal-of-systems-and-
software).

La Universidad proporciona al estudiantado de las licenciaturas, acceso a bases de datos


académicos en los recursos electrónicos para búsquedas de literatura científica. Dichas
herramientas son esenciales para la conducción de cualquier estudio empírico en
ingeniería de software.

Ejemplos En el país existen varios grupos de investigación en ingeniería de software y áreas


afines que efectúan estudios empíricos en la academia y la industria. En la UNED
se han desarrollado investigaciones relacionadas con el software; ejemplo:
medición, mejora de procesos, calidad, pruebas, metodologías de desarrollo ágiles
e híbridas, prácticas de la ingeniería de software en la industria, inteligencia
artificial, entre otras. En el país se han llevado a cabo estudios específicos en las
universidades; a saber: evaluaciones de planes de mejora de procesos,
programas de métricas, calidad de aplicaciones web, técnicas para la

20
© Christian Quesada-López [email protected]
identificación de requerimientos de seguridad, deuda técnica de pruebas,
automatización de pruebas para móviles, pruebas de seguridad para dispositivos
móviles, herramientas de pruebas basadas en modelos, pruebas de mutación,
efectividad de técnicas de generación de pruebas, herramientas de
automatización de pruebas, medición del tamaño funcional del software, modelos
de estimación de esfuerzo, medición de requerimientos no funcionales, estimación
y metodologías ágiles, usabilidad y técnicas de diseño centrado en el usuario para
aplicación de móviles. Estos ejemplos pueden aportar posibles ideas para sus
TFG.

Atención Los temas arriba citados le servirán para definir y delimitar el tema de las
investigaciones de los dos proyectos del curso.
Recuerde que el tema se selecciona de acuerdo con sus intereses personales, la
especialidad de su licenciatura y bajo la supervisión y aprobación del tutor del
curso.
Cada estudiante debe identificar artículos científicos similares a su idea de
investigación, con el fin de apoyar el proceso de diseño de los estudios empíricos.

La asignatura se ofrece para las siguientes licenciaturas**:

 Ingeniería Informática
 Ingeniería Informática y Calidad de Software
 Ingeniería Informática y Administración de Proyectos
 Ingeniería Informática y Desarrollo de Aplicaciones Web

**Cada una tiene un perfil profesional bien definido.

Cuando se selecciona un tema de investigación es necesario considerar que esté


directamente relacionado con su especialidad y con el TFG de la licenciatura.

El Programa de Licenciatura en Ingeniería Informática prepara profesionales para


desempeñar funciones propias de la ingeniería de requerimientos, diseño y
desarrollo, además para liderar recursos humanos y tecnológicos, administrar
procesos de tecnologías de información y comunicación (Garita, Morales, Aguilera,
Castro, Chacón & Gómez, 2013).

21
© Christian Quesada-López [email protected]
La Licenciatura en Ingeniería Informática y Administración de Proyectos capacita
profesionales para la gestión de procesos de tecnologías de información y
comunicación, soluciones informáticas, proyectos, administración de riesgos,
costos, metodologías y recursos humanos; además, roles de Dirección de
Proyectos TIC, Dirección del Departamento TIC, Dirección de una Oficina de
Administración de Proyectos TIC, Gerente de Tecnologías, Líder de proyectos
TIC, Líder Técnico, Analista de Sistemas o Ingeniero(a) de Sistemas (Garita et. al.
2013).

La Licenciatura en Ingeniería y Calidad de Software forma profesionales para


gestionar procesos TIC dirigidos al aseguramiento de la calidad, buscar soluciones
informáticas enfocadas a la mejora de procesos, ejecutar procesos de ingeniería
de software, elaborar artefactos para el aseguramiento de la calidad, llevar a cabo
pruebas de software, y promover la calidad en el desarrollo de software; también
para desempeñarse en la dirección del departamento o área de calidad, gestión
de calidad TIC, líder de proyectos de aseguramiento de la calidad en procesos TIC
(Garita et. al., 2013).

La Licenciatura en Ingeniería y Desarrollo de Aplicaciones Web prepara


profesionales para realizar funciones de gestión de proyectos web, diseño y
desarrollo de arquitecturas web, diseño y desarrollo de sitios y aplicaciones web;
también para desempeñarse en los roles de analista, ingeniero(a), diseñador(a),
desarrollador(a) de sitios y aplicaciones web.

Los temas que se desarrollan en cada una de las licenciaturas delimitan las
posibles investigaciones del TFG.

El primer paso en un estudio empírico es definir su alcance mediante el objetivo y la


pregunta de investigación. Si el alcance no está bien delimitado o no se hace bien,
podríamos caer en el peligro de tener que repetir trabajo o descartar los datos por
completo.

Para delimitar el alcance de la investigación, es fundamental:

1) Definir la pregunta o preguntas de investigación,


2) Establecer la hipótesis (lo que creemos que va a pasar), y
3) Determinar el objetivo y las metas del estudio.

22
© Christian Quesada-López [email protected]
Atención Tome el tiempo para:

 Definir el objetivo de su investigación.


 Posteriormente, compárelo con los de investigaciones científicas similares.
 Finalmente, asegúrese que el tema se relaciona con su área de especialidad
y, luego, valídelo con el tutor.

Para la selección del objetivo de investigación:

 Conozca el contexto del negocio, sus intereses y necesidades.


 Ofrezca soluciones a problemas reales relacionados con la ingeniería de
software.
 Consulte normativas, reglamentos, objetivos estratégicos, estructuras y
culturas organizacionales, metodologías y marcos de trabajo utilizados en el
ciclo de vida de desarrollo, procesos y servicios de tecnologías de información,
recursos disponibles, entre otros.

Una de las estrategias para definir el alcance de la investigación es visualizar o identificar


los componentes del objetivo, a partir del modelo Objetivo-Pregunta-Métrica (Goal-
Question-Metric, GQM por sus siglas en inglés), (Basili, Caldiera & Rombach, 1994). Este
modelo, además, permite alinear la medición de los procesos de la ingeniería de
software con la estrategia de negocio de las organizaciones de desarrollo (Basili, Lindvall,
Regardie, Seaman, Heidrich, Münch, ..., & Trendowicz, 2010), utilizando la plantilla que se
detalla a continuación:

analizar <objeto de estudio>


con el propósito de <propósito>
con respecto a <foco de calidad>
desde el punto de vista de <perspectiva>
en el contexto de <contexto>

La figura 1.6 presenta los cinco componentes del modelo GQM, el cual permite
establecer una estructura para la elaboración completa de las metas que se necesitan

23
© Christian Quesada-López [email protected]
en los procesos de desarrollo de software y que responden a las metas estratégicas de
negocio.

FIGURA 1.6. Componentes del modelo GQM. La figura muestra el orden de los componentes del
modelo, los cuales definen qué se estudia, la intención, el efecto estudiado, el punto de vista y
dónde se ejecuta el estudio.

Fuente: Adaptado de Wohlin et al., 2012.

A continuación, se describe el modelo GQM, según Wohlin et al. (2012):

 Objeto de estudio (qué se estudia): se refiere a los productos, procesos, recursos,


modelos, métricas, teorías por investigar; por ejemplo: el producto final, el proceso
de desarrollo, la técnica de inspección o pruebas o el modelo evaluado, entre otros.
 Propósito (cuál es la intención): se refiere a la intención del estudio; a saber: evaluar
el impacto de dos técnicas diferentes, caracterizar la curva de aprendizaje de una
organización o evaluar un modelo.
 Foco de calidad (cuál efecto es estudiado): identifica el efecto primario bajo estudio;
verbigracia: la efectividad, la eficiencia, el costo, la confiabilidad, la productividad o
la calidad.
 Perspectiva (desde qué punto de vista): indica el punto de vista desde el cual los
resultados del estudio son interpretados; a saber: el desarrollador, el administrador
de proyectos, el cliente o el investigador.

24
© Christian Quesada-López [email protected]
 Contexto (dónde se ejecuta el estudio): define quienes están participando en el
estudio (sujetos) y cuáles artefactos de software están siendo utilizados (objetos).
Los sujetos se califican según su experiencia, tamaño de los equipos, perfil, carga de
trabajo, entre otros. Los objetos se caracterizan por tamaño, complejidad, prioridad
y dominio de aplicación.

Para definir el objetivo de un estudio en la ingeniería de software experimental se


emplean plantillas que permitan una delimitación pertinente, de acuerdo al alcance del
problema de investigación. La figura 1.7 muestra ejemplos de cada uno de los
componentes del modelo GQM para que sean utilizados en la construcción del objetivo
de investigación de los proyectos del curso (Wohlin et al., 2012):

FIGURA 1.7. Componentes del modelo GQM. Esta figura presenta ejemplos que se pueden
desarrollar en cada componente para realizar un estudio determinado.
Fuente: Wohlin et al., 2012.

Ejemplo

De acuerdo con Wohlin et al. (2012), un ejemplo de definición de objetivo, para


un estudio primario basado en el modelo GQM que compara técnicas de
inspección de artefactos de software, es el siguiente:

25
© Christian Quesada-López [email protected]
Analizar <las técnicas de inspección de código y las listas de chequeo>
con el propósito de <evaluarlas>
con respecto a <su efectividad y eficiencia>
desde el punto de vista de <las personas investigadoras>
en el contexto de <estudiantes de ingeniería de software que analizan documentos de requerimientos>

A continuación, se detallan los componentes de este modelo:

 Los objetos de estudio se refieren a la técnica de inspección de código y las listas de


chequeo.
 El propósito es evaluar la efectividad y eficiencia de las técnicas.
 El análisis se realiza desde la perspectiva de las personas investigadoras.
 El experimento utiliza como sujetos a estudiantes de ingeniería de software y como
objetos a los documentos de especificación de requerimientos escritos en lenguaje
natural.

La definición del objetivo de investigación depende del tipo de estudio a realizar.


Recordemos que en uno secundario se analiza la literatura existente (fuentes primarias)
y en uno primario, las personas investigadoras recolectan y analizan sus propios datos
en un contexto particular. Por lo tanto, el propósito de ambos es distinto.

En las siguientes secciones se definen objetivos de estudios primarios y secundarios


utilizando el modelo GQM.

Atención En la asignatura Ingeniería de Software Experimental se realiza un estudio


primario y uno secundario.

 Para la definición del objetivo del estudio secundario, analice la información


qué desea extraer de los estudios existentes.
 Para el primario, reflexione acerca de cómo desea evaluar alguna tecnología
o artefacto de la ingeniería de software en el contexto de la organización donde
desarrolle su investigación.

26
© Christian Quesada-López [email protected]
La literatura que usted identifique en el estudio secundario será la base para definir el
estudio primario.

Implicaciones académicas y profesionales Con respecto a la investigación en ingeniería


de software, tome en cuenta lo siguiente:

 Seleccione un área acorde a los


intereses particulares de la
especialidad de su TFG y de su
contexto profesional, de manera que
esta responda a las necesidades del
negocio (patrocinador del proyecto u
organización para la cual labora).
 Aplique buenas prácticas de ingeniería
de software que brinden soluciones a
los problemas que enfrentan las
organizaciones de desarrollo.

Ejemplo A continuación, se presentan ejemplos de objetivos de estudios primarios y de


secundarios que utilizan el modelo GQM.

Primarios:

 Analizar <la técnica de inspección de lista de chequeo> con el propósito de <evaluarla> con respecto
a <su efectividad y eficiencia para identificar errores> desde el punto <del investigador> en el contexto
de <estudiantes de posgrado que analizan documentos de requerimientos>.
 Analizar <el resultado de una capacitación de Proceso Personal de Software (PSP)> con el propósito
de <evaluarlo> con respecto a <los conocimientos previos del individuo> desde el punto de vista <del
investigador y el instructor> en el contexto de <un curso de procesos de software>.
 Analizar <la herramienta de pruebas automatizadas ModelJUnit> con de propósito de <evaluarla> con
respecto a <su efectividad> desde el punto de vista <del investigador> en el contexto de <pruebas
funcionales para aplicaciones web>.

27
© Christian Quesada-López [email protected]
 Analizar <modelos de predicción de fallos que utilizan técnicas de aprendizaje automático y algoritmos
genéticos> con el propósito de <evaluarlos> con respecto a <su eficacia y eficiencia> desde el punto
de vista <del investigador> en el contexto de <proyectos de desarrollo de software y métricas
orientadas a objetos>.

Secundarios:

 Analizar <herramientas de pruebas automatizadas> con el propósito de <caracterizarlas> con respecto


a <los modelos que utilizan, las técnicas de generación y criterios de selección de pruebas, las técnicas
de ejecución y los retos que reportan> desde el punto de vista <del investigador> en el contexto de
<pruebas basadas en modelos>.
 Analizar <modelos de predicción de fallos> con el propósito de <caracterizarlos> con respecto a <las
métricas de software, las técnicas de clasificación y la efectividad desde el punto de vista <del
investigador> en el contexto de <proyectos de desarrollo de software orientado a objetos>.

Cabe resaltar que el modelo GQM se ha utilizado de manera exitosa en procesos de


mejora en la industria. Este se aplica: a) definiendo los objetivos de la organización, b)
identificando las preguntas que permiten conocer si los objetivos se cumplen, y c)
determinando las métricas para contestar las preguntas (Basili et al., 2010).

Análisis De acuerdo a la especialidad de su licenciatura, analice cuáles procesos que se


realizan comúnmente en la práctica profesional son sujetos de mejora continua.

Para cada una de ellos, ¿existen nuevas metodologías, métodos, buenas


prácticas y herramientas que permitan mejorar la calidad de los procesos y
productos, incrementar la productividad de los equipos y reducir los costos?
Comente y dé ejemplos.

________________________________________________________________
________________________________________________________________
________________________________________________________________
________________________________________________________________

28
© Christian Quesada-López [email protected]
Indique los criterios que usted como profesional seleccionaría para implementar
nuevas metodologías, métodos, buenas prácticas y herramientas en su
organización.

________________________________________________________________
________________________________________________________________
________________________________________________________________
________________________________________________________________

Este capítulo enfatiza la mejora continua de los procesos de ingeniería de software que
aumentan la calidad, incrementan la productividad y reducen los costos.

Para aprender más Para consultar más ejemplos sobre la ingeniería de software empírica,
se recomienda la lectura del Capítulo 1 del libro Métodos de
investigación en ingeniería de software (Genero et al., 2014) y el
Capítulo 1 del libro Experimentación en ingeniería de software (Wohlin
et al., 2012).

Conclusiones y recomendaciones

Este primer capítulo estudia la ingeniería de software experimental, su relación con la


ingeniería de software, las metodologías empíricas de investigación y las áreas de
investigación en esta disciplina. Con base en la teoría expuesta, se concluye que estas
metodologías generan conocimiento, nuevas prácticas, procesos y tecnologías en la
ingeniería de software tanto en la academia como en la industria. En particular, el
conocimiento producido a partir de la evidencia científica contribuye a mejorar los
procesos y productos.
Los estudios secundarios aportan información sobre temas que pueden despertar
interés para su investigación del TFG. Asimismo, proveen un marco de referencia
científica que favorece cambios en las prácticas de trabajo de la ingeniería de software.

29
© Christian Quesada-López [email protected]
Por otra parte, los estudios primarios proporcionan fuentes de experiencias aplicadas a
la ingeniería de software en contextos académicos e industriales; por esta razón, pueden
apoyar la implementación de soluciones en su entorno profesional o en el desarrollo de
su TFG.
Recuerde que la ingeniería de software empírica o experimental le provee una forma
rigurosa, reproducible y repetible para realizar investigaciones. A su vez, procura la
mejora de los procesos del ciclo de vida del desarrollo de software a través de la
medición, control y seguimiento, necesarios en la práctica profesional.
Finalmente, las metodologías de la ingeniería de software empírica abren el camino en
el quehacer diario para identificar el qué y el cómo implementar soluciones tecnológicas
en contextos de desarrollo de software que permitan enfrentar el cambio constante y,
a la vez, mantener la competitividad.

Atención
Mientras trabaja en los ejercicios de autoevaluación, recuerde contextualizar y
relacionar los contenidos con los problemas a los que comúnmente se enfrenta
cuando aplica procesos ingenieriles en su práctica académica y profesional, de
manera que encuentre respuestas a preguntas de investigación a través de los
métodos empíricos estudiados.

Ejercicios de autoevaluación

Realice las siguientes actividades.

1. Explique qué es la ingeniería de software.


____________________________________________________________________
____________________________________________________________________
____________________________________________________________________
____________________________________________________________________

30
© Christian Quesada-López [email protected]
2. Indique qué es la ingeniería de software experimental.
____________________________________________________________________
____________________________________________________________________
____________________________________________________________________
____________________________________________________________________
3. En el siguiente cuadro, escriba la principal característica de cada uno de los
siguientes tipos de estudios empíricos.
Primarios Secundarios

4. Dé tres ejemplos de cómo se emplean los estudios empíricos para la mejora de


procesos de software.
a) _________________________________________________________________
_________________________________________________________________
b) _________________________________________________________________
_________________________________________________________________
c) _________________________________________________________________
_________________________________________________________________

5. Mencione cuatro razones que justifiquen la necesidad de aplicar la ingeniería de


software experimental en los procesos de mejora y de toma de decisiones de la
industria de software.
a) _________________________________________________________________
_________________________________________________________________
b) _________________________________________________________________
_________________________________________________________________
c) _________________________________________________________________
_________________________________________________________________
d) _________________________________________________________________
_________________________________________________________________

31
© Christian Quesada-López [email protected]
6. Analice el siguiente caso de estudio.
En un departamento de desarrollo de software de una universidad se lleva a cabo
un proceso de adopción de un marco de trabajo ágil empresarial. La gerencia debe
determinar si el nuevo proceso de ingeniería de requerimientos, basado en las
metodologías ágiles, puede obtener resultados satisfactorios desde la perspectiva
de los usuarios en las actividades de mantenimiento. Para el caso anterior, defina el
alcance de la investigación mediante el modelo GQM:

Analizar <__________________________ (objeto de estudio)>


con el propósito de <__________________________ (propósito)>
con respecto a <__________________________ (foco de calidad)>
desde el punto de vista del <__________________________ (perspectiva)>
en el contexto de <__________________________ (contexto)>

7. Identifique un problema abierto en su día a día como profesional de la ingeniería de


software o en su área de licenciatura. Posteriormente, describa brevemente un
ejemplo práctico que podría aplicar la ingeniería de software experimental para
estudiar el problema seleccionado. Considere en la respuesta su especialidad de
estudio: administración de proyectos, calidad de software, desarrollo de
aplicaciones web o ingeniería informática. Además, defina el alcance de la
investigación mediante el modelo GQM:

Analizar <__________________________ (objeto de estudio)>


con el propósito de <__________________________ (propósito)>
con respecto a <__________________________ (foco de calidad)>
desde el punto de vista del <__________________________ (perspectiva)>
en el contexto de <__________________________ (contexto)>.

32
© Christian Quesada-López [email protected]

You might also like