软件项目开发过程中的需求分析心得
一、 对于需求分析的理解
说到心得体会,不得不说一下整个需求分析的过程中,对于需求分析的理解是由浅入深的。从一开始的认为需求分析就是对于用户需求的挖掘,了解用户的所需的一个过程,难度在于对于需求的模糊性、隐蔽性、变化性的掌握而已,但当整体实施下来后发现,需求分析不仅仅是编程团队对于用户的了解,其实也是用户与编程团队相互交流的过程,通过一步步深入的交流,逐渐明晰整个需求的架构,逐渐掌握需求分析的方法。
二、 在需求分析中获得的感想
1. 项目流程的规范性
在项目需求分析的起初,由于需求分析的过程不是特别规范,导致整个分析的流程进展较为缓慢,因为是算法类项目,我们每个人都在想基于该算法的需求有哪些,可以做成哪些功能,进行会议讨论的时候也多是共性的需求,很多地方都没有挖掘到,导致整个需求的获取是畸形的,讨论课的老师对于需求功能的认可度也不高。后来总结了一些教训,我们从老师与助教为出发点,回归常规项目的需求分析,规范整个流程,多次与助教进行交流,他以客户的身份与我们共同探求分析,最后得出了一个比较合理的版本。由此可见,规范的需求分析流程是非常重要的,他可以保证需求分析的速度与准确性,是不可或缺的。
2. 交流能力的必要性
和普通的需求分析一样,客户与编程团队的交流是获取需求的主要方式,因此好的交流能力能大大提升需求获取的准确性与速度。不仅仅是用户与我们的交流,团队内部的交流同样是非常关键的,好的交流促成了好的分工,也就促成了好的工作成果,这在我们小组的工作中显得尤为突出,在需求的文档编写初期遇到了不少的难题,但因为小组成员之间的互相帮助,pm的指导,都很快并完美地解决了。特别的,因为我们小组项目是算法类项目,较为特殊,但通过与指导老师较为良好的交流,明确了项目的重点,并且得到了上一届学长的帮助(也是算法类项目),得到了一些解决方案。
3. 团队协作的重要性
团队协作是一个团队最为重要的一个点,是整个队伍连接的桥梁,因为有了良好的团队协作,我们才能在犯了错误后及时修改,在规定时间内完成了需求文档的撰写。团队协作的重要性还体现在强弱互补上,虽然需求的分析中不太能体现出能力方面的差异,但是在一些方面掌握的知识的多少也是有差异的,团队之间依据每个人擅长的分配了任务,做到了工作量的尽量分摊,给了能力较差同学的锻炼机会。在团队协作的过程中,我们也能感受到之后在工作中团队的能量,现在遇到的困难问题与解决方法都是之后可能会遇到的,不得不说确实教会了我们每个人很多。
4. 背景知识的帮助
老师多次说过背景知识对于一个需求分析团队的重要性,因为只有了解了你的用户领域的一些东西,才能站在他们的角度进行一定的分析,从而做到双方都满意。在我们小组的需求分析中,我们感觉到了背景知识的重要性,我们小组的算法是与瞳孔推荐有关的,我们在有关瞳孔的识别以及一些推送软件的推送方式等方面学习了许多知识,不仅仅扩展了我们的视野,也帮助我们明白了我们的项目需要做些什么,怎么做,要做成什么样子。不得不说,背景知识是需求分析的灵魂,如果只有好的皮囊而没有合适的灵魂,一个软件是不完美的,结合合适的背景知识,就能更好的契合用户的需要,真正给用户所想要的,甚至可以比用户看的更远。
三、 需求分析给予接下来任务的教训与指导
通过需求分析以及需求文档的撰写,不仅仅使我们学会了很多需求分析的一些技巧与知识,同时对于之后的一些工作,譬如数据库的设计,迭代开发等有了指导。在数据库设计中,我们通过反思需求分析过程中的得与失,第一时间分配好了工作,并且多次展开会议获取大家的建议与助教和老师的指导,较为完美并快速的得到了数据库的整体框架,然后通过良好的分工,擅长power designer的同学创建了数据库的图,擅长文档撰写的同学撰写了数据库设计文档,尽量让整个工作的各方面都做到我们所能做到的最好。在迭代开发计划中,我们和助教进行了交流,分配了每个人的工作,将整个项目大体分成了算法,前端,数据库设计这几个方面,尽量发挥每个人的优势。
需求分析的获取让我们组内的每个人都学会了很多,相信需求分析得到的经验教训与获取的心得会让我们在之后的项目与工作中受益匪浅。
也感谢各位老师和助教的支持!!
软件1801
Helloworld小组
李星沛 徐颖 李翰林 肖云杰