All notes
RequirementManagem

Requirements management

Requirements management is the process of documenting, analyzing, tracing, prioritizing and agreeing on requirements and then controlling change and communicating to relevant stakeholders. It is a continuous process throughout a project. A requirement is a capability to which a project outcome (product or service) should conform.
The requirements document becomes a critical tool that helps the team make decisions about design changes.

What makes a good requirement

There is an engineering trade off to consider between requirements which are too vague, and those which are too detailed. Agile approaches evolved as a way of overcoming these problems, by baselining requirements at a high-level, and elaborating detail on a just-in-time or last responsible moment basis.

When iterative methods of software development or agile methods are used, the system requirements are incrementally developed in parallel with design and implementation.

需求调研

客户对需求的描述有很大的主观性,而这往往会造成双方理解上的偏差。我们要做的就是尽量还原他想到这个需求的来龙去脉,站在他们的角度看问题。
一般他们都是从其它产品中获得的灵感,这个时候直接去了解这个产品,看这个产品让客户觉得好用的地方在哪里,可以获得更客观直观的理解。
问客户有没有用过类似的产品/或者是从哪里获得这个需求的灵感,这个产品哪里设计的好让他觉得很赞。

Types of requirements

Wikipedia.

Requirement management in each step

Requirement management exists in all steps of a standard five-phase development process: Investigation, Feasibility, Design, Construction and Test, and Release stages.

Investigation

In Investigation, the first three classes of requirements are gathered from the users, from the business and from the development team.
In each area, similar questions are asked; what are the goals, what are the constraints, what are the current tools or processes in place, and so on. Only when these requirements are well understood can functional requirements be developed.

The deliverable from the Investigation stage is a requirements document that has been approved by all members of the team.
As the system develops, each new feature opens a world of new possibilities, so the requirements specification anchors the team to the original vision and permits a controlled discussion of scope change.

Feasibility

The deliverable from the Feasibility stage is the budget and schedule for the project.

Construction and Test

A main tool used in this stage is prototype construction and iterative testing.

Wireframe

Software Requirement Specification

It lays out functional and non-functional requirements, and may include a set of use cases that describe user interactions that the software must provide.

The Software Requirements Specification (SRS) is:

An example organization of an SRS is as follows:

Introduction
    Purpose
    Definitions
    System overview
    References
Overall description
    Product perspective
        System Interfaces
        User Interfaces
        Hardware interfaces
        Software interfaces
        Communication Interfaces
        Memory Constraints
        Operations
        Site Adaptation Requirements
    Product functions
    User characteristics
    Constraints, assumptions and dependencies
Specific requirements
    External interface requirements
    Functional requirements
    Performance requirements
    Design constraints
        Standards Compliance
    Logical database requirement
    Software System attributes
        Reliability
        Availability
        Security
        Maintainability
        Portability
    Other requirements

Wcf's template:

Introduction
    Purpose
    Definitions
    System overview
    References
Overall description
    Product perspective
        System Interfaces
        User Interfaces
        Hardware interfaces
        Software interfaces
        Communication Interfaces
        Memory Constraints
        Operations
        Site Adaptation Requirements
    Product functions
    User characteristics
    Constraints, assumptions and dependencies
Specific requirements
    External interface requirements
    Functional requirements
    Performance requirements
    Design constraints
        Standards Compliance
    Logical database requirement
    Software System attributes
        Reliability
        Availability
        Security
        Maintainability
        Portability
    Other requirements

Configure management

Intro

Wikipedia. In software engineering, software configuration management (SCM or S/W CM) is the task of tracking and controlling changes in the software.
SCM practices include revision control and the establishment of baselines. If something goes wrong, SCM can determine what was changed and who changed it.

Wikipedia. In configuration management, a "baseline" is an agreed description of the attributes of a product, at a point in time, which serves as a basis for defining change.

Environments

StackExchange: dev, stage, prod.