688
社区成员
发帖
与我相关
我的任务
分享| 这个作业属于哪个课程 | 2023软工W班 |
|---|---|
| 这个作业要求在哪里 | 作业要求 |
| 团队名称 | Machine Guard |
| 这个作业的目标 | Alpha冲刺总结随笔 |
| 其他参考文献 | 无 |
在项目开始前,项目拟实现下列主要功能(《代码规范、冲刺任务与计划》):
- 原型实现
- 3D模型能够展示基础的楼层、机房、设备及其信息
- 后端实现各实体类的增删查改
- 实现基本的温度预测和CV目标检测模型及其接口
- 实现OAuth权限
在开始项目的第一次工作会议上,我们发现有些功能对于整体项目的作用不明显。受限于易用性、交付保证等方面的考虑,我们对项目预期做了如下调整:
| 开始时间 | 结束时间 | 内容 |
|---|---|---|
| 4.29(冲刺自5.2起) | 5.3 | 后端实现数据表以及表间关系搭建 后端实现部分增删查改的搭建,不含业务逻辑 前端确定框架以及项目结构 部分公共控件的静态实现 主页和登录界面静态实现 大模块的基本页面构成实现,不含数据交互和渲染 |
| 5.4 | 5.6 | 后端实现权限系统 前端搭建3D模型 全部前端交互实现 |
| 5.7 | 5.9 | 实现CV模型和ML模型 实现传感器对接 完成统计和通知的业务逻辑 |
| 5.10 | 5.12 | 测试及其报告 相关文档产出 项目整理统筹,查缺补漏 |
结合需求文档、系统设计文档,预计实现的功能性需求如下:
项目使用每天日报反馈+每3天进行项目阶段跟踪会议的形式实现项目进度控制。
给出项目在冲刺10天的每天实际进展:
| Day | 实际进展 | 关键实现 |
|---|---|---|
| 1 | 数据库结构建立完毕; 用户、机房、楼层实体的CURD实现(不含权限); 前端搭建总体基本结构(导航栏和次级导航,全局样式规定) | 数据库 |
| 2 | 验证码登录鉴权; 设备、传感器、日志CURD实现 统计界面静态(不含样式调整) 主页 | 统计界面 |
| 3 | 管理员权限控制 日志界面静态 模型构造器搭建,实现楼层几何建模 接口接入权限控制 完善统计界面静态 | 模型 |
| 4 | 设备统计部分业务逻辑 日志页面样式优化 搭建测试平台 完成统计界面静态 楼层单层几何建模 | 测试平台 |
| 5 | 日志界面静态完成 楼层和楼层单层文字信息纹理 HA传感器网关接入 传感器相关接口 三层权限体系初步 | HA传感器 |
| 6 | 管理员用户控制静态 机房页面静态实现 统计界面中间数据层 HA传感器信息定时拉取 重封装模型 全局异常处理 接口测试准备 | 机房页面 |
| 7 | 管理员用户控制中间数据层 测试样例设计 登录界面和接口对接 修复接口bug | 登录 |
| 8 | 前端用户状态管理 接口报告生成 统计界面数据对接 日志界面数据对接 | 统计模块、日志模块 |
| 9 | 模型动态渲染实现 机房界面数据对接 用户界面数据对接 | 机房模块、用户模块 |
| 10 | RTSP推流服务部署 设备模型细节补充 交付检查 | 监控模块、整体系统 |

Alpha冲刺为非生产环境测试,因此本界面仅为模拟部署,部分需要设备接入公网的服务,比如传感器网关、监控系统等可能不能在该线上环境使用。同时,为了防止验证码短信滥用,该部署版本关闭了验证码登录。
机房设备信息模拟采集自CVM。而传感器网关部署在宿舍内网环境,基于HA提供的服务。监控使用RTSP拉流推流。
用户进入页面之后,首先进入的是主页。主页介绍了项目的基本信息,可以通过这个页面的顶部的导航栏进入具体的模块。

首次使用系统的用户进入任意一个模块都会跳转到登录页面。登录可以使用账户名密码登录,也可以使用手机号验证码登录。必须首先选择普通用户和管理员,获取全局的权限状态。

系统基于JWT实现鉴权。前端登录之后JWT有效期为7天,过期后将自动放弃JWT;用户也可以主动退出登录,退出登录时JWT失效(视为过期)。

位于其他模块时点击左侧导航栏,或者在home界面时点击上方的监控导航栏,将跳转到监控模块。首次登录后也将跳转到登录模块。
监控有一个次级导航栏用于定位到某一个楼层,或者用于在总体视图和单一视图之间切换。
楼层整体视图用于3D建模展示机房在整栋楼中的分布情况,方便用户能够直观地定位到自己想要的机房。每个机房上标有机房所在的楼层和机房名称。

默认地,监控模块的入口视图是楼层总体视图。如果在从其他视图到要切换到总体视图,需要在次级导航栏选择ALL选项卡。
在楼层总体视图,用户可以右键拖动模型进行模型平移,可以滚动滚轮进行模型放缩,也可以左键点击某个机房直接将视角转移到对应机房的正前方。

左键双击某个机房将跳转到对应机房的页面。
单一楼层视图用于3D建模展示机房在某层楼中的分布情况,方便用户能够直观地定位到自己想要的机房。每个机房上标有机房名称以及一些基本的环境信息(温度和湿度)。

当用户点击左侧次级导航栏的对应楼层时,跳转到对应楼层的单一楼层视图,跳转之后默认定位到从左至右第一间机房正前方。
用户鼠标操作交互与楼层总体楼层视图一致。
如果某层没有机房,会弹出提示:

机房页面用于展示某间的机房的设备布局模型、环境信息、监控报警信息、抓拍记录以及监控视频,同时是设备视图的入口。(图中左侧因长截图导致异常请忽略)

机房设备视图用于3D建模展示一间机房内设备以及其他构成的分布情况,便于用户定位到想要操作的设备。

在楼层总体视图,用户可以右键拖动模型进行模型平移,可以滚动滚轮进行模型放缩,可以左键拖动模型进行模型旋转。其中透明度较高的实体为机房,透明度较低的为机房设备。黑色实体为通道或门。左键双击某个设备将展开机房设备控制面板。

左键双击某个设备将展开机房设备控制面板。展开后可以看到设备详细信息,包括:

左键双击其他空白区域关闭面板。
机房传感器采集的数据:温度、湿度、运行状态将显示在机房设备视图左侧。

机房安全警报简讯将显示在Alarm Data区域。

机房抓拍的图片将显示在Surveillance Capture模块。(暂未实现具体接口)

返回实时监控流。

位于其他模块时点击左侧导航栏,或者在home界面时点击上方的日志导航栏,将跳转到日志模块。
用户可以点击左侧次级导航栏Device选项卡的任意设备进入设备状态日志。

用户可以点击左侧次级导航栏Floor选项卡的任意楼层进入该楼层内的机房的状态日志。

用户可以点击左侧次级导航栏Alarm选项卡的任意类型警报进入该种类型的警报日志。
由于烟雾和人员活动还未由CV实现,这两种类型的警报为模拟触发。

位于其他模块时点击左侧导航栏,或者在home界面时点击上方的统计导航栏,将跳转到统计模块。该模块使用数据可视化图表形式展现了数据以及数据的变化。点击左侧次级导航栏可以快速滚动到对应的子模块。

通过上方的二级下拉框可以选择要展示的机房。

主要以仪表盘的形式展现了机房的基本环境数据(温湿度),以及机房内每个设备的工作数据(CPU占用率、IO等)。可以通过下拉选框选择使用哪个设备。

以散点图展示了该机房最近7天内各类警报的个数;以饼图的形式展示了各类警报的占比分布情况。

以折线面积图的形式展示了该机房昨天0点至24点的温度变化情况;以饼图的形式展示了该机房温度情况的大致分布。

以折线面积图以及柱状图的形式展示了该机房内设备某天0点至24点的设备信息变化情况,包括:

其中,鼠标移至折线图上方可以查看该时刻的具体数值。

可以通过两个下拉选框选择要展示的设备和日期。

位于其他模块时点击左侧下方的人像符号将跳转到用户和管理员控制模块。该模块提供给管理员,用于控制全体用户的独立权限。

最高管理员是可以控制其他用户权限的管理员,在列表中用绿色的标签标注。仅能查看其基本信息,不能为其额外分配或删除权限。

普通用户接受来自最高管理员的权限分配,使得普通用户能够成为一些机房的管理员,对这些机房进行设备操作。

| 学号 | 职责 | 实际工作内容 |
|---|---|---|
| 222000321 | PM、前端 | 统筹项目,发布和确定实际需求并适时修改,确定技术栈; 跟踪进度,组织站立式会议和线上会议 项目质量控制,检查各成员代码和发布流程符合规范 前端监控模块以及3D建模实现,前端框架搭建 RTSP推流服务实现 HA网关搭建 |
| 222000234 | UI、前端 | 原型适配和修改 前端统计模块实现 |
| 222000231 | 后端 | 后端楼层、机房组、设备组、设备组列表相关CURD以及业务逻辑实现 |
| 222000320 | 测试、文稿工作 | 接口测试平台搭建 随笔撰写 |
| 222000322 | 后端 | 后端框架搭建 用户登录模块、短信模块、机房模块和设备模块的接口开发 管理后端组员的git分支 权限认证组件 |
| 222000317 | 后端 | 后端日志、传感器、传感器列表相关CURD以及业务逻辑实现 单元测试工作 |
| 222000318 | 后端 | 后端机房、机房列表的相关CURD以及业务逻辑实现 接口测试样例设计和自动化测试 接口文档生成 |
| 222000310 | 前端 | 前端日志模块 前端主页 前端用户和管理员权限控制模块 |
团队使用腾讯文档的协作空间进行团队工作大纲及其他材料的传递和收集。


根据1.2项目安排预期,在每个阶段结束之后团队内都会安排一次单独的腾讯会议线上讨论一些需要集中演示的内容。


全过程使用Git控制代码开发。
| 学号 | 工作量/贡献度 |
|---|---|
| 222000321 | 16% |
| 222000234 | 14% |
| 222000231 | 12% |
| 222000320 | 3% |
| 222000322 | 18% |
| 222000317 | 12% |
| 222000318 | 13% |
| 222000310 | 12% |
一、工作内容
统筹项目,发布和确定实际需求并适时修改,确定技术栈;
跟踪进度,组织站立式会议和线上会议
项目质量控制,检查各成员代码和发布流程符合规范
前端监控模块以及3D建模实现,前端框架搭建
RTSP推流服务实现
HA网关搭建二、阶段收获
- 学会了基于Three.js搭建Web3D模型的方法
- 复习了Vue3工程化和axios路由拦截体系
- 学会了基于ffmpeg进行ftsp推流的方法
三、合作情况
作为组长用了一些新的方法来管理团队,并且使用了腾讯会议等手段跟踪项目,其中经历了一次需求变动,但是大家还是很快地适应了,很感谢大家的合作。
四、心得体会
虽然整个alpha冲刺没有规划实现全部的需求,但是工作量还是比较大的,而且用到的都是新的技术,还需要跟踪项目进度,做项目质量控制,写文稿等等。感觉压力好大。但是还是做完了,自我感觉良好。
一、个人任务
在α冲刺阶段,我负责的部分是前端的统计模块,包括机房温度、湿度、警报数据以及设备状态的统计图表。在项目前期先完成静态页面的搭建,在中期完善页面细节和逻辑,在后期进行前后端联调获取接口数据。
核心任务是数据可视化的实现,利用echart图表框架,实现了Dashboard模块并设计渲染流程,优化渲染时间和接口请求效率,提升前端页面显示效率。
二、阶段收获
- 对于git的使用有了更多掌握,学会了该怎样处理分支合并时产生的冲突问题。
- 复习巩固了html、css、js、vue框架和element ui组件,以及新学习了scss语法。
- 加深了对echarts图表的掌握,对如何用它实现数据可视化、如何通过改变配置项来改变图表外观以达到理想的效果有了更进一步的掌握。
- 在前后端的联调过程中,对如何获取接口、如何处理接口数据以拿到需要的数据格式更加熟练。
- 在和其它前端沟通以及和后端对接的过程中,体会到了团队合作的优势和意义,
三、合作情况
很感谢我的队友,大家都是负责、细心、热心的人。在我遇到困难提出问题的时候队长会积极地帮助我解决,在后期联调遇到接口不对或数据不足的时候,后端的同学会及时地采纳意见,更新接口或添加数据,几乎不会推卸责任和拖延修改,能让我在获取接口数据阶段的工作不被耽误,顺利推进。
四、心得体会
首先通过α冲刺这样时间比较紧迫的情况下完成自己部分的前端开发,对我这个新手来说是一个比较艰巨的挑战。但是真正上手之后发现自己在前端方面越来越得心应手,让我感受到编程能力确实要不断地在实战中得到提升,听再多的课、看再多的理论和demo都不如自己动手书写学起来快。然后要感谢我的队友们,这个项目的完成都离不开大家的帮助和支持。这次冲刺的比起之前的作业来说,收获是最大的。
- 工作内容
在这次项目冲刺中,我的角色是后端开发人员,职责是项目部分接口的开发。我开发的模块有以下四个:
- 机房组管理
- 对机房组进行增加、删除、查询、更新
- 楼层管理
- 对楼层进行增加、删除、查询、更新
- 设备组管理
- 对设备组进行增加、删除、查询、更新
- 设备组与设备关系管理
- 对设备组和设备的关系进行增加、删除、查询、更新,以及统一更新同一设备组下的所有设备的状态
我的收获
首先是开发技能,在项目开发中,通过参考队友写好的代码模块并且经常请教对方,我对SpringBoot的开发更加熟练,学会了封装dto和vo类,学会了在mapper类中重写联表查询语句,将条件构造器添加到sql语句等实用小技巧。现在我的代码看起来可读性和规范性都大大提高了(主打的就是一个优雅)。
其次,我学会了测试接口一定要多试几个数据,把代码的每条独立路径都覆盖一遍。合作情况
这次小组的合作中,我们的PM运筹帷幄,为每一个组员分配了适合的任务;并定时进行项目推进会议,让项目前后端开发井然有序;最重要的是对整个项目需要呈现的成果、如何实现的逻辑等,他都一直在默默负重前行。
同时后端开发的队友们给了我非常多帮助,他们的经验弥补了我的不足,也让我偷师不少。
还有前端的队友,因为我们的项目UI设计得非常精致高级,所以前端的工作量比较大,但是他们都任劳任怨地交付了满分的前端。心得体会
在这学期之前我只有非常微薄的一点后端经验,于是一开始其实非常担心自己拖团队后腿。但是团队开发就是取长补短,充分发挥每一个人的每一个闪光点。
这次开发中我还犯了一个比较致命的错误,因为我在调试接口时只测试了正确的数据,看到返回成功操作后就pass进入下一个,完全没发现我在实体类删查的时候忽略了异常处理,有些异常处理甚至返回了其他异常的错误信息。在负责测试的队友调用接口进行测试时才发现了这些问题,还好项目还没发布,并没有造成严重损失。这个错误使我意识到了写代码一定不能抱着侥幸心理,要读懂自己写的每一个语句的功能。
这次冲刺极大地锻炼了我的团队协作能力和后端开发技能,希望下次冲刺的时候我可以做得更好!
在冲刺阶段,我的任务是每天总结小组里的任务,并将其撰写成一篇博客,同时我也负责参与了一部分的测试工作。在测试的过程中,我需要不断学习和调整测试策略,测试还需要与其他小组成员的工作密切配合,以确保整个项目的顺利进行。在项目中,我还学习了许多关于软件工程方面的知识。除此之外,与小组成员合作和沟通也是我在这个项目中的重要收获。团队合作和沟通是项目成功的关键要素。在项目中,我们需要互相协作,相互支持和尊重,以达到项目的共同目标。在和小组成员的交流和合作中,我深刻体会到了沟通的重要性,不仅要求自己能够表达清晰,更需要认真聆听和理解他人的意见和想法。通过这十天的学习和实践,我得到了许多宝贵的经验和体会。我们需要不断学习和更新自己的知识和技能,同时也需要与小组成员建立良好的合作和沟通关系。
一、个人任务
在本次α冲刺阶段团队作业中,我负责后端方向,在项目开始之初完成了后端项目框架搭建、权限认证模块整合、以及可视化接口等工具的配置,以使得对web开发不那么熟悉的后端组员能够更快地上手,同时专注于业务接口的开发。
在项目开发过程中,我主要负责用户登录模块、短信模块、机房模块和设备模块的接口开发,以及负责管理后端组员的git分支。二、阶段收获
- 对于git的使用有了一定的经验,学会了该怎样处理分支合并时产生的冲突问题。
- 复习巩固了SSM框架以及使用springsecurity进行权限控制。
- 加深了对springbootAOP思想的理解,能够更好的使用AOP管理相同的操作。
- 了解到了RTSP视频推流相关知识。
- 在团队协作过程中加强了团队协作能力以及协调工作的能力。
- 在处理数据库中的“脏数据”时意外解锁了MySQLworkbench新的使用姿势(乐)
三、合作情况
在本次α冲刺过程中和组员的合作十分愉快。后端部分对web开发并不熟悉的同学学习十分积极,接受速度很快(大赞)。与前端同学对接的过程也十分顺利,前端同学需求明确,积极沟通,大大加快了对接的速度。
四、心得体会
这次α冲刺给我最大的体会就是需求分析阶段准备充分能够大大加快编程实现阶段的开发速度以及减少返工的风险。
本次合作由于前期准备充分,需求明确,同时有组长负责协调分工。每个人分工明确、目标明确,使得项目进展十分顺利。比起之前上手就是干的时期少了一丝返工时的痛苦,多了些许不紧不慢的从容。
同时这次合作的组员都十分认真负责,不会敷衍了事或者摸鱼划水,大家都会认真对待自己负责的部分,很庆幸自己能与这样的队友合作(笑)。
工作内容
根据需求分析了日志接口、传感器接口、传感器列表接口的请求和响应数据格式,理解具体的业务逻辑,并将其转化为具体的接口逻辑代码实现。在实现过程中,考虑了接口的性能和安全等方面的问题。设计了部分接口测试用例,测试接口功能是否正常以及能否满足需求,编写测试用例文档。
冲刺收获:
熟悉了idea中的git操作和springboot项目搭建过程,掌握了Java编程语言和SpringBoot框架的应用,熟悉了接口开发的流程和规范,同时也学会了接口测试的基本方法和工具,如postman和Apifox。合作情况:
在冲刺过程中,认识到了团队合作的重要性,与团队成员紧密合作,一起进行需求分析和代码实现。积极与其他成员交流,理解和遵守项目的开发规约和流程。针对接口实现过程中出现的问题,与其他团队成员进行协作,积极沟通、共同解决。
心得体会:
在这个项目中,我通过实际工作中掌握了实际开发经验。我认识到团队合作的重要性,学会了沟通和协同工作技能。通过针对具体任务进行开发,不仅从项目中获得了很多技术上的经验,也增强了自己的学习和解决问题的能力。我将不断学习新的技术和知识,并尝试用于项目实践中。同时,我会始终保持对团队的关注和尊重,了解团队成员和队长的期望,积极协作合作,谦虚学习,不断创新和提高自己的技能和信心。
个人任务:
阶段初期完成了部分实体类对应的crud接口,并按照接口文档补充了部分功能接口。阶段中后期负责对后端队员实现的接口设计测试用例来进行接口调试和单元测试,完成测试随笔。
阶段收获:
- 学习了如何使用springboot来进行项目开发。
- 学会了如何设计出合理的测试用例以及使用apifox来进行接口测试。
- 自己在编写代码中处理异常情况的能力得到了加强,能更好的考虑到一个方法可能出现的异常情况。
- 在团队协作的过程中,自己的协作沟通能力得到了加强。
- 自己的抗压能力得到了一定程度上的加强。
合作情况:
- 在α阶段初期,组长将团队分为后端小队和前端小队,作为后端小队的一员,刚开始写代码时,因为我基础薄弱,需要经常与负责设计接口文档的后端队员沟通,来帮助我理解这个接口的功能
- 在α阶段中后期,我开始负责对所有后端接口的接口测试,在这一过程中,每当我遇到对某个接口应该传递的参数、结果返回的正确形式、接口正确的请求头存在疑惑时,后端队友都非常耐心的帮我解决了困惑。
- 在α阶段后期,前后端接口功能对接时,可能是我负责的代码部分较少,实现的接口功能较为简单,前端队友们并没有要求我做接口更改,所以在这一过程中,我与前端队友的交流不是很多。
心得体会:
在α阶段未开始时,因为自己对springboot不是很熟悉,我总是担心自己完不成组长将要指派给我的任务,感觉自己会拖慢团队的进度。所幸后端的负责人考虑到了我的实际情况,给我分配难度适中的任务。感谢善解人意的后端负责人许同学。在学习如何使用apifox进行接口测试时,组长也耐心的给予了我很多帮助。总的来说,在α冲刺阶段中,我学到了许多,收获满满,同时与团队的合作也非常愉快,很庆幸自己能与这样的队友合作(笑)
个人工作内容
- 依据原型设计完成主页界面静态制作:包括主页导航条, 内容介绍, 跳转按钮,界面布局。
- 依据原型设计完成日志模块制作:包括顶部栏、左侧菜单栏(设备、楼层、警报器)、右侧日志内容展示表格制作、界面布局、请求后端数据对接
- 根据实际需求完成用户模块制作:包括顶部栏、左侧tab栏、右侧用户信息展示、用户权限管理操作、用户退出登录操作、界面布局、请求后端数据对接
冲刺收获
- 实现从Vue2到Vue3知识的进阶与运用
- 掌握了Sass语法,其在CSS语法基础上,封装了变量、混合、函数等功能,同时采用了层次化的书写结构,让CSS编写更为便捷、易懂
- 对axios使用更加得心应手,对前端异步编程、链式调用等知识进行了学习,对多种情况,如:发送JSON、发送multipart/form-data类型、发送表单类型、普通parameter类型等数据更加熟悉
- 对后端Java如何使用Swagger创建接口文档进行了相关学习,通过导入依赖、配置类创建、注解开发的方式,能够快速生成接口文档,方便前后端对接
- 对git版本控制进行了实际掌握运用,对分支创建合并的工作流程进行了学习,利用版本控制工具进行团队协作开发确实能提高不少团队协作效率
- 对软件开发流程更加了解,明白了团队协作的重要性以及团队及时交流的必要性
合作情况
- 组内共八人, 其中分配了三人进行前端开发工作
- 由组长进行每个人的前端任务分配. 整个α冲刺分为了三个阶段完成任务, 前两个阶段由组长分配任务完成静态界面制作以及页面交互, 最后一个阶段进行前后端数据对接
- 通过git版本控制, 每个人创建独立分支进行开发, 每天合并项目分支, 并在本地拉取更新进行项目开发
- 在QQ群中以及每日的任务汇报与每日站立式会议进行团队沟通交流与开发问题解决
心得体会
本次α冲刺给予的时间相比之前团队项目合作时间来说增加了不少, 可以拥有更为细致的任务安排与时间管理, 团队在拥有之前的合作经验后, 分工合作也变得更为协调, 不管是对于git的操作, 还是前端的开发于我本人而言也变得更加轻车熟路。通过本次的冲刺我明白了前几次团队作业中需求文档、原型设计、数据库设计在整个软件开发流程中举足轻重的地位,以及最后测试验收的必要性,正所谓磨刀不误砍柴工,这些文档统一了开发标准与验收标准,极大促进了开发的效率与开发质量。总体而言这是次收获颇丰的项目合作经历,从中学习到了很多过往单人甚至小组开发学习不到的开发经验。
在下个阶段,也就是beta冲刺阶段,将着重解决下列alpha未能解决的问题:
我们相信下个阶段我们能将MachineGuard项目实现为一个非常完善的版本!

1.如果组员无法胜任工作,何时将任务转移到其他组员?
2.接口能够随意更改吗?是否有一定的规则约束?