SOFT 423

Software Requirements
(Winter)

Summary:

This is an advanced course on the requirements phase of the software engineering process. The focus on the course is on discovering exactly what it is supposed to be designed and implemented, and communicating those objectives to the design and implementation team. This includes other constraints on the desired system such as legal, financial, and historical. A considerable amount of time is spent on formal modeling of both the requirements and the desired system.

Objectives:

By the end of the course students will be able to:

  • Identify both direct and indirect stakeholders for a system
  • Elicit requirements information about the system from a variety of sources using a variety of techniques
  • Analyze requirements information for conflict, completeness and consistency
  • Formally model the requirements
  • Prepare validation plans to validate the final product against the requirements
  • Understand how requirements change over time

Work Assigned: This has varied from year to year, but typically consists of 4 assignments worth 20%. Usually one of the assignment is done in pairs (a large elicitation assignment)while the others are done individually.

Evaluation:
Assignments: 20%
Three 20-minute midterm exams (8% each): 24%
Final Exam: 56%

Resources: The textbook is An Introduction to Requirements Engineering by Ian K. Bray. One paper from the Software Engineering Encyclopedia is assigned. Other material obtained from the web and other readings not covered in the textbook and the additional paper is presented in class.

Outline:

Week 1: Intro, Process

Week 2: Elicitation

Week 3: Data Flow Diagrams, ER Modeling, Object Oriented Analysis

Week 4: Problem Domain Oriented Analysis, Writing Requirements

Week 5: English Language and the Document, Modeling Techniques, Intro to Formal Modelling

Week 6: State Charts, 4 Variable Method

Week 7: Software Cost Reduction, Decision Tables

Week 8: Petri Nets, Specification, Validation

Week 9: Validation, Non-Functional Requirements

Week 10: Non-Functional Requirements, Software Evolution

Week 11: Requirements Management

Week 12: Review