作为技术人员,我尺攵跋赈们以往更多的关注的是技术,但是在做个多年后,发现做正确的事比正确的做事更重要,而软件中需求的好坏就很大程度决定了你这个软件是否正确,需求确定后不管你如何实现,功惮我鸷截能给客户直接带来的价值远远比技术直接带来的价值要高。但是需求带来的问题一直是各个软件公司项目失败的首要原因,因此需求是很复杂的,我们希望能在不断地学习和实践中不断地理清需求、提高需求分析能力。
软件需求包括3个不同的层次: 【业务需求】 描述组织或客户的高层次目标,通常问题定义本身就是业务需求。这种目标通常体现在两个方面: 问题:解决企业/组织运作过程中遇到的问题,如物资供应脱节、用户投诉量大、客户流失率高等。 机会:抓住外部环境变化所带来的机会,以便为企业带来新的发展,例如电子商务、网上银行等。 业务需求就是系统目标,它必须是业务导向的、指导软件开发的高层需求。这类需求通常来自与高层,例如项目投资人、购买产品的客户、实际用户的管理者、市场营销部门或产品策划部门。业务需求从总体上描述了为什么要开发系统(why),组织希望达到什么目标。一般使用前景和范围(visionandscope)文档来记录业务需求,这份文档有时也被称作项目轮廓图或市场需求(projectcharter或marketrequirement)文档。组织愿景是一个组织对将使用的软件系统所要达成的目标的预期期望。比如“希望实施CRM后公司的客户满意度达到80%以上”就是一条组织愿景。 【用户需求】 用户需求是指描述用户使用产品必须要完成什么任务,怎么完成需求,通常是在问题定义的基础上进行用户访谈、调查,对用户使用的场景进行整理,从而建立从用户角度的需求。用户需求必须能够体现软件系统将给用户带来的业务价值,或用户要求系统必须能完成的任务,也就是说用户需求描述了用户能使用系统来做些什么(what),这个层次的需求是非常重要的。 作为需求捕获阶段的主要产物,主要具备以下特点: 零散:用户会提出不同角度、不同层面、不同粒度的需求,而且常常是一句话形式提出的,如通过电话、短信等非正式方式提出的需求。 存在矛盾:由于用户处于企业/组织的不同层面,因此难免会出现盲人摸象的现象,而导致需求的片面性。 因此,我们还需要对原始需求进行分析和整理,从而得出更加精确地需求说明。用例、用户故事、特性等都是表达用户需求的有效途径。 【软件需求】 由于用户需求具有零散、矛盾的特点,因此需求分析人员还需要对其进行分析、提炼、整理,从而生成指导开发的、更准确的软件需求,软件需求是需求分析与建模的产物。 软件需求是需求的主体,它描述的是开发人员如何设计具体的解决方案来实现这些需求(how),其数量往往比用户需求高一个数量级。这些需求记录在软件需求规格说明(SoftwareRequirmentsSpecification)中。SRS完整地描述了软件系统的预期特性。SRS我们一般把它当作文档,其实,SRS还可以是包含需求信息的数据库或电子表格;或者是存储在商业需求管理工具中的信息;而对于小型项目,甚至可能是一叠索引卡片。开发、测试、质量保证、项目管理和其他相关的项目功能都要用到SRS。