• 个人项目总结


    一、估计耗时与实际耗时

    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的要求。整体符合本次作业要求。

    四、感想与收获

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

  • 相关阅读:
    checkbox 实现单选效果(html)
    HDU-6850 Game
    牛客练习赛29----F 算式子
    牛客多校第二场 B Boundary
    D. Omkar and Circle
    【洛谷】P3306 [SDOI2013]---- 随机数生成器
    二次剩余
    【洛谷】--P2704 [NOI2001]炮兵阵地
    【洛谷】4310 绝世好题
    快速排序
  • 原文地址:https://www.cnblogs.com/acewjh/p/4846968.html
Copyright © 2020-2023  润新知