一般情况下,在开发软件之前,我们必须弄清楚开发软件的目的所在,开发出更好的新软件的意义所在等问题,这就意味着我们需要进行软件需求分析。
众所周知,软件需求分析(softwarerequirementanalysis)是软件开发中的主要活动之一,也是其他活动的基础,该活动的主要目的是确定软件系统应该为用户提供哪些功能来解决用户的需求。
同时,软件需求分析活动又可以分为许多任务,主要包括调查研究、问题分析、确定目标、需求定义、需求分析、需求描述等。下面分别介绍这些任务的特点。
1.调查研究
调查研究是指对接受的软件开发任务或请求进行初始的资料收集、调查分析、软件的可行性分析等研究工作。
这项任务的输入往往是用户提出的软件开发请求或上级下达的软件开发任务,经过调查研究之后,应该输出描述本软件的市场或用户现状以及软件开发可行性分析研究报告。
收集的调查资料应该涉及到有关市场资料、用户资料、领域资料等。有些商品化的软件产品的开发,需要对该软件的市场状况和发展趋势有更多的了解,收集尽可能多的市场资料。对于针对某个用户开发的软件项目,需要对该用户的业务背景有更多的了解,收集相关的组织结构图、会议记录、客户投诉、公司战略、政策手册、标准操作过程以及各种报告和手册等。在收集资料的过程中,可以采取多种方法,例如实地调研、业务访谈、调查问卷、现场观察、讨论会、网站研究等。
在调查研究过程中,应该从技术、成本、市场、管理等多个视角对该软件项目进行初步的可行性研究。只有当该软件项目有开发的必要时,开发工作才可以继续进行下去。否则,就应该及时停止所有的工作。
2.问题分析
在调查研究的基础上,需要对用户面临的各种问题进行分析。在软件需求分析中,问题分析是指深入分析和理解触发项目的各种业务问题、市场机会和系统目标活动。在问题分析活动中,需要理解和回答诸如此类问题:"这些业务问题真的需要使用软件来解决吗"或者"市场上真的需要开发新的软件产品吗"。
问题分析任务的输入是调查研究报告,经过问题分析之后, 后产生的输出是对新软件将要解决的问题的描述。
实际上,不同的问题有不同的分析方法。前面讲过,新软件研发项目和新软件开发项目是两个性质不同的软件项目,前者强调对软件市场的研究,后者则更加关注对用户问题的分析。所谓的问题就是那些阻碍企业达到其经营目标或目的的事情。例如,某个企业认为在当前的业务现状下完成一个客户的订单的时间太长了,大大超过了该行业的客户订单平均时间,过长的时间降低了企业的竞争力。这时,该企业可能认为应该采用订单自动处理软件来提高订单的处理效率和质量,提高本企业在市场上的竞争力。这种问题就产生了对软件开发的需求。
在问题分析过程中,首先需要采取合适的方法识别和列出企业存在的各种问题,然后采取原因效果分析技术对这些问题产生的原因进行分析和评价。从多种视角对问题进行分析,例如可以从业务流程、业务数据、组织结构、岗位设置、工作职责、企业政策等多个方面进行分析和研究,目的是真正理解企业存在的问题。
3.确定目标
确定目标是指确定软件将要解决问题的程度、达到的目标、受到的约束。在问题分析的基础上,可以创建软件将要达到的目标。本活动的输出是对问题解决程度和软件将要达到的目标以及软件开发受到的约束进行描述。
软件目标是用来衡量新软件是否成功的重要标准。软件的目标应该是的、可以度量的,因为这些目标是新软件将要影响的业务性能。在企业中,典型的软件目标如下:把处理订单的时间降低到5分钟以下;顾客等待的时间由平均25分钟降低到平均3分钟;可以在网络上实时查看计划完成的情况;库存占用的资金降低到现在的20%,等等。
除了创建目标之外,还必须创建约束。约束就是限制灵活地定义达到目标的解决方案的资源或规则。一般地,软件开发约束在软件开发过程中是不可改变的。例如,系统开发结束日期和资金预算就是两个典型的约束。影响软件开发的约束有多种类型,进度、成本、技术等都是典型的约束类型。例如,软件要求在9月1日前开发完成,就是一个典型的进度约束;软件的开发成本必须控制在20万元以内,就是典型的成本约束;本软件的开发必须采用java技术则是典型的技术约束。
4.需求定义
前面那些任务主要是从用户角度进行的业务问题分析,从需求定义开始则是从软件角度进行的功能分析。需求定义是指将明确的软件目标转换为可以满足这些目标的功能需求和非功能需求的过程。
功能需求是一个软件必须提供的活动和服务描述。一般地,根据那些可以满足软件目标的输入、输出、流程和存储的数据来定义功能需求。
非功能需求是一个软件的特征和约束的描述。典型的非功能需求包括:单位时间内处理的事务数量和单位事务的响应时间;软件支持的并发性操作要求;易学性和易用性;预算、成本;进度安排和结束日期;文档和培训需要;软件的质量和可靠性要求与管理;安全性要求等。
5.需求分析
需求分析就是通过与业务用户和技术人员进行交流,验证这些需求。业务用户必须理解需求,以便确定需求的优先级和评价技术方案的成本,技术人员理解需求的目的则是为了把这些需求转变成相应的技术解决方案。
在需求分析过程中,可以采用两种方法完成需求的确认和文档工作,即软件需求建模法和原型法。软件需求建模就是建立软件需求模型。软件需求模型是为了刻画或描述软件需求而使用的一种表示形式,经常采用图形化方法来建立软件需求模型。在需求分析过程中,原型的目的是建立用户界面的需求,即输入和输出,使用户可以更加形象地理解需求和提出需求。
需求分析的目的是为了得到需求的精度、迫切性、一致性、灵活性和可行性,并且命名相应的业务标准或规则。
需求分析是非常重要的,并非所有的需求都是等价的例如,当软件进度拖延或成本超支时,就应该删除一些需求。这时,认识和理解需求的优先级是非常有意义的。因此,已经确定的所有有效的需求都应该具有优先级。一般按照需求的重要程度,可以把优先级分为必须完成的需求和希望完成的需求两大类。必须完成的需求是指包含在必须完成的小的软件中的需求,如果没有这些需求,就没有该软件。希望完成的需求是指那些对于软件不十分重要的需求,但是,这些需求在以后版本中应该包含。
6.需求描述
需求描述是指按照规定的格式和要求对需求分析的结果进行文档编写的过程,也称为软件需求规格说明。一般地,需求描述文档应当满足用户的要求或相关标准规范的要求。需求描述是非常重要的一项工作,是软件开发过程中的其他活动的工作依据和基础。
总而言之,我觉得,通过仔细分析软件开发需求,我们可以很好的解决技术上研发时的某些疑惑,从而更加坚定研发的初目的,更好的促进软件开发行业的发展。
温馨提示
温馨提示
相关资讯