实验三 敏捷开发与XP实践
一、实验内容
1. XP基础
2. XP核心实践
3. 相关工具
二、实验要求
1.完成实验、撰写实验报告,注意实验报告重点是运行结果,遇到的问题(工具查找,安装,使用,程序的编辑,调试,运行等)、解决办法(空洞的方法如“查网络”、“问同学”、“看书”等一律得0分)以及分析(从中可以得到什么启示,有什么收获,教训等)。
2. 严禁抄袭,有该行为者实验成绩归零,并附加其他惩罚措施。
三、实验步骤
(一)敏捷开发与XP
1.软件工程是把系统的、有序的、可量化的方法应用到软件的开发、运营和维护上的过程。
2.软件工程包括下列领域:软件需求分析、软件设计、软件构建、软件测试和软件维护。
3.软件开发流:人们在开发、运营、维护软件的过程中有很多技术、做法、习惯和思想体系。软件工程把这些相关的技术和过程统一到一个体系中,叫“软件开发流程”。软件开发流程的目的是为了提高软件开发、运营、维护的效率,并提高软件的质量、用户满意度、可靠性和软件的可维护性。
4.软件工程=开发流程+工具,软件=程序+软件工程
常见的开发流程有:
- RUP(Rational Unified Process)
- PSP(Personal Software Process )
- TSP(Team Software Process )
- Agile Process
- ……
5.敏捷开发(Agile Development)是一种以人为核心、迭代、循序渐进的开发方法。“敏捷流程”是一系列价值观和方法论的集合。
6.敏捷开发包括很多模式:其中,极限编程(eXtreme Programming,XP)是一种全新而快捷的软件开发方法。
7.XP软件开发的基石是XP的活动,包括:编码、测试、倾听、设计。
(二)编码标准
编程标准包含:具有说明性的名字、清晰的表达式、直截了当的控制流、可读的代码和注释,以及在追求这些内容时一致地使用某些规则和惯用法的重要性。
编码标准中的版式就是一个很好的例子,版式虽然不会影响程序的功能,但会影响可读性。程序的版式追求清晰、美观,是程序风格的重要因素。
程序没有最基本的缩进,让人读起来很费劲,这个问题在Eclipse中比较容易解决,例如:
再根据代码逻辑加入一些空行:
!注意:
1.Java中的一般的命名规则有:
- 要体现各自的含义
- 包、类、变量用名词
- 方法名用动宾
- 包名全部小写,如:io,awt
- 类名第一个字母要大写,如:HelloWorldApp
- 变量名第一个字母要小写,如:userName
- 方法名第一个字母要小写:setName
- ...
2.关于代码标准,可以遵循以下原则:
(三)结对编程
结对编程是XP中的重要实践。结对编程中有两个角色:
- 驾驶员(Driver)是控制键盘输入的人。
- 领航员(Navigator)起到领航、提醒的作用。
(四)版本控制(说明:此部分我是在自己电脑上进行的操作,没有在实验楼里用git)
XP的集体所有制的一个主要优势是提升了开发程序的速度,因为一旦代码中出现错误,任何程序员都能修正它。 这意味着代码要放到一个大家都能方便获取的地方,我们叫代码仓库。这引出另外一个话题叫版本控制(Version Control)。流行的版本控制工具有CVS,SVN,Git等。Git是Linus除了Linux操作系统外的另外一个重要发明。
首先,我下载了git for windows,进行安装,然后创建版本库。接着进行实验操作:
1.创建HelloWorld目录,如下图所示:
提交代码,用git status查看一下代码状态:
此时代码为:
修改代码之后再次提交:
此时代码为:
通过git log查看代码提交记录:
(五)重构
1.重构(Refactor),就是在不改变软件外部行为的基础上,改变软件内部的结构,使其更加易于阅读、易于维护和易于变更。
2.重构中一个非常关键的前提就是“不改变软件外部行为”,它保证了我们在重构原有系统的同时,不会为原系统带来新的BUG,以确保重构的安全。重构几乎是现代IDE的标配:
a.重构功能一——Rename
Rename完成后:
b.重构功能二——封装
对name、age、id全部操作后,再对34,35行进行修改,因为每次打印学生信息都这么写代码违反了DRY原则,造成代码重复,正常的重构可以使用Eclipse中的Extract Method...。最终代码为:
(六)实践项目
基于Java的贪吃蛇:
七、遇到的问题及解决办法
1.在实验楼里操作git时,开通代码库时由于没有提前看清楚要求,导致命名错误,无法进行实验
解决办法:首先在网上学习了git的相关知识,看的是廖学锋的讲解,感觉收获很大。并下载了git for windows,在自己的电脑上进行了实验操作。
2.一开始面对贪吃蛇完全没有头绪,不知从何编起
解决办法:网上查阅了许多资料,大致了解了设计的几个步骤。首先进行伪代码编写:利用方向键来改变蛇的运行方向,空格键暂停或继续游戏,并在随机的地方产生食物,吃到食物就变成新的蛇体,碰到壁或自身则游戏结束,否则正常运行。总结来说,要综合应用JAVA的面向对象思想,封装类,接口等概念来完成本游戏。然后对代码进行了学习。
八、实验体会
这次试验印象比较深刻,感觉所运用的知识以及所获取的知识都比较实用。例如git,不仅这次实验用的到,平时也可以对自己的文件进行版本控制。并且感受到,自己动手操作才能更好的理解知识。而且在实验的过程中,对不断出现的新知识的查阅、吸收对自己也是一个很大的提高。另外,这次实验让完成一个游戏的设计。感觉难度较大。虽然通过学习能够大致理解设计的一个思想和流程,但是对于代码的编写和敏感度还需要进一步提高。