• 20145203盖泽双java实验三 敏捷开发与XP实践


    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

  • 相关阅读:
    对单片机程序中.data、.bss和.text三种数据的解读
    单片机驱动-软件模拟SPI
    MKL25-Low-Power Timer (LPTMR)
    使用intellij idea 查看Java字节码
    2.1 并发编程之java内存模型JMM & synchronize & volatile详解
    1.操作系统底层工作的基本原理
    JDBC(1)-数据库连接和CRUD操作
    Java反射详解
    Java Web(5)-Servlet详解(下)
    Java Web(5)-Servlet详解(上)
  • 原文地址:https://www.cnblogs.com/GZSdeboke/p/5428970.html
Copyright © 2020-2023  润新知