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.

General Info

Course Catalogue: 252-0216-00
Lecturers: Prof. Peter Müller, Prof. Martin Vechev
Language: English
Hours: 4V, 3U
Credits: 8

Announcements

Lectures

Monday
10:00-12:00, CAB G 61

Wednesday
10:00-12:00, CAB G 61

Contact: Prof. Peter Müller, Prof. Martin Vechev

The lectures for the second part of the course can be found here.

Exercises

Please go to the exercise session to which your team was assigned.

Monday, 13:00-16:00

    - Marco Eilers / Federico Poli, CHN D 44

Tuesday, 15:00-18:00

    - Alexandra Bugariu / Matthew Mirman, ML E 12

    - Arshavir Ter-Gabrielyan / Matthew Mirman, ML E 12

Thursday, 15:00-18:00

    - Alexandra Bugariu / Benjamin Bichsel, ETZ F 91

If you have any questions regarding the first part of the course, please contact Alexandra Bugariu. For the second part, please contact Benjamin Bichsel.

 

Please solve each assignment before the exercise session. In class, we will just discuss your solutions.

The exercises for the second part of the course can be found here.

 

Projects

The description of the project for the second part of the course can be found here.

Literature

  • 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.
JavaScript has been disabled in your browser