Reading material referenced:

The course textbook "Object Oriented Technology", course notes,

F. P. Brooks, Jr., "No Silver Bullet--Essence and Accidents of Software Engineering," Computer 20 (4), April 1987.  Reprinted from Proceedings of the IFIP Congress, Dublin, Ireland, 1986. [pdf]

"Agile software development methods," by Pekka Abrahamsson, Outi Salo, Jussi Ronkainen, and Juhani Warsta, ESPOO 2002 [pdf]

MVC architecture definition at sun.com

"Model-View-Controller," by John Hunt [pdf]

For the midterm exam the students should:

- Describe the notion of software as it is understood in SE

- Describe a definition of software engineering

- Describe goals of software engineering

- Be able to describe the peculiar properties of software based on the "No Silver Bullet" (NSB) paper (complexity, conformity, changeability, invisibility)

- Be able to describe the difference between essential and accidental properties of software (NSB)

- Give an example of a solution to a software development problem and describe why it is not a silver bullet (e.g. object-oriented design)

- Be able to describe the difference between functional and non-functional requirements and give examples

- Be able to describe the software qualities and give examples including possible metrics (correctness, reliability, robustness, maintainability, usability, portability, verifiability etc.)

- Describe the emphasis of a requirements document (what , not how)

- Describe the major qualities of a requirements document (complete, consistent)

- Be able to write a short requirements document for some common application that includes both functional and non-functional requirements and quantitative metrics

- Describe the notion of a software process and why it is needed

- Describe the major steps of a waterfall software development process

- Describe the definition of an agile software development process (conclusion from the paper by Pekka Abrahamsson)

- Describe the XP process diagram given in the section on Extreme Programming (XP) software development process from the paper by Pekka Abrahamsson

- Be able to pinpoint advantages and disadvantages of XP

- Know various software and OO notions  (module, library, data pool, object, class, interface, type)

- Be able to explain what OO programming means (e.g. by Stroustrup)

- Be able to describe the 5 main principles of OO programming

- Why is it important to specify and analyze a software design before implementation (especially for large software systems) ?

- Be able to give an overview of the OO development process from the textbook ("OO technology")

- Be able to give detailed descriptions of processes for creation of class diagrams and use cases (from the textbook)

- Know the syntax of class diagram language from UML (class representations, various kinds of associations)

- Know the syntax of use case language from UML

- Be able to create use cases and class diagrams

- Know the syntax of sequence language from UML and be able to create sequence diagrams

- Know the syntax of statechart language from UML and be able to create statechart diagrams

- Know the description and benefits of MVC