需求分析心得--十万伏特人间皮卡丘
“在需求分析、设计阶段的里程碑,主要交付产物是需求分析书、系统概要设计文档和数据库设计文档。交付产物都需要双方评审通过才能达到里程碑要求。”
前言:
本次项目可以说是该项目成员第一次参与到一个相对完整的项目当中,团队最后的目标是在规定的时间内完成对项目的构建,而理解项目的需求其实算得上是我们所面对的较为困难的任务之一。
我们从理解需求分析,直到清楚项目的需求,费了不少功夫,一直在不断调整权衡我们的需求和实现难度,然而就是在这样的过程中,我们对需求分析的重要性有了更深层次的认识。
我们小组的项目是实现一个基于WiFi的人体动作识别系统,主要是利用CSI来收集特定WiFi 环境下因人类活动干扰产生的数据,将数据进行预处理后再加以分析,从而获取人类活动的相关信息,以到将人类动作还原的目的。
进行需求分析过程:
需求获取与分析阶段

首先通过已有资料分析项目所需实现功能:
我们通过阅读项目指导老师下发的文件,对这个项目究竟要做什么有了大概的了解,然后针对一些细节的和不清楚的地方和老师进行交流,但是在和老师交流之后,我们仍然还会出现其他存在的问题,这也说明了需求具有模糊性和隐蔽性的特点。
于是通过我们小组多次讨论分析,决定先根据自己的理解作出原型。
通过完成原型进一步明确需求:
我们结合相关论文和大多数系统的通用功能,分析总结出了我们的项目应该具备的主要功能,如用户登录注册,用户管理等通用功能以及项目的核心功能查看动作信息。然后做出了第一版原型。
在小班讨论课上展示原型后,胡老师对我们的项目产生了一些疑问,觉得我们所做出的原型中,其他的功能如登录注册,用户反馈,用户管理等很多,但是有关项目本身的核心内容并不多,只有查看动作数据等功能,而且这些功能并没有什么实际的用处,用户并不能通过这些数据知道他作出了什么动作,动作的模拟也比较简陋,不能将用户的动作真实的模拟出来。我们针对老师的建议,对原型和项目本身的内容作出了改进,然后又与项目指导老师进行交谈,最后作出了第二版原型,在第二版原型中我们具体划分了三类用户,不同的用户类别具有相应的权限和实现的功能。这说明需求具有多样性和变化性,我们需要根据不同的用例具体分析。


制定规格说明书

基于之前对项目的理解以及记录下来的需求,我们首先结合规格需求模板对三个层次的需求(业务需求,用户需求,系统需求)进行规格说明。这一步骤是在初步确定需求后与原型设计同步进行的,由一部分组员制作原型,一部分组员制定规格说明书,然后交换互相修改。在编写需求规格的过程中,也在不断地对需求进行综合考量与改动,

需求验证与变更

在编写完需求规格说明之后,通过进一步进行有效性、一致性、完备性及现实性检查,对项目需求进一步验证与完善。并且结合原型与指导老师的意见,我们多次讨论,对需求进行改进。
其中最大的变更就是我们的目标群体以及平台的变更。在第一个版本中,我们的目标群体主要是普通的用户,就是对专业知识没有太多了解的群体,这样就存在一个问题,我们的系统呈现出来的有关动作的幅度和相位的曲线图以及异常检测的曲线图,他们并不能看懂,这就意味着这些数据对于他们来说并没有什么用处,但是这些却是项目的重点核心内容,于是我们想到了扩展用户群体,将研究WiFi数据的研究人员加入到我们的用户群体中来。对于平台的变更,起初我们认为手机端APP使用更为广泛,对于用户来说可能更加方便一点,但是后来基于两点原因改为了网页,第一就是对于新增加的用户群体,使用电脑在网页端查看动作的各种信息会更加清楚方便,第二在考虑如何实现模拟动画时,考虑到需要使用matlab,这一点手机端APP做起来可能会比较困难。
遇到的困难及解决过程:
1. 该系统所面向的用户不明确
起初我们对该项目的目标客户不明确,导致在需求分析方面不知道从哪里下手。
当制作原型时,就必须要针对使用该系统的不同人群进行划分与相应功能实现,而通过对系统的用例进行分析,并结合不同用户在其具体场景下对动作识别的使用,我们终于对需求有了更多更完善的想法。
2. Android端APP VS. 网页
起初打算设计Android端APP,用户可以在手机上对动作数据进行查看。但是在进行了一周的讨论与分析之后,我们还是认为在电脑网页端查看用户体验感和亲和感更好。
3. 验收方式
由于我们的项目是需要基于一个条件非常严苛的实验室下进行,这就意味着验收这个环节对我们来说是一个非常困难的事情,我们很难在验收时提供这样一个环境,也很难保证结果会与平常的实验保持一致。
于是在第二次讨论前,我们收集了很多项目相关的资料,我们得知项目本身就是一个难以实现实时监测的系统,在和老师不断交流沟通后,老师也同意了暂时先不考虑实时监控的问题,让我们先做出相应的算法即可。
收获与总结
1. 感受需求特性
在本次需求分析及规格说明完成过程中,我们深刻地感受到需求所具有的的四个特性:模糊性、隐蔽性、多样性、变化性。我们需要针对不同的特性合理地制定需求获取策略。
2. 原型与需求相互促进
在制作原型过程中,我们真实地做到了原型开发的五个步骤:快速分析、构造原型、运行原型、评价原型、修改。并且在原型开发过程中,我们明确了并完善系统需求,确定实现目标,同时也提升了我们小组的交流协作,挖掘与分析信息的能力。
3. 解决问题
我们的项目是偏向于算法一点的,主要是通过对WiFi信号数据的处理,分析出人体动作,所以并没有太多的可展示的核心功能,所以才有小班老师提出的那些问题。
4. 明确需求
我们在需求分析中遇到的最大的困难就是需求不明确的问题,只能根据自己对项目的理解作出判断和设计。这也说明需求的获取与分析是一个困难且复杂的过程,我们需要明确好获取与分析步骤,找到合适的方法获取需求。
5. 敏捷开发
由于需求具有变化性,导致我们整个前期过程几乎都会有一些需求的调整,但是我们需要适应变化,这也是为了更好地实现系统。
6. 审美提升
提升审美,做出美观的用户界面。作为工科生,审美还是非常重要的。在设计原型时,虽然已经知道了系统需要哪些功能,但是进行的还是很缓慢,问题在于用户界面的美观,我们做出的界面总是看起来不太美观,所以开发项目不仅要技术还有审美。
7. 文档管理
“大部分开发人员都认为理解需求就好,不注意更新文档。这样会影响后续开发和维护工作。”
如果项目组中有成员不熟悉文档,也就对项目当前开发进度及讨论成果不了解,当与其他成员沟通后,耗费一定的时间成本。需求变更记录文档也极为重要。需求变更影响到项目开发、项目测试、项目验收。如果需求变更没有及时调整,都会影响到整个项目进度。
在项目处于各个阶段都需要严格管理文档版本,保持版本库的文档是最新的。
8. 团队沟通
“团队间沟通顺畅有序,只有这样,概念完整性才能被正确贯彻到各处。”
巴比伦塔的教训也说明了合理有效的沟通对于项目管理与实施及其重要。所以在该项目实施过程中,我们小组尽量保证每周都有例会,保证项目成员都能同步了解最新信息。
9. 合理的进度安排
“当意识到进度的偏移时,下意识(以及传统)的反应是增加人力。(这种行为就像使用汽油灭火)”。
在本次需求分析的阶段,我们项目小组也感受到进度安排的重要性。如果当前进度没有实现,将会影响以后的进度,造成很大的灾难。所以,一定要注意进度安排,合理规划好项目开发时间。
当然这并不意味着需求分析就彻底结束了,在我们这次类似与敏捷开发的过程中,需求分析近乎均匀地贯穿于项目的整个生命周期,整体需求也将会一直有着细微调整的。在接下来的时间里,我们会认真、仔细、严谨地去对待,设计阶段的同时考虑需求的变化性,只有更加灵活才能够在需求发生变化时方便地去修改。
“一切都将运作良好,每项任务仅花费它所“应该”花费的时间。”
我常想,每个人都有良好的希望,或者说有梦想,但是梦想归梦想,现实归现实。脚踏实地,认清现实,是做好任何事情的基本要求。

浙公网安备 33010602011771号