软件工程实践第一次作业

助教-黄海彬 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>



...
...全文
4064 回复 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
0人已提交
完成率0%
暂无数据
回复
切换为时间正序
请发表友善的回复…
发表回复

158

社区成员

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

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