软工看完了迷迷糊糊的开始写文档。文档不写不知道,一开始写我就止步了。只是打开文档看目录我都有点丈二和尚——摸不着头脑,因为有许多专业术语搞不清楚。首先第一个要理解的就是软件需求。不要把它想的太单纯哦。
软件需求包含了三个含义,分别是业务需求,用户需求,功能需求。他们之间的关系是依次细化,到具体的。
先看一下官方解释:
业务需求( businessrequirement)反映了组织机构或客户对系统、产品高层次的目标要求,它们在项目视图与范围文档中予以说明。
用户需求(userrequirement) 文档描述了用户使用产品必须要完成的任务,这在使用实例(use case)文档或方案脚本(scenario)说明中予以说明。
功能需求(functionalrequirement)定义了开发人员必须实现的软件功能,使得用户能完成他们的任务,从而满足了业务需求。
自我理解:
通常我们了解一个软件需要问这么三个问题:为什么要开发这款软件?这款软件可以做什么?这款软件是怎么实现的?三个不同的问题是站在不同的角度来提问的,同时也是软件需求的三个层次。
第一,业务需求,即:为什么要开发这款软件?这是客户或者机构提出来的问题。他们很抽象的表示要开发一个达到什么目的的软件。
第二,用户需求,即:这款软件可以做什么?这个答案要使用这款软件的人来回答,也就是用户。所以要和用户进行沟通,把客户描述的抽象的软件进行细化,明确软件的任务。一款软件产品(非功能单一的简单小软件)的用户可以通过它来实现自己的很多目的,或者一个系统可能不是一个人使用,有多个不同层次用户要使用,这样的产品在开发之前必须要确定用户需求,而且还要全,细。所以确定用户需求很重要。
第三,功能需求,即这款软件是怎么实现的。当软件目标有了,用户需求定了,剩下就是开发者的开发工作了。开发出满足用户需求的软件,这款软件所完成的工作就是软件功能。要怎么实现这个功能,开发者需要采用什么样的算法,数据结构,等这些就是功能需求。
当然并不是所有的用户需求都是可以实现的,这样进过分析人员分析,决定可以实现的用户需求,跟用户沟通,最后确定用户需求,在进行功能需求的开发。功能需求是从业务需求,用户需求逐步细化来的。
一个简单的小例子来说明一下:一个部门要让员工从北京到海南旅行。
部门对运输部说:想办法让员工从北京到海南。目的,业务需求
员工说:我们需要从北京到海南的工具。怎么做,用户需求
运输部给出答案:乘飞机。实现,功能需求
在运输部给出答案可以有很多如:乘飞机/坐火车/坐汽车/做轮船。为什么选乘飞机,这就是软件工程中具体的实施后而进行的选择了,不在多说。
希望对大家理解有帮助!不足之处请多指正。