EECS4312 Fall 2015: Software Engineering Requirements
Fall 2015: CSE4312 – Software Engineering Requirements
Please login at the bottom of this page before proceeding.
← Please read the forum regularly for course updates.
Project submissions instructions are here
Lecture Times
- Tuesdays & Thursdays 4pm-5.30pm
- Tuesday lectures are to be held in
CB120PSE321 - Thursday lectures are to be held in
CB120PSE321. - There is a formal Lab every Thursday in LAS1002 from 5.30pm to 6.30pm in LAS1002. Labs start right away on the first day of class (with Lab0). Login with your Prism account, then do:
~sel/retrieve/4312/lab0
. There is a Quiz after Lab submission. - <hi>Office hours: Thursdays, 2pm-3pm in the SEL (LAS2056)</hi>
Learning outcomes
Software requirement engineers are experts at eliciting the needs of their customers, translating customer needs into a precise requirements documents (that describes what – not how – customer needs shall be satisfied), and providing systematic evidence-based methods to validate the requirements and verify that the final software product satisfies the requirements. Precise software requirements documents are especially needed in safety critical cyber-physical systems (e.g. nuclear reactors, medical devices and transportation systems) and mission critical business systems (e.g. banking systems, health provision and cloud systems). At the end of the course, students will be able to
- Elicit customer requirements by analyzing customer goals and needs
- Write precise requirements documents. To do this students will be able to:
- Develop the system overview, identify the system boundary and draw a context diagram
- Identify the monitored variables and events and controlled variables
- Identify the environmental assumptions and constraints
- Describe the functional requirements using tabular expressions (function tables) that specify the mathematical relation between the monitored variables and events and the controlled variables
- Describe the non-functional requirements
- Prove that the functional requirements are complete, disjoint and well-defined
- Provide a complete set of use cases and corresponding acceptance tests so that each requirement is a verifiable contract of customer needs
- Validate the functional requirements by proving that they preserve safety properties (derived from such methods as hazards analysis) and prove that the use cases satisfy the function tables
A work-intensive project will allow students to apply their knowledge to a small but non-trivial example.
Self-paced learning
Attendance at all lectures is obligatory as material not available elsewhere will be covered. If you Login at (see bottom of this page), you can access additional information such as notes and some slides (on the SVN).
You are required to develop facility in the following, on your own, in order to elicit requirements and write precise requirements documents:
- The PVS system for mathematical specifications. See PVS. Please familiarize yourselves with this system for writing and checking specifications using logic and discrete mathematics. You might want to work through the Telephone Book Example (see Introductory Tutorial) if you are keen to get started.
- There will be some notes available in the SVN. The main supplemental text that you must also master is Requirements Engineering Management Handbook (2009).
- Some UML diagrams/methods for requirements elicitation. The book “UML distilled” by Martin Fowler, is available from Steacie, but the web has many resources (e.g here and here). In particular, you must familiarize yourself with Use Case Diagrams, Class Diagrams, Sequence Diagrams and Statecharts to help in the elicitation of requirements.
- Latex, for writing well formatted documents. (Word and other document systems do not do as well as Latex for formatting mathematics). See LaTeX for more information.
In class we will only cover some (but not all) of the above. So you will need to master the above material at your own pace. There will be some informal labs to help with PVS.
Place the following in the .cshrc file in your home directory of your Prism account:
setenv PVS_LIBRARY_PATH "/cse/local/pkg/pvs/nasalib" source /cs/local/packages/texlive/cshrc.texlive
Virtual Machine with PVS/Latex
PVS and Latex are available on the Prism/Linux workstations. There is also an SEL Linux-based Virtual Box Image. For instructions, see here (use your Prism login)
The SEL-VM is also available on red:
red:/vbox/eecs-vbox-sel.ova
The VM has PVS, Latex, Eclipse, EiffeStudio, ETF, Rodin, etc. so that you can run all the software on your Laptop or home computer.
Required Textbook
The following textbook is required reading: Requirements Engineering Management Handbook (2009) (146 pages including appendices). This text is made available without cost as a PDF by the U.S. Department of Transportation, Federal Aviation Administration.
This Handbook describes the following 11 main-level recommended practices that allow developers to progress from an initial, high-level overview of a system to be developed to a detailed description of its behavioral and performance requirements.
1. Develop the System Overview
2. Identify the System Boundary
3. Develop the Operational Concepts
4. Identify the Environmental Assumptions
5. Develop the Functional Architecture
6. Revise the Architecture to Meet Implementation Constraints
7. Identify System Modes
8. Develop the Detailed Behavior and Performance Requirements
9. Define the Software Requirements
10. Allocate System Requirements to Subsystems
11. Provide Rationale
All the material in the text is required reading and may appear on the Final Exam. Read Chapter 1 in the first week of the course. Thereafter, each week, master the material in Section 2.1, Section 2.2 .. etc. The ideas are illustrated in the appendix using the Isolelete Thermostat example, the flight control and guidance system, and the autopilot system. You are required to understand these examples.
Suggested Text
This course cannot treat all the important topics in RE. If you want find out more about Requirements Engineering, the text Requirements Engineering: from system goals to UML models to software specifications, Axel van Lamsweerde Wiley, 2009 ISBN 0470012706 (paper, 682 pages), is available in Steacie. (Reviews of books on requirements engineering). Topics in the book include:
- A comprehensive introduction to the fundamentals of requirements engineering, including techniques for: requirements elicitation and reuse, risk analysis, conflict management, and requirements prioritization; requirements specification, inspection, validation, and verification; traceability management and change control.
- An in–depth treatment of system modelling for requirements engineering, including constructive techniques for modeling system goals, conceptual objects, responsibilities among system agents, operations, scenarios and intended behaviors, and countermeasures to anticipated hazards and threats.
- A variety of techniques for model–based evaluation of alternative options, model refinement checking, model animation, property verification, inductive model synthesis, and analysis of conflicts, hazards, and security threats.
- Use of standard UML notations wherever applicable. Most techniques are based on a solid formal framework, kept hidden throughout the major part of the book for wider accessibility.
- Numerous examples from running case studies in a variety of domains, including security– and safety–critical ones. Rich set of problems and exercises at the end of each chapter together with bibliographical notes for further study.