造价师/评估师培训:010-82146681
联盟会员/机构评定:010-82146682
业务合作咨询:010-82586972
E-mail:bscea@bscea.org
怎样写软件需求更有效?
引言:
提到软件需求相信很多人并不陌生,特别是从事信息化方面工作的人员,基本每天都需要与软件需求打交道。 可是在实际的工作中,因为软件需求问题导致信息化项目失败的情况屡见不鲜,软件需求在软件项目中处于一个什么地位,我们需要怎样编写需求?希望通过本文的探讨给大家带来一些思考,给实际工作带来帮助 。
一、软件需求是什么
根据百度百科的定义:软件需求是用户解决问题或达到目标所需条件或权能;系统或系统部件要满足合同、标准、规范或其它正式规定文档所需具有的条件或权能。 软件需求包括功能性需求及非功能性需求,非功能性需求对设计和实现提出了限制,比如性能要求,质量标准,或者设计限制。本文我们主要讨论软件的功能性需求,主要包含三个层面的内容:
业务需求( business requirement)反映了组织机构或客户对系统、产品高层次的目标要求,它们在项目视图与范围文档中予以说明,这是软件项目要实现的目标或者功能 。
用户需求(user requirement) 文档描述了用户使用产品必须要完成的任务,这在使用实例(use case)文档或方案脚本(scenario)说明中予以说明,这是用户在特定场景下,通过软件所需要实现的功能。
功能需求(functional requirement)定义了开发人员必须实现的软件功能,使得用户能完成他们的任务,从而满足了业务需求。所谓特性(feature)是指逻辑上相关的功能需求的集合,给用户提供处理能力并满足业务需求。
二、软件需求与成本评估
工作中,怎样编写软件需求可以更好的满足软件研发的需要 。 很多人可能认为需要写得越详细越好,只有把需求写清楚了,我们才能研发出客户满意的软件。可是在实际中,编写软件需求工作量很大,并且在时间做软件研发过程中,需求内容随时都会发生变更,随着敏捷研发思想的普及,很多人又走向了另一个极端:认为软件需求不需要编写,通过代码就可以反映需求的内容,研发不需要把宝贵的时间浪费在冗余的文档编写上 。 两种意见可能都有一定的道理,那么我们需要怎样的软件需求文档呢 ?
要回答这个问题,需要我们首先考虑:我们为什么需要需求文档 。 如果需求的编写只是为了解释说明软件实现的功能,那么良好的编码结构,代码注释就可以很好的实现软件的功能说明,程序员可以将编写需求的时间节约下来进行更多功能的实现; 可是,这样的情况可能更多适用于中小型项目,或者互联网项目,因为这样的项目需求不复杂,并且需求变化很快,所以研发的效率非常重要。然而,针对大型软件项目或者功能比较复杂的系统,软件研发可能是多人协作的成果,所以在信息传递过程中, 我们只有提前考虑好软件需求的内容,才能正确评估开发软件所需要的时间,成本的要素,从而更好的管理项目。
三、如何写好软件需求
如何写好一个软件需求,我们通过一个案例来进行说明:
1、业务需求 :
客户对系统的总体的目标要求 ;在线培训考试平台,主要是用于网上教学、学习、模拟训练等,老师可以通过此系统进行学习科目、学习课件、学习评估等管理,学员可以通过系统进行网上学习、模拟训练、在线考试及帮助。
2、用户需求
用户在特定场景下,通过软件所需要实现的功能 ; 在线培训考试平台的案例中,核心功能主要包括 :
其中在线培训管理模块包括:
科目管理:针对培训过程中的不同类别进行科目管理,对培训科目进行管理维护:包括科目信息添加、科目信息查询、科目信息修改、科目信息的删除等操作。
课程管理:对于培训课程进行管理维护:包括课程信息添加、课程信息查询、课程信息修改、课程信息的删除等操作。
课件管理:课程信息主要包括不同课程的课件信息,用户通过输入课件的 名称、密级、类型、讲义可以对课件信息进行独立的管理 ;包括课件信息添加、课件信息查询、课件信息修改、课件信息的删除等操作。
学员管理: 对于登陆用户报名学习某一科目的课程内容进行管理,包括学员新增,查询、修改、删除等操作
计划管理:管理员可以对培训计划进行管理,主要计划添加培训课程和培训学员,管理员卡还可以对培训计划进行添加、查询、修改、删除等操作
培训日志:管理通过输入时间、类型、描述可以对培训信息进行查询 。
3、功能需求
开发人员必须实现的软件功能,使得用户能完成他们的任务,从而满足了业务需求,在线培训管理包括科目管理、课程管理、课件管理、学员管理、计划管理,培训日志查询等功能。
3.1科目管理
3.2课程管理
3.3课件管理
3.4学员管理
四、确定功能进行成本评估
通过对软件需求功能点点梳理,借助需求管理平台(www.parawork.com)需求分析功能,我们可以了解该项目的规模大小,通过行业基准数据的分析可以了解研发成本,工期时间的管理要素,为项目管理提供依据 。