软件工程实践第一次作业

大经理 2023-09-21 23:11:43

软件工程实践第一次作业

  • 为了不遗漏作业内容,这里有一份checklist方便你快速查阅
    • 详细阅读作业要求
    • 完成代码编写并进行测试
    • 撰写博客
      • 描述解题思路
      • 设计实现过程
      • 关键代码展示
      • PSP表格
      • 核对作业评分标准
    • 在deadline之前,在社区中提交作业

0. 任务

完成一个具有可视化界面的计算器。

1. 博客撰写要求

  1. 给出PSP表格
  2. 解题思路描述。即刚开始拿到题目后,如何思考,如何找资料的过程。
  3. 设计与实现过程。设计包括代码如何组织,比如会有几个类,几个函数,他们之间关系如何,关键函数是否需要画出流程图?说明你的算法的关键(展示出项目关键代码),并解释思路,以及独到之处。
  4. 程序性能改进。记录在改进程序性能上所花费的时间,描述你改进的思路。
  5. 单元测试展示。展示出项目部分单元测试代码,并说明测试的函数,构造测试数据的思路。将单元测试得到的测试覆盖率截图,发表在博客中;描述应该如何优化覆盖率?
  6. 结合在构建之法中学习到的相关内容,撰写解决项目的心路历程与收获

2. 需求

实现一个简易计算器,要求具有图形化界面。

img

2.1 实现基本功能

功能:具有基本功能的计算器

实现加、减、乘、除、归零基本操作。

附加功能:具有科学计算的计算器

实现次方、幂、三角函数等操作。

在博客中使用文字、图片(gif)或者视频的方式展示自己的计算器功能。

2.2 单元测试和性能分析

请根据自己以往积累的测试经验,在编码完成之后,提交产品之前,设计测试用例,并编写单元测试,对自己的项目进行测试。

  • 请阅读邹欣老师的博客:单元测试和回归测试,编写程序的单元测试
  • c++可以使用vs2017。对于博客任务中的单元测试、性能分析(Studio Profiling Tools),vs2017有相应的功能。
  • java可以使用idea。也可以自行查找使用其他工具。

3. 测试须知

3.1 组织目录

本次作业不限语言,但具有以下几个要求:

1.  将实现的计算器实现GUI界面后打包成可执行exe文件。
1.  新建**src**目录存放源代码并且将该目录和exe文件放在同一目录下。
1.  将说明文件和上述文件放在同一目录下打包提交。
xxxxxxxxx (文件夹名字为学号)



|- src



 |- Calculator.java/cpp/py... (代码文件)


 |- ... (其他依赖文件)



|- Calculator.exe (可执行文件)



|- README.md



 描述你的项目,包括如何运行、功能简介、作业链接、博客链接等



|- codestyle.md



 描述你之前定的代码风格

3.2 错误处理

本次自动测试会加入各种各样出错情况的测试,要求开发者程序不能崩溃,并且能够尽可能精确报错。你可以有“容错性”的出错设计,但必须输出必要的提示或说明。

4、评分规则

4.1 博客评分规则(50')

  1. 在开始实现程序之前,在附录提供的PSP表格中记录下你估计将在程序的各个模块中耗费的时间。(3')【覆盖课程目标2】
  2. 记录模块接口的设计与实现过程。设计包括代码如何组织,比如会有几个类,几个函数,他们之间关系如何,关键函数是否需要画出流程图?说明你的算法的关键(不必列出源代码),以及独到之处。(22')【覆盖课程目标2】
  3. 计算模块接口部分的性能改进。(8')【覆盖课程目标2】
  4. 计算模块部分单元测试展示。(8')【覆盖课程目标1】
  5. 计算模块部分异常处理说明。(4')【覆盖课程目标2】
  6. 在实现完程序后,在附录提供的PSP表格中记录下你在程序的各个模块中实际花费的时间。(3')【覆盖课程目标1】

4.2 程序评分规则(40')【覆盖课程目标3】

  1. 完成基础功能(20')
  2. 完成附加功能(20')

4.3 代码规范评分规则(10')【覆盖课程目标1】

  1. 囊括要求部分(2')
  2. 符合主流,制定合理,详细(3')
  3. 项目代码符合代码规范(5')

4.4 提交注意事项

  • 按时间完成并提交——正常评分
  • 晚交一周以内——0分
  • 晚交一周以上或不交——倒扣本次作业分数
  • 抄袭——倒扣2倍本次作业分数 【严禁代码与博客等一切形式的抄袭!】

4.5 疑惑解答

若有对题目不理解的地方,可在QQ群中直接提问。

5. 附录

1. PSP表格

PSP是卡耐基梅隆大学(CMU)的专家们针对软件工程师所提出的一套模型:Personal Software Process (PSP, 个人开发流程,或称个体软件过程)。

PSPPersonal Software Process Stages预估耗时(分钟)实际耗时(分钟)
Planning计划
• Estimate• 估计这个任务需要多少时间
Development开发
• Analysis• 需求分析 (包括学习新技术)
• Design Spec• 生成设计文档
• Design Review• 设计复审
• Coding Standard• 代码规范 (为目前的开发制定合适的规范)
• Design• 具体设计
• Coding• 具体编码
• Code Review• 代码复审
• Test• 测试(自我测试,修改代码,提交修改)
Reporting报告
• Test Repor• 测试报告
• Size Measurement• 计算工作量
• Postmortem & Process Improvement Plan• 事后总结, 并提出过程改进计划
合计

PSP的目的是:记录工程师如何实现需求的效率,和我们使用项目管理工具(例如微软的Project Professional,或者禅道等)进行项目进度规划类似。
有关PSP的更多内容,请自行阅读邹欣老师的博客:工程师的能力评估和发展

6. 格式与规则

6.1 为了方便其他学校的老师或者助教了解课程实况,请大家在作业开头添加作业的基本信息:(必做)

这个作业属于哪个课程<班级的链接>
这个作业要求在哪里<作业要求的链接>
这个作业的目标<写上具体方面>
其他参考文献...
  • markdown代码:
|这个作业属于哪个课程|<班级的链接>|



|--    |--    |



|这个作业要求在哪里|<作业要求的链接>|



|这个作业的目标|<写上具体方面>|



|其他参考文献|...    |

6.2 为了方便读者阅读以及助教评分,请大家在博客开头给出博文目录,作为内容的索引

  • 务必包含以下大标题: Gitcode项目地址、PSP表格、解题思路描述、接口设计和实现过程、关键代码展示、性能改进、单元测试、异常处理、心得体会(标题含义近似即可,你可以个性化自己的标题,如心路历程、性能测试)
  • 可以使用markdown的语法,根据标题设置自动生成目录:
[toc]



作业基本信息...



## Gitcode项目地址



## PSP表格



## 解题思路描述



### 问题1



### 问题2



...



## 接口设计和实现过程



...



## 关键代码展示



...



## 性能改进



...



## 单元测试



...



## 异常处理



...



## 心得体会



...
  • 也可以结合html生成目录
作业基本信息...



## 目录:



1. [Gitcode项目地址](#1)



2. [PSP表格](#2)



3. [解题思路描述](#3)



4. [接口设计和实现过程](#4)



5. [关键代码展示](#) 



6. [性能改进](#) 



7. [单元测试](#) 



8. [心得体会](#) 



## <span id="1">1. Gitcode项目地址</span>



### 问题1



### 问题2



### ...



## <span id="2">2. PSP表格</span>



...



## <span id="3">3. 解题思路描述</span>



...



## <span id="4">4. 接口设计和实现过程</span>



...



## <span id="5">5. 关键代码展示</span>



...



## <span id="6">6. 性能改进</span>



...



## <span id="7">7. 单元测试</span>



...



## <span id="8">8. 异常处理</span>



...



## <span id="9">9. 心得体会</span>



...
...全文
4284 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
0人已提交
完成率0%
暂无数据
回复
切换为时间正序
请发表友善的回复…
发表回复
数据集可视化效果可参见下方展示。 【数据集概况】 · 检测类别(中文):[保龄球(bowling)] · 训练集:594 张 · 验证集:75 张 · 测试集:74 张 · 总计:743 张 该数据集聚焦于室内保龄球馆场景,系统性采集了多角度、多姿态下保龄球在不同运动阶段的视觉特征,为保龄球运动过程中的球体识别与轨迹分析提供了高质量标注样本,具有明确的体育训练与智能辅助系统开发价值。... 【训练曲线与评估图】 【模型训练配置】 参数 | 值 模型 | yolo26n 训练轮数 | 100 epochs 输入尺寸 | 640x640 批次大小 | 24 优化器 | auto 初始学习率 | 0.01 训练设备 【关键指标汇总】 训练了 100 个 epoch,最终轮指标: 指标 | 数值 mAP50 | **0.9938** mAP50-95 | 0.6966 Precision | 0.9740 Recall | 0.9974 train/box_loss | 0.9113 train/cls_loss | 0.2862 val/box_loss | 1.1516 val/cls_loss | 0.3116 【训练过程分析】 100 轮训练后 mAP50 达到 0.9938,模型收敛良好。Loss 曲线前段快速下降,后段趋于平稳,val_loss 无反弹,没有明显过拟合。但 mAP50-95 为 0.6966,和 mAP50 差距 0.30,定位精度仍有优化空间。 【模型性能评估】 Precision 0.9740、Recall 0.9974,精召双高,模型对保龄球的检测能力强。 【预测效果展示】 验证集预测效果较好,检测框基本准确覆盖保龄球,置信度整体偏高。 【改进建议】 1. 丰富场景多样性:补充不同光照、背景和遮挡条件下的样本。 2. 提升输入分辨率:640 ...
PaddleOCR 与YOLO目标检测 HTTP 服务。 项目通过 PaddleOCROnnx 原生库集成 OnnxRuntime加速能力,围绕 ONNX 模型部署, 以统一接口提供图像文字识别、YOLO 目标检测和 Tensor 数据输出。 功能概览 文字识别:支持图片 Base64、multipart/form-data 上传,以及文本和 JSON 结果。 目标检测:支持 YOLO 图片检测,返回检测框 JSON 或原始 Tensor。 浏览器演示:访问服务根地址,上传图片并切换 OCR、YOLO 模式。 健康检查:通过 /health 查看服务及 OCR、YOLO 引擎初始化状态。 并发处理:通过 OCR 引擎实例池处理并发请求,可调整实例数量。 体验与调用 启动后访问: 入口 地址 浏览器演示 http://localhost:5000/ 健康检查 http://localhost:5000/health 原生依赖 Windows:优先从 runtimes/win-x64/native/ 加载原生 DLL;该目录没有 PaddleOCROnnx.dll 时,尝试从可执行文件所在目录加载。主 DLL 与对应后端依赖应放在同一原生目录中,不要将同一组依赖分散到多个目录。 Linux:原生运行时位于 runtimes/linux-x64/native/,程序使用相对于可执行文件的运行时搜索路径查找随包部署的依赖。 后端选择:CoreOCROnnx 支持 ONNX Runtime、OpenVINO、TensorRT 后端。请使用与平台、进程架构、硬件和后端匹配的一整套运行时,不要混用不同后端或版本的依赖。

158

社区成员

发帖
与我相关
我的任务
社区描述
FZU-CS-SE
软件工程 高校
社区管理员
  • LinQF39
  • Jcandc
  • chjinhuu
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧