第八章主要讲的是:
软件需求的类型,利益的相关者
获取用户的常用方法和步骤
竞争性需求分析的框架NABCD,四象限方法
项目计划和估计的技术
1. 软件需求
1.1如何获取软件的需求有以下几个方面:
- 获取和引导需求
- 分析和定义需求
- 验证需求
- 在软件产品的生命周期中管理需求
1.2对软件的需求也可以做以下的划分:
1. 对产品功能性的需求
要求产品必须实现某些功能。例如,学校的选课软件只允许有学生身份的用户浏览并选择课程,同时要求学生选择某一门课时必须要满足“先修课”的要求,等等
2. 对产品开发过程的需求
要求软件的开发流程必须满足某些约束条件,例如,开发过程必须产生某种类型的文档,必须在某个时间点达到某个状态,必须对源代码施以某种约束(安全性核查、代码版权核查、代码规范和支持文档的核查)
3. 非功能性需求
这也叫“服务质量需求”。例如,股票交易系统必须在一定时间内返回用户查询结果(它对时间的要求要比“科技文献检索”网站要高),火车票购票系统、大学选课软件必须能支持一定数量的用户同时访问,等等
4. 综合需求
有些需求并不是单单一个软件模块就能满足,例如,“购物网站必须在24小时内把货物发送到用户手中”,这个需求牵涉到软件系统、货物派送系统、送货部门、监控系统等不同部门的功能和执行能力。软件团队和客户代表要在需求阶段把这些问题定义清楚。
2. 软件产品的利益相关者
用户、顾客、市场分析者、监管机构、软件工程师。
3. 获取用户需求-用户调查
a) 焦点小组
b) 深入面谈
c) 卡片分类
d) 用户调查问卷
e) 用户日志研究
f) 人类学调查
g) 眼动跟踪研究
h) 快速原型调研
i) A/8测试
4. 竞争性需求分析的框架:
1.N(Need) 2.A(Approach) 3.B(Benefit) 4.C(Competitiors) 5.D(Delivery)
5. 功能分析的四象限方法
维持——以最低成本维持此功能
抵消——快速地达到“足够好”,“和竞争对手差不多”
优化——花大力气做到并保持行业最好
差异化——产生同类产品比不了的功能或优势
不做——砍掉一个功能,不一定要做所以的功能