THU琴房预约项目个人总结

本文章主要对此次软工三课程项目("THU琴房预约")进行总结。

文章分为以下部分:

  1. 个人分工
  2. 编程总结
  3. 团队合作
  4. 对软件工程的思考
  5. 个人总结
  6. 课程建议
  7. 博客地址汇总

1. 个人分工

在此次项目中,我主要负责以下模块:

  • 后端:数据库接口
  • web管理端前端:琴房管理、公告管理、长期预约、检票等
  • 测试:压力测试、数据库接口测试
  • 部署:docker部署

2. 编程总结

编程经验

这次课程大作业中,对于工程的理解更加深刻。主要分为以下方面:

  • 软件系统架构设计很重要:我们小组之前都没有接触过小程序的开发,所以一开始做系统调研的时候下了不少功夫。同样,因为是第一次,我们也没有被“历史包袱”所累。比如,最开始我们在选择web框架的时候,没有选择大家熟悉的django,而是使用koa。事实证明,koa丰富的中间件以及node的高性能为开发和项目性能提升带来了很多好处。
  • 想清楚再动手:举个例子,比如数据库的设计。在项目初期,我负责数据库接口,后来发现设计的数据表有些跟不上需求的扩增。于是在开始开发几天后,小组成员集中开会,讨论三个小时之后,设定出了最终的数据库设计方案。实际上这个方案一直被我们用到最后,并且对于需求扩容的适应性非常好。

写代码

代码管理真的很重要,尤其是这次代码量已经超过了小组任何一个成员的可控范围。对于这次写代码的经验有以下感受:

  • 一定要使用代码管理工具(比如git):在本学期同期的另外一门课上,我们三个人组队,本来是个非常简单的小项目,我们却因为多个同时改一个文件,手动merge浪费了很多时间,本来想省时却走了弯路。

  • 代码审查是个好方法:在软工课上,练习过一次代码走查,这次我们小组也进行了代码审查,发现了几个写的不规范的地方,比如js使用“==”。而且这也是一次非常好的学习优秀代码的机会。

  • 测试先行:我们是到了项目中期才开始着手写测试的,写测试之后才深刻感受到测试省去了很多麻烦,比如每次新增功能之后,不用繁琐的将之前的功能重新测试一遍。

3. 团队合作

非常感谢给力的队友和团队。这次团队项目让我对于软工团队有了这些认识:

  • 系统架构一起想:群策群力才能想出好的设计方案。
  • 分工明确,兼顾所长:非常感谢团队中的女生,挽救了三个工科男的审美。
  • 集中开发,结对编程:我们每周会有2-3次的集中开发,晚上六点开始平均持续大概8小时。因为我们对于人员分工是按照前后端分工,而不是按照功能划分,所以在处理前后端接口的时候,需要大家相互配合。

4. 对软件工程的思考

规范操作才有好项目

  • 工程开发的流程不可省略:需求分析、原型设计、迭代开发、测试、优化。这些步骤是绝对不能省略的。而且规范的按照开发流程来做,对于项目的进展非常有帮助。
  • 代码管理规范:“先开分支再push”,“及时commit”。举个例子,由此自己写了管理端前端的几个路由(大概1.5k行),手残reset代码,结果导致全部被覆盖。不过还好,之前把代码加到了暂存区,救了回来。
  • 接口规范性:在数据库测试的过程中深刻体会到了这一点,因为接口文档没有及时更新,导致测试用例没过,耽误了一些时间,直到沟通之后才发现。

明确需求才有好项目

这个项目确实超过了我的掌控范围,需求点非常零散并且繁杂。直到开发过程开始,才体会到需求分析的必要和重要性。需求分析相当于是个任务清单,是我们没有遗漏功能;同时,需求分析也可以做估算,估计每个模块的工作量。最开始明确需求还可以避免多次重构,随着需求的扩展,开始的解决方法会变得不适用,这时候就需要重构。如果最开始就分析清楚,或者预留解决方案就会好很多,比如数据库设计冗余字段等。

5. 个人总结

  • 再次感谢给力队友。
  • 踩坑的方式对于理解一项技术很重要。
  • 以工程视角去思考设计项目,开始设计时就考虑到性能和代码实现。
  • 有幸成为全栈工程师。

6. 课程建议

  • 可以要求学长介绍一些代码经验:比如设计冗余字段等
  • 在介绍往期项目的时候,介绍一些数据库的设计的思路,给同学启发
  • 测试课程提前讲

7. 博客地址总结

docker部署Node项目

Redlock实践--非阻塞模式

对于加锁的一些思考

JMeter安装及使用

你可能感兴趣的:(THU琴房预约项目个人总结)