CSE 202 Software Requirements (3 credits)

(formerly CSE 322)

Catalog description:

Domain engineering. Techniques for discovering and eliciting requirements. Languages and models for representing requirements. Analysis and validation techniques, including need, goal, and use case analysis.  Specifying and measuring external qualities.  Traceability.  Agile approaches.

Prerequisite or corequisite:

CSE 201 

Required topics (approximate weeks allocated):

  • Course Introduction (1.0)
    • Basics of software requirements engineering
    • Requirements engineering process: requirements elicitation, specification, analysis, management
    • Types of requirements: functional, non-functional, quality attributes
  • Requirements elicitation (1.5)
    • Identifying needs, goals, and requirements.
    • Customers and stakeholders.
    • Interviews and observations
  • Requirements specification (5.5)
    • Textual and graphical notations and languages (UML, Requirements notation).
    • Use cases
    • Techniques to write high-quality requirements.
    • Documentation standards
    • Formal specification
  • Requirements modeling and analysis (3.0)
    • UML class diagrams and sequence diagrams.
    • UML statecharts.
    • Inspection, validation, completeness, detection of conflicts inconsistencies, feature interaction analysis and resolution.
  • Requirements management (3.0)
    • Traceability, priorities, changes, baselines, and tool support
    • Requirements negotiation and risk management

Learning Outcomes:

  1. Explain the various issues and difficulties in requirements engineering
    • To explain the differences in perspectives of various classes of stakeholders
    • To critique an expression of a requirement, understanding the importance of context
    • To differentiate between functional and nonfunctional requirements
    • To specify various quality attributes of a software system in a measurable way
  2. Use several requirements elicitation techniques to obtain requirements from stakeholders
    • To obtain requirements by interviewing stakeholders
    • To elicit requirements by use of focus groups
    • To elicit requirements by prototyping
    • To negotiate reasonable requirements by evaluating various tradeoffs
  3. Use various informal, semi-formal, and formal languages to document requirements
    • To be able to explain the tradeoffs in use of various languages
    • To use English text to document tradeoffs
    • To write appropriate UML use cases (including the use of stereotypes: includes, extends)
  4. Analyze and model requirements using appropriate techniques
    • To create appropriate UML class diagrams
    • To use UML to capture relationships among classes (including inheritance, aggregation, and association relationships)
    • To use Agile techniques to specify user stories and track their design and implementation
  5. Specify requirements though appropriate diagrams
    • To create valid sequence diagrams to provide a more detailed view of a use case
    • To create a valid UML statechart to model dynamic aspects of a system
    • To use a formal specification language (like Z) to model aspects of a system
  6. Use a user-requirements modeling tool to help analyze requirements
    • To create various UML diagrams: use case diagrams, class diagrams and relationships, sequence diagrams, and state charts
  7. Perform a requirements validation
    • To explain the purpose of requirements validation
    • To perform a requirements review
  8. Implement requirements management processes
    • To explain the reasons for requirements volatility
    • To use requirements traceability and configuration management tools