一、什么是需求分析呢/h3>
软件需求分析就是把软件计划期间建立的软件可行性分析求精和细化,分析各种可能的解法,并且分配给各个软件元素。需求分析是软件定义阶段中的最后一步,是确定系统必须完成哪些工作,也就是对目标系统提出完整、准确、清晰、具体的要求。
通俗的讲,对用户的意图不断揭示和确认的过程,要对经过系统可行性分析所确定的系统目标做更为详细的描述。
下面举个栗子:
假如你是个软件工程师,夏天到了,有位客户跟你说要给他们的家禽养殖场开发一个温感控制系统,这个时候要需要与客户沟通,来确定客户到底想要一个什么样子的温感控制系统。我们应该注意三点:
1 . 准确的理解和描述客户需要的功能。
客户说,我的温感系统系统可以感知当前天气温度,当温度过高时,采取洒水模式给环境降温,当天气太潮湿,可以开启除湿模式….客户滔滔不绝的讲了一大堆,你也都非常忠实的按照自己的理解再一一的向客户描述一遍,以便于确认客户的需求是否正确。
2 . 帮助客户挖掘需求。
等客户把自己的需求说完了,你发现客户没有跟你说该养殖场的规模是多大的,是在露天的环境下还是在室内的,于是,你向客户提议说:“你看,咱们这个养殖场的规模是多大的,是在室内呢还是在室外,我们应该怎么样设计监控范围呢,客户连连的拍着脑门说,我差点给忘记了,我们这个养殖场是室内的,有两层,一层有500平左右。
3 . 分析客户需求的可行性
客户临走时又说,对了,一楼二楼的情况不太一样,二楼比较热,家禽很多会中暑,能不能二楼的跟一楼的监控是分开的。你这么一分析,客户这要求,按照目前的技术可没法做啊,于是,你向客户提议,一层使用一个温感控制器,单独监控。
二、软件需求分析难点又在哪里呢/h3>
有几种原因使需求分析变得困难:(1)客户说不清楚需求;(2)需求自身经常变动;(3)分析人员或客户理解有误。
1 . 客户说不清楚需求
有些客户对需求只有朦胧的感觉,当然说不清楚具体的需求。例如谈恋爱的时候,女生总希望男朋友能有读心术猜出自己的心事。每次生气总会扯出很多事情,然后始终不说清楚为什么生气,想要的是什么。
有些客户心里非常清楚想要什么,但却说不明白。你可能很不以为然。就举日常生活的事例吧,比如说买鞋子。我们非常了解自已的脚,但没法说清楚脚的大小和形状。只能拿鞋子去试,试穿时感觉到舒服才会买鞋(居然也有神通广大的售货员,看一眼客户的手,就知道应该穿什么样的鞋)。
如果客户本身就懂软件开发,能把需求说得清清楚楚,这样的需求分析将会非常轻松、愉快。如果客户全不懂软件,但信任软件开发方,这事也好办。分析人员可以引导客户,先阐述常规的需求,再由客户否定不需要的,最终确定客户真正的需求。最怕的就是“不懂装懂”或者“半懂充内行”的客户,他们会提出不切实际的需求,天马行空,那么沟通和协商都会很困难。
2 . 需求自身经常变动
都说女人是善变的,但是其实生活中善变的不止止是女人,你的上司,你的客户变脸比变天还快 ~
需求分析时要注意的问题:
(1)尽可能地分析清楚哪些是稳定的需求,哪些是易变的需求。以便在进行系统设计时,将软件的核心建筑在稳定的需求上,否则将会吃尽苦头。
(2)在合同中一定要说清楚“做什么”和“不做什么”。如果合同含含糊糊,就要跟客户确认清楚。
3 . 分析人员和客户理解有误
俗话说,一千个读者有一千个哈姆雷特,每个人的思维模式和理解方法都是不一样的,你不是客户肚子里面的蛔虫,客户也不是你的大脑反射弧,沟通是解决这些问题的最好方式。
软件系统分析人员不可能都是全才。客户表达的需求,不同的分析人员可能有不同的理解。如果分析人员理解错了,可能会导致开发人员白干活,吃力不讨好。所以分析人员写好需求说明书后,要请客户方的各个代表验证。如果问题很复杂,双方都不太明白,就有必要请开发人员快速构造软件的原型,双方再次论证需求说明书是否正确。
由于客户大多不懂软件,他们可能觉得软件是万能的,会提出一些无法实现的需求。有时客户还会把软件系统分析人员的建议或答复给想歪了。
有一个软件人员滔滔不绝地向客户讲解在“信息高速公路上做广告”的种种好处,客户听得津津有味。最后,心动的客户对软件人员说:“好得很,就让我们马上行动起来吧。请您决定广告牌的尺寸和放在哪条高速公路上,我立即派人去做。”
三、需求分析的分类
需求分析一般可分为功能需求、非功能需求和领域需求
1 . 功能需求:
功能需求主要说明了系统实际应做到什么。这是用户最直观也是最主要的需求,如系统的输入输出、系统能完成的功能以及其它相关处理等;
2 . 非功能需求:
非功能需求又称“约束”,它主要从各个角度对系统起约束和限制作用。如响应时间、存储效率、 表的规格和界面的样式等
3 . 领域需求:
四、需求分析的不同层次
软件需求包括三个不同的层次:业务需求、用户需求和功能需求(也包括非功能需求)。
1.业务需求(business requirement)反映了组织机构或客户对系统、产品高层次的目标要求,它们
在项目视图与范围文档中予以说明。
2.用户需求(user requirement) 文档描述了用户使用产品必须要完成的任务,这在使用实例(use
case)文档或方案脚本说明中予以说明。
3.功能需求(functional requirement)定义了开发人员必须实现的软件功能,使得用户能完成他们的
任务,从而满足了业务需求。
五、如何进行需求分析
1、需求分析的渠道和过程
2、需求分析的过程
以上例子可能描述不够严谨,有些描述是 上摘录的,如有讲述不对的,欢迎指出,感谢 !!!
文章知识点与官方知识档案匹配,可进一步学习相关知识算法技能树首页概览34618 人正在系统学习中 相关资源:临时文件-细说php精要版,完整扫描版-管理软件文档类资源-CSDN文库
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!