高等软工需求分析阶段总结

 前言

  本篇文章旨在对北航研究生课程——高等软件工程之需求分析阶段进行梳理。对整体工作流程进行记录,根据需求分析过程,分析对应软件开发的挑战。最后,对学到的知识进行简要梳理,进行简要的总结与反思。

  笔者参与的项目为“社区疫情防控追踪系统”,具体要求为基于对生活社区的疫情防控需要,建立一个轻量级易用的追踪系统,可以追踪社区每天进出的个人、每个人的状态,并能在社区间共享相关信息以实现风险评估和预警传播。该项目要求在手机上实现个人使用的程序(诸如微信小程序)。

  项目初期,笔者团队敏锐地了发现了本项目了两大特点:该项目是社会热点问题&需要实际开发。社会热点意味着团队需要仔细查阅当前已经上线其它较为成熟的疫情防控系统,系统需求分析一定要扣紧现实,而在评审阶段,老师对项目会较为感兴趣,同时要求也会更苛刻,当然项目也容易出彩。而需要实际开发意味着在前期分工时,需要考虑到文档撰写和工程开发的工作量,对团队人员进行合理分工。由于项目团队均为计算机专业的研究生,并不是企业中的产品经理、开发工程师,每位成员均具有一定的软件开发和文档撰写能力,所以分工需要根据工作量、个人能力及个人意愿,且尽量保证各成员工作量的平均。

  阐述一下笔者本项目的期望目标,笔者不是软件工程专业的学生,以后也无从事该方向的意愿,所以笔者的目标为“高效、快速的完成课程内容”。不使项目变得很low,也不奢求做到较高水平。依笔者看来,软件工程文档撰写能力在整个计算机专业素质体系中占有一席之地,因为它是工作内容的基础,表达不清楚,何谈实际开发?但是在需求分析的过程中,一定要做到不空谈,注重团队交流的有效性、高效性,每次都要明确本次交流的具体目标,这样项目便能高效地迭代下去。

  在这里,感谢笔者团队的好伙伴,感谢组长大人的强力carry,谢谢老伙计们。

 需求分析过程记录

  笔者团队需求分析阶段环节主要如下:

  l  进行初步的项目范围、项目目标讨论。明确了项目交付物为微信小程序和一系列开发文档。进行初步分工,两名同学进行项目开发,同时兼顾相对少量的文档,其它同学进行各过程的文档撰写。

  l  随着课程的深入,进行常用需求分析手段的学习,包括用例图、用例描述(RUCM)、类图、顺序图、流程图、状态图、活动图等。

  l  绘制初版项目用例图、类图,对重点用例进行用例描述,绘制时序图,进行首次检查。

  l  由于首次检查笔者团队的成果并不十分理想,团队组长对先前内容进行系统整体,辅以老师的建议及自己的思考,撰写了一份项目各模块功能需求的文字描述文档,对项目具体范围,主要用例的功能需求进行了描述。所有组员对文档进行阅读,同步对项目的理解,并对文档提出修改建议。最终形成了团队成员都了解且赞同的需求描述总结。这一文档也是后续需求分析文档的“蓝皮书”。

  l  对先前学长项目需求文档的结构进行分析,明确了需求文档“一个总体用例图、一个总体类图、每个用例对应一个用例文字描述&一个RCUM和一个顺序图、重点用例状态图、多个重点用例整体活动图”的主体内容。

  l  根据用例进行分工,每个成员进行4个用例左右的撰写工作。在文档同步方面,我们使用了onedrive云存储服务,避免了单独对各成员工作进行整合的时间开销,同时各成员也能看到其它成员的进度,作为参考同时也是鞭策。团队组长主要负责文档内容的审核与监督,当团队成员对项目某一部分出现不理解,亦或对绘图规范等出现疑问时,由团队组长进行总结。在需求文档撰写完成后,抽取文档中的重点内容,进行了PPT的制作并参与了项目需求评审,结果证明,我们的进步还是很大的!

 软件开发的挑战

  经过需求分析,笔者认为疫情疫情防控追踪系统的挑战主要有如下几点:

  l  数据流的管理

  本项目涉及的数据来源有很多,包括居民用户每日上报的个人健康数据、小区门口进出数据、小区各居民楼栋进出数据、其它社区的风险等级数据等。对于各种数据,需要建立相应的导入导出接口,以实现对数据的管理工作。

  l  用户健康状态更新的及时性

  本项目将居民个人风险等级划分为红、黄、绿三个级别,当每日居民产生打卡记录或本社区/其它社区风险等级发生变化时,需要判断居民个人风险等级是否需要更新。由于疫情防控的特殊性,系统应当对传入的数据进行及时处理。

  l  同小区不同楼栋间疫情防控的逻辑细节

  在需求分析分析阶段,项目团队将小区看成一个整体,并未涉及小区不同楼栋间的作用关系,而需求评审中老师提出了此需求。增加各楼栋进出记录后,如何丰富小区内部的疫情防控逻辑体系?这是非常需要完善的。

学到的东西

  笔者在此次需求分析中学到的东西主要包括如下几点:

  l  RUCM的绘制

  RUCM为北航老师团队开发的用例建模模板,具有一系列规范性的限制。通过需求分析,笔者也算是体验了前沿了软件工程团队科研成果。

  l  状态图的绘制

  虽然状态图的绘制较为容易,但是原先笔者接触不多。此次进行了几个重要用例状态图的绘制,对状态的抽取和状态转移关系有了更加深刻的认识。

  l  常用UML图绘制能力的提高

  俗话讲,“画的越多,画的越快”。这次需求分析,笔者又多画了很多图呢!

  l  需求分析阶段类图的学习

  笔者以前只绘制过详细涉及阶段的类图,相对而言,需求分析阶段的类图更偏重功能性,不太在意具体实现的变量函数等。笔者没有负责类图的撰写,但在组内大佬撰写完成后,笔者进行了学习,初步了解了需求类图应该包含的内容以及绘制方法。

  l  Onedrive的使用

  相对git等工程版本控制系统,笔者第一次在文档撰写方面使用类似的管理工具。将共享文档从云上拉下来后,文档就如同本地一样,可以轻松的进行编辑,十分方便。

  反思与总结

  经过需求分析阶段,笔者认为作为一个好的项目团队,应当具备的核心能力如下所示。同时,这也是笔者所在团队在接下来的时间里,需要提高与完善的。

  l  对项目整体、各模块功能的理解

  项目团队应当共同讨论项目内容,虽然每个成员撰写文档的部分不同,但对项目目标及非自己撰写部分的功能都要有所了解,这是需求分析初期团队内部讨论得出的。

  l  需求分析各类图的绘制能力

  绘图能力是一个逐渐积累的过程,在绘制量逐渐增大的过程中,绘图的规范性和速度都会自然提升。一个没有接触过UML图的人,希望其在短时间内绘制高质量的图例,显然是不现实的。绘图是各类软件工程文档的基础,相对文字描述,绘图可以从一个角度更加直观有效地表达对项目某功能的理解,是需要也是必要的。

  l  对项目的态度

  本项目是一项普通的课程作业,由团队合作完成。首先需要各成员都投入一定时间精力,积极地完成自己的部分。其次要注重配合,结合实际情况,每个人在项目的每一环节中承担不同的角色,取长补短,争取利益最大化。

posted @ 2020-12-10 19:32  生命如水  阅读(232)  评论(1编辑  收藏  举报