Requirements
  1. Define the services that a system shall provide
  2. Set out of the constraints on the development process
  3. Describe a system property or attributes
    - Statements descibing what a system should do not how it should do it
    - If requirements include design then the design will be constrained/bound
    - analysis paralysis

Requirement Types
  1. Business Requirements - high level objectives of the copmany that requests the system. Recorded in a vision and scope document
    ex1 - Increase market share by X%
    ex2 - Save $X per year in maintenance costs that are consumed by legacy system
    - not technical requirements
    - business need of client
    - establish quickly to improve process
  2. User Requirements - user goals or tasks that the users must be able to perform with the product. Represented by use-cases sceanrios, event-response tables
    ex1 - I need to make an airline reservation
    ex2 - I need to print mailing label for a package
    - current state -> next state
    - scenarios - natural language, easiest method to allow user to explain their needs and tasks
  3. Functional Requirements - what the developer needs to implement to enable users to accomplish their tasks an satisfy the sbusiness requirements. Documented in a software requirements specifications (SRS) document
    ex1 - The system shall ad the selected item to the shopping cart
    ex2 - The system must be able to sort the project list in forward and reverse alphabetical order
  4. Non-functional requirements - performance goals, quality attributes, constraints on the development process (the how)
    Product: safety, reliability, usability, performance, efficiency, capacity, etc.
    Process: standards (industry, government, etc), language, delivery

Out of $500B
  - $200B (40%) never used
  - $150B (30%) projects canceled prior to completion
  - 58% of original requirements change
Cost of Requirements Engineering
  - Complex systems - 15% of total budget
  - Small systems - 10% of total budget
Cost of fixing requirements errors:
  - up to 100x the cost of fixing a simple programming error

Stakeholders
  People or organizations who will be affected by the system and will directly or indriectly influence the system requirements
    - Customers, users, requirement analysts, developers, testers, documentation writers, project managers, legal staff, manufacturing people, sales, marketing, etc.
      - interview 2-3 of each type

System Requirements (aka System Software Requirements) - requirements of a system as a whole, ie h/w, s/w, and operational processes
Software Requirements - component of a system requirements
Types of systems
  - information systems db (standard h/w, commercial OS) [s/w]
  - embedded systems (special purpose h/w) [s/w + h/w]
  - command and control systems - combination of information and embedded systems [s/w + h/w + op procs]

Requirements Engineering
  - All the activities involved in discovering, documenting, and maintaining a set of requirements
  Domain Information - client vocabularies; could be different between departments, groups, industries

Process (Requirements Management)
  Elicitation -> analysis and negotiations -> documentation -> validation

  documentation -> requirement documentation and system specifications -> validation

  requirement documentation and system specifications -> agreed requirements