| Date | Topic | Readings | Slides |
| October 20 | Kick-off lecture | Chapter 1 | pdf (1,7 MB), pps (2,9 MB) |
| October 26 & 27 | Modeling with UML | Chapter 2 | pdf (0,5 MB), pps (1,6 MB) |
| November 2 | Project Organization | Chapter 3 | pdf (0,5 MB), pps (1,6 MB) |
| November 3 | Requirements Elicitation | Chapter 4 | pdf (0,2 MB), pps (0,2 MB) |
| November 9 | Project Organization | Chapter 3 | Slides posted on November 2 |
| November 10 | Sysiphus: Supporting modeling, collaboration, and rationale | | pdf (0,5 MB), pps (0,3 MB) |
| November 16 & 17 | Analysis: Object Modeling | Chapter 5 | pdf (0,8 MB), pps (2,1 MB) |
| November 24 | Analysis: Dynamic Modeling | Chapter 5 | pdf (0,8 MB), pps (1,7 MB) |
| November 30 | System Design I | Chapter 6 | pdf (0,7 MB), pps (1,9 MB) |
| December 8 | System Design II | Chapter 7 | pdf (0,4 MB), pps (1,4 MB) |
| December 14 | Object Design: Reuse | Chapter 8 | pdf (0,2 MB), pps (0,3 MB) |
| December 15 | Object Design: Patterns I | | pdf (0,4 MB), pps (0,4 MB) |
| December 21 | Object Design: Patterns II | | pdf (2,2 MB), pps (3,2 MB) |
| January 11 | Configuration Management | Chapter 13 | pdf (2,1 MB), pps (2,0 MB) |
| January 18 | Unit Testing | Chapter 11 | pdf (1,4 MB), pps (1,4 MB) |
| January 19 | System Testing | Chapter 11 | pdf (0,7 MB), pps (1,3 MB) |
| January 25 | Object Design: Specifying Interfaces | Chapter 9 | pdf (1,2 MB), pps (2,3 MB) |
| January 26 | Mapping Models To Code | Chapter 10 | pdf (1,2 MB), pps (1,0 MB) |
| Feburary 1 | Software Life Cycle | Chapter 15 | pdf (1,0 MB), pps (1,5 MB) |
The term software engineering was coined in 1968 as a response to the desolate state of the art of developing quality software on time and within budget. Software developers were not able to set concrete objectives, predict the resources necessary to attain those objectives, and manage the customers' expectations. More often than not, the moon was promised, a lunar rover built, and a pair of square wheels delivered.
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. The engineer is often faced with ill-defined problems, partial solutions, and has to rely on empirical methods to evaluate solutions. Engineers working on application domains such as passenger aircraft design and bridge construction have met successfully similar challenges. Software engineers have not been as successful.
Useful software systems are complex. To remain useful they need to evolve with the end users' need and the target environment. In this course, we describe object-oriented techniques for conquering complex and changing software systems. Key techniques include: