2. ingeniería de software
la aplicación de una aproximación
sistemática, disciplinada y cuantificable
al desarrollo, operación y
mantenimiento de software.
(ieee)
11. Estudiar si el tipo de lenguaje tiene un
efecto en la calidad del código
Saber si la estructura organizacional
tiene un impacto en la comunicación
entre programadores
Conocer el costo/beneficio de las
inspecciones de código
37. gracias
sentimiento que nos obliga a estimar el
beneficio o favor que se nos ha hecho, y
a corresponder a él de alguna manera.
38. Créditos
Información
Natalia Juristo
Ana María Moreno
Basics of Software Engineering Experimentation
IEEE Standard Glossary of Software
Engineering Terminology
Fuentes
Ubuntu
Libre Baskervile
Fotos
Library of Congress
Alex Eylar
Guy Himber
Emily Barney
Terry McCombs
Welllwin Kwok
Bernardo Borghetti
Editor's Notes
¿Y porqué este tema? La experimentación, y en general, tener un enfoque científico, es fundamental para mejorar el nivel de la ingeniería de software.tristemente es que es tan fundamental como olvidado.En esta charla: contarles porque es importante y explicar algunas de las nociones básicas.
La ieee en el glosario estándar de terminología de ingeniería de software, define la ingeniería de software como la aplicación de una aproximación sistemática, disciplinada y cuantificable al desarrollo, operación y mantenimiento de software.
Especialmente cuando la comparamos con otras ingenierías o con otras ciencias.Eso no quiere decir que tengamos malas intenciones, o que no aprendamos de nuestros errores, o que no le pongamos todo el empeño y la fuerza, y que no compartamos nuestras anécdotas para que otros no las repitan, pero…
Una frase que ha sido atribuida a casi una docena de científicos y estadísticos. Y el asunto es que si bien las historias sirven para motivarnos, tenemos, como ingeniería, que ir un paso más allá. No podemos quedarnos en anécdotas.Ir más allá de «es que a este le sirvió/es que en un proyecto». Hay que analizar los factores, ver que variables influyen, en que modo, porqué. Hay que ser críticos, escépticos y racionales. Que tal metodología es la mejor, ahh… bueno» . Y la experimentación es un herramienta excelente para distinguir a los charlatanes de los expertos.
Uno de los físicos más importantes de los últimos tiempos, que también tuvo una influencia gigante en la computación.
Pero bueno, y si es tan importante, ¿por qué no experimentamos?
Hay muchos mitos alrededor delempiricismo. Uno de ellos es que dicen que es muy costoso, y si bien esto puede ser cierto, la verdad es que un buen experimento puede antes ahorrar mucho dinero.Otra mito es que es muy difícil. Es cierto, no es trivial, pero no es imposible, como vamos a ver aquí.Para mi, el problema más grande es que es una herramienta que desconocemos. No nos enseñan a experimentar, en la universidad, el tema ni se toca, y, por lo que he visto, ni siquiera en las especializaciones el tema es popular. (me corrigen si me equivoco) No podemos usar una herramienta que desconocemos.
Y si es tan bueno, ¿qué podemos obtener de un experimento?
Con la experimentación podemos saber si hay o no una relación entre dos o más variables
Relación descriptiva: Encontramos algunos patrones de comportamiento entre variables, pero la relación exacta es desconocida. Por ejemplo, cuando sabemos que si la fase de requisitos se toma más tiempo de lo esperado, las otras fases también lo harán.Correlación: La relación entre dos variables se puede definir por una función, pero no podemos distinguir entre la causa y el efecto. Por ejemplo, si el desarrollo se demora más porque hay muchos bugs, o si hay muchos bugs porque el desarrollo se demora más.Causalidad: Cuando podemos definir la relación con una función, pero además sabemos que variable causa qué. Este es el grado de conocimiento al que debemos apuntar.
Para poder llegar a eso, tenemos que seguir un proceso. No podemos simplemente tener un experimento por arte de magia.
Pero no es un proceso complicado.
Lo primero, es qué comparamos: ¿cuál es mejor? ¿Tiempo? ¿Facilidad de entendimiento? ¿Cuál encuentra más errores? ¿cuál encuentra los errores más difíciles?Con estas preguntas estamos definiendo los objetivos del experimento. Estos objetivos son los que van a dictar el diseño.
¿Cómo lo harían? ¿qué necesitamos tener en cuenta?
Explicar diseño en bloque: Hay que tener en cuenta el orden, quienes la aplican.
Mencionar el factor humano.
Ojo: este código tiene que tener errores, y tienen que ser controlados.
Un experimentoesunaventanaparaobservarunapoblación¿De quienesqueremossacarconclusiones?
entrenamiento
Forma de medición: valor cualitiativo, radio/porcentaje, valor absoluto, todo depende de que queramos medir.
Y con todo esto, ¿ya terminamos?La verdad es que no, falta mucho por hacer.
Hay que ejecutar el experimento como tal, que los sujetos vayan al laboratorio y ejecuten las pruebas, hay que entrenarlos si es del caso, recoger toda la documentación, analizarla, clasificarla.
Es necesario realizar un análisis estadístico para examinar los datos. Por ejemplo, estamos trabajando con una muestra, y necesitamos reglas estadísticas para asegurar que esta sí sea representativa de la población. Estos análisis también nos sirven para distinguir si las relaciones son reales o se deben simplemente al azar.
La replicación puede ser interna o externa. Con la interna, mejoramos nuestras mediciones: Los eventos tienen grado de variación aleatoria, si los repetimos varios veces, podemos minimizar el impacto de esto, o eventos que parecen importantes en un solo experimento, no vuelven a suceder en las repeticiones (anécdota)Algo clave de la ciencia es que cualquiera debería poder tomar el diseño, ejecutar un experimento independiente y validar si los resultados son iguales.
Un estudio puede tener resultados impactantes, pero puede estar mal hecho.Hay estudios que han supuestamente demostrado fenómenos sobrenaturales, pero cuando se analizan, se descubre que simplemente no son válidos.
Validez de las conclusiones: Que estadísticamente sí podamos asegurar o rechazar las relaciones entre causa y efecto. Importan: La confianza en las mediciones o la elección correcta de las pruebas estadísticas (por ejemplo, unas pruebas solo funcionan si los datos siguen una distribución normal.Validez interna: Problemas con el diseño del experimento, por ejemplo, si no se controló alguna variable importante. Por ejemplo, si en nuestro caso no hubiéramos tenido en cuenta el orden de aplicación de la técnica.Validez del constructo: Que la relación entre la teoría y las observaciones si sean válidas. Si las inferencias teóricas son legítimas (ejemplo «medicina cuántica»)Validez externa: Si los resultados del experimento son generalizables para toda la población.