skip to main content
research-article

Software Engineering Project Courses with Industrial Clients

Published:03 December 2015Publication History
Skip Abstract Section

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.

References

  1. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  2. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  3. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  4. 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 ScholarGoogle Scholar
  5. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  6. Jürgen Börstler. 2001. Experience with work-product oriented software development projects. Computer Science Education 11, 2, 111--133.Google ScholarGoogle ScholarCross RefCross Ref
  7. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  8. William Brown, Raphael Malveau, Hays McCormick, and Thomas Mowbray. 1998. AntiPatterns: Refactoring Software, Architectures, and Projects in Crisis. Wiley & Sons. Google ScholarGoogle ScholarDigital LibraryDigital Library
  9. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  10. Bernd Bruegge, Jim Blythe, Jeffrey Jackson, and Jeff Shufelt. 1992. Object-oriented system modeling with OMT. ACM SIGPLAN Notices 27, 359--376. Google ScholarGoogle ScholarDigital LibraryDigital Library
  11. 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 ScholarGoogle Scholar
  12. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  13. Bernd Bruegge and Allen Dutoit. 2009. Object Oriented Software Engineering Using UML, Patterns, and Java (3rd ed.). Prentice Hall International. Google ScholarGoogle ScholarDigital LibraryDigital Library
  14. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  15. 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 ScholarGoogle Scholar
  16. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  17. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  18. 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 ScholarGoogle ScholarCross RefCross Ref
  19. John Carroll. 1995. Scenario-Based Design: Envisioning Work and Technology in System Development. Wiley & Sons. Google ScholarGoogle ScholarDigital LibraryDigital Library
  20. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  21. 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 ScholarGoogle Scholar
  22. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  23. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  24. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  25. Michael Doyle and David Straus. 1976. How to Make Meetings Work. Jove Books.Google ScholarGoogle Scholar
  26. Vincent Driessen. 2010. A Successful Git Branching Model. Retrieved February 26, 2015, from http://nvie.com/posts/a-successful-git-branching-model.Google ScholarGoogle Scholar
  27. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  28. Dora Dzvonyar, Stephan Krusche, and Lukas Alperowitz. 2014. Real projects with informal models. In Proceedings of the 10th Edition of the Educators’ Symposium.Google ScholarGoogle Scholar
  29. 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 ScholarGoogle ScholarCross RefCross Ref
  30. Roger Fisher, William Ury, and Bruce Patton. 2011. Getting to Yes: Negotiating Agreement without Giving In. Penguin.Google ScholarGoogle Scholar
  31. Martin Fowler. 2001. The new methodology. Journal of Natural Sciences 6, 1--2, 12--24.Google ScholarGoogle Scholar
  32. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  33. GitHub. 2015. Using Pull Requests. Retrieved February 26, 2015, from https://help.github.com/articles/using-pull-requests.Google ScholarGoogle Scholar
  34. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  35. Jim Highsmith. 2002. Agile Software Development Ecosystems. Addison-Wesley. Google ScholarGoogle ScholarDigital LibraryDigital Library
  36. Thomas Hilburn and Watts Humphrey. 2002. The impending changes in software education. IEEE Software 19, 5, 22--24. Google ScholarGoogle ScholarDigital LibraryDigital Library
  37. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  38. Jez Humble. 2011. Devops: A software revolution in the making? Cutter IT Journal 24, 8.Google ScholarGoogle Scholar
  39. Jez Humble and David Farley. 2010. Continuous Delivery: Reliable Software Releases through Build, Test, and Deployment Automation. Pearson Education. Google ScholarGoogle ScholarDigital LibraryDigital Library
  40. Jez Humble and Joanne Molesky. 2011. Why enterprises must adopt Devops to enable continuous delivery. Cutter IT Journal 24, 8, 6.Google ScholarGoogle Scholar
  41. Ivar Jacobson, Grady Booch, James Rumbaugh, James Rumbaugh, and Grady Booch. 1999. The Unified Software Development Process. Addison-Wesley. Google ScholarGoogle ScholarDigital LibraryDigital Library
  42. 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 ScholarGoogle ScholarCross RefCross Ref
  43. David Johnson, Roger Johnson, and Karl Smith. 1991. Active Learning: Cooperation in the College Classroom. Interaction Book Company.Google ScholarGoogle Scholar
  44. 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 ScholarGoogle Scholar
  45. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  46. Thomas Kayser. 1990. Mining Group Gold: How to Cash In on the Collaborative Brain Power of a Group. Serif Publishing.Google ScholarGoogle Scholar
  47. David Kolb. 1984. Experiential Learning: Experience as the Source of Learning and Development, Vol. 1. Prentice Hall.Google ScholarGoogle Scholar
  48. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  49. 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 ScholarGoogle Scholar
  50. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  51. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  52. 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 ScholarGoogle Scholar
  53. 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 ScholarGoogle Scholar
  54. 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 ScholarGoogle Scholar
  55. 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 ScholarGoogle Scholar
  56. 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 ScholarGoogle Scholar
  57. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  58. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  59. 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 ScholarGoogle Scholar
  60. Deborah Mayhew. 1999. The Usability Engineering Lifecycle: A Practitioner’s Guide to User Interface Design. Morgan Kaufmann. Google ScholarGoogle ScholarDigital LibraryDigital Library
  61. Jakob Nielsen. 1994. Usability Engineering. Elsevier.Google ScholarGoogle Scholar
  62. Donald Norman and Stephen Draper. 1986. User Centered System Design: New Perspectives on Human-computer Interaction. CRC Press. Google ScholarGoogle ScholarDigital LibraryDigital Library
  63. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  64. 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 ScholarGoogle Scholar
  65. 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 ScholarGoogle ScholarCross RefCross Ref
  66. 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 ScholarGoogle Scholar
  67. Jim Rudd, Ken Stern, and Scott Isensee. 1996. Low vs. high-fidelity prototyping debate. Interactions 3, 1, 76--85. Google ScholarGoogle ScholarDigital LibraryDigital Library
  68. 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 ScholarGoogle Scholar
  69. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  70. Ken Schwaber and Mike Beedle. 2002. Agile Software Development with Scrum. Prentice Hall. Google ScholarGoogle ScholarDigital LibraryDigital Library
  71. 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 ScholarGoogle Scholar
  72. Hirotaka Takeuchi and Ikujiro Nonaka. 1986. The new new product development game. Harvard Business Review 64, 1, 137--146.Google ScholarGoogle Scholar
  73. James Tomayko. 1987. Teaching a Project-Intensive Introduction to Software Engineering. Technical Report. Software Engineering Institute, Carnegie Mellon University, Pittsburg, PA.Google ScholarGoogle Scholar
  74. James Tomayko. 1998. Forging a discipline: An outline history of software engineering education. Annals of Software Engineering 6, 1--4, 3--18. Google ScholarGoogle ScholarDigital LibraryDigital Library
  75. Hans Van Vliet. 2006. Reflections on software engineering education. IEEE Software 23, 3, 55--61. Google ScholarGoogle ScholarDigital LibraryDigital Library
  76. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  77. Tom Wujec. 2010. The Marshmallow Challenge—TED Talk. Retrieved February 26, 2015, from http://marshmallowchallenge.com.Google ScholarGoogle Scholar

Index Terms

  1. Software Engineering Project Courses with Industrial Clients

          Recommendations

          Comments

          Login options

          Check if you have access through your login credentials or your institution to get full access on this article.

          Sign in

          Full Access

          PDF Format

          View or Download as a PDF file.

          PDF

          eReader

          View online with eReader.

          eReader