一、实验内容

1. XP基础

2. XP核心实践

3. 相关工具

二、实验过程(本次试验是在自己电脑上完成,没有使用实验楼)

(一)敏捷开发与XP

1.XP是以开发符合客户需要的软件为目标而产生的一种方法论

2.XP是一种以实践为基础的软件工程过程和思想

3.XP认为代码质量的重要程度超出人们一般所认为的程度

4.XP特别适合于小型的有责任心的、自觉自励的团队开发需求不确定或者迅速变化的软件

一项实践在XP环境中成功使用的依据通过XP的法则呈现,包括:快速反馈、假设简单性、递增更改、提倡更改、优质工作。

XP软件开发的基石是XP的活动,包括:编码、测试、倾听、设计。

项目成员用户成功执行XP活动的技术通过XP实践来呈现,包括编程、团队、过程相关的12条实践

(二)编码标准

编程标准包含:具有说明性的名字、清晰的表达式、直截了当的控制流、可读的代码和注释,以及在追求这些内容时一致地使用某些规则和惯用法的重要性。

在Eclipse中使用快捷键Ctrl+Shift+F可以按Eclipse规定的规范缩进。

标准格式如图:

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

1.要体现各自的含义

2.包、类、变量用名词

3.方法名用动宾

4.包名全部小写,如:io,awt

5.类名第一个字母要大写,如:HelloWorldApp

6.变量名第一个字母要小写,如:userName

7.方法名第一个字母要小写:setName

……

(三)结对编程

结对编程是XP中的重要实践。

结对编程中有两个角色:

驾驶员:写设计文档,进行编码和单元测试等XP开发流程。

领航员:审阅驾驶员的文档、驾驶员对编码等开发流程的执行;考虑单元测试的覆盖率;思考是否需要和如何重构;帮助驾驶员解决具体的技术问题。

重点注意:有效地合作要做到对事不对人。

(四)版本控制

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

(五)重构

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

1.重构的第一项功能就是Rename,可以给类、包、方法、变量改名字。

修改方法:用鼠标单击要改的名字,选择Eclipse中菜单中的Refactor->Rename...

2.封装类

选中某个需要封装的类,如name, age, id类,然后Eclipse中菜单中的Refactor->Encapsulate Field

每次打印学生信息都这么写代码违反了DRY原则,造成代码重复,正常的重构可以使用Eclipse中的Extract Method

修改软件的目的:

1.增加新功能;

2.原有功能有BUG;

3.改善原有程序的结构;

4.优化原有系统的性能 。

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

1.从版本控制系统代码库中Check out code

2.读懂代码(包括测试代码)

3.发现bad smell

4.Refactoring

5.运行所有的Unit Tests

6.往代码库中Check in code

(六)实践项目

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

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

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

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

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

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

本次实验我们小组做的题目是设计贪吃蛇游戏。

产品代码截图如下:

伪代码:

1.设计一个行为30,列为50,由格子构成的院子

2.定义一条蛇和一个蛋,蛇吃掉一个蛋后则在院内任意地方随机产生一个蛋。

3.蛇吃掉一个蛋则加5分

4.若碰到蛋则蛇的身体变长一格,游戏继续,启动游戏后若蛇碰到边界或是自己的身体则游戏结束。

游戏运行结果截图如下图:

PSP时间统计

步骤

耗时

百分比

需求分析

25min

8.2%

设计

80min

26.2%

代码实现

120min

39.3%

测试

55min

18%

分析总结

25min

8.2%

三、实验收获和总结

本次实验难度系数较大,根据实验指导书,前面的几项任务都不太复杂,根据指导可以很容易实现,并且让我们了解了如何快速规范化代码的格式和重构的应用方法。但是对于最后的游戏设计这个环节而言,我和我的搭档意识到平时所学的java知识不足以完美地完成本次实验,因此我借鉴了网上与贪吃蛇游戏相关的代码,认真研读、理解代码内容,并细心调试代码,最终完成了本次实验中难度最大的部分。在研究代码的过程中,我对git的应用理解加深,熟练掌握这个工具后,对我们日后的编程学习大有裨益。同时,我们需要继续深入学习有关java开发的知识,不能仅仅满足于书本,也不能仅仅满足于看懂代码,更重要的是亲手编写代码,在亲身实践中收获更多。

四、结对同学blog地址:http://www.cnblogs.com/disturbia/

java实验三实验报告的更多相关文章

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

    20145206<Java程序设计>实验三实验报告 实验内容 XP基础 XP核心实践 相关工具 实验步骤 (一)敏捷开发与XP 软件工程是把系统的.有序的.可量化的方法应用到软件的开发.运 ...

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

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

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

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

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

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

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

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

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

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

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

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

  8. 20145337实验三实验报告——敏捷开发与XP实践

    20145337实验三实验报告--敏捷开发与XP实践 实验名称 敏捷开发与XP实践 实验内容 XP基础 XP核心实践 相关工具 ** 实验步骤**### 敏捷开发与XP 软件工程包括下列领域:软件需求 ...

  9. 20145229实验三实验报告——敏捷开发与XP实践

    20145229实验三实验报告--敏捷开发与XP实践 实验名称 敏捷开发与XP实践 实验内容 XP基础 XP核心实践 相关工具 ** 实验步骤**### 敏捷开发与XP 软件工程包括下列领域:软件需求 ...

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

    实验三 敏捷开发与XP实践 实验内容 XP基础 XP核心实践 相关工具 实验要求 1.没有Linux基础的同学建议先学习<Linux基础入门(新版)><Vim编辑器> 课程 2 ...

随机推荐

  1. 50道Java线程面试题(转载)

    1) 什么是线程? 线程是操作系统能够进行运算调度的最小单位,它被包含在进程之中,是进程中的实际运作单位.程序员可以通过它进行多处理器编程,你可以使用多线程对运算密集型任务提速.比如,如果一个线程完成 ...

  2. 填移动端坑系列一——如何让h5页面完美整屏显示

    原创哟,转载请附上本文连接(http://www.cnblogs.com/AliceX-J/p/6707908.html),作者 印前 后续更简单 前言: 最近让做一个h5的活动专题,便让我浩浩荡荡进 ...

  3. 逻辑卷管理-LVM(Logical Volume Manager)

    一. 概念与由来 LVM:逻辑卷管理(Logical Volume Manager) 普通的磁盘分区管理方式在逻辑分区划分好之后就无法改变其大小,当一个逻辑分区存放不下某文件时,这个文件因为受上层文件 ...

  4. 前端框架比较,Layui - iView - ElementUI

    Layui 分为单页版和iframe版 单页版 通过将单页代码输出到div,不如要完整的html代码. 刷新页面后,依然能够记录上一次的页面. 此种方式不易于调试前端代码. Iframe版 通过ifr ...

  5. docker的简单使用----适用于新手

    Docker 1.简介 Docker是一个开源的应用容器引擎 将软件编译成一个镜像:然后在镜像里各种软件做好配置,将镜像发布出去,其他的使用这就可以直接使用这个镜像.运行中的这个镜像叫做容器,容器启动 ...

  6. Golang设计模式—简单工厂模式(Simple Factory Pattern)

    Golang设计模式--简单工厂模式 背景 假设我们在做一款小型翻译软件,软件可以将德语.英语.日语都翻译成目标中文,并显示在前端. 思路 我们会有三个具体的语言翻译结构体,或许以后还有更多,但现在分 ...

  7. 大数据入门第十一天——hive详解(二)基本操作与分区分桶

    一.基本操作 1.DDL 官网的DDL语法教程:点击查看 建表语句 CREATE [EXTERNAL] TABLE [IF NOT EXISTS] table_name [(col_name data ...

  8. 【HNOI2014】道路堵塞

    题面 题解 解法一 这个思路要基于以下一个结论: 当你删掉某条边\((x,x+1)\)时,最短路路线为:\(1\to x(\leq u)\to y(>u) \to n\),并且\(x\to y\ ...

  9. P3702 [SDOI2017]序列计数

    P3702 [SDOI2017]序列计数 链接 分析: 首先可以容斥掉,用总的减去一个质数也没有的. 然后可以dp了,f[i][j]表示到第i个数,和在模p下是j的方案数,矩阵快速幂即可. 另一种方法 ...

  10. Codeforces 909 D. Colorful Points (模拟)

    题目链接: Colorful Points 题意: 给出一段字符串(长度最大为1e6),每次操作可以删除字符串中所有相邻字符与其不同的字符.例如:aabcaa 删除一次就变成了aa,就无法再删除了.题 ...