二、需求工程
(一)什么是软件需求
是用户对目标软件系统在功能、行为、性能、设计约束等方面的期望,常表达“做什么”
(二)功能性需求
1、业务需求:
高层次目标要求,完完全全的目的
携程旅行的业务需求是卖飞机票
2、用户需求
用户的目标,用户要求系统必须能完成的任务,细致到操作
用户可以通过Internet随时查询图书信息和个人借阅情况,并可以快速查找和浏览需要的电子资料
3、系统需求
设计用户或外部系统与该系统之间的交互
订票系统需要和用户数据库交互
新产品制造的低成本将会让我们有更高的市场份额并满足销售目标
(三)非功能性需求
不直接关联系统功能行为的方方面面,包括速度,可靠性,容错性这些因素
1、非功能需求:速度(用户的响应时间)、存储空间、可用性(帮助页、培训时间)、可靠性(失败发生率)、容错性(失败时数据崩溃的可能性)
2、业务规则:如果采购单金额在10万到50万之间,那么需要总经理审批
3、外部接口:系统接口、用户接口、硬件接口、软件接口、通信接口
4、约束条件:成本、时间等
(四)需求获取与建模
需求获取途径:
面对面访谈、问卷调查、专题讨论会、头脑风暴
需求建模方法:
1、基于场景的方法
(1)用户故事:
card:作为一个<角色>,可以做<活动>,以便于实现<价值>
conversation:用户和系统交互的细节
confirmation:如何验收测试保证用户故事被正确解读
Card [优先级:xx 工作量估算:]
作为一个视频制作者,我希望上传视频到网页,以便
于任何其他用户能够在网页上看到这个视频。Conversation
“上传按钮”会出现在这个网站的每一个网页上
视频不能大于100MB或者长于10分钟
视频的格式包括.flv,.mov,.mp4,.avi和.mpg
能够实时显示上传进度Confirmation
检查“上传视频”按钮
上传视频的具体操作
检查.flv,.mov,.mp4,.avi和.mpg视频文件是否能上传
检查其它视频文件是否不能上传
检查视频大于100MB时是否会报错
检查视频长于10分钟时是否会报错
检查是否能够实时显示上传进度
(2)用例图
一个用例聚焦一个单一的目标,可能包含多个功能,但用户不关心系统内部的构造,只关注自己使用的服务
完整步骤:识别参与者、识别用例、建立参与者与用例的通讯关联、画出用例图、给出用例的详细描述
用例图:《include》表示无条件执行的包含(调用函数);《extend》是有条件执行(分支)的拓展,它的箭头是反向的
用例描述:
(3)活动图
是复杂过程的步骤顺序图,类似于算法流程图;可以设置泳道来将不同的动作分类
2、基于类的方法
3、基于模式的方法
(五)需求规格说明书(SRS )
是软件工程的产出,精确阐述一个软件系统必须提供的功能和性能,以及它索要考虑的限制条件,为了使用户和软件开发者双方对该软件的初始规定都有一个共同的理解,使之成为整个开发工作的基础
作为软件开发各类人员之间进行理解和交流的手段
应包含功能、外部接口、性能、非功能属性、约束条件
不应包含项目开发计划诸如晨成本进度方法等、产品保证书、软件设计细节
应该根据不同的项目场景设计不同的需求规格说明书
未完待续,感谢阅读~
未经允许禁止转载