软工个人作业

1.预测时间:


PSP2.1


Personal Software Process Stages


Time


Planning


计划


· Estimate


· 估计这个任务需要多少时间


10分钟


Development


开发


· Analysis


· 需求分析 (包括学习新技术)


20分钟


· Design Spec


· 生成设计文档


30分钟


· Design Review


· 设计复审 (和同事审核设计文档)


20分钟


· Coding Standard


· 代码规范 (为目前的开发制定合适的规范)


20分钟


· Design


· 具体设计


40分钟


· Coding


· 具体编码


5个小时


· Code Review


· 代码复审


30分钟


· Test


· 测试(自我测试,修改代码,提交修改)


1个小时


Reporting


报告


· Test Report


· 测试报告


1小时


· Size Measurement


· 计算工作量


40分钟


· Postmortem & Process Improvement Plan


· 事后总结, 并提出过程改进计划


30分钟

 
合计


11小时

2.实际时间:


PSP2.1


Personal Software Process Stages


Time


Planning


计划


· Estimate


· 估计这个任务需要多少时间


20分钟


Development


开发


· Analysis


· 需求分析 (包括学习新技术)


30分钟


· Design Spec


· 生成设计文档


10分钟


· Design Review


· 设计复审 (和同事审核设计文档)


10分钟


· Coding Standard


· 代码规范 (为目前的开发制定合适的规范)


20分钟


· Design


· 具体设计


40分钟


· Coding


· 具体编码


6个小时


· Code Review


· 代码复审


20分钟


· Test


· 测试(自我测试,修改代码,提交修改)


1个小时


Reporting


报告


· Test Report


· 测试报告


20分钟


· Size Measurement


· 计算工作量


10分钟


· Postmortem & Process Improvement Plan


· 事后总结, 并提出过程改进计划


10分钟

 
合计


10个小时

 
   

3.性能优化:

消耗最大的函数是StreamWriter.Flush(),这个函数,每次写入完成用来清空缓冲区,因为在生成10000个左右的式子时很可能缓冲区满而出现写入不完整的情况,所以每次写入一个式子我都会清空缓冲区。这个可以不使用缓冲区而直接写入来解决,然而这样的io操作可能会变慢。所以不进行改变。

优化前:

经过性能测试发现,最占用资源的函数是二元式类Two的toString 函数。跟入此函数发现,该函数会在每次调用时都根据类属性计算其字符串映射。然而此类是一个不可变对象,然而它的实例被构造后可能不会调用toString进行输出。所以,我们设置一类属性存储其字符串映射。并且,初始值为null,只有当第一次调用toString函数时才会计算其值,以后每次调用toString只要输出该属性就可以。

4.测试样例:

论证正确性:

我的生成算法可以由数学证明在线性生成过程中不会生成重复的表达式,证明如下:

首先定义元a,元集A。二元式b,二元式集B。运算符f,运算符集F。

A := 满足值域要求的 自然数、真分数 | B;

B := AFA;

F := ‘+’|’-’|’*’|’/’;

如果b1=a1 f1 a2,b2=a3 f2 a4属于B,则:

b1与b2不等价的充分条件是:

f1 != f2 或

f1 == f2 且 f1 == ‘+’ 或 ‘*’ ,(a1,a3) != (a3,a4)
&& (a1,a3) != (a4,a3)

由以上定义和推理我们可以归纳出不生成重复表达式的线性算法,即用所有一元构造狭义二元式(即两个一元和一个运算符组成),之后用狭义二元式和一元构造足够数目的广义二元式(即二元式本身也可作为元),只要在递归和迭代的生成过程中,任意二元式满足不重复的充分,则一定没有重复的二元式。

十个测试用例:

(额。。。这个是生成的文件。。。好像没法传文件啊。。。。)

百度云:http://pan.baidu.com/s/1hqvYypu

时间: 2024-12-16 08:01:31

软工个人作业的相关文章

软工总结 作业

总的来说,这本书我还没看完.看全,但是有一些文段还是给我了不少启发.我向来痛恨不知所云的某些教材,就算有校对之人,但其作者的言语不工至极,好似其语文功底处于马里亚纳海沟之中,弄得人总是一头雾水.要是再碰上逻辑混乱一点的作者,就更加崩溃.这就像你写一个安装VC的教程,但是你没有照顾到所有种类的电脑环境,这样在安装的时候就会出各种错误,更为可气的是,VC这破玩意卸载器是无法完美利落的卸载自己的程序的,VC2015尤为甚之,所以只能借助类似absolute uninstaller之类的软件完整卸载.之

软工第一次作业-01 软件工程的实践项目的自我目标

1.对实践项目完成后学习到的能力的预期: 完成实践项目,首先有利于自己编程代码的能力,对软工项目的热情也能有所提高,熟悉并熟练掌握项目的开发过程.培养团队合作精神.在实践课程结束之前,希望自己能掌握单独完成一个简单项目的能力. 2.对项目课程的期望: 希望课程能深度的讲授项目开发的操作过程,如何应用.并且能给予团队之间更多配合交流的机会.能不拒绝同学的一些提问和疑惑. 3.对项目的愿景规划: 在初期,投入百分百的热情去学习与交流,努力加强团队意识.之后,会努力完成自己所要做的任务,在团队中尽可能

软工第一次作业简单总结

PSP2.1 Personal Software Process Stages Time Planning 计划 · Estimate · 估计这个任务需要多少时间 50h Development 开发 · Analysis · 需求分析 (包括学习新技术) 30h · Design Spec · 生成设计文档 5h · Design Review · 设计复审 (和同事审核设计文档) 1h · Coding Standard · 代码规范 (为目前的开发制定合适的规范) 1h · Design

软工第一次作业

我快速的看完了整本教材,发现有以下不太明白的地方: 1)不是已有单元测试了吗?为什么要进行回归测试? 2)什么时候选用敏捷开发? 3)MSF为开发思想与宣言,那与需求分析的联系? 4)多种测试方法,如何确定测试时使用哪种方法? 5)需求变动过多怎么办? 6)如何衡量软件的质量? 7)怎样才算是好的用户体验?

软工个人作业-博客作业

一.五个问题: 1.软件开发时,比如web2.0的rest风格架构,前后端完全分离,然而其交接时,很可能出现问题,并且因为完全分离,所以有可能出现开发不同步的问题,前后端的交互耦合,开发同步的问题该如何解决. 2.数据操作,和逻辑操作,实体操作等如何分离解耦. 3.如果有效果的分层解耦,三层框架是什么. 4.过度解耦,或者大规模模块化开发时遇到的依赖冗余问题如何解决. 5.如何在开发成本和收益之间权衡需求,如何判断刚性需求,伪需求. 6.如何在开发过程中设计框架和预留接口使得迭代更加高效,维护更

软工团队作业

世界时钟转换器 代码及文档链接:https://coding.net/u/dreamtofly/p/Time_Converter_World_Clock/git

软工第一次作业 - 我和计算机

我和计算机 ----阅读优秀博文,结合问题谈感想 第一部分:结缘计算机 计算机是在我记事的时候就接触到了的一个事物,不过在当时它的作用只有一个,就是给我打游戏娱乐,在上网之后又多了一个查资料的功能罢了.不得不说,除此之外,我和计算机这个行业以及在大学专业里学的任何内容都没有任何的结缘.可我为什么选择这个专业呢?大家都常说,21世纪是互联网的时代,学计算机意味着未来可以更好的找到工作,未来的发展空间是巨大的.于是在高考填写志愿以后,计算机专业就正式与我结缘了. 大家都知道没有兴趣学什么都不容易学好

[软工]大作业答疑(四)

Q: Could we XML or Json for the code development? A: Yes you can BUT only for using it as a proxy of database to store data of entity classes. Use it ONLY IF you are familiar with it and you prefer to use it instead of plain text file (TXT or CSV). Y

软工个人作业-博客作业-WEEK2

1.是否需要代码规范:    (1)这些规范都是官僚制度下产生的浪费大家的编程时间.影响人们开发效率, 浪费时间的东西.        首先来说,从短期上和个体上来看,一个团队的代码风格必然会在一定程度上与个人的代码习惯有所冲突,所以在这个层面上来说,他对个体的开发效率在短期上会有一定影响.        然而,在宏观上,从长远角度出发,开发一个项目,是一个团队的事,制定一套代码规范会让团队的合作更加高效,更加紧密,因为代码规范的制定会让团队成员更易理解他人的代码,并且能让迭代更加轻松,并且一个