路 静 , 谢 忠 ,马常杰
(中国地质大学信息工程学院,武汉 43O0r74)
|T论坛
摘 要:本文主要通过一个实例介绍了测试驱动在软件开发中的应用。首先对极限编程的概念进行了说明,
接着阐述了极限编程的某些重要特点以及测试驱动开发的流程,并且把测试驱动开发的思想应用到
一 个实例当中,最后对测试驱动开发的介绍做 了几点补充。
关键词:极限编程;测试驱动开发;重构
引 言
网络技术使世界的距离缩短,促进了经济全球
化进程。快速变化和多样性(如软件开发技术的多
样性)成为当今时代特点,极限编程(Extreme Pro-
gramming,或简称 XP)精神可以启发我们如何学习
和对待快速变化多样的开发技术。
XP是一门软件开发学科,它具有使用便捷,易
于沟通。反馈性强及振奋人心的特性;XP侧重于客
户管理者及程序员的角色,并授予拥有这些角色的
工作人员重要的权利责任。测试驱动开发 (Test—
Driven Development,或简称 TDD)是 XP的重要特
点。它以不断的测试推动代码的开发。从而实现既
简化代码。又保证质量的目标。TDD是 XP的精华 ,
如果你在 XP中没有实施 I’DD,那么 XP对你来说
仅仅是一件漂亮的外衣。
大部分程序员都认为测试是项目后期或者是
中间阶段的工作,他们不明白在程序写出来之前测
试的写法 ,或者他们知道应该为 自己的代码编写测
试程序。但是因为怕耽误时间没有这样做,却因此
导致了一个恶性循环:越是没空编写测试程序,代
码的效率与质量越差,花在找 Bug、解决 Bug的时
间也越来越多,实际效率大大降低。由于效率降低
了,因此时间更紧张 ,压力更大 。为什么我们不把
在后面浪费的时间花在编写测试代码上,使得我们
的程序一开始就更加健壮、更加易 于:修改呢?
1 极限编程(X P)
(1)极限编程(xp)的概念
XP是一种轻量方法论一一适用于面临不明确
或快速变化需求的小型到中型软件开发团队——
Kent Beck。
Kent Beck先生是软件开发方法学的泰斗,是
XP的创始人。极限编程是一套能快速开发高质量
软件所需的价值观、原则和活动的集合。使软件能
以尽可能快 的速度开发 出来并向客户提供最高的
效益,它和 Windows XP没有任何关系。说它是轻
量方法论是因为他没有方法学那种条条框框,但对
于开发软件来说是一种可重复的过程。
(2)极限编程(xp)的重要特点
①结对编程
每一个 XP程序员都有一个合作规律,所有生
产代码都是由两人坐在同一台电脑前完成的,这就
是结对编程。二人小组每次只处理一个任务,如果
处理多于一个任务,编程将十分困难。
②简单设计
XP中,在每一个时刻。我们都希望系统能尽可
能简单 ,即我们希望没有任何用不到的功能 ,所选
用的任何结构或算法都不会比当前的需要更复杂,
代码能够清楚表达你需要表达的思想,并且不含有
重复代码等,要保持代码的简单性必须擅长重构。
③重构 ‘
重构是一:件正式的过程,重构时,如果需要对代
码进行修改设计,就修改它并且添加所需的新功
MODERN COMPUTER 2 3 0
现
代
计
算
机
^
总
第
一
● -
0
七
期
-
维普资讯
ITttJ.者
路静,谢忠,马常杰
(中国地质大学信息工程学院,武汉 43∞74)
摘要:本文.i.接通过一个实例介绍了测试瓢动在软件开发中的应用。首先对极限编貌的概念进行了说明,
接着阐述了极限编稼的某按j:J鲁特点以及测试..动开发的流程.并且犯测试..动开发的思想应用到
关键词:极限编程;测试驱动开发;重构
一个实例当中,最后对测试辄动开发的介绍做了几点补充。
引育
问编技术使世界的距离缩短,促进了始讲全球
化进程。快速变化和多样性(如软件开发技术的多·
样做)成为当今时代特点,极限编程(Extreme Pro.
grammmg,或简称 X的精神可以启发我们如何学习
和对待快速变化多样的开发技术。
XP 是一门软件开发学科,它具有使用便挠,易
于沟通,反馈性强及报奋人心的特性 ;XP 侧重于客
户管理者及程序员的角色,并授予拥有这些角色的
工作人员重要的权利责任。测试驱动开发 (Test
Driven Development,或简称 TDD)是 XP 的囊要特
点,它以不断的测试椎动代码的开发,从而实现既
简化代隅,义保证质量的目标。TDD 是 XP 的精华,
如果你在 XP 中没有实施 TDD,那么 XP 对你来说
仪仪是一件漂亮的外衣。
大部分租序员都认为测试是项目后期或者是
中间阶段的工作,他们不明白在程序写出来之前测
试的唱法,或者他们知道应该为自己的代码编哼测
试程序,但是因为怕耽误时间没有这样做,却因此
导致了一个恶性循环:越是没空编吗测试程序,代
码的姓率句质量越盏,花在找 Bug 、解决日ug 的时
间也越来越多,实际般率大大降低 3 由于嗷率降低
了,因此时间更紧张,压力更大。为什么我们不把
在后面、浪费的时间花在编写测试代码上,使得我们
的程序一开始就更加健壮、更加易 F修改呢?
l 极限编程 (X P)
(1)极限编程(XP)的概念
XP 是…种轻量方法论一一适用于面临不明确
或快速变化需求的小型到中型软件开发团队一
Kent Becko
Kent Beck 先生是软件开发方法学的泰斗,是
XP 的创始人。极限编程是…套能快速开发高质量
软件所需的价债观、原则和活动的集合,使软件能
以尽可能快的速度开发出来并向客户提供最南的
敬益,它和 Windows XP 设有任何关系 o 说它是轻
量方法论是因为他没有方法学那种条条框框,但对
于开发软件来说是一种田震复的过程。
(2)极限编辑(XP)的 1世妥特点
①锚对蝙槌
每…个 XP 程序员都有…个合作规律,所有生
产代码都是由两人坐在间一台电脑前完成的,这就
是销对编程。工人小组每次只处珊一个任务,如果
处理多于…个任务.编程将十分困难。
②简单设计
XP 中,在每一个时刻,我们都希摆系统能尽可
能简单,即我们希望没有任何用不到的功能,所选
用的任何结构或算法都不会比当前的需婆更复艇,
代码能够清楚表达你需要表达的思想,并且不含有
戴复代码等,要保持代码的简单性必绸擅长囊构。
⑨'配构
回现
-mKHW
川峙'押相机内
重构矗…种正式的过程'重构时
码进行修改设计,就修改官井且添加所需的新功 li
MODERN CωOMPU川j川川TER 20ω盹阳0队•
•
璃
代
计
算
机
^
总
第
一
_ _
0
七
期
v
IT硷坛
能,再将功能转移到它应该属于的类中。重构的每
一 步都是可逆的,所以可以进行尝试,如果不喜欢
所得到的结果,可以向前返回。重构不会破坏代
码,因为在开始时,你就拥有了百分之百运行的测
试单元,当完成一点重构时,重新运行一遍,如果出
现问题 。看看是怎么回事。
④持续集成
XP要尽可能经常地进行集成,我们称之为持
续集成。一个好的XP团队每天都将多次集成并测
试整个系统。
⑤频繁发布 ‘
XP中,你所能做的最重要的一件事情就是尽
早尽量频繁地发布。小规模频繁地发布为客户提
供了先期利益,同时为程序员提供了先期反馈,因
为这样客户将学到很多有关其需求的东西,而你将
更有能力指导项 目走向成功。
⑥单元测试
XP使用 自动化测试来测试所有可能出现问题
的地方。这种测试必须在任何时候都能运行。我们
需要测试每一个类 ,测试任何可能出现问题的地
方,并且所有这些测试必须在任何时候都能百分之
百地运行。
2 测试驱动开发(TDD)
TDD正是通过 XP的以上几个特点与 XP实
践相联系的。
进行测试驱动开发 ,就是在刚开始编程时,就
开始编写测试。开始新项目后,你可以在项目的进
行过程中完成需要的所有测试 。编写类测试的最
好方式是首先把它们写出来,一点一点测试,一点
一 点编写代码,而不是在结束才编写测试或在开始
时编写所有测试。应尽量测试对象 中所有可能出
现问题的地方,我们逐步测试并创建了可正常运行
的类,当类能够实现我们期望的任务时,就可以发布
测试和代码。编写好测试后,不要将它们扔掉或保存
起来以备后用,而要立即使其成为系统的一部分。
(I)TDD的总体流程
① 写一个测试程序,考虑一下你希望实现的
操作要如何在你的代码中体现出来,并且使程序尽
快通过编译。在这之前你可以创建一个清单,列出
我们所知道的需要让其运行通过的测试。
②让测试程序运行a尽快地让测试程序可运
行是压倒一切的中心任务,可以通过显明实现或者
o MODERN COMPUTER 2005.3
伪实现来让测试程序运行。如果明显存在一个整
洁 、简单的解决方案,那么就将其键入。如果这个
解决方案需要耗费一分钟的时间,那么就把它记下
来,再回到主要问题上来,即怎样才能让测试在几
秒钟内就能运行通过,这时可以使用伪实现。
⑧编写合格的代码。现在系统已经能够工作
了,抛开过去那些为了让测试运行而使用的各种手
法。现在我们又得重新回到正规的软件设计之路。
消除先前引入的重复设计,使测试尽快运行通过。
我们的最终目标是整洁可用的代码,即使是最优秀
的程序员有时候也无法得到整洁可用的代码,最好
的方法是分而治之。首先我们解决 目标 中的 “可
用”问题,然后我们再解决“代码的整洁”问题。这
与体系设计驱动(architecture—driven)的开发相反,
在这种开发方法中首先解决的是“代码的整洁”问
题,然后才把“可用”问题整合到设计中去。
(2)TDD 的实践
笔者目前参与的项目:“面向网络应用的构件
化嵌入式地理信息系统技术的研究与开发”,该项
目采用TDD模式开发,使用的是 cppunit测试框
架。作为示范,利用此项目其中一个模块中的类
CLineGeo进行测试,演示如何在实际软件项目开
发过程中应用TDD。
假设我们现在需要在此类中添加一个计算线
长度的函数,让我们从上述流程的第一步开始,创
建一个测试实例:
Test_CalculateLength
voidTest
_ CalculateLength()
{
intdLength=O;
.
CLineGeoLineGeo;
D
_
DOT d
_ xy[2】={{1,2),{5,6));
D
_
DOT*pd
—
xy。d
_ xy;
di_c,~h:LineGeo.CalculateLength(pd_xy,1);
CPPUNIT_ASSERT
_ EQUAL(5,dLength);
}
编译这个测试实例,出现如下错误:,Calculate-
Lengh :is not a member of,CLineGeo 。这个编译错
误是由于 CalculateLength 不是类 ,CLineGeo 的成
员函数引起的,需要在类中添加 函数的声明 ,在类
CLineGeo中加入函数 :CalculateLength。
double CLineGeo::CalculateLength(D_DOT*pd—xy,long
llen);
编译通过了,现在进行上述流程的第二步一一
维普资讯
IT itJ:&
能,再将功能转移到它应该属于的费中。囊构的每
一步都是可避的,所以可以进行尝试,如果不喜欢
所得到的结果,可以向前返回。重构不会破坏代
码,因为在开始时,你就拥有了百分之百运行的测
试单元,当完成一点蘸构时,戴新运行一溅,如果出
现问题,看看是怎么回事 o
④持蠕集成
XP要尽町能经常地进行集成,我们称之为持
续集成。一个好的 XP 团队每天都将多次集成并测
试整个系统。
⑨烦'自发布
XP 中,你所能做的最重要的一件事情就是尽
早思量频繁地发布。小规模频繁地发布为客户提
供了先期利益,同时为程序员提供了先期反惯,因
为这样客户将学到很多有关其需求的东西,而你将
1宣布能力指导项目走向成功。
⑥单元测试
XP 使用自动化测试来测试所有可能出现问朋
的地方,这种测试必须在任何时候都能运行。我们
需要测试每一个樊,测试任何可能出现问题的地
方,并且所有这些测试必须在任何时候都能百分之
百地运行。
2 测试驱动开发(TOO)
TDD .lE是通过 XP 的以上几个特点与 XP 实
践相联系的 o
进行测试驱动开发,就是在刚开始编程时,就
开始编写测试。开始新项目后,你可以在项目的进
行过程中完成需要的所有测试。编写费测试的最
好方式是首先把它们~出来,一点一点测试,一点
一点编写代码,而不是在结束才编写测试或在开始
时编写所有恻试。应尽量测试对象中所有可能出
现问题的地方,我们逐步测试并创建了可正常运行
的樊,当樊能够实现我们期望的任务时,就可以发布
' 测试和代码。编写好测试后,不要将它们扔掉或保存
川| 起来以备后用,而要立即使其成为系统的一部分。
i| (1)TDD 的总体流程
钮| ①写…个测试程序,考虑…下你希望实现的
':"1 操作要如俐在你的代码中体现出来,并且使程序尽
总| 快通过编译。在这之前你可以创建一个清单,列出
第| 我们所知道的需要让其远行通过的测试。
②让测试程序运行 b 尽快地让测试程序盯远
。| 行是压倒一切的中心任务,可以通过显明实现或者
七
~ 1. MODERN COMPUTER
伪实现来让测试程序运行。如果明显存在一个搜
捕、简单的解决方案,那么就将其键入。如果这个
解决方案需要耗费~分钟的时间,那么就把它记下
来,再回到主要问蹦上来,即:黯样才能让测试在几
秒钟内就能运行通过,路时可以使用伪实现。
③编写合格的代码 O 现在系统已组能够工作
了,抛开过去那些是为了让测试远行而使用的各种手
蜡。现在我们只得戴新回到正规的软件设计之路。
消除先前寻|入的重复设计,使测试尽快运行通过。
西们的最终目标是整洁可用的代间,即使是最优秀
的模序员有时候也光法得到搜捕可用的代码,最好
的方法是分而治之 O 首先我们解决目标中的"可
用"问题,然后找们再解决"代码的整洁"问题。这
与体系设计驱动 (architecture-driven) 的开发相反,
在这种开发方法中首先解决的是"代码的搜捕"问
题,然后才把"可用"问跑腿合到设计中去。
(2)TDD 的实践
笔者目前参与的项目"随向网络应用的构件
化嵌入式地理信息系统技术的研究与开发",该项
目采用 TDD 模式开发,使用的是 cppunit 测试框
架。作为承姬,利用此项目其中一个模块中的樊
CLineGeo 进行棚试,演示如何在实际软件项目开
发过程中应用 TDDo
假设我们现在需要在此类中添加一个计算线
长度的踊数,让我们从上述流梅的第一步开始,创
建一个测试实例:
Te剑_Calcul阜teLength
void TescCalculateLength( )
int dLen抽血。;
ClineGeo lineGeo;
D_Dσr d_xy[2] = {{1 ,坷,归 .6}};
D _DOT* p<Lxy = d_xy;
dLength=μneGeo. CalculateLe哺由(pd_xy , 1 );
CPPUNIT_ASSERT.四EQUAL(5, dLength);
编译这个测试实例,出现如下错误: 'Calculate-
Length': is not a member of 'CLineGeo'。这个编译错
误是由于 'CalculateLength,不是粪 'CLineGeo' 的成
员函数引起的,需要在英中播加函数的声明,在英
CLineGeo 中加入函数:CalculateLength 0
double CüneGeo::CalculateLength (D_DOT* pd_xy, 10吨
llen) ;
编译通过了,现在进行上述梳理的第二步……
让测试程序运行(通过伪实现)。
double CLineGeo::CaiculateLength(D_DOT*pd xy,long
lien) ,
{
return 5;
}
我们通过伪实现后,测试运行对话框显示绿色
进度条,如图 1。
图 1测试 通 过
下面编写合格的代码,即流程的第三步:
double CLineGeo::CalculateLength(D_DOT pd_~y.1ong
lien)
,
double d1.ength;
inti;
dLength:O:
f0币 =O;i<llen-1;i++)
{
dLength+=sqrt((pd—xy[i+l1.x—pd_~y[i】.x)$
(pd_xy[i+l】.x—pd_xy[i].x)+(pd_xy[i+l】.Y—l~i_xy[i】.Y)}
(pd xy[i+1].Y—pd_xy[i].y));
l
return dLength;
}
编译运行 ,对话框出现红条 ,如图 2。图 2中错
误列表里显示出期望值与实际值不相符,期望值是
5,而实际值是0,检查一下所编写的代码,可以发
现函数 CalculateLength的第二个参数 lien表示的
是线段的端点数,因为在测试代码里所定义的线段
是两个端点 ,所以应该把语句 :
dLength=IAneGeo.CalculateLength(pd—xy,1);
改为:
dLength=LineGeo.CalculateLength(pd—xy,2);
再编译运行一次,运行通过,对话框再次出现
绿色进度条。
lT论坛
图 2 测试 没有 通 过
(3)关于TDD的几点补充
为每项功能创建测试和代码可以培养自信心,
这是 XP的最大好处之一。并不是每个类都需要进
行单独测试,有时也可以绑定多个类进行集成测试。
在进行测试驱动开发时还应该注意以下几点 :
①在TDD中是测试优先,而在编写测试代码
的时候是断言优先的,即测试开始首先编写断言。
D对测试的观点就是注重实效。在 TDD
中,测试从某种意义上说是一种达到 目的的手段。
③不为代码的将来考虑,你的代码反而更可能
适应将来的需要一~测试驱动开发就是这样引领
框架生成的。
结 语
在使用测试驱动开发时有时候步履维艰,但是
我们有足够的勇气去交流,去尝试这种新的开发技
术,因为我们感受到了通过各种测试使得自己有足
够的理由自信,这种自信让你更加热爱 XP,热爱测
试驱动。本文在写测试及类代码的时候由于篇幅的
限制,步伐有些大,,IDD倾向于采用小步骤进行开
发,即一点一点编写测试和代码。但是步伐的大小最
终要由程序员根据个人情况及客观条件来把握。
参考文献
[1]Ron Jeffnes,Ann Anderson,Chet Hendricken.极限编程实
施.北京 :人民邮电出版社,2002
[2]James Newkirk Robert C.Martin.极限编程实践.北京:人
民邮电出版社,20o2
【3]Kent Beck,Test-Driven Development By Example,2O02
(收稿 日期 :2004—10—18)
(英文摘要见第 43页)
MODERN COMPUTER .3 0
现
代
计
算
机
^
总
第
一
一
0
七
期
v
维普资讯
ITttJi
让测试程序运行(通过伪实现)。
double CLineGeo::Calc由.teLength(D_DOT* pd_xy, long
llen)
retum 5;
辑们通过伪实现后,测试运行时话枢显示操色
进1l艇,如因 10
图 2 测试没有通过
(3 )关于丁D口的几点补充
为每项功能创建测试和代间可以培养自惊心,
这是 XP 的最大好处之…。并不是每个类都需要进
行单础测试,有时也可以绑定多个类进行集成测试。
在进行测试驱动开发时坯应该注意以下几点:
①在 TDD 中是测试优先,而在辅 1iii测试代码
的时候是断育优先的,即测试开始首先编霄断宵。
@rDD 对测试的观点就是拉撒其效。在 TDD
中,测试从某种意义上说是一种达到目的的手段。
③不为代码的将来考虑,你的代码反而更可能
适应将来的需要……测试磁动开发就是这样引领
框架生成的。
图 l 测试通过
下面编写合格的代码,即流程的第三步:
double CLineGeo::CalculateLength (D…DOT * pd_xy, long
llen)
rr工工士-二寸工士十二-伊:珊蜘
叫
F…ne
'1.," …· 伊应在:;t. Tt ':i ..叫山L蛐圳
,阳...蛐a
翩
矗幽幽〈 第
伽7帽,楠串
1 曹311盼 11.. 1耐串咽蜡ití.掘
如耐蛐时阳组酣斟蛐缸
结语
在使用测试驱动开发时有时候步履雄艰,但是
找们有足够的勇吨去交流,去尝试这种新的开发技
术,因为我们感受到了通过各种测试使得自己有足
够的理由自信,这种自倍让你更加热~ XP,热爱测
试驱动。本义在写测试及提代码的时候由于篇峭的
限制,步伐有些大,TDD 倾向于采用小步骤进行开
发,即一点一点编写测试和代码。俐是步伐的大小最
终耍由程序员根据个人情况及睿现最件来把握。
double dLength;
int i;
dLength = 0;
for{i 嚣。; i < llen-l; i++)
dLength +=叫rt (1怡(y [i + 1].x - pd_xy [i].x) *
(pd_xy[i+l].x - pd_xy[i].x) + (pd_xy[i+l].y - pd_xy[i].y) *
(pd_xy[i+l].y - pd_xy[i]扩));
retum dLength;
'喃血
W忡忡川崎圃'们相机内销酣曲
'm
嗣mnνirhwmmw
@
参考文献
[1 ]Ron Je岱酬.Ann Anderson. Chet Hendricken. 极限编程实
施.北京:人民邮电出版社3∞2
[2 )James Newkirk Robe川 . 极限编程实践.北京:人
民邮电出版社.2创陇
[3 ] Kent Beck, Test-Driven Development By 仪陇
(收稿日期 :2004叩 10寸的
(英文摘要见第 43 页)
编译运行,对话樵出现红条,如朋 2。因 2 中错
误列表盟显示巾期鞭值与实际值不相符,期望值是
5,而实际值是 0,检查一下所编写的代隅,可以发
现踊数 CalculateLength 的第二个参数 llen 表示的
是钱段的端点数,因为在测试代码盟所定义的线段
是两个端点,所以应该把话句:
dLength = LineGeo. CalculateLength (pd_xy , 1 ) ;
改为:
dLength = LineGeo. CalculateLength (pd_xy .2) ;
次,远行通过,对话框再次出现再编译运行
操色进皮条。
MODERN COMPUTER 2∞
动灵活,易用性好。
②在不同的网络条件下进行视频传输,网络带
宽占用为8O一384kbps(不同网络占用的带宽有所不
同),帧率在 15fps时,播放过程画面流畅,画质清
晰,抖动和延时较小。
( 系统使用基于 COM技术的 Direct Show编
写,易于扩充和改进。而采用 MPEG-4编解码和多
缓存机制,使得系统的可靠性、稳定性好,并且具有
误码容错和隐藏功能。
( 与同类系统相比,在 R1'P协议的基础上实
现了基于终端的QoS控制和视频流的自适应传
输,系统稳定性好,可靠性高。
网络纵横
参考文献
f11HSchulzrinne,SCasner,RFrederick eta1.R IP:ATram-
portProtocolforReal-TimeApplication RFC1889,1996.O1
[2]李辉,胡瑞敏,艾浩军,雷力.基于 RTP的多媒体漉的自
适应传输.计算机工程与应 用,2004(5)
[3]王荣国,卜佳俊,陈纯.基于MPED-4的视频流传输框
架.计算机工程与应用,2003,35
[4]张辉,王成良.视频流自适应传输技术研究.计算机工程
与设计,2004(2)
[5]张益贞,刘滔.VisualC++实现 MPEG/JPEG编解码技术.
北京 :人民邮电出版社,2002
[6]钟玉琢,向哲,沈洪.流媒体和视频服务器.北京:清华大
学出版社 ,2003
(收稿 日期 :2004-09-22)
BAI Hai—tao , ZHANG Jian—zhou
(School of Compu~r Science,Sichuan University,Chengdu 610065 China)
Abstract:Aiming at the problems in curi'ent real-time multimedia systems,we built up a transportation system for
real—time video streams based on MPEG一4 and the principium of RTP.We present 8 feedback congestion
control scheme based on RTP/RTCP simulation to enable QoS and adaptive transporting.The experimental
result proves that the system Can obtain excellent video and stability,and is suitable for all sorts of networks.
Keywords:RTP;MPEG--4;QoS;VideoStreamTransporting
]r’r ]r'r’r ]广丫 'r 。
(上接 第 35页)
ation of TDD
LU Jing , XIE Zhong , MA Chang-jie
(Science and Engineering of Information Department,Chinese Geography University,Wuhan 430074 China)
Abstract:This article mainly introduces the application of TDD with an example.Firstly,it explains the definition of
XP,then expatiates on the procedure ofTDD,and applies the idea ofTDD into the development ofa project.
Fin'ally,it adds some explanations to TDD.
Key words:XP;TDD;Refractor
MODERN COMPUTER 2oo5.3
堪塥 丌¨ ■畀 蜘仉 ^凸心簟昂 一一 O 0伽珊 v
维普资讯
动灵活,易用性好。
②在不同的网捕最件下进行视频传输,网络带
宽占用为 80-384kbps(不问网络占用的带宽有所不
同),帧率在 15fps 时,捕放过程酬回流畅,酬质清
晰,抖动和延时较小。
③系统使用藕于 COM 技术的 Direct Show 编
写,易于扩充和改进。而采用 MPEG-4 编解码和$
辑存机制,使得系统的可靠性、稳定性好,并且具有
误阿密错和隐藏功能。
④与同类系统相比,在 RTP 协议的基础上实
现了基于终端的 QoS 栓制和视颇流的自活 rJi 传
输,系统稳定性好,可靠性高。
,虽曹文献
[l]H Sch时zrinne ,S Casner ,R Frederick et al. RTP: A Trans-
port Pro阳。HorReal-TimeApplication .., Ol
[2]李炼,胡瑞徽,艾端笨,健力.寨子 RTP 的多媒体流的自
适应传输.计算机工程与应用 .2ω4(5)
[3]王策园,扣俊俊,陈纯.基于 MPEG-4的视频流传输德
架.计算机工程与应用,21∞3 , 35
[4 ]张辉,王成良.视频流自适应传输技术研究.计算机工程
与设计 .2侃)4(2)
[5] 张益贞,刘滔. Vi部ualC忡实现 MPEGI JPEG 编解码技术.
北京:人民邮电出版社 .2∞2
[6]钟玉琢,向哲,沈洪.流媒体和视频服务棒.北京:清华大
学出版社,2∞3
(收稿日期 :2004由09-22)
Designing of an RTP Transport System
forReal… time Video based on MPEG-4
BAI Hai叩tao ZHANG Jian-zhou
(Schω,1 of Computer Science, Sichuan University, Chengdu 610065 China)
Abstract: Aiming 刨出e problems in current real叫time multimedia system晴, we built up a transportation system for
real叫time video streams based on MPEG叶 and the principium of RTP. We pre册nt a feedback congestion
control scheme ba晶ed on RTP IRTCP simulation to enable QoS and adaptive transporting. The ex伊rimental
result prov刨出at the system can obtain excel1ent video and stability, and is sui table for allω巾。fnetworks.
Keywords: 阳民 MPEG-4; QoS; Video Stream Transporting
叫γ『γ吨γ吨γ吨γ『γ『俨『γ『俨『γ『γ『俨『γ『γ『俨『γ『γ『γ吨俨唱俨-rT ..... γ『俨『γ『俨『γ叫γ叫r
( .1:. 4是第 35 页)
r""Y…γy…γ叫俨叫γ叫俨叫γ叫r
The Research and Application of 'IDD 确喃指向忡川笛且肝细饥内局盼钳
m
LU Jing , XIE Zhong , MA Chang-jie
(Science and Engineering of Infonnation Departme时,Chinese Geography University , W uhan 43∞74 China)
Abstract: This article mainly introduces the application ofTDD with an example. Firsùy, it explains the definition of
xp, then expaliales on lhe procedure ofTDD, and applies lhe idea ofTDD into the development of a projecl.
Final1y 咱 il adds some explanations to TDD.
Key words: XP; TDD; Refractor
MODERN COMPUTER 2ω
@