After this course the student will be able to:
- Explain how software quality can be strengthened and ensured in different phases of software development (design, construction, and quality assurance).
- Choose and implement appropriate design patterns.
- Work together in a team using an agile development tool.
- Install and use a continuous integration pipeline.
- Evaluate the quality of software using software maintainability metrics.
- Create test cases using the test driven development approach.
- Refactor software to improve its structure and design.
- Apply debugging techniques to find and resolve software faults
This course focuses on software engineering skills for software design, construction and quality assurance in a software development context. The main topics of the course are:
Moreover, the students gain practical experience with using a continuous integration pipeline, and an agile development tool. Additionally, the course includes a guest lecture on software engineering practice. Furthermore, to simulate the software development process, a requirements change will be introduced half way the course. Requirements engineering and architectural design are out of scope for this course.
- Design patterns
- Test driven development
- Software maintainability metrics
During the whole course, students work in a group on a project to implement software for the given topic of the year. In the project, the students apply all the software engineering skills of the course. They report on these skills in a report, and in a final presentation. Individual contributions are tracked via the agile development tool. Also, unbalanced contributions may be reported via a red/green card system. Three times during the course, the student groups perform peer reviews on the projects of other student groups.
Assumed previous knowledge
|This course assumes good programming skills at the level of a graduated student of a Computer Science bachelor.|
|Master Internet Science and Technology||Required materials-Recommended materials|
|Joost Visser, Sylvan Rigal, Gijs Wijnhold, Zeeger Lubsen. Building Software Teams: Ten Best Practices for Effective Software Development. O'Reilly Media; ISBN 978-1491951774|
|Bertrand Meyer, “Agile”, Springer, 2014. ISBN 978-3-319-05155-0|
|Erich Gamma, Ralph Johnson, Richard Helm, John Vlissides. "Design Patterns: Elements of Reusable Object-Oriented Software", Addison Wesley, 1998. ISBN: 9780201633610|
|Martin Fowler, and Kent Beck. "Refactoring: improving the design of existing code", Addison-Wesley, 1999. ISBN: 978-0201485677|
|Andreas Zeller. "Why programs fail - A guide to systematic debugging", 2nd Edition, Springer, 2009. ISBN: 9780123745156|
|Self study without assistance|
|Project, Report, Presentation|