• 20155213 实验三《敏捷开发与XP实践》实验报告


    20155213 实验三《敏捷开发与XP实践》实验报告

    实验内容

    1. XP基础

    2. XP核心实践

    3. 相关工具

    实验要求

    1.没有Linux基础的同学建议先学习《Linux基础入门(新版)》《Vim编辑器》 课程

    2.完成实验、撰写实验报告,实验报告以博客方式发表在博客园,注意实验报告重点是运行结果,遇到的问题(工具查找,安装,使用,程序的编辑,调试,运行等)、解决办法(空洞的方法如“查网络”、“问同学”、“看书”等一律得0分)以及分析(从中可以得到什么启示,有什么收获,教训等)。报告可以参考范飞龙老师的指导

    1. 严禁抄袭,有该行为者实验成绩归零,并附加其他惩罚措施。

    实验步骤与结果

    (一)敏捷开发与XP

    • 敏捷开发(Agile Development)是一种以人为核心、迭代、循序渐进的开发方法。“敏捷流程”是一系列价值观和方法论的集合。从2001年开始,一些软件界的专家开始倡导“敏捷”的价值观和流程,他们肯定了流行做法的价值,但是强调敏捷的做法更能带来价值。他们的敏捷开发宣言:

    • 敏捷开发包括很多模式:

    • 我使用Axure RP 8设计出的《安全文档管理系统》中的一个UI界面

    (二)编码标准

    • 编码标准中的版式就是一个很好的例子,版式虽然不会影响程序的功能,但会影响可读性。程序的版式追求清晰、美观,是程序风格的重要因素。
      • 对于没有调整版式的源代码
    public class CodeStandard {
    public static void main(String [] args){
    StringBuffer buffer = new StringBuffer();
    buffer.append('S');
    buffer.append("tringBuffer");
    System.out.println(buffer.charAt(1));
    System.out.println(buffer.capacity());
    System.out.println(buffer.indexOf("tring"));
    System.out.println("buffer = " + buffer.toString());
    if(buffer.capacity()<20)
    buffer.append("1234567");
    for(int i=0; i<buffer.length();i++)
    System.out.println(buffer.charAt(i));
    }
    }
    
    • 调整后的:

    • 代码标准中很重要的一项是如何给包、类、变量、方法等标识符命名,能很好的命名可以让自己的代码立马上升一个档次。Java中的一般的命名规则有:
      • 要体现各自的含义
      • 包、类、变量用名词
      • 方法名用动宾
      • 包名全部小写,如:io,awt
      • 类名第一个字母要大写,如:HelloWorldApp
      • 变量名第一个字母要小写,如:userName
      • 方法名第一个字母要小写:setName
      • ...

    (三)结对编程

    • 结对编程中有两个角色:

      • 驾驶员(Driver)是控制键盘输入的人。
      • 领航员(Navigator)起到领航、提醒的作用。
    • 如何结对编程,为何要结对编程,大家参考一下结对编程和两人合作 ,重点是:

      • 驾驶员:写设计文档,进行编码和单元测试等XP开发流程。
      • 领航员:审阅驾驶员的文档、驾驶员对编码等开发流程的执行;考虑单元测试的覆盖率;思考是否需要和如何重构;帮助驾驶员解决具体的技术问题。
      • 驾驶员和领航员不断轮换角色,不要连续工作超过一小时,每工作一小时休息15分钟。领航员要控制时间。
        主动参与。任何一个任务都首先是两个人的责任,也是所有人的责任。没有“我的代码”、“你的代码”或“他/她的代码”,只有“我们的代码”。
      • 只有水平上的差距,没有级别上的差异。两人结对,尽管可能大家的级别资历不同,但不管在分析、设计或编码上,双方都拥有平等的决策权利。
    • 结对编程的体会

      • 首先是对结对同伴的选择,队友需要有自己编程方面没有能力,形成能力上的互补;
      • 其次就是两人都有这样的意识,对于出现的问题,先是互怼,据理力争,之后相互妥协得到折中最优的答案;
    • 结对学习过程


    (四)版本控制

    • 可以先用git status查看代码状态,显示有未跟踪的代码,用git add ...添加,我们使用git add HelloWorld.*把要提交的文件的信息添加到索引库中。当我们使用git commit时,git将依据索引库中的内容来进行文件的提交。这只是在本地操作,关闭实验环境会删除代码,如果想把代码保存到远程托管服务器中,需要使用git push,实验完成前使用git push相当于完成保存操作。

    (五)重构

    • 重构的概念
      • 重构(Refactor),就是在不改变软件外部行为的基础上,改变软件内部的结构,使其更加易于阅读、易于维护和易于变更 。
      • 概念的重点需要理解不改变外部行为,它保证了我们在重构原有系统的同时,不会为原系统带来新的BUG,以确保重构的安全。
    • Refactor
      • Refactor >> Rename或者Refactor >> Rename File
        • Rename 可以给类、包、方法、变量改名字

        • Rename File可以改变文件名

    • Refactor >> Encapsulate Field... 用来封装类

    • Student.java重构后

    • 重构的目的

      • 我们要修改软件,万变不离其宗,无非就是四种动机:

        • 增加新功能;
        • 原有功能有BUG;
        • 改善原有程序的结构;
        • 优化原有系统的性能

    (六)实践项目

    1. 以结对编程的方式编写一个软件,Blog中要给出结对同学的Blog网址,可以拍照展现结对编程情况,可以参考一下其他学校的作业

    2. 记录TDD和重构的过程,测试代码不要少于业务代码,Eclipse中refactor菜单下的重构技能不要少于5个

    3. 团队代码要使用git在实验楼中托管,要使用结对同学中的一个同学的账号托管。

    4. 程序要有GUI界面,参考用户界面和用户体验

    5. 程序功能从豌豆荚游戏中选择一款用Java实现,注意:团队之间项目不能有重复,课代表协调一下。

    6. 实验报告中统计自己的PSP(Personal Software Process)时间

    实验体会

    • 单元测试的好处:
      能够及时发现代码中存在的问题,使后面的代码正确率提高

    PSP(Personal Software Process)时间

    步骤 耗时(min) 百分比
    需求分析 20 20
    设计 30 30
    代码实现 30 30
    测试 10 10
    分析总结 10 10
  • 相关阅读:
    PhpExcel笔记,phpExcel中文帮助手册
    mysql “group by ”与"order by"的研究--分类中最新的内容
    mysql中,主键与普通索引
    mysql性能优化-慢查询分析、优化索引和配置
    OpenSSL
    HAProxy
    Lighttpd
    Linux find/grep命令
    keepalived
    iptables
  • 原文地址:https://www.cnblogs.com/elevator/p/6817294.html
Copyright © 2020-2023  润新知