我今天读了一篇非常好的博客,是关于如何做需求分析的,需求分析在整个软件工程中都是极其重要的一环,所以学好需求分析对于我们想从事软件开发的人来说是重中之重。
通过博客中我了解到,需求分析主要有两大重要的模块,一个是需求调研,一个是需求分析。在需求调研阶段,需求分析人员需要搞清楚客户需要的大概的一个模型,注意与客户沟通的技巧,需求分析阶段我们需要根据调研的成果按照一定的流程进行系统的分析。
一:需求调研
在初步进行认识的时候,不应该唯唯诺诺,需要深刻的了解我们的系统边界,否则这个系统将会在人为的因素下变得越来越大,我们应该运用我们专业知识,提出比客户的原始需求更加合理、可操作的解决方案,让客户感觉你说的正是他们想要的。如果能够这样,客户不仅能够欣然接收你提出的方案,而且会感觉你非常专业,你在客户心目中的形象也会无形中提高,使你有更多的机会提出有利于开发的可行方案,降低开发的风险。这将会形成一个良性循环。在初识阶段交流的时候,应该划分清楚角色,对高层领导讨论宏观的问题,不要谈论细枝末节,对中层领导谈功能的定义、业务流转的衔接、查询报表的设计,不要谈论具体操作,对基层人员,是需求调研的重点对象,同时需要注意要在需求调研阶段降低软件的多元化需求。
2. 拜访
需要深入理解中国文化,中国人做事重视情感,我们需要可获得理解与包容,所以需要和客户建立长期友好的关系。同时需要分析客户人群中谁是我们的是盟友,对他们没有利益影响的人群,使我们需要争取的对象,对待他们的态度是报着谦虚谨慎、相互尊重的态度,大方地与他们交往。当他们帮助我们以后,真诚地予以感谢。对待那些对我们怀有敌意的,我们要胸怀坦荡,怀抱诚意,这对完成我们的工作极其重要,这是感情投资。
3. 研讨会
采取研讨会的形式可以缓解因为地方实际情况不同导致的个性化问题,这需要公司从各省市抽调业务人员,集中在一起进行研讨,争取形成同一版本,在讨论的时候可以采取集中式的研讨使得差异最小化。也可以采用将业务人员划分为多个业务组的方法。
4. 需求研讨
在需求研讨的时候,最主要的问题是,客户提不出正确的需要。这个也分为多种形式,对软件一无所知的,能提出一些业务需求,但当软件做出来摆在自己面前时,需求就变了,能非常详细地提出业务需求的半专业人士,针对不同的用户需要,了解他们他们提出的所有原始需求,他们提出这些需求的原因,有神魔目的,只有这样我们才能深刻了解需求,做需求分析,眼界不能仅仅停留在软件本身,应当更开阔一些,应当扩展到跟这个业务有关的那些领域知识中,无法实现的需求,我们应当耐心地说服和引导客户。
5. 需求捕获和迭代
需求捕获就是将客户的需求精准的捕获到,善于从客户嘴中获取他们没有说出来的需求,这需要我们学习业务领域的知识,同时客户嘴里的不一定是正确的,我们应该具有专业的眼光,在适当的场合提出我们的主见。迭代就是不断重复需求捕获,需求整理和需求验证的过程,
二:需求分析
1. 功能角色分析与用例图
这个就涉及我们专业领域的知识,首先我们需要对功能和角色进行梳理,采取的方式可以是绘制用例图,运用用例视图对业务需求进行分析、抽象、整理、提炼,进而形成抽象模型的过程称之为用例建模。在绘制用例图时应该站在用户的角度去考虑问题,需要让客户能看得懂。
2. 业务流程分析
通过功能角色分析,整个系统的脉络已经可以描绘出来,我们需要把系统分成几个功能模块,为每个功能模块绘制用例图,然后我们需要对整个系统进行细化,了解这个系统的业务流程,我们可以用以下思路来进行我们对流程改进的分析:清除低效环节、简化业务瓶颈、整合可用资源,以及将繁琐任务自动化。
3 用例说明
图形的最大优势是能够形象生动地描述我们的分析,但它最大的缺点是会遗失许多的细节信息,因此我们必须要对它进行进一步的文字描述。
剩下的主要是建模的内容,对于我们需求分析这门课程来说,重中之重是跟客户的沟通,了解客户的需求,用专业的角度来审视我们需要设计的系统,
总结需求,和客户多交流,争取合作完成我们的项目。
接下来是我通过图示的方法展示对需求分析内容的整理。