Electrical & Computer Engineering Classroom Innovations
Author: Jon G. Kuhl (University of Iowa)
This paper describes the incorporation of agile development methodology into a capstone software engineering project course. The author has been teaching a team-based software project course for nearly two decades. In the past, teams were required to use a traditional prescriptive development process that employed detailed up-front requirements analysis and emphasis on high-level design. These front-end loaded processes placed a heavy emphasis on detailed documentation and deferred the onset of coding until a number of weeks into the semester. With little experience in gathering and documenting requirements, student teams generally struggled with this phase of the project and often failed to capture a complete enough set of requirements to provide an adequate basis for subsequent design activities. The late start in coding often meant that teams were not able to implement as much functionality as desired and quality was sometimes adversely impacted by the rushed development effort. For the spring, 2014 offering, it was decided to drastically modify the capstone course to employ an agile development methodology. Agile development is based upon that notion of lightweight processes that eschew front-end loading of analysis and design in favor of self-organizing teams that execute multiple, short development sprints, each focusing on completion of a small subset of product features. While agile development has been widely embraced by industry over the past decade, its adoption within academia is still nascent, most likely due to its perceived abandonment of formal process and rigid methodology. Software engineering textbooks have only recently begun to include coverage of agile development. For the course, 25 students were divided into five agile teams. The students had limited knowledge of, and experience with, agile development methodologies from a prerequisite course. During the first two weeks of the semester, while teams worked on developing the concept for their projects, an intensive introduction to a popular agile methodology called SCRUM was conducted. Students were introduced to an on-line tool called Pivotal Tracker to organize and track the progress of their development sprints. Teams were also required to develop a comprehensive testing strategy and identify appropriate testing tools. The teams then embarked on a sequence of six two-week development sprints. At the conclusion of each sprint teams were required to do an in-class progress review and retrospective. Compared to the previous offerings of the course using a prescriptive development process, the use of agile methodology allowed students to complete considerably more scope during the semester. The relatively large number of short-duration development sprints forced teams to work consistently and productively, and to effectively use automated testing and configuration management tools. Overall, the scope and quality of projects improved significantly compared to prior offerings of the course.
How to Cite: Kuhl, J. G. (2014) “Incorporation of Agile Development Methodology into a Capstone Software Engineering Project”, 2014 ASEE North Midwest Section Conference. 2014(1). doi: https://doi.org/10.17077/aseenmw2014.1013