敏捷软件方法的学习辅助管理系统设计 第5页
XP开发方法在现实中的主要实践技术
2.4.1 迭代开发
现今大多数的开发团队都使用了传统的瀑布型开发方法,他们将项目分成不同的阶段,严格按照已定的顺序来完成一系列的项目阶段:需求分析、设计、实现和测试。但是实践证明,用户需求的特定细节可能会随时间而改变,而新系统的问世则是关注需求的最好时刻。因此,不要去捕捉某个在很长一段时间之后才会实现的需求的特定细节,否则很可能会导致无用功以及对需求不成熟的关注。当项目中出现的问题解是困难的并且解决问题是昂贵时,你可能会推迟测试直到项目周期的末端;这些问题也能够严重的威胁软件发布的期限并且使主要的团队成员在某些开发环节上是空闲的。相比较而言,迭代开发方法就很好的解决了这个问题,迭代开发方法包括了一系列的增量的步骤或者迭代。每一个迭代都包括一些或很多的开发活动,每个后续的迭代都建立在前一个迭代的基础上以使协调得到发展和细化,直到最终产品被完成。
图2-5 迭代开发过程
迭代开发的优点:
1.能够允许需求变化。迭代开发每个阶段都能生成一个可执行的软件,能够及时根据需求的变化完善软件的功能。
2.早期的迭代可以暴露风险。每一次迭代过程都包含了对所有软件产品的测试。但产品有缺陷时,可以在软件开发早期阶段暴露出来。
3.能使重用更加容易。识别在迭代中进行的部分设计和实现的公用部分要比在计划期间找出公用部分更加容易。在早期迭代的过程中,允许架构师们发现潜在可重用的机会,并且利用这个机会为接下来的迭代开发成熟的公用代码。
4.能够更好的利用项目的人员资源。传统的瀑布型开发过程中,不同的员工承担不同的角色,在相互交流的过程中容易产生错误和造成误解,迭代开发过程鼓励在项目的各个环节中团队成员参与范围更广泛的活得,允许团队成员扮演多种角色,从而消除了信息传递错误的风险。
2.4.2 测试驱动开发
1.测试驱动开发技术介绍
TDD是一种新型的开发方法,其基本思想是首先编写少量的测试代码,随后编写足够使测试通过的代码,然后再多编写一些测试,接着再编写一些代码,编写测试,编写代码,如此往复,直到完成软件的功能为止。
TDD并不是一种测试方法,而是一种软件开发方法,它也是敏捷开发中一项核心实践和技术。测试驱动的基本步骤如图2-6所示,分为以下7个步骤[6]:
步骤1 快速新增一个测试用例;
步骤2 编译该测试用例代码,如有错误编译不通过;
步骤3 做尽可能少的改动,让编译通过;
步骤4 再次运行该单元测试,发现最新的测试不能编译通过;
步骤5 做尽可能少的改动,让测试通过;
步骤6 运行所有的测试,保证每个都通过;
步骤7 重构代码,消除重复设计。
图2-6 测试驱动的流程
TDD的优势[7]:(1)开发人员不必先考虑具体的需要增加什么类和方法,只管编写测试代码和相关程序代码,然后交与编译器编译,论文网
http://www.751com.cn/ 辣文毕业论文
http://www.751com.cn/ 免软件开发初期因设计过度而把系统设计得比实际所需要的更复杂,从而能够改善代码的整体质量,更易于理解。
2.测试驱动开发工具Junit的应用
Junit是现在Java方向软件开发过程中最常用的单元测试工具,它为软件的自动化单元测试提供一个很好的测试框架,它可以在单元测试的每个阶段对程序中的方法实现功能或类本身进行测试,Junit是一个非常强大的单元测试包,可以对一个、多个类的单个、多个方法进行测试,但Junit主要是对功能性代码进行测试。在完全用测试驱动开发思想来完成程序的角度上来说,Junit还有一定的局限性。
Junit包括以下特性:
(1)用于测试期望结果的断言;
(2)用于共享共同测试数据的测试工具;
(3)用于方便组织和运行测试的测试套件。
Junit包括以下主要断言方法:
(1)assertEquals(a,b) 测试a是否和b相等。
(2)assertFalse(a) 测试a是否为false(假),a是一个Boolean数值。
(3)assertTrue(a) 测试a是否为true(真),a是一个Boolean数值。
(4)assertNotNull(a) 测试a是否非空,a是一个对象或者null。
2.4.3 重构
重构是指在不改变代码外在行为的前提下,对代码做出修改,包括简单的象添加新方法,复杂的象改变继承体系。一方面它能改进代码的结构,,使得代码更易被理解和文护,另一方面它可以提高软件开发速度。重构原则上就是每一步做少量修改后就进行测试,以此保证重构的代码是安全的。所以实践中常与测试驱动的方法结合使用。
2.5设计模式
与传统的软件开发方法花大量的时间和精力进行编码前的需求分析和详细设计相比,TDD具有明显的优势,但也不是没有缺点的,它的缺点是在前期过少的考虑整个系统架构,过多的强调先测试后编码的原则,导致后面增加了重构的难度。
对于有丰富程序开发经验的人来说,由于在系统设计的初期已基本形成了整个系此段引用统的框架,在编程的过程中也可以凭经验来避免在模块设计中产生的错误,此时采用TDD方法能够极大的提高开发效率和质量。但对于编程经验很少的新手来说,一开始就使用TDD方法进行软件开发在后期就会有修改架构的隐患,这是因为他们自己都对所要开发系统的整体框架还不清楚就开始动手开发了,虽然经过不断的测试,保证了代码的正确性,但整个程序的框架也随程序代码的日益庞大而乱了,这必然对以后系统的扩展造成极其不利的影响。
在这种情况下,使用与设计模式相结合的TDD方法就可以很好的解决上面出现的问题,先使用设计模式来规范程序的实现方法和模块设计,设计模式可以大大提高设计系统初期架构的效率和质量,极大的方便日后的代码重构,并能够保证系统的健壮性、扩展性和可文护性,能够更加高效地进行测试驱动开发,并能使得程序修改朝着有序的方向进行,为以后的重构打下坚实的基础。
2.6本章小结
针对前一章提到的传统软件开发方法不能适应需求变化的不足,本章主要介绍敏捷软件开发方法的优势和相关技术综述。首先,介绍了敏捷软件开发方法的核心价值观,得出敏捷软件开发方法的核心理念就是适应和以人为本。其次,详细介绍了敏捷软件开发方法最常见的几种开发方法。最后,以本系统的开发方法为例,详细介绍了极限编程(XP)方法在现实中的应用,着重对迭代开发、测试驱动开发和重构做了说明,并对设计模式也做了简要介绍。
上一页 [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] ... 下一页 >>
敏捷软件方法的学习辅助管理系统设计 第5页下载如图片无法显示或论文不完整,请联系qq752018766