主要点:
- 需求的概念,要能判断
- 需求分类
- 需求层次,3个,需要解释
- 获取分析需求的方法
- 原型法作用、特点
需求的概念
定义:需求是以简洁清晰且无二义性的方式,对待开发的软件系统中各个功能和性能方面的描述集合。
需求必须满足 5 个性质:
- 必要性。
- 无歧义性。
- 可测试性。
- 可跟踪性。
- 可测量性。
需求的重要性
- 需求是整个软件系统开发的源头,是后续设计、开发、测试、维护等所有活动的根本依据。
- 随着系统开发的进度,需求的修改代价呈指数级上升。
需求的层次
层次 | 含义 | 表现形式 |
---|---|---|
业务需求 | 用户组织对系统和产品的业务目标 | 项目前景与范围文档 |
用户需求 | 站在用户的角度描述产品的功能和性能概要 | 用例文档 |
系统需求 | 站在软件工作者的角度对系统应该做什么的详细描述 | 系统需求规格说明 |
需求的分类
包括功能性需求和非功能性需求,两者互为一对多关系,所以总的来说是多对多关系。
1、功能性需求
2、非功能性需求
明确软件要遵循什么业务规则,主要源于企业、政府,主要分为 4 大类:
注:业务规则主要包括企业政策,政府法规,工业标准等等。
- 性能:例如系统应该在指定时间内达到什么样的要求。
- 外部接口:例如XX系统必须接受YY系统的信息。
- 设计约束:例如软件系统必须采用某一种语言开发。
- 质量属性:例如系统的可靠性,存活性、安全性、可维护性,用户友好性,可移植性。
需求的层次与分类的关系
内容都在图了,读图理解= =
需求工程过程
需求工程
所有与需求直接相关的活动通称为需求工程,他包括 2 个方面:
- 需求开发。
- 需求管理。
需求工程过程
螺旋迭代过程
需求获取与分析
最关键、最困难的活动。
面临的挑战
- 模糊性。用户不知道要什么。
- 隐蔽性。用户不肯说出来,如实际决策权利结构。
- 多样性。因为用户多样性。
- 变化性。市场、技术在变。
4项基础活动
应对模糊性
1、诱导性访谈
虚心倾听,采用需求建议诱导的方式,而非直接提问“你想要什么”。
2、原型法
作用:
- 建议诱导访谈的有效形式之一。
- 将产品实在化,**消除在需求理解上的差异,获得客户真实意图。**
- 有利客户了解系统规模、风格,以及开发商的能力
目的:
- 明确并完善需求。
- 探索设计方案。
- 发展为最终的产品原型。
步骤:
分类:
1、快速原型(抛弃型)
特点:
- 以最小的代价,快速建立原型供评审
- 解决需求的模糊性、不完整性、不确定性。
- 提高需求质量。
2、进化原型(渐进型)
特点:
- 构建过程中重视系统性和完整性的设计原则,必须易于优化升级。
- 从测试和使用中获取下一次更新的信息。
- 比快速原型的代价更大。
应对隐蔽性
方法:观察和挖掘。
- 现场观察。例如敏捷宣言“客户合作胜过合同谈判”的与客户一起工作。
- 扎根蘑菇群理论,深入实际应用场景。
应对多样性
方法:用例
步骤:
- 用户分类。决策者,最终用户,其他,为每一类用户做用户画像。
- 用例构建。为每一类用户构建用例。
- 用例汇总。
- 用例排序。按照优先级给用例排序,优先级由 需求强度 = 潜在用户数 + 使用频率 来确定。
应对变化性
采用能够应对变化的软件工程过程模型,比如螺旋迭代模型、RUP 统一过程模型,敏捷开发等。