Software Architecture and Engineering

Main content

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

Date Announcement
   

Lectures

Monday
10:00-12:00, CAB G61

Wednesday
10:00-12:00, CAB G61

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

 

Section Topic Downloads
1 Introduction Slides
2 Requirements Elicitation Slides

Exercises

Monday, 13:00-16:00

  • Alexandra Bugariu, CHN F46
  • Marco Eilers, CHN G22
  • Matthew Mirman, HG E33.1
  • Valentin Wüstholz, CHN D44

Tuesday, 15:00-18:00

  • Martin Kucera, CHN D48
Week Topics Downloads
     

Projects

Project Topic Deadline Downloads
       

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.
 
 
Page URL: http://www.pm.inf.ethz.ch/education/courses/software-engineering-and-architecture.html
21.02.2017
© 2017 Eidgenössische Technische Hochschule Zürich