脚本宝典收集整理的这篇文章主要介绍了第一次个人编程作业,脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。
这个作业属于哪个课程 | 软件工程 |
---|---|
这个作业要求在哪里 | 个人项目作业 |
这个作业的目标 | (1)完成个人编程作业编码部分(2)学会使用PSP表格(3)GITHub源代码管理(4)学会单元测试 |
heiweiluck的个人GitHud链接
PSP2.1 | PErsonal Software PRocess Stages | 预估耗时(分钟) | 实际耗时(分钟) |
---|---|---|---|
Planning | 计划 | ||
· EstiMATE | 估计这个任务需要多少时间 | 60 | 50 |
Development | 开发 | 600 | 960 |
· Analysis | 需求分析(包括学习新技术) | 180 | 240 |
· Design Spec | 生成设计文档 | 20 | 30 |
· Design review | 设计复审 | 15 | 30 |
· Coding Standard | 代码规范(为目前的开发制定合适的规范) | 10 | 20 |
· Design | 具体设计 | 50 | 40 |
· Coding | 具体编码 | 180 | 200 |
· Code Review | 代码复审 | 30 | 30 |
· test | 测试(自我测试,修改代码,提交修改 | 60 | 60 |
Reporting | 报告 | ||
· Test Repor | 测试报告 | 160 | 100 |
· Size Measurement | 计算工作量 | 40 | 30 |
· Postmortem & Process Improvement Plan | 事后总结,并提出过程改进机计划 | 20 | 20 |
合计 | 1425 | 1810 |
1.工程截图
2.计算流程
3.计算相似度算法关键:余弦相似度
(1)计算公式
(2)举例
句子A:这只皮靴号码大了。那只号码合适
句子B:这只皮靴号码不小,那只更合适
基本思路是:如果这两句话的用词越相似,它们的内容就应该越相似。因此,可以从词频入手,计算它们的相似程度。
第一步,分词。
句子A:这只/皮靴/号码/大了。那只/号码/合适。
句子B:这只/皮靴/号码/不/小,那只/更/合适。
第二步,列出所有的词。
这只,皮靴,号码,大了。那只,合适,不,小,很
第三步,计算词频。
句子A:这只1,皮靴1,号码2,大了1。那只1,合适1,不0,小0,更0
句子B:这只1,皮靴1,号码1,大了0。那只1,合适1,不1,小1,更1
第四步,写出词频向量。
句子A:(1,1,2,1,1,1,0,0,0)
句子B:(1,1,1,0,1,1,1,1,1)
到这里,问题就变成了如何计算这两个向量的相似程度。我们可以把它们想象成空间中的两条线段,都是从原点([0, 0, ...])出发,指向不同的方向。两条线段之间形成一个夹角,如果夹角为0度,意味着方向相同、线段重合,这是表示两个向量代表的文本完全相等;如果夹角为90度,意味着形成直角,方向完全不相似;如果夹角为180度,意味着方向正好相反。因此,我们可以通过夹角的大小,来判断向量的相似程度。夹角越小,就代表越相似。
计算两个句子向量
句子A:(1,1,2,1,1,1,0,0,0)
和句子B:(1,1,1,0,1,1,1,1,1)的向量余弦值来确定两个句子的相似度。
计算过程如下:
计算结果中夹角的余弦值为0.81非常接近于1,所以,上面的句子A和句子B是基本相似的
1.JProfiler性能监控图:
@H_304_286@
2.cpu load图:
3.占堆内存图:
public class test { @BeforeClass public static void beforeTest(){ System.out.println("测试即将开始"); } @AfterClass public static void afterTest(){ System.out.println("测试结束"); }
//输入错误的路径
@Test
public void test1(){ String [] test={"","",""}; try { new application.application().main(test); } catch (IOException e) { e.printStackTrace(); Assert.fail(); } }
//输入空文件
@Test
public void test2(){ String [] test={"D:/1/orig.txt","D:/1/orig_0.8_add.txt","D:/1/result.txt"}; try { new application.application().main(test); } catch (IOException e) { e.printStackTrace(); Assert.fail(); } }
//输入错误的输出文件路径 @Test public void test3(){ String [] test={"D:/1/orig.txt","D:/1/orig_0.8_add.txt","D:/1/1.txt"}; try { new application.application().main(test); } catch (IOException e) { e.printStackTrace(); Assert.fail(); } }
//测试调换语序文本 @Test public void test4(){ String [] test={"D:/1t/orig.txt","D:/1/orig_0.8_dis_1.txt","D:/1/result.txt"}; try { new application.application().main(test); } catch (IOException e) { e.printStackTrace(); Assert.fail(); } }
@Test public void test5(){ String [] test={"D:/1/orig.txt","D:/1/orig_0.8_dis_10.txt","D:/1/result.txt"}; try { new application.application().main(test); } catch (IOException e) { e.printStackTrace(); Assert.fail(); } }
//测试相同文本 @Test public void test6(){ String [] test={"D:/1/orig.txt","D:/1/orig.txt","D:/1/result.txt"}; try { new application.application().main(test); } catch (IOException e) { e.printStackTrace(); Assert.fail(); } }
@Test public void test7(){ String [] test={"D:/1/orig_0.8_dis_15.txt","D:/1/orig_0.8_dis_15.txt","D:/1/ result.txt"}; try { new application.application().main(test); } catch (IOException e) { e.printStackTrace(); Assert.fail(); } }
}
1.代码覆盖率
2.测试
1.判断文件是否为txt
2.判断命令行是否输入正确
3.判断受否输入正确的文件路径
1.命令行输入
2.输出文件内容
这次作业难度对我来说很难,所以不知道从哪下手,使用了这次的PSP文件后,我才发现做一个项目所需要的过程可以分成很多个细节,这让我想到在某些科目的作业里耗费了很多时间且效率很低的原因。在此次作业中,遇到了很多的问题,比如GitHub的代码签入,GIU bash命令中加不了文件。
以上是脚本宝典为你收集整理的第一次个人编程作业全部内容,希望文章能够帮你解决第一次个人编程作业所遇到的问题。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。