1.需求问题的提出
五个与需求有关的败因描述
(1)不完整的需求,未能让不同需求层次的人参与进来
(2)缺乏用户参与
(3)不切实际的用户期望,客户不懂技术,有些需求目前技术是无法实现的
(4)需求变更频繁,用户忽略了变更需求对软件项目的负面影响
(5)提供了不再需要的需求
2.不同的项目具有不同的特点,不同的项目有不同的需求视图
3.软件需求的定义
(1)软件需求的特性
完整性。完整性是指需求无遗漏,在实际开发过程中,不同层次的人的需求是不同的。在验证需求完整性的过程中,需要采用分层评审的方式,不同层次的人负责评审与自己相关的需求。高层负责主题域的划分。
正确性。只有用户代表才能确定用户需求的正确性。
无歧义性。加强需求验证,加强对需求文档的正规审查,编写测试用例,开发原型以及设定特定的方案脚本。
可行性。评估技术可行性
有优先级。从业务、技术开发、项目管理三个角度
必要性。每一项需求都应把客户所需要的和最终系统所需遵循的标准记录下来,它是对优先级别的一种补充。
可验证性。检查每项需求能否通过测试用例或其他的验证方法。
4.需求定义的实践
问题定义五步
(1)在问题定义上达成共识
(2)分析问题背后的文字
(3)确定相关人员和用户
(4)定义解决方案的界限
(5)确定加在解决方案上的约束
5.需求的层次和分类
(1)软件需求包括三个层次,分别是业务需求、用户需求、功能需求
业务需求:代表支付、采购或投资软件产品的一方提出的业务需求,怎样为他们带来更大的效益
用户需求:使用此软件产品的人员对软件的要求,用户需要使用软件做什么
功能需求:软件产品需要实现的功能
(2)软件需求的分类,可分为功能需求、非功能需求和设计约束
功能需求:开发人员必须实现的软件功能,使用户能完成他们的任务。从而满足业务需求。
非功能需求:非功能需求是客户对软件的质量的期望。例如。在外卖平台的送餐业务中,点餐的人希望半小时送到,在软件设计方面已经实现,但在实际的送餐过程中,存在着许多问题,送餐小哥临时有急事。天气不好,地址填写不清晰等,导致用户的需求无法得到满足
设计约束:非技术类型的技术选型,预期的软硬件环境和预期的使用环境
6.需求在总体方案中的位置
需求分析为软件的开发起到了决策的作用,提供了开发的方向,并指明了开发的策略,在软件开发及维护中均起到了举足轻重的作用。