java实验三 敏捷开发与XP实践

实验内容

  1. XP基础

  2. XP核心实践

  3. 相关工具

实验要求

1.没有Linux基础的同学建议先学习《Linux基础入门(新版)》《Vim编辑器》 课程

2.完成实验、撰写实验报告,实验报告以博客方式发表在博客园,注意实验报告重点是运行结果,遇到的问题(工具查找,安装,使用,程序的编辑,调试,运行等)、解决办法(空洞的方法如“查网络”、“问同学”、“看书”等一律得0分)以及分析(从中可以得到什么启示,有什么收获,教训等)。报告可以参考范飞龙老师的指导

  1. 严禁抄袭,有该行为者实验成绩归零,并附加其他惩罚措施。

实验步骤

(一)敏捷开发与XP

1、软件工程是把系统的、有序的、可量化的方法应用到软件的开发、运营和维护上的过程。

2、软件工程包括下列领域:软件需求分析、软件设计、软件构建、软件测试和软件维护。

3、人们在开发、运营、维护软件的过程中有很多技术、做法、习惯和思想体系。软件工程把这些相关的技术和过程统一到一个体系中,叫“软件开发流程”。

软件开发流程的目的:为了提高软件开发、运营、维护的效率,并提高软件的质量、用户满意度、可靠性和软件的可维护性。
4、编程:Java中单元测试要和JUnit的应用结合起来,建模要和Umbrello或StarUML的应用结合起来。

5、①软件工程=开发流程+工具 ②软件=程序+软件工程 ③软件企业=软件+商业模式

6、常见的开发流程有:

•RUP(Rational Unified Process)

•PSP(Personal Software Process )

•TSP(Team Software Process )

•Agile Process
•……

7、敏捷开发(Agile Development)是一种以人为核心、迭代、循序渐进的开发方法。敏捷开发宣言:

①个体交互胜过过程和工具。

②可以工作的软件胜过面面俱到的文档。

③客户合作胜过合同谈判。

④响应变化胜过遵循计划。

8、极限编程(eXtreme Programming,XP)是:

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

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

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

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

9、XP准则:
①沟通 :成员之间的沟通。②简单 :集中力量解决燃眉之急。③反馈 ④勇气:人让项目取得成功。

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

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

(二)编码标准

1、重要的认识:“程序大多时候是给人看的”

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

带有缩进

带有空格

3、java中给包、类、变量、方法等标识符命名的一般规则有:

①要体现各自的含义

②包、类、变量用名词

③方法名用动宾

④包名全部小写,如:io,awt

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

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

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

例如:
①标识符名字应当直观且可以拼读,可望文知意,不必进行“解码”,一般采用英文单词或其组合,便于记忆和阅读,切忌使用汉语拼音来命名,用词要准确例如“当前值”应该起名currentValue,写成nowValue就不准确了,但还凑合,写成dqz(dang qian zhi 首字母)就是笑话了。

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

4、代码标准,可以遵循以下原则:

①不要预先花费太多时间。

②目标应该是团队中没有人辨认各自的代码。

③以团队为单位对某一标准达成协议,然后遵循这一标准。

④不是事无巨细的规则标准列表,而是确保代码可交流的指导方针。

⑤代码标准开始时应很简单,然后根据团队经验逐步进化。

⑥创建能够工作的最简单标准,然后逐步发展。

⑦只制定适合本团队的。

(三)结对编程

1、结对编程是XP中的重要实践。在结对编程模式下,一对程序员肩并肩、平等地、互补地进行开发工作。他们并排坐在一台电脑前,面对同一个显示器,使用同一个键盘、同一个鼠标一起工作。他们一起分析,一起设计,一起写测试用例,一起编码,一起做单元测试,一起做集成测试,一起写文档等。
结对编程中有两个角色:

①驾驶员(Driver)是控制键盘输入的人。写设计文档,进行编码和单元测试等XP开发流程。

②领航员(Navigator)起到领航、提醒的作用。审阅驾驶员的文档、驾驶员对编码等开发流程的执行;考虑单元测试的覆盖率;思考是否需要和如何重构;帮助驾驶员解决具体的技术问题。领航员要控制时间。每工作一小时休息15分钟。

2、主动参与。①我们的代码。②只有水平上的差距,没有级别上的差异。两人结对,尽管可能大家的级别资历不同,但不管在分析、设计或编码上,双方都拥有平等的决策权利。
团队精神是好多地方都强调的一个精神,最小的团队就是一对一的二人团队了,培养团队精神从结对编程开始吧。社会生活中人与人相处最重要的是诚信,有同理心,互利。结对编程中大家会出现分歧,如何更有效地合作要做到对事不对人,掌握这些是可以终生受益的,如何影响小伙伴,大家参考一下两人合作:要会做汉堡包。

结对编程小组成员博客20145324王嘉澜:http://www.cnblogs.com/SJZGM10/p/5422303.html

1、下载她上传好的代码

2、自己做修改

3、重新上传

(四)版本控制

1、XP的集体所有制意味着每个人都对所有的代码负责,每个人都可以更改代码的任意部分。

2、结对编程对这一实践贡献良多:借由在不同的结对中工作,所有的程序员都能看到完全的代码。集体所有制的一个主要优势是提升了开发程序的速度,因为一旦代码中出现错误,任何程序员都能修正它。这意味着代码要放到一个大家都能方便获取的地方,我们叫代码仓库。这引出另外一个话题叫版本控制(Version Control)。

3、版本控制的特点和功能:

①版本控制提供项目级的 undo(撤销) 功能: 没有什么事情是终结版本,任何错误必须很容易回滚。这让你的团队工作自由快速的工作, 而且对于修正错误也非常自信。

②版本控制允许多人在同一代码上工作, 只要遵守一定的控制原则就行。 再也不会发生诸如一个人覆盖了另一个人编辑的代码,导致那个人的修改无效这样的情况。

③版本控制系统保存了过去所作的修改的历史记录。如果你遭遇到一些惊讶的代码,通过版本控制系统可以很容易找出是谁干的, 修改了什么, 修改的时间,如果幸运的话,还能找出原因。

④版本控制系统还支持在主线上开发的同时发布多个软件版本。在软件发布的时候也不需要整个团队的停止工作,不需要冻结代码。

⑤版本控制也是项目级的时间机器,你可以选择任何一个时间, 精确地查看项目在当时的情况。 这对研究非常有用, 也是重现以前某个有问题的发布版本的基础。

4、流行的版本控制工具有CVS,SVN,Git等,更多的可以参考这里。Git是Linus除了Linux操作系统外的另外一个重要发明。

(五)重构

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

2、不改变软件外部行为,它保证了我们在重构原有系统的同时,不会为原系统带来新的BUG,以确保重构的安全。

如何保证不改变软件外部行为?

重构后的代码要能通过单元测试。如何使其更加易于阅读、易于维护和易于变更 ?

重构重要吗?重构几乎是现代IDE的标配了。

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

如下例:

重构类名:

重构变量名:

!

重构name:

封装id:

封装age:

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

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

③发现bad smell

④Refactoring

⑤运行所有的Unit Tests

⑥往代码库中Check in code

20145203盖泽双java实验三 敏捷开发与XP实践的更多相关文章

  1. java实验三 敏捷开发与XP实践

    一.实验内容 (一)敏捷开发与XP 软件开发流程的目的是为了提高软件开发.运营.维护的效率,并提高软件的质量.用户满意度.可靠性和软件的可维护性. 光有各种流程的思想是不够的,我们还要有一系列的工具来 ...

  2. 2018-2019-2-20175323 java实验三敏捷开发与XP实践

    代码规范 安装alibaba插件 首先使用code栏里面的reformat code使代码的格式更加规范 再用编码规约扫描,alibaba把问题分为block/critical/major三个等级,出 ...

  3. 20145213《Java程序设计》实验三敏捷开发与XP实践

    20145213<Java程序设计>实验三敏捷开发与XP实践 实验要求 1.XP基础 2.XP核心实践 3.相关工具 实验内容 1.敏捷开发与XP 软件工程是把系统的.有序的.可量化的方法 ...

  4. 20145308刘昊阳 《Java程序设计》实验三 敏捷开发与XP实践 实验报告

    20145308刘昊阳 <Java程序设计>实验三 敏捷开发与XP实践 实验报告 实验名称 敏捷开发与XP实践 实验内容 XP基础 XP核心实践 相关工具 统计的PSP(Personal ...

  5. JAVA课程实验报告 实验三 敏捷开发与XP实践

    北京电子科技学院(BESTI) 实     验    报     告 课程:Java程序设计  班级:1353  姓名:韩玉琪  学号:20135317 成绩:             指导教师:娄嘉 ...

  6. 20145225《Java程序设计》 实验三 "敏捷开发与XP实践"

    20145225<Java程序设计> 实验三 "敏捷开发与XP实践" 实验报告 实验内容 使用 git 上传代码 使用 git 相互更改代码 实现代码的重载 git 上 ...

  7. 2018-2019-20175205 实验三敏捷开发与XP实践《Java开发环境的熟悉》实验报告

    2018-2019-20175205 实验三敏捷开发与XP实践<Java开发环境的熟悉>实验报告 实验要求 没有Linux基础的同学建议先学习<Linux基础入门(新版)>&l ...

  8. 20155324 《Java程序设计》实验三 敏捷开发与XP实践

    20155324 <Java程序设计>实验三 敏捷开发与XP实践 实验内容 XP基础 1.XP核心实践 2.相关工具 实验步骤 敏捷开发与XP 1.敏捷开发(Agile Developme ...

  9. 20165205 2017-2018-2 《Java程序设计》实验三 敏捷开发与XP实践

    20165205 2017-2018-2 <Java程序设计>实验三 敏捷开发与XP实践 实验内容 检查点1: 安装alibaba 插件,解决代码中的规范问题 首先把搭档加入到自己的项目中 ...

随机推荐

  1. JSP学习笔记(3)-JSP内置对象

    有些对象不用声明就可以在JSP页面的Java程序片和表达式部分使用,这些对象就是JSP的内置对象.  JSP常用的内置对象有request,response,session,application,o ...

  2. PHP ServerPush (推送) 技术的探讨[整理]

    需求: 我想做个会员站内通知的功能.不想用以前的ajax查询,听说有个推技术.以下文章介绍的不错,来自转载, ============================================= ...

  3. 线上Bug修复流程

  4. 爬虫必备—scrapy-redis(分布式爬虫)

    转载自:http://www.cnblogs.com/wupeiqi/articles/6912807.html scrapy-redis是一个基于redis的scrapy组件,通过它可以快速实现简单 ...

  5. 在Eclipse中指定JDK

    1.Windows下的Eclipse中的eclipse.ini -startup plugins/org.eclipse.equinox.launcher_1.3.100.v20150511-1540 ...

  6. 例如android:layout_marginBottom的值为负数

    为什么有时候像android:layout_marginBottom等变量的赋值为负数? 例如如下代码: <?xml version="1.0" encoding=" ...

  7. Android SimpleAdapter的参数

    1.作用是ArrayList和 ListView的桥梁.这个ArrayList里边的每一项都是一个Map<String,?>类型.       ArrayList当中的每一项 Map对象都 ...

  8. jdk下载及安装

    下载下载 jdk 下载 java se 版本的即可. web 开发前不需要像安装 java se 一样安装java ee,只要在项目中添加 java ee 的jar 包就可以了,里面大多是接口和抽象类 ...

  9. 配置consul为windows服务

    安装consul并配置为系统服务下载地址https://www.consul.io/downloads.html 配置系统服务1.拷贝consul.exe的目录 如:E:\Consul\consule ...

  10. 执行相应操作后,将表单及table中数据清空

    使用 ccms.util.clearForm('要清空的表单的id'); $("#table中显示数据部分的id").empty();