20155314 2016-2017-2 《Java程序设计》实验三 敏捷开发与XP实践
实验内容
XP基础html
XP核心实践java
相关工具git
实验知识点总结
(一)敏捷开发与XP
- 软件工程:把系统的、有序的、可量化的方法应用到软件的开发、运营和维护上的过程
- 软件工程包括如下领域:
- 软件需求分析
- 软件设计
- 软件构建
- 软件测试
- 软件维护
- 软件开发流程:人们在开发、运营、维护软件的过程当中有不少技术、作法、习惯和思想体系。软件工程把这些相关的技术和过程统一到一个体系中,叫“软件开发流程”
- 软件开发流程的目的:为了提升软件开发、运营、维护的效率,并提升软件的质量、用户满意度、可靠性和软件的可维护性
- 常见公式:
软件工程=开发流程+工具
软件=程序+软件工程
和软件企业=软件+商业模式
(邹欣老师给出)
- 常见开发流程:
- RUP(Rational Unified Process)
- PSP(Personal Software Process )
- TSP(Team Software Process )
- Agile Process
- ……
- 敏捷开发(Agile Development):是一种以人为核心、迭代、按部就班的开发方法
- 极限编程(eXtreme Programming,XP):是一种全新而快捷的软件开发方法。XP团队使用现场客户、特殊计划方法和持续测试来提供快速的反馈和全面的交流:
- XP是以开发符合客户须要的软件为目标而产生的一种方法论
- XP是一种以实践为基础的软件工程过程和思想
- XP认为代码质量的重要程度超出人们通常所认为的程度
- XP特别适合于小型的有责任心的、自觉自励的团队开发需求不肯定或者迅速变化的软件
XP软件开发是什么样的
经过XP准则来表达:
- 沟通 :XP认为项目成员之间的沟通是项目成功的关键,并把沟通看做项目中间协调与合做的主要推进因素。
- 简单 :XP假定将来不能可靠地预测,在如今考虑它从经济上是不明智的,因此不该该过多考虑将来的问题而是应该集中力量解决燃眉之急。
- 反馈 :XP认为系统自己及其代码是报告系统开发进度和状态的可靠依据。系统开发状态的反馈能够做为一种肯定系统开发进度和决定系统下一步开发方向的手段。
- 勇气:表明了XP认为人是软件开发中最重要的一个方面的观点。在一个软件产品的开发中人的参与贯穿其整个生命周期,是人的勇气来排除困境,让团队把局部的最优抛之脑后,达到更重大的目标。代表了XP对“人让项目取得成功”的基本信任态度。
- 一项实践在XP环境中成功使用的依据经过
XP的法则
呈现,包括:
- 快速反馈
- 假设简单性
- 递增更改
- 提倡更改
- 优质工做
- XP软件开发的基石是
XP的活动
,包括:
(二)编码标准
- 编写代码一个重要的认识是“程序大多时候是给人看的”,编程标准使代码更容易阅读和理解,甚至能够保证其中的错误更少。
- 编程标准包含:
- 具备说明性的名字
- 清晰的表达式
- 直截了当的控制流
- 可读的代码和注释
- 在追求这些内容时一致地使用某些规则和惯用法的重要性
- 编码标准中的版式就是一个很好的例子,版式虽然不会影响程序的功能,但会影响可读性。程序的版式追求清晰、美观,是程序风格的重要因素。
- Java中的通常的命名规则:
- 要体现各自的含义
- 包、类、变量用名词
- 方法名用动宾
- 包名所有小写,如:io,awt
- 类名第一个字母要大写,如:HelloWorldApp
- 变量名第一个字母要小写,如:userName
- 方法名第一个字母要小写:setName
- ...
(三)结对编程
结对编程是XP中的重要实践。在结对编程模式下,一对程序员肩并肩、平等地、互补地进行开发工做。他们并排坐在一台电脑前,面对同一个显示器,使用同一个键盘、同一个鼠标一块儿工做。他们一块儿分析,一块儿设计,一块儿写测试用例,一块儿编码,一块儿作单元测试,一块儿作集成测试,一块儿写文档等。程序员
- 结对编程中有两个角色:
- 驾驶员(Driver)是控制键盘输入的人。
- 领航员(Navigator)起到领航、提醒的做用。
- 如何结对编程:
- 驾驶员:写设计文档,进行编码和单元测试等XP开发流程。
- 领航员:审阅驾驶员的文档、驾驶员对编码等开发流程的执行;考虑单元测试的覆盖率;思考是否须要和如何重构;帮助驾驶员解决具体的技术问题。
- 驾驶员和领航员不断轮换角色,不要连续工做超过一小时,每工做一小时休息15分钟。领航员要控制时间。
- 主动参与。任何一个任务都首先是两我的的责任,也是全部人的责任。没有“个人代码”、“你的代码”或“他/她的代码”,只有“咱们的代码”。
- 只有水平上的差距,没有级别上的差别。两人结对,尽管可能你们的级别资历不一样,但无论在分析、设计或编码上,双方都拥有平等的决策权利。
- 结对编程中出现分歧,应
对事不对人
(四)版本控制(Version Control)
- 代码仓库
- 版本控制的好处:
- 版本控制提供项目级的 undo(撤销) 功能: 没有什么事情是终结版本, 任何错误必须很容易回滚。 假设你在使用世界上最复杂的文字处理系统。 它具有了全部的能想到的功能,就是没有支持 DELETE(删除) 键。想象你打字的时候得多么的谨慎和缓慢吧, 特别是一篇超大的文档的快临近末尾的时候, 一个不当心就要重头再来(试想你选中全部的文字, 不当心按了 DELETE 键, 由于没有撤销功能,只好从新录入)。编辑文字和版本控制相同,任什么时候候都须要回滚,不管是一个小时, 一天, 仍是一周, 这让你的团队工做自由快速的工做, 并且对于修正错误也很是自信。
- 版本控制容许多人在同一代码上工做, 只要遵照必定的控制原则就行。 不再会发生诸如一我的覆盖了另外一我的编辑的代码,致使那我的的修改无效这样的状况。
- 版本控制系统保存了过去所做的修改的历史记录。若是你遭遇到一些惊讶的代码,经过版本控制系统能够很容易找出是谁干的, 修改了什么, 修改的时间, 若是幸运的话,还能找出缘由。
- 版本控制系统还支持在主线上开发的同时发布多个软件版本。在软件发布的时候也不须要整个团队的中止工做,不须要冻结代码。
- 版本控制也是项目级的时间机器,你能够选择任何一个时间, 精确地查看项目在当时的状况。 这对研究很是有用, 也是重现之前某个有问题的发布版本的基础。
(五)重构
(六)实践项目
实验报告中统计本身的PSP(Personal Software Process)时间
需求分析 |
6min |
6.5% |
设计 |
20min |
21.7% |
代码实现 |
25min |
27.2% |
测试 |
11min |
12.0% |
分析总结 |
30min |
32.6% |
实验过程当中遇到的问题及解决
(1)关于git for windows中文乱码问题

尝试修改编码为UTF-8后仍不成功:




在改成GBK(Chinese)后终于解决:


终于全变成中文啦ヾ(๑╹◡╹)ノ"windows
(2)关于git push不成功的问题及解决

(3)关于git log乱码问题

解决:在option
中将编码改为UTF-8便可~
设计模式
(4)关于git Bash崩溃的问题
git Bash忽然打不开了,很难过QAQ

解决:只好用git-cmd了(T ^ T)
安全
实验体会与总结
“本身动手,丰衣足食。”
本次Java实验让我更切身感觉到动手实践的重要性,避免眼高手低,勤于动手、热衷实践才是学好一切的王道。
参考资料
工具
- JUnit
- umbrello
- StarUML