20145206《Java程序设计》实验三实验报告

实验内容

  1. XP基础
  2. XP核心实践
  3. 相关工具

实验步骤

(一)敏捷开发与XP
软件工程是把系统的、有序的、可量化的方法应用到软件的开发、运营和维护上的过程。软件工程包括下列领域:软件需求分析、软件设计、软件构建、软件测试和软件维护。
一个常见的公式是:软件工程=开发流程+工具
敏捷开发(Agile Development)是一种以人为核心、迭代、循序渐进的开发方法。其中,极限编程(eXtreme Programming,XP)是一种全新而快捷的软件开发方法。
一项实践在XP环境中成功使用的依据通过XP的法则呈现,包括:快速反馈、假设简单性、递增更改、提倡更改、优质工作。
XP软件开发的基石是XP的活动,包括:编码、测试、倾听、设计。
(二)编码标准
编程标准包含:具有说明性的名字、清晰的表达式、直截了当的控制流、可读的代码和注释,以及在追求这些内容时一致地使用某些规则和惯用法的重要性。
程序没有最基本的缩进,让人读起来很费劲,这个问题在Eclipse中比较容易解决:
处理之前:

我们单击Eclipse菜单中的source->Format处理之后:

Java中的一般的命名规则有:

·要体现各自的含义
·包、类、变量用名词
·方法名用动宾
·包名全部小写,如:io,awt
·类名第一个字母要大写,如:HelloWorldApp
·变量名第一个字母要小写,如:userName
·方法名第一个字母要小写:setName
·...

标识符名字应当直观且可以拼读,可望文知意,不必进行“解码”,一般采用英文单词或其组合,便于记忆和阅读,切忌使用汉语拼音来命名。

标识符的长度“min-length && max-information”的原则,可以通过去元音法把变量名变短,一般全局变量用具有说明性的名字,局部变量用短名字:单字符的名字,常见的如i,j,k等用作局部变量。

(三)结对编程
结对编程中有两个角色:

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

(四)版本控制

XP的集体所有制意味着每个人都对所有的代码负责;这一点,反过来又意味着每个人都可以更改代码的任意部分。这意味着代码要放到一个大家都能方便获取的地方,我们叫代码仓库。
版本控制提供了很多好处:
·版本控制提供项目级的 undo(撤销) 功能;
·版本控制允许多人在同一代码上工作, 只要遵守一定的控制原则就行;
·版本控制系统保存了过去所作的修改的历史记录;
·版本控制系统还支持在主线上开发的同时发布多个软件版本;
·版本控制也是项目级的时间机器,你可以选择任何一个时间, 精确地查看项目在当时的情况;

由于对git不是很熟悉,所以学习了一下git教程:


最终,HelloWorld推送成功!

(五)重构
重构(Refactor),就是在不改变软件外部行为的基础上,改变软件内部的结构,使其更加易于阅读、易于维护和易于变更 。

一个完整的重构流程包括:

·从版本控制系统代码库中Check out code
·读懂代码(包括测试代码)
·发现bad smell
·Refactoring
·运行所有的Unit Tests
·往代码库中Check in code

(六)实践项目

和结对同学完成实验,她把实验一的代码上传至git,我进行下载。

重构过程:
给类、包、方法、变量改名字。

重构完效果如下:

队友把我的实验一代码进行下载并修改,完成结对编程。

实验中遇到的问题及解决过程

问题1:在托送代码时,不知道如何能一次推送多个.java,是一个一个.java文件名敲上去吗?

解决过程:通过询问同学得知需要哪个文件就可以敲哪个上去,也可以直接传整个文件夹的内容,只要敲上文件夹的名字就可以。

问题2:在下载结对同学的代码时,只能下载对方的文件夹,不能做到只下载一个.java文件,这样就会很不方便,我们尝试着下载其中一个文件,但是没有成功,我觉得一定是有办法的,只是我们还没有找到。

解决过程:未解决。

实验体会与感悟

本次实验采用了新的形式,即两个同学一组完成实验,让我体会到了合作的重要性,两个人要分工明确,刚开始我和合作的小伙伴对于git的操作不是很熟悉,于是我们通过学习教程以及询问同学弄懂了git,并且尝试着上传了一些代码(比如helloworld),然后我们把自己实验的代码上传,并且让对方进行下载,修改对方的代码,再进行上传,这个过程我觉得是互相学习的过程,可以知道自己原来的代码有什么不足之处,也可以了解对方对于自己代码有什么想法、思路,对于我们今后的学习是很有好处的,一项工作的完成通常都不是一个人努力的结果,而是团队合作,这体现了合作的重要性,所以我们对于这方面能力的培养也不容忽视。

PSP时间

步骤 耗时 百分比
需求分析 30min 25%
设计 30min 25%
代码实现 20min 16.7%
测试 20min 16.7%
分析总结 20min 16.7%

对方博客链接

http://www.cnblogs.com/schwarizard/

参考资料

20145206《Java程序设计》实验三实验报告的更多相关文章

  1. 20145120 《Java程序设计》实验三实验报告

    20145120 <Java程序设计>实验三实验报告 实验名称:敏捷开发与XP实践 实验目的与要求: XP基础 XP核心实践 相关工具 (一)敏捷开发与XP 极限编程(eXtreme Pr ...

  2. 20155206 《Java程序设计》实验三实验报告

    20155206 <Java程序设计>实验三实验报告 实验内容 Java敏捷开发与XP实践 实验内容 XP基础 XP核心实践 相关工具 实验步骤 提交一: 提交二: 提交三: 提交四:

  3. 20155232 《Java程序设计》实验三实验报告

    20155232 <Java程序设计>实验三实验报告 实验内容 Java敏捷开发与XP实践 实验内容 XP基础 XP核心实践 相关工具 实验步骤 (一)敏捷开发与XP 敏捷开发(Agile ...

  4. 20145303《Java程序设计》实验三实验报告

    20145303<Java程序设计>实验三实验报告 ssh公钥配置及git安装: eclipse中git配置: 队友链接: http://www.cnblogs.com/5321z/p/5 ...

  5. 20145328 《Java程序设计》实验三实验报告

    20145328 <Java程序设计>实验三实验报告 实验名称 Java敏捷开发与XP实践 实验内容 XP基础 XP核心实践 相关工具 实验步骤 (一)敏捷开发与XP 敏捷开发是一种以人为 ...

  6. 20145236 《Java程序设计》实验三实验报告

    实验三实验报告 和张亚军同学一组: 实验三实验报告

  7. 20144303 《Java程序设计》第一次实验实验报告

    20144303 <Java程序设计>第一次实验实验报告 北京电子科技学院(besti)实验报告 课程:java程序设计 班级:1453 指导教师:娄嘉鹏 实验日期:2016.04.08 ...

  8. 20145240 《Java程序设计》第一次实验报告

    20145240 <Java程序设计>第一次实验报告 实验内容 一.命令行下java程序开发 1.建立Code目录,输入mkdir 20145240命令建立实验目录,并使用dir命令查看目 ...

  9. 20145330《Java程序设计》第一次实验报告

    20145330<Java程序设计>第一次实验报告 实验一Java开发环境的熟悉 实验内容 1.使用JDK编译.运行简单的Java程序: 2.使用Eclipse 编辑.编译.运行.调试Ja ...

随机推荐

  1. [Android分享] 【转帖】Android ListView的A-Z字母排序和过滤搜索功能

      感谢eoe社区的分享   最近看关于Android实现ListView的功能问题,一直都是小伙伴们关心探讨的Android开发问题之一,今天看到有关ListView实现A-Z字母排序和过滤搜索功能 ...

  2. python __name__

    当你打开一个.py文件时,经常会在代码的最下面看到if __name__ == '__main__':,现在就来介 绍一下它的作用. 模块是对象,并且所有的模块都有一个内置属性 __name__.一个 ...

  3. HTML5 localStorage 的使用

      在前端开发中,我们会常遇到要在两个甚至多个html之间通信,我们可以在url中添加参数,但是当要传递的数据量较大较多时呢,不妨试试html5 的localStorage吧. 1) 检测你的浏览器是 ...

  4. [BZOJ1691][Usaco2007 Dec]挑剔的美食家

    [BZOJ1691][Usaco2007 Dec]挑剔的美食家 试题描述 与很多奶牛一样,Farmer John那群养尊处优的奶牛们对食物越来越挑剔,随便拿堆草就能打发她们午饭的日子自然是一去不返了. ...

  5. extjs动态改变样式

    { width:438, height:440, name:'loginDiv', ui:'123', x: '50%' , y: 200, border:true, bodyStyle:{ 'bor ...

  6. ubuntu添加sudo权限

    ubuntu有时候没有开通sudo功能,有些操作只能切换到root进行,很不方便. 1.切换到root su root 2.打开suduers文件 gedit /etc/sudoers 3.找到下面这 ...

  7. PHP-redis中文文档

    phpredis是php的一个扩展,效率是相当高有链表排序功能,对创建内存级的模块业务关系 很有用;以下是redis官方提供的命令使用技巧: 下载地址如下: https://github.com/wi ...

  8. 统计代码git提交的行数

    $ git log --author="$(git config --get user.name)" --pretty=tformat: --numstat | gawk '{ a ...

  9. Linq查询非泛型集合要指定Student类型(比如List)

    #region Linq to 集合查询非泛型集合要指定Student类型            //ArrayList list = new ArrayList();            //li ...

  10. NSIS脚本入门和进阶方法

    NSIS(Nullsoft Scriptable Install System)是一个开源的 Windows 系统下安装程序制作程序.它提供了安装.卸载.系统设置.文件解压缩等功能.对于新手来说,它有 ...