软件工程第二次作业

软件工程第二次作业

作业属于哪个课程 班级
作业要求 论文查重
作业的目标 熟悉PSP流程、gitcode使用方法以及单元测试自动化

1.作业gitcode链接

2.PSP表格

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

3.计算模块接口的设计与实现过程

3.1. 代码组织

主要分为以下功能模块

  • 文件I/O模块:读取原文和抄袭版文件内容->read_file
  • LCS计算模块:计算最长公共子序列长度->lcs_length
  • 结果输出模块:将查重率写入答案文件->main
  • 工具函数模块:提供基础算法支持->max, swap, swap_long

3.2. 函数关系

  • main函数调用read_file(读取原文及抄袭版)、lcs_length(计算查重率)、输出文件

3.3.关键算法流程

  • 比较字符串长度,初始化dp数组,然后遍历字符。如果字符匹配,则更新DP[j] = DP[j-1][i-1]+1;如果不匹配,则取max(DP[j-1], DP[i][j-1])。直到遍历完成后,返回dp数组末位值。

4.计算模块接口部分的性能改进

4.1.改进过程

  • 初始为二维dp数组,改为一维滚动数组,然后增加字符串长度预处理,交换长短串。lcs_length函数中将内层循环步长减少,减少分支判断。

4.2.性能分析图以及消耗最大函数

5.计算模块部分单元测试展示

5.1.单元测试代码

  • 用空文件、单字符文件、全相同字符文件进行边界测试

posted @ 2025-03-14 22:12  牦牛123  阅读(20)  评论(0)    收藏  举报