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