• 个人作业1_软件工程


    大气又可爱的标题

    一、预估与实际

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

    二、需求分析

    我通过百度的方式了解到,小学一年级数学有如下的几个特点:

    • 加减数字不过百
    • 不会出现的负数加减
    • 没有小数加减
    • 没有乘除
      经过分析,我认为,这个程序应当:
    • 使用的数字小于等于100
    • 应当对输入的数据进行检测,使之符合实际值

    三、设计

    1. 设计思路

    说明你如何设计这个程序
    比如:

    • 这个程序有x个类,x个函数,函数之间的调用关系是怎样的?

      • 1个类,5个函数。主函数和4个其余函数。
      • 先调用初始化文件函数,初始化文件、创建文件及创建文件输入流函数
      • 调用输入函数,输入题数等相关需求信息,并进行判断输入字符是否有异常,是否为数字等等
      • 然后在主函数中进行数据的判断及随机数和符号的生成
      • 调用写入题目的函数
      • 调用写入题目和答案的函数
    • 关键函数的流程图是怎样的?

    • 算法的关键的关键是什么?

      • 合理。需要做的就是处理数据异常,溢出,不合理情况。

    2. 实现方案 写出具体实现的步骤

    比如:

    • 准备工作:先在Github上创建仓库,克隆到本地...
    • 技术关键点:梳理一下设计思路,可能遇到哪些技术关键点
      • 克隆代码怎么写?
      • 仓库如何建立?
      • 如何提交到仓库?
      • 分支是什么?会不会提交错误?

    四、编码

    • 请说明你如何按照设计思路进行编码,并记录你在开发中遇到的问题,与解决过程
      • 遇到几个问题
      • 创建字符串数组static String[] str =new String[]{};,无法自动开辟字符串数组空间?
      • 改用List泛型解决
      • int变量未初始化,调用时一直报异常。
      • 在txt中使用换行需要在输入流中添加 才能成功换行

    1. 调试日志

    记录编码调试的日志,请记录下开发过程中的 debug 历程
    比如:

    • 在代码的什么位置,代码出现了什么问题,问题会导致什么结果,怎么解决的
      • Calculation_Num未赋值,后来调用时,Calculation_Num++;一直异常。断点,看到null指针异常。

    2. 关键代码

    请展示一段程序的关键代码,并解释代码的作用

    private static void iteration_part(int grade)
     {
    		Symbol = ranStr.nextInt(4);
    		if(grade==1 && Symbol<=1)
    			return;
    		else if(grade==2 && Symbol<=3)
    			return;
    		else
    			iteration_part(grade);
    }
    

    这是迭代,通过判断输入的年级为1或为2来控制生成的是加减还是加减乘除。
    如果符合要求就完成函数,不符合要求则不断迭代直至生成符合要求的加减乘除。

    3. 代码规范

    请给出本次实验使用的代码规范:

    • 第一条...
    • 第二条... 并人工检查代码是否符合规范
    • 第三条… 异常进行手动处理,不抛出。
    • 第四条… 不反复开辟空间,合理利用开辟的空间
    • 第四条… 进行适当合理的代码注释,方便理解,修正

    五、测试 请思考并记录你认为必要的测试点,并记录测试用例与测试结果

    测试用例 测试结果
    java MathExam6367_2 10 2 正常输出out.txt
    java MathExam6367_2 10 -2 输入的年级不合法!请重新输入题数:
    java MathExam6367_2 -10 2 输入的题数不合法!请重新输入题数:
    java MathExam6367_2 0 2 不生成题目和答案

    六、总结 请总结过程中的教训和经验,思考

    • 是否使用了“软件开发的基本策略:分而治之”,是否需要重构
      答:是,需要

    • “高质量的设计、规范的编码以及有效的测试是保证软件产品质量的三个重要方面”,你是否采用了相关的手段,是否需要重构
      答:是,需要

  • 相关阅读:
    USACO 2019 January Contest Platinum T2: Exercise Route
    USACO 2016 December Contest Gold T3: Lasers and Mirrors
    USACO 2016 December Contest Gold T2: Cow Checklist
    USACO 2016 December Contest Gold T1: Moocast
    USACO 2016 US Open Contest Gold T3: 248
    洛谷p5369[PKUSC2018]最大前缀和
    洛谷p5465 [PKUSC2018]星际穿越
    洛谷p3778[APIO2017]商旅
    NOIP2018提高组题解
    NOIP2017提高组题解
  • 原文地址:https://www.cnblogs.com/mumuyinxin/p/9622611.html
Copyright © 2020-2023  润新知