¿Qué son las herramientas de ingeniería de software que se pueden enseñar a los estudiantes universitarios?

La mayoría de las herramientas de ingeniería de software se pueden enseñar a estudiantes universitarios. La verdadera pregunta es enseñar herramientas que les brinden valor en sus futuras carreras y establecer un buen contexto de instrucción que les permita aprender las herramientas. Otra consideración es que aprender el tipo de herramienta puede ser más importante que la herramienta en sí misma: la marca particular de la herramienta dependerá del tipo de trabajo en el que el estudiante realice.

Aquí hay algunas ideas, sin ningún orden en particular:

  • Herramientas de control de versiones. Recomiendo Subversion y Git. Subversion ofrece una buena visión de los modelos cliente-servidor, mientras que git es un sistema descentralizado de control de versiones muy popular y proporciona una línea de base para aprender sobre servicios como Github y Bitbucket. El conocimiento adquirido al usar estas herramientas infunde buenas prácticas de ingeniería de software (control de revisión, gestión de configuración) y se puede aplicar a la mayoría de los sistemas de control de versiones.
  • Editores e IDEs. Los estudiantes deben sentirse cómodos en la línea de comando y en los programas gráficos. Personalmente, tiendo a favorecer los IDE o editores más avanzados con complementos que los acercan a los IDEs, como Eclipse, Visual Studio y Atom, dependiendo del idioma y el marco con el que estoy trabajando. Sin embargo, cuando estoy conectado a un servidor, puedo estar limitado a trabajar con editores basados ​​en la línea de comandos. Los estudiantes deben estar familiarizados con herramientas como vi o emacs, así como con IDEs.
  • Depuradores Los IDE a menudo los tienen integrados. También existen como aplicaciones independientes. Los estudiantes deberían poder usar varias herramientas que ayudan a depurar aplicaciones. La capacidad de pausar la ejecución del software, ver el estado y entrar y salir del código es increíblemente importante. Una vez más, deberían estar expuestos a estas herramientas tanto en la línea de comandos como en las herramientas gráficas (como IDE).
  • Compiladores y enlazadores. Los estudiantes deben estar expuestos a al menos un idioma compilado y comprender el proceso de compilación para ese idioma, así como en general. Personalmente, creo que C es un buen lenguaje para esto, y la exposición a C también abre la puerta a otros conceptos en programación: punteros, referencias, administración de memoria.
  • Herramientas de gestión de proyectos. Esto es más conceptual que herramientas particulares, pero aquí hay una gran variedad de herramientas, desde herramientas de seguimiento de tickets (Trac, Jira) hasta herramientas de gestión de proyectos (Microsoft Project) y bases de datos de requisitos (Rational DOORS). Los estudiantes deben aprender sobre los requisitos de captura, descomponer el trabajo, programar el trabajo, rastrear el trabajo y administrar el riesgo. Sin embargo, en este tema en particular, los conceptos son mucho más importantes que cualquier herramienta.
  • Prueba de marcos. Las herramientas facilitan las pruebas unitarias, las pruebas de integración, las pruebas de aceptación automatizadas. Los estudiantes deberían haber expuesto a al menos un tipo de marco de prueba en su educación.

RCS

Entonces CVS

Entonces Subversion.

El control de versiones es muy importante.

La documentación también lo es, pero eso depende un poco de cómo lo haga.