一、博客说明
本文写于上完第一节《软件需求与分析》课程之后。第一节课上老师对软件需求分析的定义进行了说明,然后通过结果案例的分析阐述了软件需求分析在软件项目开发中的重要性。在听课之后在老师的推荐下,我们阅读了CSDN社区中一位前辈发表的博客(博客地址:http://blog.csdn.net/yqmfly/article/details/7679781),对如何做需求分析有了更深入的理解,这里将总结自己在阅读了此篇博客之后的收获,以期获取更大的进步。
二、软件需求与分析需要掌握的必要的内容
(1)需求分析的具体内容
业务需求——反映了组织机构或客户对系统、产品高层次的目标要求,通常在项目定义与范围文档中予以说明。
用户需求——描述了用户使用产品必须要完成的任务,这在使用实例或方案脚本中予以说明。
功能需求——定义了开发人员必须实现的软件功能,使用户利用系统能够完成他们的任务,从而满足了业务需求。
非功能性的需求——描述了系统展现给用户的行为和执行的操作等,它包括产品必须遵从的标准、规范和约束,操作界面的具体细节和构造上的限制。
需求分析报告——报告所说明的功能需求充分描述了软件系统所应具有的外部行为。“需求分析报告”在开发、测试、质量保证、项目管理以及相关项目功能中起着重要作用。
(2)需求分析的三个角度
软件需求包括三个不同的层次:业务需求、用户需求和功能需求;业务需求反映了组织机构或客户对系统、产品高层次的目标要求,它们在项目视图与范围文档中予以说明。 用户需求 文档描述了用户使用产品必须要完成的任务,这在使用实例(use case)文档或方案脚本说明中予以说明。 功能需求定义了开发人员必须实现的软件功能,使得用户能完成他们的任务,从而满足了业务需求。
(3)需求分析的流程
需求分析工作是一个迭代的过程:需求捕获->需求整理->需求验证->再需求捕获
三、每个内容点的具体阐述
(1)在需求分析中要完成对软件功能范围的界定,不能被客户牵着鼻子走,在需求阶段就把任务量做一个限定,不能很可能被被客户拖垮
(2)要深入理解客户在工作过程中的业务需求,但是不意味着要让软甲开发人员或者是需求分析人员成为相关领域的专家
(3)需求分析不是一遍就可以了,要进行反复的迭代,反复的确认,直到确定了最终的需求方案之后。
四、关联关系示意图
五、个人感想
(1)这篇博客真长。。。。读了好久,,,不过内容中真很充实,干货很多,也让我明白,需求分析更需要在实际工作中锻炼,在学校里只能是纸上谈兵,最多能做一个需求“记录员”而已
(2)单从需求分析上讲,软件工程真的是一门与人打交道的一门学科啊。与人相处和交流的复杂程度要远远超过机器的。
(3)需求分析真的太重要了,两方面。一,大部分软件工程项目的失败原因最后都可以归结到最初的需求分析没有做好。第二,需求分析没做好造成的频繁返工,会让程序员都崩溃掉的,严重影响从业自信心,东软那个失败项目组的那帮人最后都离开了软件开发领域,啧啧,吓到我了。千万要做好需求分析啊。
(4)还是人的问题,需求分析中需求捕获过程也反映出这个社会人情的复杂,要分清楚各个岗位上的人,用不同的策略进行交流,最终目的是得到一份全面的具体的需求分析报告。什么人都会遇到,要以工作目的的实现为根本。
六、经验总结
(1)在项目开始阶段的三个建议:1)树立良好的职业威信;2)进行详细角色分析,将与会各方代表对号入座;3)从宏观上制订目标与方案。随后的工作,就是与各方代表建立联系,逐一拜访他们,将需求调研工作一步一步进行下去。
(2)需求调研不是一蹴而就的事情,要与客户建立长期友好的关系。对一个群体客户而言,要分析这个人群中,谁有意愿支持我们,而谁却在自觉不自觉地阻碍我们。对不同性质的人采取不同的策略,最终要在客户中结识一批可以帮助我们的人依靠他们去学习和认识业务知识,收集业务需求,为日后的软件研发提供素材。
(3)业务研讨会是重要的,但同时又是灵活的,没有一个定式,甚至有时都不能称之为会议。项目经理需要根据实际情况,合理地与客户组织研讨会。但不论怎样组织,必须注意两点:有效抑制个性化差异、分模块组织专项研讨会。
(4)需求分析不是一种简单的你说我记的收集活动,而是在大量业务分析与技术可行性分析基础上的分析活动。要在需求分析过程中为客户提供可行性的解决方案,只有建立在这种分析基础上的软件研发,才能保证需求的正确与变更的可控。
(5)需求捕获->需求整理->需求验证->再需求捕获。。。需求分析要按照迭代的过程,每次多理解一些,再多理解一些,更多理解一些,逐渐深入的过程。每深入一步,我们的软件就更接近客户的满意。
(6)我们的需求捕获最初是源于企业现有的操作流程,但当我们深入理解了客户现有的操作流程以后,应当有意识地发现那些不合理的部分,并最终提出更加合理、更适于信息化管理的流程。如果需求人员能上到这样一个高度,我们的需求分析就进入了一个更加崭新的层
(7)要做好业务流程分析,用例说明,查询报表分析,通过一系列规范的软件工程手段做好需求分析