20155324 《Java程序设计》实验三 敏捷开发与XP实践
20155324 《Java程序设计》实验三 敏捷开发与XP实践
实验内容
- XP基础
1.XP核心实践
2.相关工具
实验步骤
- 敏捷开发与XP
1.敏捷开发(Agile Development)是一种以人为核心、迭代、循序渐进的开发方法。“敏捷流程”是一系列价值观和方法论的集合。
2.软件工程=开发流程+工具
3.常见的开发流程有:
·RUP(Rational Unified Process)
·PSP(Personal Software Process )
·TSP(Team Software Process )
·Agile Process
……
4.极限编程(eXtreme Programming,XP)是一种全新而快捷的软件开发方法:
·XP是以开发符合客户需要的软件为目标而产生的一种方法论
·XP是一种以实践为基础的软件工程过程和思想
·XP认为代码质量的重要程度超出人们一般所认为的程度
·XP特别适合于小型的有责任心的、自觉自励的团队开发需求不确定或者迅速变化的软件
5.XP准则:
·沟通 :XP认为项目成员之间的沟通是项目成功的关键,并把沟通看作项目中间协调与合作的主要推动因素。
·简单 :XP假定未来不能可靠地预测,在现在考虑它从经济上是不明智的,所以不应该过多考虑未来的问题而是应该集中力量解决燃眉之急。
·反馈 :XP认为系统本身及其代码是报告系统开发进度和状态的可靠依据。系统开发状态的反馈可以作为一种确定系统开发进度和决定系统下一步开发方向的手段。
·勇气:代表了XP认为人是软件开发中最重要的一个方面的观点。在一个软件产品的开发中人的参与贯穿其整个生命周期,是人的勇气来排除困境,让团队把局部的最优抛之脑后,达到更重大的目标。表明了XP对“人让项目取得成功”的基本信任态度。
实践在XP环境中成功使用的依据通过XP的法则呈现,包括:快速反馈、假设简单性、递增更改、提倡更改、优质工作。
6.XP软件开发的基石是XP的活动,包括:编码、测试、倾听、设计。
7.我们关注的XP实践:编码标准,结对编程,代码集体所有,测试,重构等。
- 编码标准
1.编程标准使代码更容易阅读和理解,保证其中的错误更少。
2.编程标准包含:具有说明性的名字、清晰的表达式、直截了当的控制流、可读的代码和注释,以及在追求这些内容时一致地使用某些规则和惯用法的重要性。
3.使用IDEA时,将原本没有缩进的代码直接粘贴至其编写代码的区域就会自动缩进,方便快捷、可读性强:
4.Java中的一般的命名规则:
·要体现各自的含义
·包、类、变量用名词
·方法名用动宾
·包名全部小写,如:io,awt
·类名第一个字母要大写,如:HelloWorldApp
·变量名第一个字母要小写,如:userName
·方法名第一个字母要小写:setName
...
5.标识符名字应当望文知意,一般采用英文单词或其组合。标识符的长度“min-length && max-information”的原则,可以通过去元音法把变量名变短;全局变量用具有说明性的名字,局部变量用短名字:单字符的名字,常见的如i,j,k等用作局部变量。
- 结对编程
1.结对编程中有两个角色:
·驾驶员:写设计文档,进行编码和单元测试等XP开发流程。
·领航员:审阅驾驶员的文档、驾驶员对编码等开发流程的执行;考虑单元测试的覆盖率;思考是否需要和如何重构;帮助驾驶员解决具体的技术问题。
·驾驶员和领航员不断轮换角色,不要连续工作超过一小时,每工作一小时休息15分钟。领航员要控制时间。
·主动参与。任何一个任务都首先是两个人的责任,也是所有人的责任。没有“我的代码”、“你的代码”或“他/她的代码”,只有“我们的代码”。
·只有水平上的差距,没有级别上的差异。两人结对,尽管可能大家的级别资历不同,但不管在分析、设计或编码上,双方都拥有平等的决策权利。
1.XP的集体所有制意味着每个人都对所有的代码负责;这一点,反过来又意味着每个人都可以更改代码的任意部分。集体所有制的一个主要优势是提升了开发程序的速度,因为一旦代码中出现错误,任何程序员都能修正它。这意味着代码要放到一个大家都能方便获取的地方,我们叫代码仓库。
2.版本控制提供项目级的 undo(撤销)功能:没有什么事情是终结版本, 任何错误必须很容易回滚。
3.版本控制允许多人在同一代码上工作,只要遵守一定的控制原则就行。不会发生诸如一个人覆盖了另一个人编辑的代码,导致那个人的修改无效这样的情况。
4.版本控制系统保存了过去所作的修改的历史记录。如果你遭遇到一些惊讶的代码,通过版本控制系统可以很容易找出是谁干的,修改了什么,修改的时间,还能找出原因。
5.版本控制系统还支持在主线上开发的同时发布多个软件版本。在软件发布的时候也不需要整个团队的停止工作,不需要冻结代码。
6.git上传基本步骤:
·修改代码文件
·添加修改文件
·git add 所有修改的文件
·提交到环境中本地代码仓库
·git commit -m '本次修改的描述'
·push到你的项目中
·git push
使用git克隆其他用户代码仓库只需要知道对方的仓库链接。

- 重构
1.重构(Refactor)就是在不改变软件外部行为的基础上,改变软件内部的结构,使其更加易于阅读、易于维护和易于变更。
2.IDEA菜单中有个refactor菜单,可以帮助我们进行代码重构。
·功能1:Rename,可以给类、包、方法、变量改名字,使代码在没有注释的情况下也可以被了解基本信息。修改方法是选择IDEA中菜单中的Refactor->Rename。
·功能2:封装。修改方法是选择菜单中的
Refactor->Refactor this->Encapsulate Field...




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


由于Java中所有的类都有个专门的toString方法,还可以使用IDEA中`Code->Generate->toString()...` 给Student类产生一个toString方法。



6.一个完整的重构流程:
·从版本控制系统代码库中Check out code
·读懂代码(包括测试代码)
·发现bad smell
·Refactoring
·运行所有的Unit Tests
·往代码库中Check in code

- 实践项目
1.建立小组;

2.下载同组成员代码;
3.下载代码的命名格式不正确,重新命名并上传代码;
4.下载代码违反了DRY原则,造成代码重复,使用Refactor->Extract->Method...改进并上传代码;

实验中的问题和解决过程
问题:练习重构时,使用IDEA给Student类产生一个toString方法的结果与老师的实验步骤的结果并不一样,虽然产生了一个toString()方法,但是最后的System.out.println()那一句还是原来样子,并没有改变成System.out.println(s.toString());。
解决:我不太清楚IDEA中转换的原理到底是什么,最后我手动改变了这一句。
PSP(Personal Software Process)时间
| 步骤 | 耗时 | 百分比 |
|---|---|---|
| 需求分析 | 40min | 16.70% |
| 设计 | 80min | 33.35% |
| 代码实现 | 80min | 33.35% |
| 测试 | 20min | 8.30% |
| 分析总结 | 20min | 8.30% |
参考资料
20155324 《Java程序设计》实验三 敏捷开发与XP实践的更多相关文章
- 20155229实验三 《Java面向对象程序设计实验三 敏捷开发与XP实践 》实验报告
实验题目 1.在IDEA中使用工具(Code->Reformate Code)把下面代码重新格式化,再研究一下Code菜单,找出一项让自己感觉最好用的功能. 2.下载搭档实验二的Complex代 ...
- 20145213《Java程序设计》实验三敏捷开发与XP实践
20145213<Java程序设计>实验三敏捷开发与XP实践 实验要求 1.XP基础 2.XP核心实践 3.相关工具 实验内容 1.敏捷开发与XP 软件工程是把系统的.有序的.可量化的方法 ...
- 20145308刘昊阳 《Java程序设计》实验三 敏捷开发与XP实践 实验报告
20145308刘昊阳 <Java程序设计>实验三 敏捷开发与XP实践 实验报告 实验名称 敏捷开发与XP实践 实验内容 XP基础 XP核心实践 相关工具 统计的PSP(Personal ...
- 20145225《Java程序设计》 实验三 "敏捷开发与XP实践"
20145225<Java程序设计> 实验三 "敏捷开发与XP实践" 实验报告 实验内容 使用 git 上传代码 使用 git 相互更改代码 实现代码的重载 git 上 ...
- 20165205 2017-2018-2 《Java程序设计》实验三 敏捷开发与XP实践
20165205 2017-2018-2 <Java程序设计>实验三 敏捷开发与XP实践 实验内容 检查点1: 安装alibaba 插件,解决代码中的规范问题 首先把搭档加入到自己的项目中 ...
- 20155314 2016-2017-2 《Java程序设计》实验三 敏捷开发与XP实践
20155314 2016-2017-2 <Java程序设计>实验三 敏捷开发与XP实践 实验内容 XP基础 XP核心实践 相关工具 实验知识点总结 (一)敏捷开发与XP 软件工程:把系统 ...
- 20165230 《Java程序设计》实验三 敏捷开发与XP实践 实验报告
20165230 <Java程序设计>实验三 敏捷开发与XP实践 实验报告 一.实验报告封面 课程:Java程序设计 班级:1652班 姓名:田坤烨 学号:20165230 成绩: 指导教 ...
- 20155207王雪纯 《Java程序设计》实验三 敏捷开发与XP实践 实验报告
20155207王雪纯 <Java程序设计>实验三 敏捷开发与XP实践 实验报告 实验名称 敏捷开发与XP实践 实验内容 XP基础 XP核心实践 相关工具 统计的PSP(Personal ...
- 20155233 《Java程序设计》 实验三 敏捷开发与XP实践
20155233 <Java程序设计> 实验三 敏捷开发与XP实践 实验内容 XP基础 XP核心实践 相关工具 实验步骤与内容 1.在IDEA中使用工具(Code->Reformat ...
随机推荐
- 天梯赛 L2-001 紧急救援
L2-001 紧急救援 (25 分) 作为一个城市的应急救援队伍的负责人,你有一张特殊的全国地图.在地图上显示有多个分散的城市和一些连接城市的快速道路.每个城市的救援队数量和每一条连接两个城市的快速道 ...
- 20165223《JAVA程序设计》第二周学习总结
20165223 <JAVA程序设计>第二周学习总结 教材学习内容总结 第二章要点 标识符与关键字 基本数据类型 类型转换运算 输入输出数据 数组 第三章要点 运算符与表达式 语句概述 i ...
- 群福利:Redis云服务器免费领取(附Redis安装和连接远程连接Redis案例)
Redis安装:在线体验:https://try.redis.io Ubuntu:sudo apt-get install redis CentOS:yum install redis (root权限 ...
- Nginx概述及安装配置
1.概述 Nginx是一款开源的,高性能的Http和反向代理服务器,同时也是一个IMAP.POP3.SMTP代理服务器:Nginx可以作为一个HTTP服务器进行网站的发布处理,也可以作为反向代理进行负 ...
- Java Scanner篇
Scanner 翻译解释为扫描器 Java中用于控制台的的数据输入 包:import java.util.Scanner 使用方法:Scanner reader=new Scanner(System. ...
- canvas绘制爱心的几种方法
第一种方法:桃心形公式 代码实现的一种方法 <!DOCTYPE html> <html lang="en"> <head> <meta c ...
- MySQL 之 数据操作
一 介绍 在MySQL管理软件中,可以通过SQL语句中的DML语言来实现数据的操作,包括 使用INSERT实现数据的插入 UPDATE实现数据的更新 使用DELETE实现数据的删除 使用SELECT ...
- 为什么fork()2次会避免产生僵尸进程
什么是僵尸进程:用fork()创建子进程后,子进程已终止但父进程没有对它进行善后处理,那么子进程的进程描述符就一直保存在内存中,子进程就是僵尸进程. 怎么产生僵尸进程: 1.父进程没有SIGCHLD信 ...
- CentOS 6.x 最小化安装推荐安装的依赖包和修改内核参数
CentOS 6.x 最小化安装推荐安装的依赖包 我在日常工作中,新建的xenserver的虚拟机,CentOS release 6.9 (Final)操作系统,采用最小化安装,后续很多操作需要各种依 ...
- bzoj2819 DFS序 + LCA + 线段树
https://www.lydsy.com/JudgeOnline/problem.php?id=2819 题意:树上单点修改及区间异或和查询. 思维难度不高,但是题比较硬核. 整体思路是维护每一个结 ...