个人项目总结

一、估计耗时与实际耗时

PSP2.1

Personal Software Process Stages

预计时间/h

实际时间/h

Planning

计划

1

1

Estimate

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

1

1

Development

开发

14

28.5

Analysis

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

2

3

Design Spec

生成设计文档

0.5

0.5

Design Review

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

0.5

0.5

Coding Standard

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

1

0.5

Design

具体设计

1

3

Coding

具体编码

5

10

Code Review

代码复审

1

3

Test

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

3

8

Reporting

报告

4

5

Test Report

测试报告

2

3

Size Measurement

计算工作量

1

1

Postmortem Process Improvement Plan

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

1

1

 

合计

19

34.5

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

二、改进程序性能

由于本次编程一开始设计时没有很好的规划程序的具体结构,许多模块都是在代码编写时确定的,其中功能有不少的交叉部分,这使得后期在改进性能时工作量比较大且有一定困难。

举一例子,最初完成程序时,我将计算功能放在main函数中,这使得代码的模块化特性较差,且一定程度上降低了运算的效率。在经过思考后,我决定将计算具体步骤集成到随机数类(RandomNumber类)中,具体代码如下:

public void add(RandomNumber e2){

                int lcm=Lcm(deno,e2.deno);

                ele=ele*lcm/deno+e2.ele*lcm/e2.deno;

                deno=lcm;

                int gcd = Gcd(deno, ele);

                ele /= gcd;

                deno /= gcd;

                if(deno == 1)

                    isInt=true;

            setValue();

        }

        public void sub(RandomNumber e2)

        {

            int lcm = Lcm(deno, e2.deno);

            ele = ele * lcm / deno - e2.ele * lcm / e2.deno;

            deno = lcm;

            if (deno == 1)

                isInt = true;

            setValue();

        }

        public void multi(RandomNumber e2)

        {

            deno *= e2.deno;

            ele *= e2.ele;

            int gcd = Gcd(ele, deno);

            ele /= gcd;

            deno /= gcd;

            setValue();

        }

        public void dev(RandomNumber e2)

        {

            deno *= e2.ele;

            ele *= e2.deno;

            int gcd = Gcd(ele, deno);

            ele /= gcd;

            deno /= gcd;

            setValue();

        }

经过这样的改进后,程序在进行算式运算时的效率有了明显的改善。

三、代码测试

由于本次作业我使用了控制台输入,所以测试时输入和原始要求有较大差异。在测试中,程序满足最多生成10000道题的要求,同时也满足分母和整数部分不超过range的要求。整体符合本次作业要求。

四、感想与收获

可以看到,本次作业我在时间的预估和实际用时之间还是有较大的出入的。在经过这次作业后我认为问题的根源主要在于程序设计这一块,由于自己在设计时的懈怠,许多具体的细节问题还没有完全想明白就急着进行代码编写,许多函数和类都是在编写过程中随意设计的,这直接导致了编程后期代码的逻辑混乱以及不同类之间的功能交叉。在今后的软件开发过程中,我一定要重视软件初期的设计,从根本上杜绝这次作业所犯的错误。

posted @ 2015-09-29 18:05  ACEWJH  阅读(387)  评论(0编辑  收藏  举报