软件工程课程项目“物品复活“软件开发v1.0

news/2024/12/27 1:03:55/文章来源:https://www.cnblogs.com/specture/p/18523795

项目地址:https://github.com/specture724/ItemReviveApp

作业要求

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

PSP分析报告

PSP 分析文档

项目代码量:150 行 Python 代码
开发目标:编写、调试并完善一段 Python 代码,符合项目需求并通过测试。

1. 计划阶段 (Planning)
  • 任务:明确需求和相关因素,估算时间、成本和依赖关系。
  • 时间估计:30 分钟
  • 说明:分析 ItemReviveApp.py 项目的基本功能(增,删,查),用户界面设计、数据管理和基本的增删查功能需求。预估项目代码量(约 150 行),并分配各阶段的开发时间。
2. 开发阶段 (Development)
2.1 需求分析 (Analysis)
  • 任务:分析代码的具体需求,包括输入、输出、功能和边界条件。
  • 实际时间:20 分钟
  • 说明:明确应用的主要功能:允许用户添加物品信息、删除物品、显示所有物品、按名称查找物品,并通过双击查看物品详情。需求中包含对数据持久化(保存至 JSON 文件)、界面交互(Listbox 列表显示)等具体要求。
2.2 设计文档生成 (Design Spec)
  • 任务:编写设计文档,详细描述代码的实现方式、主要模块和关键算法。
  • 实际时间:30 分钟
  • 说明:在设计文档中确定应用的各个模块,包括数据加载与保存(通过 JSON 文件)、界面组件(Listbox 和按钮等)、增删查功能实现,以及双击显示详细信息的功能。定义模块间的接口和功能调用顺序,确保各模块可以协同工作。
2.3 设计复审 (Design Review)
  • 任务:复查设计文档,确保设计合理,发现潜在问题。
  • 实际时间:15 分钟
  • 说明:复查设计文档,检查各模块的接口和交互是否合理,确保数据存储、界面交互等细节设计正确无误。特别确认双击查看详情的功能逻辑,以避免数据在查找过滤后显示错误的情况。
2.4 代码规范 (Coding Standard)
  • 任务:为开发制定合适的代码规范,包括命名、注释、代码格式等。
  • 实际时间:10 分钟
  • 说明:确定代码风格,如函数和变量命名规范、注释标准、缩进等,确保代码在增删查、数据持久化、界面更新等操作中保持一致性。为 tkinter 界面组件和功能模块的命名制定规则,便于代码的可读性和后续维护。
2.5 具体设计 (Design)
  • 任务:根据设计文档进行详细设计,准备编码。
  • 实际时间:25 分钟
  • 说明:在详细设计中,将整体界面划分为功能区域:物品列表显示区(Listbox)、操作按钮区(添加、删除、查找、显示所有)和详细信息窗口设计。并详细规划数据的加载和保存逻辑,以确保操作完成后数据会更新到 items.json 文件中。
2.6 编码 (Coding)
  • 任务:根据设计文档实现代码,编写具体功能模块。编码先实现了基于命令行的原始版本,后面将其改为GUI
  • 实际时间:90 分钟 = 30 分钟命令行版本 + 60 分钟GUI版本
  • 说明:完成项目的代码实现,包括主程序结构、各功能按钮的实现、双击查看详情的功能、数据加载和保存的实现(JSON 文件读写)等。确保每个功能模块独立、清晰,并在代码中加入注释,便于后续调试和维护。
2.7 代码复审 (Code Review)
  • 任务:复查代码,确保代码符合规范,检查潜在问题。
  • 实际时间:15 分钟
  • 说明:复查代码的逻辑,检查输入处理、异常处理、数据更新(保存至 JSON 文件)是否正确,确保所有功能模块在不同情况下(如搜索状态和非搜索状态)均能正确工作。重点检查双击查看详情功能在搜索后是否能够显示正确的数据。
2.8 测试 (Test)
  • 任务:对代码进行自测和修正,确保代码符合功能需求。
  • 实际时间:45 分钟
  • 说明:对应用进行全面测试,包括基本功能(增、删、查)和界面交互的正确性。特别测试双击查看详情是否能在搜索结果中正确显示详细信息,确认数据在 JSON 文件中的正确性。修复在测试中发现的 3 个缺陷,分别涉及输入处理、数据持久化和查找功能逻辑。
3. 时间记录 (Record Time Spent)
  • 任务:记录每个阶段的时间,方便后续分析和优化。
  • 总时间:280 分钟
4. 测试报告 (Test Report)
  • 任务:记录测试结果和缺陷修复情况,确保代码质量。
  • 缺陷数:3 个
  • 缺陷修复时间:15 分钟
  • 说明:在测试中发现 3 个缺陷,涉及输入处理、边界条件和异常处理,修复时间为 15 分钟。
5. 代码量统计 (Size Measurement)
  • 任务:统计代码行数(LOC)。
  • 代码行数:150 行
6. 事后总结 (Postmortem)
  • 总结:本项目按时完成了功能实现,并进行了多次复查和修复,最终通过了测试。
  • 改进点
    • 加强需求分析阶段,尽早识别潜在的边界情况。
    • 在编码前确保设计文档详细到位,以减少编码过程中的不确定性。
7. 过程改进计划 (Process Improvement Plan)
  • 改进建议
    • 提高设计阶段的时间分配,确保所有细节在编码前准备好。
    • 加强测试阶段的缺陷预防,通过更早的设计复查和代码复审减少后续的修复工作量。

此 PSP 分析文档可以帮助您评估项目的开发过程,总结经验并制定未来的改进措施,以提升开发效率和代码质量。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/826277.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Go语言中的并发模式

Go语言中的并发模式 原创 Go 源自开发者2024年11月01日 23:47 广东 听全文源自开发者 专注于提供关于Go语言的实用教程、案例分析、最新趋势,以及云原生技术的深度解析和实践经验分享。 373篇原创内容公众号Go语言以其并发性和轻量级的goroutine而闻名,学习如何使用和处理它们…

高级程序语言设计第五次作业

这个作业属于哪个课程:https://edu.cnblogs.com/campus/fzu/2024C/ 这个作业要求在哪里:https://edu.cnblogs.com/campus/fzu/2024C/homework/13298 学号:102400127 姓名:王子涵u9的第十问不会写

Android studio 代理设置和取消方式

1、 2、 C:\Users\XXXX 用户\.gradle 打开 gradle.properties

如何在零售行业应用AI

AI在零售行业的应用是一个重要的趋势,如何在零售业中成功应用人工智能技术,包括:1、步骤的明确、数据的分析、顾客体验的改善以及未来发展方向的展望。首先,明确零售业中应用AI的目标和步骤。这包括确定要解决的问题,例如库存管理、销售预测、顾客个性化推荐等。明确的步骤…

2024高级程序语言设计作业5

这个作业属于哪个课程:https://edu.cnblogs.com/campus/fzu/2024C/ 这个作业要求在哪里:https://edu.cnblogs.com/campus/fzu/2024C/homework/13298 学号:102300123 姓名:鲁申如

【国产化替换】信创操作系统:银河麒麟桌面操作系统V10SP1-2403-X86上安装和使用Wireshark网络协议分析器的详细步骤

https://mp.weixin.qq.com/s/cDPN024RaavRcyedGtKYGg 信创操作系统:银河麒麟桌面操作系统V10SP1-2403-X86上安装和使用Wireshark网络协议分析器的详细步骤原创 易联无界一、引言 1.1 文档概述 Wireshark 适用于所有主流 Linux 发行版,是一款自由开源的网络协议分析器,通过使…

补题03——牛客

1.https://ac.nowcoder.com/acm/contest/93218/C 我的方法便是举例,找规律,最后代码如下: from math import * for _ in range(int(input())): n = int(input()) if n <= 2: print(1) else: print(2**int((ceil(log(n,2))))) 解释一下为什么数字为8时还是8呢?因为1000只能…

用“积佬”的眼睛看世界:高考中的分析学

本文是一个系列,计划长期更新(在笔者健在的前提下)。 本文收录较难的高考习题,并引入一些略微超纲的思维方法,以求更为自然地解决问题,而不去回避其数学本质。 未来会将其整理为三个板块:数列极限、级数、积分。【例 1】已知数列 \(\{a_n\}\) 满足递推关系 \(a_1=1,\ a_…

202.10.25(JDBC)

通过java代码操作数据库 JDBC的简介

测试开发通关秘籍四: 彻底搞懂实例方法,类方法和静态方法

热爱技术的小牛 测试开发通关秘籍四: 彻底搞懂实例方法,类方法和静态方法 在 Python 中,实例测试开发通关秘籍四: 彻底搞懂实例方法,类方法和静态方法 在 Python 中,实例方法、静态方法和类方法是定义在类中的三种方法类型。它们之间的主要区别在于它们如何访问类的属性和…

20222403 2024-2025-1 《网络与系统攻防技术》实验四实验报告

1. 实验内容 一、恶意代码文件类型标识、脱壳与字符串提取 对提供的rada恶意代码样本,进行文件类型识别,脱壳与字符串提取,以获得rada恶意代码的编写作者,具体操作如下: (1)使用文件格式和类型识别工具,给出rada恶意代码样本的文件格式、运行平台和加壳工具; (2)使用…

高级语言程序设计第五次个人作业(102400106 刘鑫语)

2024高级语言程序设计:https://edu.cnblogs.com/campus/fzu/2024C 高级语言程序设计课程第五次个人作业:https://edu.cnblogs.com/campus/fzu/2024C/homework/13298 学号:102400106 姓名:刘鑫语 第八章 尝试了很多次都不能以EOF终止,换成了& 8.1 8.2知道了\040\为八进制转…