实验三 敏捷开发与XP实践

实验内容

1. XP基础

2. XP核心实践

3. 相关工具

实验步骤

(一)敏捷开发与XP

软件工程是把系统的、有序的、可量化的方法应用到软件的开发、运营和维护上的过程。软件工程包括下列领域:软件需求分析、软件设计、软件构建、软件测试和软件维护。 人们在开发、运营、维护软件的过程中有很多技术、做法、习惯和思想体系。软件工程把这些相关的技术和过程统一到一个体系中,叫“软件开发流程”。软件开发流程的目的是为了提高软件开发、运营、维护的效率,并提高软件的质量、用户满意度、可靠性和软件的可维护性。 光有各种流程的思想是不够的,我们还要有一系列的工具来保证这些思想能够在实践中有效率地运作。软件开发很重要的一点不是看你能对多少理论讲的头头是道,还要看你对相关工具应用的如何,比如Java中单元测试要和JUnit的应用结合起来,建模要和Umbrello或StarUML的应用结合起来。编程学习是一个习而学的过程。 一个常见的公式是:软件工程=开发流程+工具 邹欣老师给出的两个公式:软件=程序+软件工程和软件企业=软件+商业模式 开发流程大家可以参考学习邹欣老师的软件团队和开发流程。常见的开发流程有:

  • RUP(Rational Unified      Process)
  • PSP(Personal Software      Process )
  • TSP(Team Software Process      )
  • Agile Process
  • ……

敏捷开发(Agile Development)是一种以人为核心、迭代、循序渐进的开发方法。“敏捷流程”是一系列价值观和方法论的集合。从2001年开始,一些软件界的专家开始倡导“敏捷”的价值观和流程,他们肯定了流行做法的价值,但是强调敏捷的做法更能带来价值。
其中,极限编程(eXtreme Programming,XP)是
是一种全新而快捷的软件开发方法。XP团队使用现场客户、特殊计划方法和持续测试来提供快速的反馈和全面的交流:

  • XP是以开发符合客户需要的软件为目标而产生的一种方法论
  • XP是一种以实践为基础的软件工程过程和思想
  • XP认为代码质量的重要程度超出人们一般所认为的程度
  • XP特别适合于小型的有责任心的、自觉自励的团队开发需求不确定或者迅速变化的软件

XP软件开发是什么样的通过 XP准则来表达:

  • 沟通 :XP认为项目成员之间的沟通是项目成功的关键,并把沟通看作项目中间协调与合作的主要推动因素。
  • 简单 :XP假定未来不能可靠地预测,在现在考虑它从经济上是不明智的,所以不应该过多考虑未来的问题而是应该集中力量解决燃眉之急。
  • 反馈 :XP认为系统本身及其代码是报告系统开发进度和状态的可靠依据。系统开发状态的反馈可以作为一种确定系统开发进度和决定系统下一步开发方向的手段。
  • 勇气:代表了XP认为人是软件开发中最重要的一个方面的观点。在一个软件产品的开发中人的参与贯穿其整个生命周期,是人的勇气来排除困境,让团队把局部的最优抛之脑后,达到更重大的目标。表明了XP对“人让项目取得成功”的基本信任态度。

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

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

(二)编码标准

编写代码一个重要的认识是“程序大多时候是给人看的”,编程标准使代码更容易阅读和理解,甚至可以保证其中的错误更少。编程标准包含:具有说明性的名字、清晰的表达式、直截了当的控制流、可读的代码和注释,以及在追求这些内容时一致地使用某些规则和惯用法的重要性。

编码标准中的版式就是一个很好的例子,版式虽然不会影响程序的功能,但会影响可读性。程序的版式追求清晰、美观,是程序风格的重要因素。

三)结对编程

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

  • 驾驶员(Driver)是控制键盘输入的人。
  • 领航员(Navigator)起到领航、提醒的作用。

如何结对编程,为何要结对编程,大家参考一下结对编程和两人合作,重点是:

  • 驾驶员:写设计文档,进行编码和单元测试等XP开发流程。
  • 领航员:审阅驾驶员的文档、驾驶员对编码等开发流程的执行;考虑单元测试的覆盖率;思考是否需要和如何重构;帮助驾驶员解决具体的技术问题。
  • 驾驶员和领航员不断轮换角色,不要连续工作超过一小时,每工作一小时休息15分钟。领航员要控制时间。
  • 主动参与。任何一个任务都首先是两个人的责任,也是所有人的责任。没有“我的代码”、“你的代码”或“他/她的代码”,只有“我们的代码”。
  • 只有水平上的差距,没有级别上的差异。两人结对,尽管可能大家的级别资历不同,但不管在分析、设计或编码上,双方都拥有平等的决策权利。

团队精神是好多地方都强调的一个精神,最小的团队就是一对一的二人团队了,培养团队精神从结对编程开始吧。社会生活中人与人相处最重要的是诚信,有同理心,互利。结对编程中大家会出现分歧,如何更有效地合作要做到对事不对人,掌握这些是可以终生受益的,如何影响小伙伴,大家参考一下两人合作:要会做汉堡包。

(四)版本控制

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

不论是对于团队还是个体,版本控制都提供了很多好处。

  • 版本控制提供项目级的      undo(撤销)      功能:      没有什么事情是终结版本, 任何错误必须很容易回滚。 假设你在使用世界上最复杂的文字处理系统。 它具备了所有的能想到的功能,就是没有支持 DELETE(删除) 键。想象你打字的时候得多么的谨慎和缓慢吧,      特别是一篇超大的文档的快临近末尾的时候, 一个不小心就要重头再来(试想你选中所有的文字, 不小心按了 DELETE 键, 因为没有撤销功能,只好重新录入)。编辑文字和版本控制相同,任何时候都需要回滚,无论是一个小时, 一天, 还是一周, 这让你的团队工作自由快速的工作, 而且对于修正错误也非常自信。
  • 版本控制允许多人在同一代码上工作,      只要遵守一定的控制原则就行。 再也不会发生诸如一个人覆盖了另一个人编辑的代码,导致那个人的修改无效这样的情况。
  • 版本控制系统保存了过去所作的修改的历史记录。如果你遭遇到一些惊讶的代码,通过版本控制系统可以很容易找出是谁干的, 修改了什么, 修改的时间, 如果幸运的话,还能找出原因。
  • 版本控制系统还支持在主线上开发的同时发布多个软件版本。在软件发布的时候也不需要整个团队的停止工作,不需要冻结代码。
  • 版本控制也是项目级的时间机器,你可以选择任何一个时间, 精确地查看项目在当时的情况。 这对研究非常有用, 也是重现以前某个有问题的发布版本的基础

(五)重构

  • 我们先看看重构的概念:

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

    重构中一个非常关键的前提就是“不改变软件外部行为”,它保证了我们在重构原有系统的同时,不会为原系统带来新的BUG,以确保重构的安全。如何保证不改变软件外部行为?重构后的代码要能通过单元测试。如何使其更加易于阅读、易于维护和易于变更 ?设计模式给出了重构的目标。

(六)实验过程截图:

1,Eclipse菜单中的source->Format 或用快捷键Ctrl+Shift+F就可以按Eclipse规定的规范缩进

2,学习git简单的使用

3,重构

重构的一个具体实例:

4,结对实验

另附一次实验报告博客

实验时间(不含结对游戏编程)

步骤

耗时

百分比

需求分析

1h

30.7%

设计

30min

15.4%

代码实现

45min

23.1%

测试

0

0%

分析总结

1h

30.7%

实验总结(不含结对游戏编程)

1、首先,通过这次实验学习到在编程序过程中最实用的知识是使用重构的raname:如何修改名称。以前在编程序时名称不小心打错,或者是需要对名称进行修改使它更有意义时,在Eclipse中都是一个一个的改进,现在可以快捷简便的进行修改。我认为这个功能十分的便捷、人性化。

其次,学会了重构的封装功能,可以对成员变量进行封装,以及Source->Generate toString()... 给Student类产生一个toString方法。实验中体会到了通过重构改善了结构,优化了代码。

最后,学习了git的使用,在实验楼里代码的git push存到远程托管服务器,十分方便。

2、实验中出现的问题:在这次实验中主要的问题产生在git push学习使用中,根据实验步骤比较容易学习,但是由于对Gvim的不了解导致出现问题。

突然跳到到这个界面时不知道发生了什么,以为自己按错了键盘,在查阅关于Gvim的使用命令后知道 ctrl+C-----:-------wq(:wq 保存文档然后退出vim编辑器。)解决了这个问题。

同时也学到了其他的一些命令如::q 不保存文档,退出vim编辑器。L 光标移至屏幕底第一个非空白字符。这和PageDown,PageUp 不一样,内文内容并未动,只是光标在动而已。:n 将光标定位到第n行。

(一定是在Notmal的情况下)

转载于:https://www.cnblogs.com/zzzz5/p/4550648.html

20135337朱荟潼——实验三相关推荐

  1. 20135337朱荟潼 Linux第六周学习总结——进程的描述和进程的创建

    朱荟潼 + 原创作品转载请注明出处 + <Linux内核分析>MOOC课http://mooc.study.163.com/course/USTC 1000029000 第六周 进程的描述 ...

  2. 20135337朱荟潼 Linux第二周学习总结——操作系统是如何工作的

    一.计算机是如何工作的--总结 三个法宝 存储程序计算机.函数调用堆栈.中断机制 二.堆栈 1.是c语言程序运行时必须的一个记录调用路径和参数的空间. 函数调用框架.传递参数.保存返回地址.提供局部变 ...

  3. 20135337朱荟潼 Linux第八周学习总结——进程的切换和系统的一般执行过程

    第八周 进程的切换和系统的一般执行过程 一.进程切换关键代码switch_to 1.不同类型进程有不同调度需求--两种分类 2.调度策略--规则 Linux中进程优先级是动态的,周期性调整. 3.时机 ...

  4. 201671010460朱艺璇 实验三作业互评与改进报告

    实验三 作业互评与改进报告. 课程名称:2016级计算机科学与工程学院软件工程(西北师范大学) 作业要求链接: 实验三 任务一. 点评作业地址和点评内容: [北京航空航天大学)](https://ww ...

  5. 实验三 综合示例设计与开发-“天气预报服务”软件

    实验三 综合示例设计与开发-"天气预报服务"软件 一.实验目的 (1)理解Android 软件开发从准备策划工作开始到软件发布全过程: (2)掌握使用多种组件进行Android程序 ...

  6. 达梦数据库实验三:DMDBMS表查询操作

    目录标题 实验三 DMDBMS表查询操作 一.实验目的: 二.实验要求: 三.实验重点和难点: 四.实验内容: 五.实验步骤与结果: 1. 表创建 2. 数据填充 3. 数据查询 3.1查出选修了20 ...

  7. 实验三-密码破解技术

    学   号 201421430010   中国人民公安大学 Chinese people' public security university 网络对抗技术 实验报告   实验三 密码破解技术   ...

  8. 计算机导论excel,[计算机导论实验三Excel.doc

    [计算机导论实验三Excel 实验三 Excel表格处理 实验报告 姓名(学号):_______________ 年级(专业):_____ ________成绩:________ 实验时间:_____ ...

  9. 20155222卢梓杰 实验三 免杀原理与实践

    实验三 免杀原理与实践 1.正确使用msf编码器,msfvenom生成如jar之类的其他文件,veil-evasion,自己利用shellcode编程等免杀工具或技巧 实验步骤如下 1.先对实验二中生 ...

最新文章

  1. js创建对象的几种方法
  2. mybatis的快速入门
  3. 机房的未来趋势,互联网数据中心(IDC)行业前景图
  4. java 8 stream_深度分析:java8的新特性lambda和stream流,看完你学会了吗?
  5. IntelliJ IDEA常用快捷键——基于Eclipse
  6. [C#-Util]ObjectPool Prototype
  7. c+mysql+sslmode_MySQL配置SSL主从复制
  8. 手把手教你玩转网络编程模型之完成例程(Completion Routine)篇(下)-转
  9. windows 2003 远程桌面记录登陆IP的方法
  10. 代码主题darcula_Pycharm最舒服的主题风格
  11. php 3des 兼容java,java版3des加密程序,可与php兼容
  12. 在Eclipse中创建java类的注释模板
  13. Python科学计算系列2—不等式和不等式组
  14. 公务员Python培训
  15. Arduino开发ESP8266之ADS1115模数转换
  16. 为什么NIO比BIO效率高
  17. WIN2003 装不上mssql2000
  18. 利用Python中的requests+wget批量下载微信页面上的音频
  19. 【数据说第四期】篮球比赛中的投篮选择
  20. UI设计师、平面设计师常用的网站大全,初学者必备,大家都在用!

热门文章

  1. [原]动态打jar包程序,可用于手机图片音乐游戏的动态打包
  2. UML:类关系的图例
  3. matlab 柱面投影,matlab练习程序(圆柱投影)
  4. 台式电脑计算机硬盘清理,台式电脑重装系统win7清理磁盘碎片的方法
  5. 通过yum安装Nginx
  6. 模拟spring IOC、源码分析
  7. GraphQL入门之GraphQL查询的规范
  8. MyBatis二级缓存的关闭
  9. Redis实现分布式锁原理SetNx命令
  10. 制作模块-制作模块压缩包