Abstract
There is an acknowledged need for teaching realistic software development in project courses. The design space for such courses is wide, ranging from single-semester to two-semester courses, from single-client to multicustomer courses, from local to globally distributed courses, and from toy projects to projects with real clients. The challenge for a nontrivial project course is how to make the project complex enough to enrich students’ software engineering experience, yet realistic enough to have a teaching environment that does not unduly burden students or the instructor. We describe a methodology for project courses that is realizable for instructors, improves students’ skills, and leads to viable results for industry partners.
In particular, recent advances in release management and collaboration workflows reduce the effort of students and instructors during delivery and increase the quality of the deliverables. To enable release and feedback management, we introduce Rugby, an agile process model based on Scrum that allows reacting to changing requirements. To improve early communication, we use Tornado, a scenario-based design approach that emphasizes the use of informal models for the interaction between clients and students. The combination of Rugby and Tornado allows students to deal with changing requirements, produce multiple releases, and obtain client feedback through the duration of the course.
We describe our experience with more than 300 students working on 40 projects with external clients over a 4-year period. In the latest instance of our course, the students have produced more than 7000 builds with 600 releases for eleven clients. In an evaluation of the courses, we found that the introduction of Rugby and Tornado significantly increased students’ technical skills, especially with respect to software engineering, usability engineering, and configuration management, as well as their nontechnical skills such as communication with the client, teamwork, presentation, and demo management. Finally, we discuss how other instructors can adapt the course concept.
- Mark Ardis, Pierre Bourque, Thomas Hilburn, Kahina Lasfer, Scott Lucero, James McDonald, Art Pyster, and Mary Shaw. 2011. Advancing software engineering professional education. IEEE Software 4, 58--63. Google ScholarDigital Library
- William Atchison, Samuel Conte, John Hamblen, Thomas Hull, Thomas Keenan, William Kehl, Edward McCluskey, Silvio Navarro, Werner Rheinboldt, Earl Schweppe, William Viavant, and David Young. 1968. Curriculum 68: Recommendations for academic programs in computer science: A report of the ACM Curriculum Committee on Computer Science. Communications of the ACM 11, 3, 151--197. Google ScholarDigital Library
- Gabriele Bavota, Andrea De Lucia, Fausto Fasano, Rocco Oliveto, and Carlo Zottoli. 2012. Teaching software engineering and software project management: An integrated and practical approach. In Proceedings of the 34th International Conference on Software Engineering. IEEE, Los Alamitos, CA, 1155--1164. Google ScholarDigital Library
- Kent Beck, Mike Beedle, Arie Van Bennekum, Alistair Cockburn, Ward Cunningham, Martin Fowler, James Grenning, Jim Highsmith, Andrew Hunt, Ron Jeffries, Jon Kern, Brian Marick, Robert C. Martin, Steve Mellor, Ken Schwaber, Jeff Sutherland, and Dave Thomas. 2001. Manifesto for Agile Software Development. Retrieved February 26, 2015, from http://www.agilemanifesto.org.Google Scholar
- Mario Bernhart, Thomas Grechenig, Jennifer Hetzl, and Wolfgang Zuser. 2006. Dimensions of software engineering course design. In Proceedings of the 28th International Conference on Software Engineering. ACM, New York, NY, 667--672. Google ScholarDigital Library
- Jürgen Börstler. 2001. Experience with work-product oriented software development projects. Computer Science Education 11, 2, 111--133.Google ScholarCross Ref
- David Broman, Kristian Sandahl, and Mohamed Abu Baker. 2012. The company approach to software engineering project courses. IEEE Transactions on Education 55, 4, 445--452. Google ScholarDigital Library
- William Brown, Raphael Malveau, Hays McCormick, and Thomas Mowbray. 1998. AntiPatterns: Refactoring Software, Architectures, and Projects in Crisis. Wiley & Sons. Google ScholarDigital Library
- Bernd Bruegge. 1994. From toy system to real system development: Improvements in software engineering education. In Software Engineering im Unterricht der Hochschulen SEUH. Springer, Munich, Germany, 62--72. Google ScholarDigital Library
- Bernd Bruegge, Jim Blythe, Jeffrey Jackson, and Jeff Shufelt. 1992. Object-oriented system modeling with OMT. ACM SIGPLAN Notices 27, 359--376. Google ScholarDigital Library
- Bernd Bruegge, John Cheng, and Mary Shaw. 1991. A Software Engineering Project Course with a Real Client Part III: Project Material. Technical Report. Software Engineering Institute, Carnegie Mellon University, Pittsburgh, PA.Google Scholar
- Bernd Bruegge and Robert Coyne. 1994. Teaching iterative and collaborative design: Lessons and directions. In Proceedings of the 7th SEI CSEE Conference on Software Engineering Education. 411--427. Google ScholarDigital Library
- Bernd Bruegge and Allen Dutoit. 2009. Object Oriented Software Engineering Using UML, Patterns, and Java (3rd ed.). Prentice Hall International. Google ScholarDigital Library
- Bernd Bruegge, Allen Dutoit, Rafael Kobylinski, and Günter Teubner. 2000. Transatlantic project courses in a university environment. In Proceedings of the 7th Asia-Pacific Software Engineering Conference. IEEE, Los Alamitos, CA, 30--37. Google ScholarDigital Library
- Bernd Bruegge, Stephan Krusche, and Lukas Alperowitz. 2014. Tutorial: How to run a multi-customer software engineering capstone course. In Proceedings of the 17th International Conference on Model-Driven Engineering Languages and Systems.Google Scholar
- Bernd Bruegge, Stephan Krusche, and Martin Wagner. 2012. Teaching Tornado: From communication models to releases. In Proceedings of the 8th Edition of the Educators’ Symposium. ACM, New York, NY, 5--12. Google ScholarDigital Library
- Bernd Bruegge, Harald Stangl, and Maximilian Reiss. 2008. An experiment in teaching innovation in software engineering: Video presentation. In Companion to the 23rd Conference on Object-Oriented Programming Systems Languages and Applications. ACM, New York, NY, 807--810. Google ScholarDigital Library
- Bernd Bruegge, Mark Werner, Jim Uzmack, and David Kaufer. 1995. Fostering co-development between software engineers and technical writers. In Proceedings of the 8th SEI CSEE Conference on Software Engineering Education. IEEE, Los Alamitos, CA, 4--11.Google ScholarCross Ref
- John Carroll. 1995. Scenario-Based Design: Envisioning Work and Technology in System Development. Wiley & Sons. Google ScholarDigital Library
- Vincent Cicirello, Vera King, and Farris Drive. 2013. Experiences with a real projects for real clients course on software engineering at a liberal arts institution. Journal of Computing Sciences in Colleges 28, 6, 50--56. Google ScholarDigital Library
- Robert Coyne, Allen Dutoit, Bernd Bruegge, and David Rothenberger. 1995. Teaching More Comprehensive Model-Based Software Engineering: Experience with Objectory’s Use Case Approach. Springer.Google Scholar
- Laura Dabbish, Colleen Stuart, Jason Tsay, and Jim Herbsleb. 2012. Social coding in GitHub: Transparency and collaboration in an open software repository. In Proceedings of the Conference on Computer Supported Cooperative Work. ACM, New York, NY, 1277--1286. Google ScholarDigital Library
- Daniela Damian, Casper Lassenius, Maria Paasivaara, Arber Borici, and Adrian Schroter. 2012. Teaching a globally distributed project course using Scrum practices. In Proceedings of the Collaborative Teaching of Globally Distributed Software Development Workshop. IEEE, Los Alamitos, CA, 30--34. Google ScholarDigital Library
- Constanze Deiters, Christoph Herrmann, Roland Hildebrandt, Eric Knauss, Marco Kuhrmann, Andreas Rausch, Bernhard Rumpe, and Kurt Schneider. 2011. GloSE-Lab: Teaching global software engineering. In Proceedings of the 6th International Conference on Global Software Engineering. IEEE, Los Alamitos, CA, 156--160. Google ScholarDigital Library
- Michael Doyle and David Straus. 1976. How to Make Meetings Work. Jove Books.Google Scholar
- Vincent Driessen. 2010. A Successful Git Branching Model. Retrieved February 26, 2015, from http://nvie.com/posts/a-successful-git-branching-model.Google Scholar
- Allen Dutoit, Bernd Bruegge, and Robert Coyne. 1995. Using an issue-based model in a team-based software engineering course. In Proceedings of the International Conference on Software Engineering: Education and Practice. IEEE, Los Alamitos, CA, 130--137. Google ScholarDigital Library
- Dora Dzvonyar, Stephan Krusche, and Lukas Alperowitz. 2014. Real projects with informal models. In Proceedings of the 10th Edition of the Educators’ Symposium.Google Scholar
- Predrag Filipovikj, Juraj Feljan, and Ivica Crnkovic. 2013. Ten tips to succeed in global software engineering education: What do the students say? In Proceedings of the 3rd International Workshop on Collaborative Teaching of Globally Distributed Software Development. IEEE, Los Alamitos, CA, 20--24.Google ScholarCross Ref
- Roger Fisher, William Ury, and Bruce Patton. 2011. Getting to Yes: Negotiating Agreement without Giving In. Penguin.Google Scholar
- Martin Fowler. 2001. The new methodology. Journal of Natural Sciences 6, 1--2, 12--24.Google Scholar
- Peter Freeman, Anthony Wasserman, and Richard Fairley. 1976. Essential elements of software engineering education. In Proceedings of the 2nd International Conference on Software Engineering. ACM, New York, NY, 116--122. Google ScholarDigital Library
- GitHub. 2015. Using Pull Requests. Retrieved February 26, 2015, from https://help.github.com/articles/using-pull-requests.Google Scholar
- Nils Christian Haugen. 2006. An empirical study of using planning poker for user story estimation. In Proceedings of the Agile Conference. IEEE, Los Alamitos, CA, 23--34. Google ScholarDigital Library
- Jim Highsmith. 2002. Agile Software Development Ecosystems. Addison-Wesley. Google ScholarDigital Library
- Thomas Hilburn and Watts Humphrey. 2002. The impending changes in software education. IEEE Software 19, 5, 22--24. Google ScholarDigital Library
- James Horning and David Wortman. 1977. Software hut: A computer program engineering project in the form of a game. IEEE Transactions on Software Engineering 3, 4, 325--330. Google ScholarDigital Library
- Jez Humble. 2011. Devops: A software revolution in the making? Cutter IT Journal 24, 8.Google Scholar
- Jez Humble and David Farley. 2010. Continuous Delivery: Reliable Software Releases through Build, Test, and Deployment Automation. Pearson Education. Google ScholarDigital Library
- Jez Humble and Joanne Molesky. 2011. Why enterprises must adopt Devops to enable continuous delivery. Cutter IT Journal 24, 8, 6.Google Scholar
- Ivar Jacobson, Grady Booch, James Rumbaugh, James Rumbaugh, and Grady Booch. 1999. The Unified Software Development Process. Addison-Wesley. Google ScholarDigital Library
- Lynette Johns-Boast and Shayne Flint. 2013. Simulating industry: An innovative software engineering capstone design course. In Proceedings of the Frontiers in Education Conference. IEEE, Los Alamitos, CA, 1782--1788.Google ScholarCross Ref
- David Johnson, Roger Johnson, and Karl Smith. 1991. Active Learning: Cooperation in the College Classroom. Interaction Book Company.Google Scholar
- Hillary Louise Johnson. 2012. How to Play the Team Estimation Game. Retrieved February 26, 2015, from http://www.agilelearninglabs.com/2012/05/how-to-play-the-team-estimation-game.Google Scholar
- Williams Judith, Bettina Bair, Jürgen Börstler, Lethbridge Timothy, and Ken Surendran. 2003. Client sponsored projects in software engineering courses. ACM SIGCSE Bulletin 35, 1, 401--402. Google ScholarDigital Library
- Thomas Kayser. 1990. Mining Group Gold: How to Cash In on the Collaborative Brain Power of a Group. Serif Publishing.Google Scholar
- David Kolb. 1984. Experiential Learning: Experience as the Source of Learning and Development, Vol. 1. Prentice Hall.Google Scholar
- Stephan Krusche and Lukas Alperowitz. 2014. Introduction of continuous delivery in multi-customer project courses. In Companion Proceedings of the 36th International Conference on Software Engineering. IEEE, Los Alamitos, CA, 335--343. Google ScholarDigital Library
- Stephan Krusche, Lukas Alperowitz, and Bernd Bruegge. 2014a. Results of the iOS Praktikum SS 2014. Retrieved February 26, 2015, from http://www1.in.tum.de/ios14.Google Scholar
- Stephan Krusche, Lukas Alperowitz, Bernd Bruegge, and Martin Wagner. 2014b. Rugby: An agile process model based on continuous delivery. In Proceedings of the 1st International Workshop on Rapid Continuous Software Engineering. ACM, New York, NY, 42--50. Google ScholarDigital Library
- Stephan Krusche and Bernd Bruegge. 2014. User feedback in mobile development. In Proceedings of the 2nd International Workshop on Mobile Development Lifecycle. 25--26. Google ScholarDigital Library
- Stephan Krusche, Martin Wagner, and Bernd Bruegge. 2011. Results of the iOS Praktikum SS 2011. Retrieved February 26, 2015, from http://www1.in.tum.de/ios11.Google Scholar
- Stephan Krusche, Martin Wagner, and Bernd Bruegge. 2012. Results of the iOS Praktikum SS 2012. Retrieved February 26, 2015, from http://www1.in.tum.de/ios12.Google Scholar
- Stephan Krusche, Martin Wagner, and Bernd Bruegge. 2013. Results of the iOS Praktikum SS 2013. Retrieved February 26, 2015, from http://www1.in.tum.de/ios13.Google Scholar
- Ludwik Kuzniarz and Jürgen Börstler. 2011. Teaching modeling: An initial classification of related issues. In Proceedings of the Electronic Communications of the EASST 7th Educator’s Symposium, Vol. 52. 1--10.Google Scholar
- Richard LeBlanc, Ann Sobel, Jorge Diaz-Herrera, and Thomas Hilburn. 2006. Software Engineering 2004: Curriculum Guidelines for Undergraduate Degree Programs in Software Engineering. IEEE, Los Alamitos, CA.Google Scholar
- Robert Lingard and Shan Barkataki. 2011. Teaching teamwork in engineering and computer science. In Proceedings of the Frontiers in Education Conference. IEEE, Los Alamitos, CA, 1--5. Google ScholarDigital Library
- Walid Maalej, Hans-Jörg Happel, and Asarnusch Rashid. 2009. When users become collaborators: Towards continuous and context-aware user input. In Proceedings of the 24th Conference Companion on Object Oriented Programming Systems Languages and Applications. ACM, New York, NY, 981--990. Google ScholarDigital Library
- Florian Matthes, Christian Neubert, Christopher Schulz, Christian Lescher, Jose Contreras, Robert Laurini, Beatrice Rumpler, David Sol, and Kai Warendorf. 2011. Teaching global software engineering and international project management. In Proceedings of the 3rd International Conference on Computer Supported Education. 5--15.Google Scholar
- Deborah Mayhew. 1999. The Usability Engineering Lifecycle: A Practitioner’s Guide to User Interface Design. Morgan Kaufmann. Google ScholarDigital Library
- Jakob Nielsen. 1994. Usability Engineering. Elsevier.Google Scholar
- Donald Norman and Stephen Draper. 1986. User Centered System Design: New Perspectives on Human-computer Interaction. CRC Press. Google ScholarDigital Library
- Dennis Pagano and Bernd Bruegge. 2013. User involvement in software evolution practice: A case study. In Proceedings of the 35th International Conference on Software Engineering. IEEE, Los Alamitos, CA, 953--962. Google ScholarDigital Library
- Art Pyster (Ed.). 2009. Graduate Software Engineering 2009 Curriculum Guidelines for Graduate Degree Programs in Software Engineering. Integrated Software and Systems Engineering Curriculum Series.Google Scholar
- Carolyn Rosiene and Joel Rosiene. 2006. Experiences with a real software engineering client. In Proceedings of the 36th Annual Conference on Frontiers in Education. IEEE, Los Alamitos, CA, 12--14.Google ScholarCross Ref
- Doug Ross. 1989. The NATO conferences from the perspective of an active software engineer. In Proceedings of the 11th International Conference on Software Engineering. IEEE, Los Alamitos, CA, 101--102.Google Scholar
- Jim Rudd, Ken Stern, and Scott Isensee. 1996. Low vs. high-fidelity prototyping debate. Interactions 3, 1, 76--85. Google ScholarDigital Library
- Hossein Saiedian. 1996. A taxonomy of organizational alternatives for project-oriented software engineering courses. In Proceedings of the 3rd International Workshop on Software Engineering Education.Google Scholar
- Salamah Salamah, Massood Towhidnejad, and Thomas Hilburn. 2011. Developing case modules for teaching software engineering and computer science concepts. In Proceedings of the Frontiers in Education Conference. IEEE, Los Alamitos, CA. Google ScholarDigital Library
- Ken Schwaber and Mike Beedle. 2002. Agile Software Development with Scrum. Prentice Hall. Google ScholarDigital Library
- Atlassian Stash. 2015. Using Pull Requests in Stash. Retrieved February 26, 2015, from https://confluence.atlassian.com/display/STASH/Using+pull+requests+in+Stash.Google Scholar
- Hirotaka Takeuchi and Ikujiro Nonaka. 1986. The new new product development game. Harvard Business Review 64, 1, 137--146.Google Scholar
- James Tomayko. 1987. Teaching a Project-Intensive Introduction to Software Engineering. Technical Report. Software Engineering Institute, Carnegie Mellon University, Pittsburg, PA.Google Scholar
- James Tomayko. 1998. Forging a discipline: An outline history of software engineering education. Annals of Software Engineering 6, 1--4, 3--18. Google ScholarDigital Library
- Hans Van Vliet. 2006. Reflections on software engineering education. IEEE Software 23, 3, 55--61. Google ScholarDigital Library
- Greger Wikstrand and Jürgen Börstler. 2006. Success factors for team project courses. In Proceedings of the 19th Conference on Software Engineering Education and Training. IEEE, Los Alamitos, CA, 95--102. Google ScholarDigital Library
- Tom Wujec. 2010. The Marshmallow Challenge—TED Talk. Retrieved February 26, 2015, from http://marshmallowchallenge.com.Google Scholar
Index Terms
- Software Engineering Project Courses with Industrial Clients
Recommendations
Introduction of continuous delivery in multi-customer project courses
ICSE Companion 2014: Companion Proceedings of the 36th International Conference on Software EngineeringContinuous delivery is a set of practices and principles to release software faster and more frequently. While it helps to bridge the gap between developers and operations for software in production, it can also improve the communication between ...
Rugby: an agile process model based on continuous delivery
RCoSE 2014: Proceedings of the 1st International Workshop on Rapid Continuous Software EngineeringIn this paper we introduce Rugby, an agile process model that includes workflows for the continuous delivery of software. It allows part-timers to work in a project-based organization with multiple projects for the rapid delivery of prototypes and ...
User Feedback in Mobile Development
MobileDeLi '14: Proceedings of the 2nd International Workshop on Mobile Development LifecycleDevelopers need to obtain feedback early to build applications that fit to the users needs. In this paper we show how the combination of two approaches enables developers to continuously improve usability and user experience of mobile applications. The ...
Comments