La revista científica IEEE Transactions on Software Engineering es la más reconocida del área de Ingeniería de Software. En esta oportunidad conversamos con Sebastián Uchitel -editor en jefe de la revista y profesor del DC- acerca del proceso de evaluación de trabajos científicos del área, los desafíos que presenta este rol y la convergencia entre ingeniería de software e inteligencia artificial.

Actualmente la labor de los editores de revistas científicas atraviesa una dinámica vertiginosa. Tienen que evaluar cientos de manuscritos que les envían anualmente, seleccionar aquellos que consideran potencialmente adecuados para la revista y considerar el consejo de los revisores de pares -expertos que ofrecen su tiempo para ayudar a mejorar los manuscritos de las revistas que revisan- con el fin de tomar una decisión final óptima sobre lo que se va a publicar.

Para lograr que el trabajo sea de buena calidad e interés para los lectores, los papers enviados deben cumplir con ciertos requisitos, no sólo desde su robustez, novedad y aporte sustancial a un campo de investigación activo sino también desde el formato, lenguaje riguroso y normas éticas en tanto buenas prácticas de la investigación científica. En definitiva, el artículo debe transmitir un mensaje científico que explique claramente la importancia del estudio.

El caso de las ciencias de la computación, y particularmente la ingeniería de software, resulta un área en permanente transformación y actualización, debido a la propia dinámica de los avances tecnológicos, que ocurre en tiempos cada vez más veloces e inéditos. Este escenario se puede explorar en la revista IEEE Transactions on Software Engineering (TSE), la más prestigiosa del área.

Recibo dos papers por día para revisión, son alrededor de 700 por año, y el tiempo promedio de evaluación de cada paper suele estar por debajo de los tres meses”, cuenta Sebastián Uchitel, editor in chief de TSE, profesor regular del DC e investigador en ingeniería de software del ICC.

Uchitel fue designado en este prestigioso cargo a principios del año 2023, por el lapso de tres años. Explica que este rol le representa una importante responsabilidad pero también un enorme orgullo y privilegio, teniendo en cuenta que no sólo lidera la publicación más reconocida, antigua y con mayor impacto del área sino que los editores en jefe anteriores fueron importantísimos referentes en la comunidad de la ingeniería de software, siempre provenientes de Estados Unidos o Reino Unido. Por lo que en este caso es el primer editor en jefe de Latinoamérica.

Cabe aclarar que, como parte de toda la carga altruista que tiene la ciencia y el sistema científico, este rol es completamente voluntario y ad honorem. “Lo asumo de ese modo, pero me toma una jornada laboral semanal”, afirma el investigador.

El complejo proceso de evaluación de trabajos científicos

En cuanto a las características del rol de evaluación de un trabajo científico, el editor en jefe tiene una intensa tarea operativa para gestionar el proceso por el cual se evalúan trabajos enviados a la revista y se deciden cuáles deberían ser publicados y cuáles no. “Cuando recibo un paper debo considerar si está enfocado en la temática y si es suficientemente sólido para evaluarlo. Luego se lo paso a alguno de los 50 miembros del comité editorial (que fue elegido por mí y se va renovando en función de sus antecedentes científicos) pero tengo que elegir de esos miembros qué editor asociado está más relacionado con ese trabajo. Luego este editor lo vuelve a revisar y tiene que convocar a tres revisores que puedan ocuparse de la evaluación por pares”, puntualiza.

El problema principal es que no todos los revisores aceptan la tarea, ya que se trata de encontrar la expertise y competencias necesarias, en una comunidad muy saturada en tareas de revisión. Con lo cual ese ida y vuelta hasta conseguir a los tres revisores idóneos puede extender considerablemente los tiempos de evaluación.

Luego de que se hacen las revisiones, el editor asociado las evalúa y define qué recomendaciones me hará respecto de si aceptar o no el paper. Entonces el editor asociado puede sugerir una serie de cosas y yo tengo que decidir si acepto el paper, si lo rechazo o si lo acepto con cambios mayores o menores. Con cambios mayores significa que hay cambios significativos para hacer en el paper pero está bien orientado y que los revisores evalúan si los cambios fueron hechos apropiadamente, entonces ese paper tiene altas chances de ser aceptado. Si son cambios menores, tiene más chances aún porque son pequeños ajustes que van a tardar poco tiempo”, relata Uchitel.

Finalmente el editor en jefe recibe la evaluación del editor asociado con esas recomendaciones y tiene que definir si aprobar o no la publicación: la decisión final es suya.

Por otra parte, Uchitel remarca que más allá del seguimiento puntual del proceso de evaluación, su rol también es de influencia en la comunidad ya que debe comunicar -especialmente a través de las editoriales de la revista- qué investigaciones son relevantes, qué nuevas temáticas están surgiendo en el área y cómo se está transformando el área en su conjunto.

Convergencia actual entre ingeniería de software e inteligencia artificial

En sintonía con el punto anterior, uno de los temas en auge es el uso de la inteligencia artificial (IA) en la ingeniería de software y, a su vez, el uso de la ingeniería de software para mejorar la IA. Claramente son dos formas distintas de combinar estas dos disciplinas:

1) Cómo la IA puede ayudar para la construcción, mantenimiento y evolución del software, es decir cómo todo el ciclo de vida de la ingeniería de software se puede apoyar sobre la IA para tener una mejor performance. Es una subárea que se denomina: AI for Software Engineering.

2) Cómo la ingeniería de software contribuye a robustecer la IA. Se entiende que los sistemas modernos están cambiando mucho porque ahora tienen un componente interno de desarrollo con una tecnología muy distinta: la IA. Entonces ahora los desafíos de la construcción de software están cambiando porque la IA transforma su naturaleza. Se trata de repensar la ingeniería de software en esos términos, que es una pregunta muy grande, una subárea que es la otra cara de la moneda y se llama: Software Engineering for AI.

Recientemente escribí una editorial explicando que si bien los ingenieros de software deberíamos enfocarnos en complementar lo que están haciendo los especialistas de machine learning, quienes estudian nuevas formas de entrenar modelos, siempre tenemos que estar observando qué sucede cuando a alguno de esos sistemas entrenados con aprendizaje automático lo implementás dentro de un sistema un poco más complejo. Por ejemplo, un vehículo autónomo posee componentes que fueron entrenados con técnicas de aprendizaje automático para reconocer un semáforo pero después requiere una lógica escrita en lenguaje de programación tradicional, que implica que cuando el sistema de reconocimiento de semáforos está en rojo el auto debe decidir qué hacer. Esa interacción entre software tradicional y software hecho con técnicas de machine learning, es una interacción muy novedosa y requiere repensar procesos particulares, por ejemplo el proceso de testing de software”, reflexiona Uchitel.

En este sentido, aclara que en la ingeniería de software tradicional se utilizan comúnmente pruebas de sistemas determinísticos (donde, siempre con algunas excepciones, se provee el mismo input todas las veces y se recibe el mismo output) pero la esencia de un modelo de aprendizaje automático encuentra cierta randomización; por lo que es lógico que un test no dé siempre lo mismo y eso impacta en ciertos conceptos tradicionales de testing como la cobertura de código.

Son tópicos muy emergentes. Lo interesante es que emergen con una fuerza, volumen y velocidad inaudita. En sólo dos años a la actualidad, de no tener prácticamente trabajos que usen IA Generativa, me animo a decir que hoy el 50% de los trabajos que recibimos son de ese tipo de temáticas. Y estamos en un momento de muchísima exploración: entender para qué sirven estas cosas, cómo se pueden usar y repensar, son muchísimas más preguntas que respuestas”, comenta entusiasmado el editor en jefe de TSE.

Ante la pregunta de si la inteligencia artificial tiene alguna funcionalidad actual para mejorar el proceso de evaluación de trabajos científicos, Uchitel explica que la tarea sigue siendo 100% humana y que la IA se está usando sólo en algunos casos para complementar la eficiencia de la operatoria: sobre todo en detección de plagio en el contenido de los papers, identificación de potenciales conflictos de interés entre revisores y autores y, por último, ayudar a brindar sugerencias de candidatos a revisión por pares.

Acerca de IEEE Transactions on Software Engineering

IEEE Transactions on Software Engineering es la principal revista científica en ingeniería de software y cuenta con una trayectoria de casi 50 años, ya que fue fundada en 1975. Forma parte de la IEEE (Institute of Electrical and Electronics Engineers), la sociedad profesional y técnica más grande del mundo, que tiene como uno de sus objetivos la definición de estándares que faciliten el intercambio de tecnologías en diferentes áreas.

Es la publicación de mayor impacto en el área. Está enfocada en resultados teóricos bien definidos y estudios empíricos que tengan un impacto potencial en la construcción, análisis o administración de software. El alcance de Transactions va desde los mecanismos, pasando por el desarrollo de principios, hasta la aplicación de esos principios a entornos específicos.

Sus áreas temáticas específicas incluyen los métodos y modelos de desarrollo y mantenimiento de software, métodos de evaluación, administración de proyectos de software, herramientas y entornos de software, problemas de sistemas y estudios de última generación que proporcionen una síntesis y una revisión exhaustiva de un área de interés particular.