Syllabus
SEG-3101 - Software Requirements Analysis
School of Information Technology and Engineering (SITE) at the University of Ottawa
Official course description: Techniques for eliciting requirements. Languages and models for representing requirements. Analysis and validation techniques, including need, goal and use-case analysis. Requirements in the context of system engineering. Specifying and measuring external qualities: performance, reliability, availability, safety, security, etc. Specifying and analyzing requirements for various types of systems: embedded systems, consumer systems, web-based systems, business systems, systems for scientists and other engineers. Resolving feature interactions. Requirements documentation standards. Traceability. Human factors. Requirements in the context agile processes. Requirements management: Handling requirements changes. Prerequisite: SEG2105 or SEG2100
Professor: Gregor v. Bochmann - office: SITE 5082 - phone: ext. 6205 - e-mail: bochmann@site.uottawa.ca - office hours: Thursdays from 16:05 to 17:00
Teaching Assistant: Sepideh Ghanavati - e-mail: sghanava@site.uottawa.ca
Lectures and labs/tutorials: Lectures: Tuesday, 16:00 - 17:30 and Thursday, 14:30 - 16:00 SMD 402; tutorials/labs: Thursday, 16:00 - 19:00 STE E0130
Resources
Main resources
- Course Website
- TWiki Course Website (for tutorials/labs/assignments/project; note that TWiki still uses the code SEG3201 from previous years)
- Virtual Campus (for submissions, marks, solutions, and some other material)
Books
- Strongly recommended for this course: Ian K. Bray, An Introduction to Requirements Engineering, Addison Wesley, 2002
- Also recommended:
- Ian F. Alexander, Richard Stevens, Writing better requirements, Addison-Wesley, 2002 - for the topic of how to write requirements
- Elizabeth Hull, Ken Jackson, Jeremy Dick, Requirements Engineering, Springer-Verlag, 2004 - for the topic of tracability and an introduction to the DOORS tool
- Other interesting books providing more details on the different aspects of requirements engineering:
- Karl E. Wiegers, Software Requirements, Microsoft Press, 2003
- Axel van Lamsweerde, Requirements Engineering: From System Goals to UML Models to Software Specifications, Wiley, 2009.
- Ian Alexander and Ljerka Beus-Dukic, Discovering Requirements: How to Specify Products and Services, Wiley, 2010,
- Klaus Pohl, Requirements Engineering -
Fundamentals, Principles, and Techniques, Springer,
2010 (to be published),
ISBN 978-3-642-12577-5 (link)
Tools and tutorials
Evaluation
- Midterm and final exams are closed-book exams
- There are two assignments and one project (to be done in teams)
- The final marks will be composed as follows: final exam 45%, midterm exam 20%, assignments 15%, project 20% . Note that, as usual, the marks for the assignments and the project will only count for the final marks if the weighted average of the marks for the midterm and final exams are above 50/100.
- All components of the course (i.e., lab reports, assignments, etc.) must be fulfilled otherwise students may receive an INC as a final mark (equivalent to an F). This is also valid for a student who is taking the course for the second time.
- Notes:
About the course
Objectives
Upon completion of this course, students will have the ability to:
- Elicit requirements using a variety of techniques
- Organize and prioritize requirements
- Apply analysis techniques such as needs analysis, goal analysis, and use case analysis
- Validate requirements according to criteria such as feasibility, clarity, freedom from ambiguity, etc.
- Represent functional and non-functional requirements for different types of systems using formal and informal techniques
- Specify and measure quality attributes
- Negotiate among different stakeholders in order to agree on a set of requirements
- Detect and resolve feature interactions
Content
- Basics of requirements engineering
- definition of requirements engineering
- importance of requirements engineering
- place of requirements engineering in development process
- types of requirements: functional requirements, non-functional requirements, quality attributes
- main requirements engineering activities, documents and processes
- Requirements inception and elicitation
- product vision and project scope
- traditional elicitation approaches (interviews, stakeholders study, workshops, ...)
- scenario/use case approaches
- prototyping
- requirements negotiation and risk management
- Requirements analysis and specification - modeling techniques
- inception vs. specification
- techniques for writing high-quality requirements
- documentation standards (e.g., IEEE 830-1998)
- goal-oriented modeling
- Structured analysis and other techniques
- UML v2 and URN notations
- external qualities management, contract specification
- Requirements verification, and validation
- detection of conflicts and inconsistencies, completeness
- techniques for inspection, verification and validation
- feature interaction analysis and resolution
- Requirements management
- traceability, priorities, changes, baselines
- tool support (e.g., DOORS)
- Examples of requirements approaches in typical development processes
- requirements for various types of systems: embedded systems, consumer systems, web-based systems, business systems, systems for scientists and other engineers
- requirements engineering in RUP
- requirements engineering in agile methods
Created: July 31, 2010; revised August 8, 2010