“物品复活“软件开发
作业要求
大学生经常有些物品觉得扔掉可惜,不处理又觉得浪费自己的地方。请你编写一个物品“复活”软件
该程序允许添加物品的信息(物品名称,物品描述,联系人信息),删除物品的信息,显示物品列表,也允许查找物品的信息
你实现的程序可以采用命令行方式使用,但是鼓励提供GUI
程序实现完毕后,发布在Github上
进行PSP数据的统计,发布在你的技术博客上(内容请按照下表)

软件地址
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_yasg的swagger_auto_schema自动生成设计文档
- 使用
- 设计复审:
- 在开发过程中渐进性复审。
- 代码规范:
- 使用
.pylintrc管理后端python项目的代码规范 - 使用
ESLint管理前端Vue项目的代码规范
- 使用
- 具体设计:
- 先进行后端API的设计,再设计前端页面调用接口
- 根据应用规模的增长,时常需要修改API规范以实现新的功能
- 具体编码:
- 基于LLM进行实现方案的调研和代码雏形的生成
- 基于框架文档和开源代码进行具体代码的细化和修正
- 代码复审:
- 在引入新技术之后,提升标准重构代码。
- 测试:
- 使用
Django自带的Test框架进行单元测试 - 使用
Coverage.py计算覆盖率 - 使用
Vitest进行前端测试(计划)
- 使用
记录用时
见上
测试报告
见 Coveralls 的测试覆盖率报告
计算工作量
见上,实际更准确的工作量可以参考commit记录
事后总结
总体功能已经成功实现,不足在于:
提出改进计划
- 部分见上
- 添加图片的引用跟踪和动态自适应删除
- 更稳健的文件上传安全检测机制
- 完善前端文档
- 添加自动发布
docker image的github action - 部署在公网服务器上,可以使用PaaS,也可以自建服务器
- 发布桌面客户端,实际已经完成,但是如果只能访问localhost也没有意义
- 适配移动端
- 发布安卓客户端
- 设计非原生的后台管理界面
浙公网安备 33010602011771号