The Education Page
is the `official' web-page for this course. Some of the information on that page is outside of the control of the course instructor.
When we implement software, what is it we are implementing? If a software house has a contract to deliver a system, what should the contract state about the system? Can a customer prove that the system as delivered does not meet the contractual obligations?
Software Specification is concerned with defining in a precise way the required properties of software, independent of the details or particulars of how it is implemented.
The course will not concentrate on any specification formalisms. Sufficiently unambiguous natural language, and normal mathematical notation, where appropriate, will suffice.
See Course Literature
This is a hands-on course. The idea is that we will collectively try to produce specifications for non-trivial case studies. For each selected case the students will construct specifications, working in small groups. Then we will collectively look at the results, attempt to poke holes in them, and try to combine the best of each.
The second half of the course will be concerned with a project, extending over several weeks, in which a larger case study is done involving a multi-component system.
In-class presentations (50%); final assignment (50%). There is no separate "tentamen".