在这个阶段,客户自己的要求是很散乱及含糊不清的,并且存在着很多未被发现的潜在需求,需要我们一步步引导客户解剖出来,并达成一致的看法。所以,有两点是在本阶段必须明确的:一、要开发的系统是怎样的事物?二、本次开发的范围到什么程度为止(因为对于大项目来说,往往可能还会有后续工程)?
从成果物来看,又分为了两大类:功能需求与非功能需求。
- 功能需求:看得见摸得着,直接与用户操作相关的功能及服务等,以业务流程图、用例图等来表述。
- 非功能需求:功能需求以外,与用户体验性、操作便捷性、系统稳定性、安全性等相关的方面,并且应该标明优先度,以便在之后的开发过程中分类分阶段来实现。
需求定义阶段,首先要倾听客户的声音,基于现有的人工业务进行调查,立足于最终使用者以及现实世界的视角来明确即将开发的软件系统的要求。该过程中,会发现很多与客户提出的需求有矛盾、遗漏、与之前预想难度呀功能多少有很大差异的情况,肯定会左右工期、成本核算以及人员配置等诸多方面。所以,这些都是必须要从与客户的不断交流确认中认识并发现到的,从而才能进行适当的管理。
现在来看看主要的成果物流程,这些行为与成果物需要在需求定义的阶段反复不断地交流与提炼。
- 虚心听取客户的表述, 一项一项地确认,主要就是现有的人工业务流程。然后,基于这个人工业务流程来整理出软件系统化的业务流程,并与客户不断交流,得到他们对即将开发的软件系统的业务流程的认可。
- 从整理得到的业务流程中提炼出功能与终端使用者的关系,形成用例图。这样,就以软件系统的功能与范围再次与客户交流,得到他们的认可。并且,在这里也应该明确与该软件系统有联系的外部系统及用户的关系。
- 对各用例图进行业务层面的详细描述。这样,又可以基于用例描述与客户交流,得到他们在各业务详细内容上的确认。并且在这个时候,可以继续提炼出一些业务上的规则,比如借书需要登录系统,在没有按照返还书的情况下要交纳滞纳金等等。
另外,页面(画面)跳转图及页面(画面)的布局,很多情况下也可以在需求定义的阶段开始做起来,这样,比起相对抽象的业务流程比起来,页面(画面)可以更加形象清晰地让客户及开发人员双方都能把握好整个软件系统的业务流程。
之后,我会继续写该连载博客,并用网上订餐系统为原型进行实践。每阶段的文档,都将上传到优快云的“下载”栏目中备忘。本阶段文档过段时间写完后上传。
未完待续。。。