|
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:
- Design patterns
- Test driven development
- Software maintainability metrics
- Refactoring
- Debugging
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.
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 knowledgeThis 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 materialsBookJoost Visser, Sylvan Rigal, Gijs Wijnhold, Zeeger Lubsen. Building Software Teams: Ten Best Practices for Effective Software Development. O'Reilly Media; ISBN 978-1491951774 |
 | BookBertrand Meyer, “Agile”, Springer, 2014. ISBN 978-3-319-05155-0 |
 | BookErich Gamma, Ralph Johnson, Richard Helm, John Vlissides. "Design Patterns: Elements of Reusable Object-Oriented Software", Addison Wesley, 1998. ISBN: 9780201633610 |
 | BookMartin Fowler, and Kent Beck. "Refactoring: improving the design of existing code", Addison-Wesley, 1999. ISBN: 978-0201485677 |
 | BookAndreas Zeller. "Why programs fail - A guide to systematic debugging", 2nd Edition, Springer, 2009. ISBN: 9780123745156 |
 |
| Instructional modes Assignment Presence duty |  | Yes |

 | Lecture 
 | Presentation(s) Presence duty |  | Yes |

 | Project unsupervised Presence duty |  | Yes |

 | Self study without assistance 
 |
| Tests Project, Report, Presentation
 |
|
| |