Primer Curso de Ingeniería de Software
Con un enfoque equilibrado entre disciplina y agilidad.
Descrito como método y prácticas.
Abril 2013
Autoras. Guadalupe Ibargüengoitia y Hanna Oktaba
Objetivo del material del curso
La Ingeniería de software ha evolucionado en sus conceptos, modelos y prácticas. Por lo que su enseñanza debe evolucionar.
El objetivo de este material para un primer curso de Ingeniería de software a nivel licenciatura, es introducir a los alumnos y cualquier principiante de Ingeniería de software en prácticas equilibradas de métodos disciplinados y ágiles.
El curso está basado en las mejores prácticas recolectadas en estándares internacionales como ISO29110 5-1-2 Perfil básico, UML de la OMG y SWEBOK, así como el métod ágil SCRUM.
El enfoque central de este curso es enseñar-haciendo. Se aprenderá Ingeniería de software trabajando en equipo y desarrollando un producto de software de calidad, que deberá ser funcional al final del curso.
Pilares del curso
Pilar 1:
Parte de la práctica esencial de la Ingeniería de software actual, es el trabajo en equipo, al que fomentaremos a través de la definición de roles, comunicación síncrona a través de reuniones diarias presenciales o virtuales y comunicación asíncrona apoyándose en herramientas colaborativas como redes sociales. El tamaño promedio de equipos es de 4 integrantes.
Los roles definidos son:
- Desarrollador, lo juegan todos los miembros del equipo, cada uno es responsable de una parte del desarrollo.
- Responsable del equipo, se encarga de velar por el buen funcionamiento del equipo, que se mantenga la comunicación del equipo y todos participen y cumplan sus compromisos.
- Responsable técnico, se responsabiliza por coordinar el trabajo técnico del equipo.
- Responsable de la calidad, se fija a que el equipo respeten los estándares definidos.
- Responsable de la colaboración, se encarga de la construcción y uso de los repositorios compartidos por el equipo.
Pilar 2:
Otra idea central es experimentar el desarrollo iterativo e incremental, por lo que se plantea la construcción de un producto de software, generalmente una aplicación web, en dos iteraciones.
Pilar 3:
Balanceo entre disciplina y agilidad. En las actividades administrativas se siguen principalmente las prácticas ágiles y en las de desarrollo, disciplinadas.
Pilar 4:
La forma de presentar el contenido del curso está basada en las ideas de KUALI-BEH, cuyo objetivo es ayudar a las organizaciones de desarrollo de software a definir y almacenar su forma de trabajo a través de los siguientes conceptos:
- Método. Forma de trabajo de una organización al desarrollar software. Está compuesto de un conjunto de prácticas
- Práctica. Enuncia un objetivo, una serie de actividades a realizar para transformar una entrada en la salida de la práctica.
Para guiar a los alumnos en la forma de cómo hacer las actividades, se proponen técnicas. En estas técnicas se detallan los pasos para llevar a cabo a una actividad de una práctica.
Material de apoyo para el Primer curso de Ingeniería de software
- Notas del curso: que contienen los textos de la parte teórica y práctica de los conceptos a enseñar, con sus referencias bibliográficas correspondientes. Las notas se acompañan de las presentaciones para usarlas por el maestro durantes las clases.
- Material complementario: como plantillas para productos a generar, prácticas de laboratorio para el uso de herramientas y el material de apoyo diverso como, por ejemplo, manual de UML, entre otros.
Estructura de las Notas de clase
Las notas de curso están divididas en los siguientes capítulos:
- Introducción a la Ingeniería de software
- Métodos y prácticas.
- Método del curso. Método inicial de desarrollo de software
- Trabajo en equipo. Prácticas sociales.
- Administración de proyectos. Prácticas administrativas.
- Requerimientos de software.
- Diseño de software.
- Construcción de software.
- Integración de software y prueba.
- Entrega de software y mantenimiento.
A partir del capítulo 4, cada capítulo tiene tres partes:
Teoría.
En esta parte se proporcionan los conceptos teóricos del tema a tratar basados principalmente en SWEBOK y en otras fuentes reconocidas. La profundidad de esta teoría es la necesaria en un primer curso de Ingeniería de software.
Práctica.
Se presenta la plantilla de la práctica sobre el tema correspondiente usando plantilla de práctica de KUALI-BEH. Esta plantilla incluye: identificador y nombre de la práctica, sus objetivos, productos de entrada y de salida, actividades y herramientas. Para cada actividad de la práctica se presenta una o varias técnicas en las que se aterriza la forma concreta en que los alumnos deberán llevarlas a cabo.
Tarjetas de trabajo.
Se definen las tareas concretas a realizar, quién es el responsable y la fecha exacta de entrega. Estas tarjetas de trabajo se colocan en el Tablero de control del equipo y se les da seguimiento en las reuniones síncronas para determinar si el trabajo va a tiempo, con retraso o adelantado.
En el capítulo 3 de las Notas del curso se presenta un método de desarrollo llamado Método inicial de desarrollo de software, el cual tiene tres tipos de prácticas:
- Las prácticas de desarrollo son disciplinadas, como corresponde a un primer curso de Ingeniería de software. Están basadas en el Proceso Unificado cuyas ideas centrales son: casos de uso, arquitectura definida e iterativo incremental. UML es el luenguaje de modelado que se enseña para la documentación.
- Las prácticas sociales ayudan a conformar el equipo de trabajo. Tienen técnicas para elegir nombre y logo del equipo, asignar roles, ayudar a establecer comunicación síncrona y asíncrona entre los miembros.
- Las prácticas administrativas son una mezcla de ideas de SCRUM y disciplinadas. Están basadas en las actividades propuestas por la ISO29110 5-1-2 Perfil básico para la Administración del proyecto.
En total se definieron 15 prácticas: 5 de desarrollo, 4 sociales y 6 administrativas, detalladas en 27 técnicas.
Actualmente, este curso se está experimentando con 17 alumnos del semestre 2013-2 de la materia de Ingeniería de software de la carrera de Ciencias de la Computación de la Facultad de Ciencias, UNAM, por lo que se obtendrá retroalimentación muy pronto.