Software Architecture and Engineering
Software engineering is an engineering discipline whose focus is the cost-effective development of high-quality software systems. The emphasis in software engineering is on both words, software and engineering. An engineer is able to build a high-quality product using off-the-shelf components and integrating them under time and budget constraints.
This course will cover key techniques for building reliable software. These include: modeling, design patterns, code refactoring, testing, symbolic execution, as well as static and dynamic program analysis. To gain a deeper understanding of how to apply these techniques in practice, the course will also involve two hands-on projects based on the principles introduced in the lectures.
Course Catalogue: 252-0216-00
Lecturers: Prof. Peter Müller, Prof. Martin Vechev
Hours: 4V, 3U
|February 23, 2017||The exercise session and project team assignment has been published.|
|February 24, 2017||The rooms for the exercise sessions have been published.|
|March 6, 2017||The first part of the first project has been published.|
|March 16, 2017||The second part of the first project has been published.|
|April 19, 2017||The points for the first project have been published.|
|May 10, 2017||The second project has been published.|
|June 15, 2017||The points for the second project.|
Please go to the exercise session to which your team is assigned.
- Matthew Mirman, CHN D 44
- Alexandra Bugariu, ML E 12
- Marco Eilers, CHN D 48
- Martin Kucera, HG D 3.1
- Valentin Wüstholz, ETZ F 91
|2||Requirements Elicitation and Documentation||Assignment, Solution|
|3||Program Specifications and Modeling||Assignment, Solution|
|4||Modeling||Assignment, Exercise Files, Solution, Solution Files|
|5||Alloy||Assignment, Exercise Files, Solution, Solution Files|
|6||Design Patterns||Assignment, Guice (Eclipse), Guice (IntelliJ), Solution|
|7||Testing||Assignment, Exercise Files, Solution, Solution Files|
|8||Program Analysis||Assignment, Slides, Solution|
||Static Program Analysis||Assignment, Solution|
- Bernd Bruegge, Allen H. Dutoit: Object-Oriented Software Engineering. Prentice Hall, 2004.
- Martin Fowler: UML Distilled: A Brief Guide to the Standard Object Modeling Language. Addison-Wesley, 2004.
- Erich Gamma, Richard Helm, Ralph Johnson, John Vlissides: Design Patterns. Addison-Wesley, 1995.
- Steve McConnell: Code Complete. Microsoft Press, 2004.
- John D. Musa: Software Reliability Engineering: More Reliable Software Faster and Cheaper. AuthorHouse, 2004.
- Mary Shaw, David Garlan: Software Architecture. Prentice Hall, 1996.
- Joel Spolsky: Joel on Software. Apress, 2004.
- Perdita Stevens, Rob Pooley: Using UML: Software Engineering with Objects and Components. Addison-Wesley, 2000.