“物品复活“软件开发

作业要求

大学生经常有些物品觉得扔掉可惜,不处理又觉得浪费自己的地方。请你编写一个物品“复活”软件

该程序允许添加物品的信息(物品名称,物品描述,联系人信息),删除物品的信息,显示物品列表,也允许查找物品的信息

你实现的程序可以采用命令行方式使用,但是鼓励提供GUI

程序实现完毕后,发布在Github上

进行PSP数据的统计,发布在你的技术博客上(内容请按照下表)

软件地址

ReviveIt

PSP时间统计表

PSP 个人软件过程 开发时间
Planning 计划 2h
Estimate 明确需求、时间成本、依赖关系 2h
Development 开发 20h
Analysis 分析需求 30min
Design Spec 生成设计文档 3h
Design Review 设计复审 30min
Coding Standard 代码规范 30min
Design 具体设计 4h
Coding 具体编码 20h
Code Review 代码复审 2h
Test 测试 6h
Record Time Spent 记录用时 20min
Test Report 测试报告 10min
Size Measurement 计算工作量 15min
Postmortem 事后总结 30min
Process Improvement Plan 提出改进计划 30min

PSP数据统计

计划

  • 明确需求、时间成本、依赖关系:
    • 需求:
      • 添加物品的信息
      • 删除物品的信息
      • 显示物品列表
      • 查找物品的信息
      • 物品“复活”
    • 时间成本:
      • 考虑到web架构的丰富资料,本项目使用web架构开发,以web打包方式生成客户端
      • 考虑到后端的关键性和开发速度,使用python的Django框架
      • 考虑到前端的美观性和学习成本,使用Vue3+NaiveUI的架构
      • 考虑到部署的环境依赖复杂性,使用Docker Compose封装服务器代码,可一键启动
    • 依赖关系:
      • 使用uv管理后端python项目的依赖关系
      • 使用pnpm管理前端Vue项目的依赖关系

开发

  • 分析需求:
    • 建立物品模型
    • 由于操作物品需要主体,建立用户模型
    • 由于需要“复活”物品,建立交易模型
    • 由于需要在用户间传递“复活”请求,引入通知模块
    • 每个功能需要对应的前端页面、数据检验和单元测试
  • 生成设计文档:
    • 使用drf_yasgswagger_auto_schema自动生成设计文档
  • 设计复审:
    • 在开发过程中渐进性复审。
  • 代码规范:
    • 使用.pylintrc管理后端python项目的代码规范
    • 使用ESLint管理前端Vue项目的代码规范
  • 具体设计:
    • 先进行后端API的设计,再设计前端页面调用接口
    • 根据应用规模的增长,时常需要修改API规范以实现新的功能
  • 具体编码:
    • 基于LLM进行实现方案的调研和代码雏形的生成
    • 基于框架文档和开源代码进行具体代码的细化和修正
  • 代码复审:
    • 在引入新技术之后,提升标准重构代码。
  • 测试:
    • 使用Django自带的Test框架进行单元测试
    • 使用Coverage.py计算覆盖率
    • 使用Vitest进行前端测试(计划)

记录用时

见上

测试报告

Coveralls 的测试覆盖率报告

计算工作量

见上,实际更准确的工作量可以参考commit记录

事后总结

总体功能已经成功实现,不足在于:

提出改进计划

  • 部分见上
  • 添加图片的引用跟踪和动态自适应删除
  • 更稳健的文件上传安全检测机制
  • 完善前端文档
  • 添加自动发布docker imagegithub action
  • 部署在公网服务器上,可以使用PaaS,也可以自建服务器
  • 发布桌面客户端,实际已经完成,但是如果只能访问localhost也没有意义
  • 适配移动端
  • 发布安卓客户端
  • 设计非原生的后台管理界面
posted @ 2024-11-04 23:52  {{2*3}}  阅读(26)  评论(0)    收藏  举报