需求分析心得
2班2组 臭皮匠小队
组员:陈柏宇 洪绵权 邹智翼 雷佳晨 梁耀升 吴语萱
这次创新课程我们组的项目内容是对接一个已开发的智慧纪检SSM后端,在安卓端可以实现涉及执纪执法监督监察工作内部流程的7个步骤,包括监督监察、线索管理、谈话涵询、初步核实、审查调查、案件处理、处分决定执行等的表单处理和审批处理。该项目实际上一个任务就是一个流水线,一个任务所需要经过的流程就是:发起、初审、审核、审批、批准、报告,每当一个人完成当前流程后,任务转给下一个流程负责人。由于我们是做在移动端的审核平台,所以发起部分暂时不用做。即使是这样,有一部分用户需求对我们来说依旧是难点,需要我们去努力攻克,例如:台账生成和文件比对、文件在线修改等等。这些难题已经有了一些技术上的部分突破,在代码上进行了技术测试,但是暂时还未测试在android端上的使用。
对于一个实际的软件项目来说,需求分析十分重要,我们需要弄清楚客户的需求,了解客户真正想要的是什么样的软件。在需求文档的编写过程中我们有很多的心得体会,首先是我们对于本次项目需求以及需求分析的实践的心得。
在上软件工程导论课的时候,我们对老师所说的需求分析过程还不了解,在进行实际的需求分析时,我们才深刻了解到了沟通的重要性。我们小组的任务是制作一个安卓端的业务前端,同时还有一个学长的小组,做的是服务器后端等等。所以说这次我们创新课程小组没有机会真正的接触甲方,而是通过学长他们,了解具体需求,即使学长对需求足够了解,但是仍有时存在表述模糊的情况,为了解决这个问题,询问沟通必不可少。在刚开始看到学长发的审批流程excel表格时,第一眼感觉用户的需求很复杂,共有8个流程,多个流程下还有子流程,并且让人感觉处理流程十分繁琐。但是经过学长详细的讲解之后,我们才了解了大致的流程。这个项目总的以学长做的网页端为主,我们根据网页端来进行设计安卓端,这就导致了一个问题,我们所开发的功能是动态的,需要跟学长对接,在需求分析的过程中不断跟进学长,指导老师来确认需求。我们需要清楚软件的用途,用户类别,项目背景,只有用心的进行需求分析,后续软件的开发才会更加顺利,错误的需求分析代价十分巨大。这时候,需求文档就显得很重要。我们和学长具体沟通了项目,把项目所必须实现的功能都写入了需求分析。刚开始进行需求分析时我们觉得十分头疼,审核流程比较繁琐,复杂,难懂,后来在组员们的分析下和文档的帮助下一点一点的开始有了点头绪,尤其是在原型设计完成后,可以直观的将软件的用途操作过程展示出来,让我们可以直观的感受到我们需求分析有哪些遗漏的点。这时候,项目的整体方向才清楚了很多,通过我们自己的需求文档,我们才有了具体实现和学习的目标。
通过需求分析确立的过程,我们认为,需求分析是为了在需求方的认可下准确地表达项目需要交付的产品应该呈现怎样的功能、界面、服务于怎样的人群而存在的。从而为整个项目建立一个基准。同时,我们也知道需求也会在工作过程中发生变化,开发者会根据过程中出现的问题补充新的需求,需求方也会添加新的条件,所以需求分析的关键点不在于强行固定一个不用再发生更改的需求,而是要在工作的过程中及时测试、交流和沟通,确保双方的需求和对功能的认可是一致的。这是我们第一次参与完整的软件开发,而第一步也是重中之重就是需求分析,让组员们明白了需求分析要付出更多的努力;要通过反复的分析、双方的不断沟通、讨论的不断深入才能统一开发方向,真正了解用户的需求,减少后续开发过程中的弯路;要从业务,用户,系统的层析明确需求,可以通过用例,访谈的方式来获得需求。
与此同时,我们也体验、理解了一些上课时所说的、软件人员在了解甲方需求时的一些困惑和困难。例如甲方对于软件方面的不了解性,或者是自身能力的局限性、与知识的不对等性,真正的甲方应该并不会想到什么东西容易实现,什么东西不容易实现,所以可能会在交流时出现一些问题。这次实际分析需求的时候,有很多甲方的目标和需求,其实学长他们也并不清楚,有些是甲方还没说,有些东西是自己还没摸透、想明白;例如我们画用例图的时候,原来是按照需求文档对应着画的,但是随后就发现了很多问题。在一些功能的划分上,很多表达不是特别准确,十分容易引起误解,比如在我们需求文档中的台账、台账因素。我们发现两者的描述十分混乱,于是我和一个队友就重新对着原型分析并做出了一些改进。到这里我们才体会到课上讲的需求文档的语言需要具有准确性的含义。如果不准确,我们后期开发的时候,就可能会出现理解性的错误导致功能不对;再比如在需求文档完成后还需要大家进行多次的检查。我们组的需求文档在用例图就出现了两次错误,在两次不同的检查中才发现。第一次是include和extend的关系没有写对,第二次是extend的箭头指向画反了,箭头应该指向最基本的用例而不是扩展的一方。
以前在开发的时候我们基本都不会写需求文档,因此很多时候都有一个共同的毛病,软件功能不确定是否已经完善。就拿结对编程举例,我们开发后期都是随时都可能新增或者删除一个功能,全凭感觉在写代码。但是如果有了需求文档,任务就明确了很多,我们的开发也更成熟了。而我们还能够体会到,在需求分析这个过程中沟通非常重要,无论是和甲方还是和团队,在权衡需求的实现难度的时候,就得和队友进行沟通,以确定是否能做出来这个效果。学长向我们介绍的东西,我们可能很难理解,我们的一些表达、一些提问学长可能也很难去认识到。但是最后其实只要用心的去分析需求,并且想方想方设法的去解决它,解决一些甲方包括学长的需求中提取出来的一些实际问题,那么这个需求分析就可以很好的完成,并且可以达到甲方的需求和目标。
总的来说,这次需求分析的确学到了很多是以前在正常的已经给出题目的编程题目中所没有学到的,继续加油吧。
原文:https://www.cnblogs.com/zzy2018/p/13978565.html