ãصС˵ www.27txt.com ӭȥŶ
վԴȫתԻ֧棬ȨУ

˼롷
ߣ

ǰ  
60չڣ˸ɵ¡ǵ뼼ܳȺдĳܿǵļñ˿áǸʱڱ̾͸һǺֵܹذѳļϳΪԱԼĻʱٰѳĿȫǡǾ̵ĸоر̣һ⣺£Ƶ󣬷þЩ⵼ˡΣ
1968꣬һȺԱѧ빤ҵʿۼһ̶Բߡͨͳҵĳɹ̻ͨķΣԡ̡һʮһЩëĸðһ޷Σķչٶȳκδͳҵڼ䲢δΣȷǰ˵ȼ̳֮һѧơ
Ҫĵʵߵĳɹʧܽѵܽᡣ̵ĹԺ͹淶ʵ޻ģƽ֮˽Կᣬؼáǲ԰̷ĽƩڳŴ򿪿ӦգԤϽҪֵ⣬ÿʵڣδȻоԶۼô֤ˣ¡
ڶѧʮаܱд˼ʮC++/CҲɴСĳɹʧܣϸоֻѧЩƤëġڲʿоҵǰİҸԼӦϡͿڳȥˣǾڷʡһľګĺСڡʱÿĵ¼֪ճ˰¾Ҿ͸˾Ϊ˼롷
鼮שͷȴ˿ءˡҵɣͼ⣺ʲôΪʲôô죬̵ĵԱ鱡Ƥ˼롱ζġڡİ¾ֱΪ
һ¡̻
ڶ¡Ա
¡Ŀƻ
¡Է
¡ϵͳơ
¡C++ ơ
¡Ĵ
ڰ¡ά̡
¼ѧʮꡱԳ䵱ˮ
żҲĴд̫ǳٵÿһֻˮ˼£ܲζļ˼ʱ䷭ı½ڣϾԸٻСʱһȫ飬ֱֵӣãܺãǳã
԰ⱾƼ鵱С˵ڿʱ벻ҪԶ˱˻ǺԼ
˱òֵãһ⳥ʧ
  л
鲢Ҳʿѧλĵо룬ȴҶʿѧλд˼Ʒ
Ҫлҵĵʦ㽭ѧͼѧCAD&CGصʵҵʯӢڡʦֵ˾ءʿѧλʱҡҵؿһ˾ˤһͷػصİʵʱʯʦȻذҡ޳ٽҵвҴûʯʦɹʿǰˡҺϣѧһЩʯʦȵĵʦ
ʿǱĵһλߡǡ֮ȴˮҹ̸Ƽѧ⣬Ժ֡Ʒĵͬʱ幤
ع˾ܺһǸ֡ҿƷʧʱİָдڵĸٹ̵ķʹܾ𲽸ƽʱ˵ǰƿֻķݣΪĲŻȫλسҡϣʶѡ
ǸͿɰӪҵң꽻ҰɵĺͿ£Ͷ˾дΪԷİҾϵİʹܹʵĻпչһ격ʿѧλĹҶĹÿֻ300Ԫӹһ
㽭ѧϵޡơͬѧҺҺܶ༼ϵİҶл
رлĸ˺ܺ֡ʮѧҲʵˡ
20002
㽭ѧCAD&CGصʵ

˼롷͡ԱĵҰأ˼ӱݷȤʣ˶Ŀһ¡ѵãζ
ߴ˰Ĳʿѧλ֮дⱾ֮СȻֵ̽ݣĸдɻ̵֣ĺܶԭͷЦ̸֮У˿ɣʱйܱܺȻںѷںǧҳйؽ̿顣
ÿλҶҪ̸ۣѧᣬֱλδǹÿÿ賿ǰĳѧϵð̸˼⻰֮һǡѧƣ⼴Ҫ˵ĵΪеҪںҪлۣԹΪΡҲǵĹʶһʵֱĿƼԱԼѵʱȻƶѧʹѧʰڵصķֽϴʾⶼʹܶѧ˺мӡ
֮ʵĻ˼ʧıʼУǳɫ֮
ڴˣΪͬУҲŲǳªҪҵسΪĵһλߣڱӦ˴ĵĵط̸˵ɭ
20002
Ϧ
һ  ̻
½̵Ļǹ̺ϵ̽֡˾ϰ壬òڵһ߹ôһ¾͹ˡһҪԱŲͣعĿ֣ǰѱ鿴ꡣ
1.1ڽ̵Ŀͳõģ͡1.2ڽĻԣáֶ֮Żԡָʵѡ񷽷Ͳ·1.3һЩȷĹȡԱȽɵ뷨ѧ߿Ϊ䡣1.4̽һЩĹ
걾£ҪеĿ·ֻİ͹ƽˮëһѾͿĨƽǸ߾ٳ塢˼ΰģŽMicrosoftΪĵ˾ΧűȶǴĵְ֮ҹر̣ѽйɫҵΰҵȫ21͡
1.1 ̵Ŀ볣ģ
̵ĿʣʵĹҵĵ⣬ûʹͼҲҪʵӦĵ⣬ϰԱøٵʱǮ֮ڵϵʱϸΪǰᡣϸ񣬶Թ˫ǻ顣ӶЧ濴׷ӳʱ䲢ãƺʡӳЧ濴֤ȫ̸ӹ淶󽵵άۣʵʣͬʱɻúܺõ֮䲻ڸĶõ̷ͬʱʡ
˫Ĵڲ̸Ц鹦ڵһ߿Աڹʵ߾ָԱԿԱԣǵָ֮βɣôӦһʵڶΪ1ֱÿγУȻǿԱļ׷ҲְҵµҪ󡣣2еûмֵֻԿ塣3һʼ׷ʣʹ˼ɽЩҲҪ֤ÿڵͼԶ档
غܶ࣬ȷԣܡɿԡݴԡԡԡԡԡάԵȵȡЩ໥صЩִҪɲװ
̵ҪУԱĿϵͳơơԡάȣͼ1.1ʾ
ͼ1.1  ̵Ҫ
ģͽһ̽ù淶ķʽọ̈̄ͬߡģУģͣͼ1.2ʽģͣͼ1.3ģͣԭģͣʽģ͵ȵ [Pressmam 1999, Sommerville 1992]
ͼ1.2  ̵ģ
ʱ

ͼ1.3  ̵Ľʽģ
ֵģģֳͣٲģͣģ̫뻯̫Ѳʺִģʽҵż𣬶ڱδһ˿ϧӦʶԡղӦõ˼뷽һӵġԡʱǧټƵؽֽתΪһϵм򵥵⣬ȻһϵͳǸӵģӳǼ򵥵ģԵķʽʵ֣ɻ̫ˡһּ࣬Եľ񣬾ͲҪٴģ͵Ӧû罥ʽģʵʾǷֶεģͣͼ1.3ʾģǽ˵ģ͡ģжܹҵģ͵Ӱӡ
ù̶ģͲǳԱĴ֮١硰ơ롰ԡ֮ĹϵϰΪȣںͼ1.4aʾһЩӵĳ򣬽ԷΪͬܲԸЧͼ1.4bʾ
a                                              b
ͼ1.4 aȲں        bԷΪͬܲ
ʲôģͣٲͼ1.1еĸڡߨģͣ˳ԱĿϵͳơơԣԼά̡гƲC++/CΪ
1.2 Ļ
ǶԼۺͷۣȻȻ͹СͬԱ̹ε֧ôȥ顣ʮķչѾ൱ķЩܵۡʵԱӦý÷Ҫѧᡰѡʵķ͡·ıԲŻкõսǧǰǵȾڴ֮д˺ܶĵᣬִ˺ܺõڹҵҵڽеֻԣáֶ֮Żԡ
1.2.1 
þֳָɵĶ˳֮Ϊ塱õĶε壬Ҳεĳɹòıֶǻ۵ı֡Ϊڼ̳ǰ˵ĳɹϼáĽºŻԵǻȹʱҪԶֹ50꣬ǽõĲƸǧĹסֻӦõģͿɳˡ
õںߡɾ֪һϵͳУ󲿷ֵǳģֻСǴµġһؿųĶǱȽϿɿģиĹͨʵ֣иʣͲҴӦðѴ󲿷ֵʱСĴ¹ϣСֵʱڴĳ칤Уܰѹֺֿá
Ѹõ˼Ϊáͳƣ1000ڶгܱд˳ǧΣ˷ġObject OrientedѧߵĿͷǡ벻Ҫٷͬĳˡ 
һɶȲظʹõɵԪΪ(Software Component)ÿԱΪµϵͳԲÿδֱʹеװԺ޸ģµϵͳ÷̣ܵĿάۣȽĳɱʡһ棬Ǿʹ֤ģнϸߵɵϵͳҲнϸߵӦĹͼ1.5ʾ
òҪʹԼ㣬Ҫñȥ㣬ǡȥ塱󷽷Microsoft˾COM淶 [Rogerson 1999]ܺܺõʵִģá


ͼ1.5  ӦĹ
1.2.2 ֶ֮
ֶָ֮һӵֽɸ򵥵⣬Ȼص˼Դ빤ľ飬ȫʺڼԱִзֶ֮ʱӦؿǣֽÿܷóʵ֣гܷ񼯳ΪһϵͳЧԭʼĸ⣿
ԭʼ
ֽ                                            
ͼ1.6 ķֶ֮
ͼ1.6ʾķֶ֮ԡϵṹơģ黯ƶǷֶ֮ľ֡ķֶ֮ԡӲӲΡΪ˳һϻһֻӵնn飬ٰÿ裬ȻθգϻǼҲʹʧˡ
1.2.3 Ż
ŻָŻĸأٶȣ߶ڴԴʣʹûѺãʹάͼεʵиǿȵȡŻҪÿԱȷʶŻǿп޵飬ǱҪ顣ŻΪһʱԱŻ᲻ϸĽе㷨ݽṹͳ֯Ӷ
3DϷQuakeܹPCʵʱػƸ߶ʵеĸӳQuakeĿܰѺܶͼμӵ£Bresenhamߡβü㷨ٶ߽һҵһοQuakeʱе𶯣ܴPCϷļˮƽѾԶʤʶĹȵͼѧؿгɹʢеĵ㵽ֹзĪķ̡Եǿֳܶ಻ɾҩĲ֢ʱҪԹԼûаѹãдȴӱʶۡ
ͼǾ˼󣬾ӣʱ׼ΪŻҹԸζžܰáŻĸ֮ǺܶĿǧ˿ƵĹϵνҡܹʹеĿ궼õŻʱҪԡԡ
еԲָͨЭأʵš֧ǰݺеĽɫΪʹ֯õսҪüˣչһЩˣ򲻵ѵίһˡ
ԵҪԭǲʹĳһʧؼְܣȡơһ3DƿͨٶȣΪٶȶڳȡ㣬ôͻɥʧʵУ3DҲͲˣȫɫäͼѧ쳣򵥣
˶жԣԵĻôһѣǾͻòǽǽķʽȥԣ¿๦ȥŻбҪΪƶڱ֤زǰ£ʹĳЩرøá
áŻԡĲԽƲɵü桱⡣
ÿǧ10ԪÿǧһԪиƢֻ20ԪǮǵҪһġ㡱ô죿
9Ԫ99Ǯ999⣬10ԪǮ1⣬һϷ㡱ˡʣµһǮɽ
1.3  һЩȷĹ
ٲһЩȷ̹ɰѧٷƵĴ
֮һӵһ׽ο鼮г˱׼ʾ԰ǽκ⡣
͹õĲοָǵĹ鼮еķͼɣЧؽд⡣ʵ߲鼮Ϊ1ʵĹУǧ𣬼ʹ൱̹淶Ҳ޷á2죬ûһ׼ܳʢ˥洫طĳЩܳ㣬ζ
֮ӵõĿߡõļһ
͹õĿֻǲɹıҪǳӵкûһȺӹˣѱǲɳԯ޵顣
֮ڼƻӸĳԱ
͹ͬڴͳũҵ˶಻ڼƻĿ֣ܻĿΪ1ֻܶµĴʹĿҡ2ֽ͹Լ˼붼Ҫʱ䣬ʹʵʿʱ١ԿѧĿƻҪںƻǰ٣ǡ֡áԾķʽ򹲲壬ֻ˵ĺ
֮ģȻѣ߶ʮһȰ˵ģʱ޸ġ
͹յԽ׼ȷ޲Խ١ЩһʼʱȷڿҪϵؼԸ޸ԽԽ٣޸ԽԽ󣬾͸βһ
1.4  һЩĹ
̽һЩĹĿĲڵóȷ򡰴󡱵ϣἤԵ˼
֮һнǻһ̨ļһָ㷨
߹۵㣺ĿΪѧϰоôӦһָ㷨Ѿҵǣһ̨ļܽ⣬ĽĽ㷨ȻԴӸٶȣԼ̡ʻѡߣΪǾ÷κοŻĻ͵ڷ
Ƶ黹Уֳɵĳ򣬻ǳԼԱҵʿвͬѡ
֮õ̷õı
߹۵㣺ԶûõģֻиõġܽĶǺ÷ǺԡԱѧϰBasicFortran PascalCC++ʱоһһãϲ֮١Visual BasicDelphiVisual C++JavaԸѷӡԱӦøݿ͹ѡԼϤķԣܱ֤ϸʡ
ֵ飬ҪĳĳѰա
֮ʱǷӦöʹüɣ
߹۵㣺ԣɵŵ辶ؽһЩ⣬ȱǼɲΪ֪ڳ̫ļɣܻҲ򡣼һֲŵϵͳ΢ģһġ߽Ȼķʽ̣üɡ
򡷵Ĺ¸ǡʧܵļͨǼڱʱ޷ж˼ɻ˼Ǿá̡ĹָǡɡȻȻģŪġ̵ľǿɵ̨ݵģ˼ȴǫ˵ûɶûɶ˶ѡ
֮ģеĴǷɰس̶ȷֵȼ
߹۵㣺ڶʱԽֵȼԱڹ΢һЩС齫ֳĸȼ [Cusumano 1996]1.1ʾ
һأ
أһԲвû
أһԲе
ļأǱ滯Ļ΢Сġ
1.1  ĸȼ
ǷǳԵģʵġĳ󣺴AʹB¹ʼ󡣰1.1࣬AһأBءʵBҪAء˻ˣʹϰԱܾʧAֻʹԱеᷳûɾʧһʾǲֲд1.1ļأִܵ»
ԱӦʶеĴصģ΢Ĵٷ
1.5  С  
ѧƷչ죬Ѿ˺ܶ෽͹淶ѧֻ֮ں̵һЩ˼룬ݽں½ʲô÷ãɵ鵤ҩ󡰳Իƽ԰׽𣬾ʹһȴ
ڶ  Ա
ڵһߵԱǳԱͳǾˡõĳԱͳɫĹĿɹıҪǹƣȥס˼ҵĲӣΪԱһȺҰѼӡĿôһѹãø˻øԵĿֺ㡣һ֯ɫ쵼ʱԱ֪ѱ쵼ĿʱǻԺ˵ͨŬȡõĳɼɡԹ߲ϵԼһ٣ӦʱʶԼεҪеߡ
Ǿоͷεڸ̸ۣҲᣬĿeasyɸȥϵͳͷٽмԱɳ򣬲OK𣿡
Ӣ׼ΪeasyOKǱʡҪĿʧܺףֻҪ֮һɣ
1Ŀһ֪
2˶Ա̲Ȥ
3дĳԱʱõġ
ͬʱ߱ʧܺˡ
ٻԼǱȶǴģȵóԱͳ˵
2.1      Ա
ڵĳԱɻֱܴͨӲޱȡǵϢʱ䡢оֹ볣˲̫һö֮͸ˡءƧӡҵȻ죬͵ĳԱڴɽ᮵ľҲܱڳԭǳԱ˲𼸱ٳɡʮһͨ鼮ҲҵڹںųϰԱ֧ӣѸ㲻ЩЩλˡ
ĳԱ±ԣ
һʵ
Աѧϰ빤ڼ伸򽻵ѹûƭƭ˵ĻᡣڷܵĳԱڵĳBugʱѾؽˡʵĽʵˣ϶ҲóԱ
һгӪԱһԱŷϷԣһ¼Ϣڡ
гӪԱ˵ȵ绰ܺԭӵӰ춼Ҫ󡣡
Ա˵޵ڣ޵ĳ̶ϣһЩԵ⡣
ΪǵӳʵѧҪץ
򵥡ʵ
һѧңһѧҺһԱһм棿
ѧһش˵棬Ϊǳ塣
ѧһش˵12棬Ϊ66ڱ 
Աش˵ֻ棬ŵ·Ӳ̣ʾͼ̡
ĿǰʹȽļҲ߱ܣԱĻǰѸӵתΪܴļ򵥵ĳһ⸴ӵԱԼ⣬޷øļԳԱŷ򵥡ʵá塣
Ҳвѧʡ˵ߵ¡仰г˵׵£ǵҪ̧ߵ۴µĳ̶ȣдȥڻŪʿѧλڵһ߹ĳԱʵɵġ

ԱϲսϲάˮƽĳԱϲˮƽĳԱһΪ¡壬ԽԽԱɡˣ󡣲ţһʶĳԱмǵʿ
ġζ
ʱ̴ʦƵʲô 
ʦش˵˵ʱͳԣʱ˯ֻҪʱǡͽгơ
ʵԱ͹Ϊһ壬ܵȴζܶ¶ʫΪ֤
ұ

ֻӲڸ質
ۣĳԱûɲϲԶȹƧÿɰ
2.2       
ָһ֧Ա쵼ߣְǿ鳤ĿǲžǼԵĻвɲҵԷչѡǲݲʵ¡ЩҵλֻҪοںźڿ졢ҷԵͿɻ쵼ҲһЩŻֻ˵İ칫ҲҪκ͸Ρո֣ᶷûûˡ
һҵ˾ĳԱܴ󺰴вҸɾʮ㣬ܳΪһ΢˾ѡԱʱǰǵļ֪ʶüȥ׬ǮλһǳԱǸһȶǴ[Cusumano1996]
һӦݣڽѸٽһ򣬸һͷͷǵĽ͡һѪҪܼʱѧ֪ʶҲǿǣܰѱΪɵϵһʹõд¾񡭡
õĳӦþ߱¼
һˮƽǳԱе߼
ÿԱͷһɰ㲻ܼѹȺۣǾͲָӡһˮƽϲ˱ΪǸ磬һȨƵ̫࣬˶ͷȴ˱ӡ
ѵĹ
ҪҺáҪһĻ꣬ŻоȥӦϵͳϵͳѵĿָͬˮƽĳԱѸԵĹáֲҪͬʱɼ˵Ļ
˸
̣㲻ִָͨйƶõƷܶ˾ĳǹרҵģҲΪ˸ùŪĻɫĳһģԹصӦǡ򡱡ˡϰʱſ˯ԱҲɡԱſڻ˯ֻһУһ̾˯˼ң˯ʱű̡
û˸ûŷ㣬ŶӾͲں֮ڲܿ
ۣһл˾ĸ̾ΪɶҲɣֻõ쵼
2.3  ԱΪǷҪ
ȿMicrosoft˾ϵͳӦŵ쵼[Cusumano1996]Windows NT 3.0Ŀ¦µľһÿ컨һʱд룺
ƶҪһÿ˶ṇ̃˭ҲǶʩҷֹߺʧȥĿ꣬޷ʶıʲҷӦٻʼղд룬ܶĿĽչָƣʱֲ⡭Ҵÿ컨һʱд벢ѰĿȱݡ
ΪӦľ˹˵˹ҲͬĿWordĿܾʱΪ
һЩ˾ڲžѾĲơһϿžܿͻԼӸλΪɷ̣ͬأС鳤ԼڼԸ̣ڳԱҲԼʮַæٶдȻ270Ա쵼ƺҪʲôĹˣһΪWord°汾дһԡ
ԱΪһҪ̣Ѿ˵úˡµǡĽܣ߽ӣÿ컨һʱ̣û͹صˡ
2.4 뼼Ľ
ǾӪһӹһ꣬ǿԲضΪǵĳʶԼͨĿûѯܽʵе⡣򣬼ģһ֮ھͿʹҵޱ䡣ҲҵϺܾ޷֤Լڼ˳аȻ˾ĸüȾֶͨ
һɫ쵼һ֧ӲĶ飬пܴҵָܹӻȥ籭ϲԴй˺ܴʺϸҲûܹʵʮ˿ڲӦйϲӡȽչַḻʵԽԣҵû˼ұȡڵһߵĳԱӦʶñýģǺģҪѧ侲ط⣬Ҫȥ
˾ϣɫȾͨƳҵ˲Ѿ˵˲뵽Ҳס԰ѹ˾еͨԱΪ˲Ҫľٴ롣˾ϰ岻ҪԳԱƫΪֻ򽻵һˮƽĳԱȻѧ߼кܶǶסࡰҵ˼Ĵ۸ӵĹϵϽسҲ⡣
ںܶŮʿղˣȴܰѲ˵ӪͷͷǵȻǸֵð̾⣬ӦڴǷǵղ˲ɣôþܰѲյֺóӪԱҵϵԭҪǸȤͻ¡˾ϰӦԱܰѼô¸㲻ùĸɰɣȷܶ༼ԱڹιģǾĥΪ鳤ĿΪ˾Ҫľߡ
ĳԱϲĳԱһһԸһͨ˾зǳԱУҲһͬһ²Һ޷ݡйԷ⽨ϲڶķϰߣǧ͸䣬»ƺˮˣҲϮȥҪʹԱȽкĵȼƶάȼƶȲɺΪ˭ҲǶκܶһӣÿ˲лǽͷժѾõҰɢһľʱֻͼ̡̿
ǳŽһԱĵȼƶȡ
ѼˮƽΪļһͣļߡһˮƽĳԱҪ˱̻ҪϸҪԸձҵĴѧڶˮƽĳԱҪߣĿĹ飬ֵָĹˮƽĳԱҪϵͳϵͳƵҪ似㹻Ⱥ͹ȡļˮƽĳԱǳɹƷʦȺʹתΪмֵƷ
ѹָҵĹˮƽҲֳļ㼶ͣߡ㼶ˮƽûйְ񣬾ͨԱһˮƽǿС鳤ɴ켸ԱڶˮƽĿˮƽ˾ĳЩƷǷҪԼȥռг
ÿԱȷļ͹𡣼һϵһأһˮƽֻͨԱڶˮƽ˿Եһ鳤ˮƽ˿ԵһĿļˮƽ˿ɳΪ˾Ʒľߡͼ2.1ʾĿǰļˮƽڶˮƽ鳤Ҫڶѧʹѧʱ̵صδҲ鳤
         
ļ                       
                       Ŀ
                       鳤
һ                       ͨԱ
ͼ2.1 
2.5 ʧѧϰ
ǶӦʧѧϰĿڶݵĽ껪ٷʧܣȷĶй׵¡
Ŀʧܵغܶ࣬ȥҽڵĻͻִᷢĸԴԼϣ֪ʶƶܵ¡鲻㡢ԸǱĲȱ㣬Żѧѵǳ̫٣Ϊ˿˷ϰװ˷˺ܶ౾ڴľ
跸ǳʵĲڷܵġԸⲻٵظĽԼͻȻʧʱܾԼһǴҲ᲻֪룬ҲᲡͶҽԱһֹͬ᣺ڵԳʱʱֻʮеĳ򾹻ϰٸôĴʵĳһгġڹʱҪ侲ط⣨³ģҳҪģӦȽ
ǰ꣬йһСֹа̣ͽ֮࣬Ⱥ亦ǰȫҪýԡֹµ¶Ŀ˺ܶܺ˵Ŀߺܹסֹаġġڷŭʹ֮࣬ǲҪ˼Ϊʲôôа̣Ƿ˽ѵ
ڵϿܶ˵ȷ̵ļ֣Ǻڰ־ֹͷͷҶԲᡭԺһҪ֯ĻҸʲôҾ͸ʲôϻ˵ĵ
ҾЩܺһ㶼ûֹֻ֪Ǹа̣֪ԼΪʲôа̡ЩֻҪԴȥһֱܷǷǣǾǲȥ˼ȴܸԡǡԸԼԴ˩ڱ˵ĿϡѵĴɰ𣿻عһʷڡĸʱڣźϷĵ֯캦£һɾʮģɼĸĸ֯ȷԵӢ
˵šɵƭӵĽɵ򣬱ƭɵδ£ɵһƭӾͻһɵ¡Ϊ˲ԼɵӦȥѧһЩ֪ʶŬԼˣҪŰһиĳ˻ĳ֯
ԱĿʧܲʼʡʱҪֻǾµؽ۹ضĿϣһǵӦóüǲŶԡ߸ոʧܹȽܡ
ڶƺ˶ʿоʱһֱŷԵҵҪƶҰںڰ칫ӵѧרҵ̡ڶ˶ʿоĵһ꣬˵һҶʿоĵһ꣬³ɵػȫѧԴչʾһʱΪѾӲˣٻعǰЩļ࣬Сϱšı׳оںСط199710·ݿһ˾
ҿʼѡҵճ̣ǰǽǮ̫òô졣֮ҿʼΪƷɲûгֶ糱ӦϾƣʵѹûзӦѾʶгûҶԣԾеļмֵ׼ٿ¾档ֻһ֮Եڱһλ֣СչʾԼ10C++ʱʮھָദشƴʹĿɿڴʶϵͳļֵΪ㡣ʹźӱǳԵһ
199810£λһδӱɵݣҰֻһĹ˾رյĲ£ҡҩδذ׽ϽĲţѧϰ顣ĶӪһգȥһпԭµĽڡҲ̫ٵˣ֪ʧҵë۵һˮ׼̲ס緢ĽҾ᲻̫гΪʵطܹȥҰԼʮëгպһһ˷Ĵ󲿷ȡһǰĽѵ¼
Ĵ֮Ҳѹͦ֡õһʧֵܺûտʼдⱾʱλѰѽ쵽ɢ˳ָҼҩõұҵȱǸĲģ̺ﳤҪһ
2.6 ۺ
ǰԱ˹һɫĳԱԺĿһС첻ܸһ̫ŵ㣬ûбʾǫء
ѧʱ̫̫ޣ֪ʶṹǳֻµҲɲ˴ԱóʱҪʱֲԼóķǼܡﳤ̲ۺʡ
ܻصѧʱϣܰĿѧáʱʢѧ߱¶¡Ҷѧʱ֪һĿƣںĪ߿ĳɼ54ֻ֣ҵֵ6֣дĵĿǲ⣬ǰǷûɹ£ĲɣϴѧĵһҾȻ޷ͨ˵ȥϴôߡֻûζƱ븨ԱѧʷҲ̤ˣʱֻдοʦĳĳĳҼӢ¾壬˭ĳɼӽ֡ҾɥǣЩоҷģҶǸƨѣһԺжûС
ӵĿֻѧƲͬڡ°װǰժ˿ϵͳĻ˶ԶͷˡҸ˰ûͬⷢҵıʲǵҵϡҷԼڲÿĵطһɬĹӡ֮ܲӲ飺ɷѧࡢȥɳĮʮڣݺ£ΪʿҮҪڵ̫ˣֻڿЩ֪ԼɴԸΣѧø㡣
Ҫ˾óԱֻмԲ²ӦɢԱΪɶԵõӦǳ˲űõְҵ
2.7  С 
½óԱͳһЩΪ˰ȥ谭ǽЩα߶˼¡
й˺ܶ򶷡˵ĸȴûһθϹҵе£ǲٵˡ90ڣйһЩԱӢۣǼݹЩµӢǺܿؼȫˣֻ¹£û¸ļֵһʶҵһһϦĻԻ͡Աڷѧϰ͹ֻͼɼĿ⣬Ӧҵʢ˥ƶҵ־Ƚطչ
  Ŀƻ
ڿԷ֮Ŀƻᴩϵͳơơԡά̻ڡ
ĿƻҪṩһݺḺ̌пԱȷһ£չͬ׼ʱĿĿƻҪʵʩģͺοںţԺܿšĿƻڡ׼ȷǡ١
̵ҪĿꡣһͳҵִͨϸĲ淶֤ƷСʵͽŵĳԱδؾܿԱ˽ķ棨ΪأȷԡܡԡԡɸԡԵȵȣڽϵͳơʱڽСĸǡģʵƳģĹֻһԤֶ֤ζѡ
3.1   Ŀ  
ĿƻͬһӤдѡĿдƻǾɶˣҿ100% ׼ȷ
ʷѵһһԺŻһͨ򹲲壬ôھͲҪæҹָӢܲ򹲲ʱԼĿƻʱӦһи硣ֻС֪֪ˡĿƻ֪ˡָҪ˽ĿĹģѶʱơ֪ѡָҪ˽жٿԴɵõĳԱмǵˮƽΣӲʩΣ
3.1.1 ֪֪
Ҫ˽ĿĹģѶʱƣſȷӦͶȥĿڿԷ׶ξҪ⡣ҵǣĿԲ֮ǰ׼ȷعĿĹģѶȡﾭҪá
Ŀʱࡣһ࣬ĿӦɵдںͬУˣ򿪷ҪӦ⳥ڶǿԼƷȻֻȷ˸òƷµķڲ󣬵̫ʧȥ̻ʧ
ĿԴΪࣺˡɸõ͡Ӳͼ3.1ʾмֵԴĿƻƶҪȷԱҪǵרзֹ
ɸõǴмֵԴ1.2.1˸ʡһҪԼģרҵӦ̹
ӲȻҪԴȴǱԴԭӲֻҪĿĿҪ󼴿ɡЩĿҪõ豸Ҫ׼ʱҲ˽̡
ͼ3.1 ĿԴ
3.1.2 Ȱ
һλԱæűд򣬾Ҫòɡ
ͿɡԱش
ǲʵʵģʵʵ˵׻Ҫʱ䣿˵
һӽһЩµĹܣҪڡԱһ˵
ʹҲˣֻҪʱһҲˡ˵
Ժ󣬾ҪˡȥͻʱλԱſڻ˯ļһ϶æڱдǸ[James 1999]
ԱҲÿ糿7:00׼ʱ𴲣һ͵ˡĿڽȱǼҳ㷹شС֡һЩ¼ᵼĿ
1ϼ쵼ܶϣƶ˲ʵޡĿԱǱȰղĽȱչ
2ͻ˱仯ûжԽȱӦ޸ġ
3͹ĿĹģѶȣͶ㡣
4δԤԿ˷ļϰ
5δԤԱᷢ⣬ְȵȡ
6Ա֮䲻ܺܺõĽЭ¸׶ɡ
д̱Сѧд롣һЩĽ飺
1ƶȱþĿˣ˽ĿͿԱȱҪСۣڵõ˵ֺ֧ʵʩһԸľ档
2ȰŲһҪ߼˳ӦܵѶȸߵ£Ѷȵ͵¡Ҳǰں
СʱҶһλԷܸȤȰһе׷ԹˣȻҸƷһСвˡĸйĴͳ£Сȿ𡱡Ӵģ˵ȥѧϰ͹ڷȰѲ˳ˣųԵ׷ģ̫ˣҾáȳԷ ǡȳԲˡ
3һĿӦýȱΪɸ̱һ̱֮ڵĶͬСԱ׳ڼҪôֲ˼Ҫôͷö̱ĵʹæµȺңʧ
4ȱблʱ䣬ʱõȷϡΪǶԼҪ֪֮٣ҪһЩʱԷ⡣Microsoft˾һЩСƶˡ50% [Cusumano 1996]Ŀԣ̽ȱдڻʱ䣬ΪϵһԾ
5ĿӦ޷ǳҪ쵼ͻſޡȡͻ仯ʱҪԽȱӦҪ޸ĽȱѺ鷳޸ĲŻ鷳ܶΪ̺ѣˡ˵̺ףһͽ伸ʮΡ
3.2  ȱĹ
ȱݡĹԴһЩӲ̡ĿӲмĲ𣬵ԿԴӡȱݡеõϡȱݡݣһǸĿ꣬ǿִеĹ淶
3.2.1 Ŀ
һʱڴںܶ಻ȷأһ㲻100% شﵽĿꡣƽĿ80%ĳ˵Ŀ100֣ôճɼɴ80֡ĳ˵Ŀֻ60֣ôճɼֻ48֡ڿսЩֻ켰ѧͨἰЩø߷ֵѧҲΪԼʧض㡣
һĿͨҪ˵ЭĿΪ1ʮԱĹ֮ÿ˵Ŀ0.95ôʮ˵ۻᳬ0.19ÿ˵Ŀ0.9֣ôʮ˵ۻᳬ0.03ֻÿ˶1ĿŻ1
ûиĿ꣬˵Ķͺܿ졣ûСȱݡĿ꣬Ҳȱݾͻɶѡ
3.2.2 ִеĹ淶
ʵ100Ȼʵ80ҪŬȱݡĿ겻ģõ塣ʵָĿҪһ׿ִеĹ淶֤
50ĩȫˡ硱ΪʵĶƹַȫּġ벻ǧļйũôԵˡ
ù淶ǱҵִеġһͨҵհһҵĹ淶δе̵ͨĹ淶״鼮ҵЩ淶ܰáںܶ˾ûȥִҵƼ̹淶׶εġݡ뷢ʱҵġ硱ȷвͬʽ
˵ûй淶Լϲö»磻淶̫ˣͻɱԱĴƶ淶ǽѵ¡Ա˽෽أЩصĸֹ淶ֲУڸʵȻȻذѸƵС
3.3  
ȷĳǸĳ
̰۵ĹپǺù
ʱϰնһЩܵĵطʹԡ١ֻҪٵĲ̰ۣºҲǡù١ҲһЩϰմţҪ̰۷Ҫ󱿵֮£ԱǹҸˡΪͨŬԼˡôͲҪ׷Ȩˡ
ȷĳ򲻼þǸĳҲٶȺܵͲ˷ڴ棻ҲдһͿ˿߱˭ҲҲʹáȷֻǷӳһضѡ
غܶ࣬ȷԡȷԡɿԡݴԡܡЧʡԡԡԡɸԡԡԵȵȣгʮЩ֮䡰ңǳࡣԱÿҪôҧĽ֣þͻظѣҲŮѵΣա
Ϊ˱⣬ԲС˵еѧ࣬شԵطֳɼɡѧԴԴ໥͸˭жٽɱ𡣵ڵϻ죬֪ܵɣɡ䵱ɡɡɽɡɡ͡ɡصķͼ3.2ʾСȷ뾫ȷԡλλͬɡ롰䵱ɡЧʡԡԡ͡ɸԡǾصأλ·𡰶ɡɽɡɡ͡ɡܿͼ3.2ҵʵԵϵڲһһϸ
ͼ3.2  طѧ
3.3.1 ȷ뾫ȷ
ȷ뾫ȷ֮صĵһλΪвȷ߲ȷͻûɲʧƭˣвȷ߲ȷһ㶼ɵġʹһ100% ذִУˣôԿͻҲڴ󡣼ʹȫϿͻҪ󣬵û100% ذִУôҲڴ󡣿һĿԱҪΪȷȷĸֽ߾
ȷԡȷصݴԺͿɿԡ
ݴȳϵͳڲȷ벻ȷأΪ˷ֹǱڵĲȷ벻ȷѣϵͳΪ˰ȫʩһЩ߷յϵͳ纽պ졢ڵϵͳУݴƷǳҪ
ɿָһĻ£ڸʱڣϵͳϵĸʡɿԱӲĳ豸һʼڹʻᷢ仯緢ȣϵͳͻʧһȫȷӲϵͳڹδؾǿɿġʱᷢʵı仯ǳΪĳȷģôһӶȷġ޷г׵زԣ޷ǱڵĴƽʱеúúõģ˵׼һͲˣ硰2000ꡱ⡣˰ѿɿġһɿԵѧʽҷĿǰѧʵԿϽЩʲôˡҵҰѴûñʻһǺš
3.3.2 Ч
ûϣٶȸЩܣռԴЩЧʣôԴģɻҪ㣬ԵҪٵ㡣ԱͨŻ㷨ݽṹʹ֯ϵͳЧʡŻĹؼҳЧʵġƿҪ޹ʹĵطϹæְÿ죬⿿ӿʱܶƨã͸һдʮƪ£ȡƸڡ
3.3.3 
ָûоʹ׳̶ȡûǲûҲЩҪʹԴĳԱִ˵죬ɶ¶ͼ㡣԰ΪҪ޿ɷ顣
ԲĸԭǿԱˡλëΪֻҪԼ㣬ûҲһ⡣׻˵ϣԿ䡱ԱûչʾʱؽǳãҲ㿴ǺܺðɣҪûۡûĸеܺʱһůĸоȻǾáѺáԡ
3.3.4 
ԱһӵԸһǮܵʲôСʱһڶѧʱ޷֮úܷգ׺ѧˡ
ҲǶûԵġԱֻԼ˼·ʱſдñĳ򡣱ʱҪעⲻüɣӦȻķʽ̡ǵȷ֪Լĵ֮پǽǻ㡣һͷһʻŪʫ黭⣬ȴΪһڵţࡣ
һԼûͬСУǡ¡йС˵衱ɮһ飺ֻɮա˽ɳɮˣҪ޸һࣿгȼִŮԺذɮĩ
һԭʼӦܸܺӣˮƽ˾ܹϵͳƵúܼࡣϵͳӷײ⡣ǶԹ󾫡Ľ
ϻʦоԣɵˣһ˵Ļһֵ᣺ѧдúܼ࣬˺⣬вˣֻмһЩĶѱ򵥵ŪɸӵģŻͶʡʵϣҿ5֮˵Ĺòд100ҳĲʿġٽҵʱŷԼȫʺ϶ʿѧλһҪúṇ̃ˡ
3.3.5 ɸ
õһַʽԭⲻʹֳɵһַʽǶֳɵбҪʹáɸԺõĳһҲõĿԡ½ƿɸáC++
3.4     
ǲԼͱ˵һΪĳЩ漰ʱҪм֤ƽƼʹ˹ᣬҲٲ˼顣
鲢ҪȵĿʱִΨһһΣӦÿʵڶҪִСӦڽȱÿ̱ʱִȽϺжһǺϸǲϸܴٷ֣飬ΪʲôΪʲôзԱ㡰ĲΪáϼӺá
Ǿõʩ[Pressman 1999]
1ȰѼҪƳһűʹҪϡ
2ֻ󿪷ߡӦǢġڵĴӦñòָκ˵ӦӻС
3һճ̲ѭ̲ܷɣռȶķճ̽С
4Ҫ̫ʱۺͱ粵
5˵ڣҪͼ⡣
6ԼԱʵѵ

ü鹤Ǽ׵¡ԹߣжԲߡ ٵ黹粻飬潲Ϊ͡
һ
ǰһصĴѧطУ԰﷿ǰݺ˴ոСѧǴµӿƼģСɶѽĿǰʳ㣬ȻֺҲ¡ڹ̩񰲣ƺòšڶ֪ѧУᴴڼԼС󻹲߲ءͬѧңСΪӦ211̣Ϊ21ѡ100صѧļţΪ211нϸߵָ̻ꡣƫƫڶ죬ʱѳݡѧ˶٣һϾͻᱻ̸ѧĥһ죬У԰͹ͺͺһƬС̻У԰νǧžʣŵЩȨʿȲ֣֪ġƺ
鹤ҪԤŪ١
¶
ϸʱһ󡣺ѡмλǺѧмλǻѧ롰塱Ļᵽˣû֪֧ǴǴ֮˵ﻹһЩͬѧûţţвͬ֡Ƕ֪ôˡǽ˵Ȼû˾ַԣͱʾȫͬ⣬ҹƻӭ󲻵һӾͽˣӴ˺Ҳûȡ뵳
鹤Ҫпѧʽ
3.5  С  
֪ΪʲôںܶҵҪ500ǿʵˣ500ǿȫйռˡĿƻеĿںšĿƻʱмɡðҪָĿȡĸҪƳģǡܡģ顣Ϊ˳ԱҪ˽أֻˮƽܿ

Է
ԷҪǲ
Ҫʲôʲô
ʹԷǿ͹۵ġѧģпǴġΪˣ˻嶯жĲ̬Էĳµĳɹ10%ʧ90%ǳ󣬾ҲһԴȥɣͶһݼϲ뼫4.1ڽԷĴҪأáỷˡ
Ŀǰںܶ˾ϵͳĿ̸̸ϵͳĿĿԷ˼ЩϵͳĿģҵв淶ҿͻڸҵû˵ϵͳĿ˾עȫڡõĿԼõɻءϣʹɥʧŪԷĻᡣȻָһ£ô͹ȰҪ°ɡ
4.2ڽԷͶ˾ʧܵĽѵ߱ûʸ̸Ͷʣдɣһҹرһ30Ԫ˾Լģݿһ200Ԫ˾ѵģɱһ200ԪͶʷİ˵ģһѿ״̬100ԪͶ루˵ģڱȽϸеӪҵͶҵԽԽ̸̸ֵ࣬ⷽĿԷҽĸܣһЩ顣
ΪͻĿΪԼƷҪ֮ĿʱĿһʱ˱仯ǽʹĿ4.3ڽΪʲôѣ4.4ڽνµ漰̣Բǽṹȷ
4.1ԷҪ
ԷƫȫҲʲôëƤϸڶȨ⡣ԷΪṩмֵ֤ݡ
뼯쵼־˵ûǮ׬ǲɣǮ׬ͶǮ²ɣǮ׬ҲͶǮûпɿѡҲɡ־Ϊ׼ͬʱҲΪԷָص㡣
һأĿԷҪĸҪأáỷˡֻǷؽĸҪأּڽȫַĹ4.2ڽϰΧҪؽصע
4.1.1 
ÿԷҪɱ桱͡ڡԶ桱
һɱ
ɱ⣬ɱˣɱǾͿˡ˶ϲԿ顣Щ̵šһ¥ı˼ǣ׼Դռˣͬ־Ϲɡ
ΪͻĿôдںͬСԼƷô۶
ԤƷ۶ʱֹ۶´ЩĲƷ˵ά˲þҪˣ׻˵ӻˡûһ̵˶оƷõû㷢ʱҪûƲ׼
С⣬ǿɵöԳɱϸ㡣ĳɱָŹ̵ĳɱָɱҪǵĳɱУ
1칫ҷ⡣
2칫ƷΡյȡ
3ӡӲ豸
4绰ͨѶ豸ԼͨѶá
5Ϸѡ
6칫ģˮѡӡӡѵȡ
7ԱԱĹʡ
8ϵͳķãϵͳݿ⡢ߵȡЩϰϵͳȴгɱɴ׬һʡ
9г顢ԷĽʷá
10˾Աѵá
11ƷáInternetҪǽWebվķá
12ͻţҪֿڳԺ֡лߵķá
13˾ķˮãкܶĪĹѡÿһ޵Ĺ¶ҪһѳƱ
ڡԶ
ϲġŹģű˼ġͳԶ¡ҵϣȺ¿ɲ׽١
װգսϵ͡˾һѷȥϢϵͳý̡ϵͳĿInternetÿǳڶ治˼ȡʱӦúúûͯʱЩΰıԼһЩ
Զ԰գսϴΪ˳Զ治ϧڿˣҪôĲĽ˧֮ţҪôǡ̸ֽ۸ֵסһӹˡĿǰвInternetҵֻͶ벻Ϊ˳ɾͽİҵԸƴԡļ˾Ϸг
ЩΪԶܶǣǿɵðѳ·;갡ǧҵ;زۡ
4.1.2 
ԷҪ¼أ
1ڸʱܷʵ˵еĹܡĿԿ˷ļ⣬鷳ʹˡӽȣĿ
2ΣЩӦöʵʱҪܸߣţ㹦ܾ߱ҲʵüֵЩ߷յӦöȷ뾫ȷҪ󼫸ߣ˲ɿͻʧôҪˡ
3Σʵ£׬Ǯ٣һɥʧͳܵĿʱʱ©άʱ䡣άǷǳϺȵ£ܰǰõĹ⡣ãᵼάĴۺܸߣͼͨ͵϶ʣǵòʧ¡
ԷԼ򵥵رΪúÿ
4.1.3 ỷ
ỷĿٰأгߡ
гַΪδггͽҪг
δгҪðܴķգҪ׼ȷعǱڵгжԼռٷݶ೤ʱʵ֣
гȻղߣˮҲࡣ󣬼˾࣬Ŀ٣ôھʱֶܻɱ۵ΡڵһġϵͳɵĹ˾˲ƣۺҲҵƽҲ½ˡ
ҪгͱȥˡܺܶԱDOSʱ̵쾡£ûҪDOSӦˡѧУѧпDOSҵ˾򲻿ȥDOS
߶˾뷢չӰǳ90йŵշ൱ߣһоͰѹڻҵһϢĳЩҵܸߣܴڵطߣʹƽ߲谭˾ĽչµĻԤҵΪ磺
ڼҵҵǳңһҵܲʮ˵ãѶִýڽڰˡ쵼˾ӲҵǵҵԻͣõĸ߶ӣңʱңܵøֵҵͬ־ڷ԰!
һҰݷ˱ѧһλоѧѡˣǸԱȻô˵оҵ˥⣬ҷһɣҵһ쵼ӲԼ˭ͻЩĴ¡
ʵڲҵΪʲôҪСǡְλΪǡµһſЦĹΣǡǡ顱secretaryͬʣǸп޵ԱĳƺйȻĹΡÿοѹϯгҶʮߣΪǵĳֻԼǧĵԱãҵŻѵʮͨϰգҽĹλǡ£ÿ׼æﻹоȥ̡
4.1.4 
оԣ˷ࡪ˲ţ֣
һ˾ȫˣôõķֹá쵼˲šһߵĿԱ֡Աлߡ
̸ֻ˾쵼뿪ԱлǲСϾ˲šǼüõġࡰ˲š쵼ص˲ʺԱһȺѧʿ˶ʿͲʿƾıҵ˾ӦƸ¼أҵĽ£
ѡ񱾿ƱҵΪഺɾʮ㡢ڼӡʡҪ󲻸ߡࡣ
ѡ˶ʿҵû󷶽оʱôϣڶ˶ʿʱûȥ¶˱̹ôоѧʿԱ¾Ϳˡ
ѧʿ˶ʿ˾ȡˣֻü񼸸ʿʿ˾ʲôأ벻ʲôãֵֻ֪ͦÿģ˶ʿʿͷʱ䣬汾ûѧ٣ѧᡰ۸ֵ͡Ū١ҵʱȻףഺѱȣѳ̬Ψг̾꣬ǿԸšҲʿҵҪΪִˡĽЩѧʿ˶ʿǣǿԶ߸߷ɣ
4.2 ԷͶ˾ʧܵĽѵ
̸ҵܲἰȶǴMicrosoft˾ΪȶǴĴMicrosoft˾Ϊ׸ʵʹĴͬ롣̫˼йıȶǴ и˷һֺ뷨ýϷǱȶǴġ̨س嶯ذһ͵Ժʿ̸̸ԼȶǴĵıȽϣλԺʿһرԼйıȶǴġ
һInternetӢҵYahooNetscapeʼһͳ£طսʱԱ߳MicrosoftӰõ硣ǸɫС˾ڹڱؿ
ˮ׵СӺܶ࣬þͻ˾ҵڡáỷ˵شڲ죬ЩɣģδؾóɹȻ֮𡢿ԭǵĹʵݲð޵Ļӵë֮ءҪпԷУͲҪȥģܽᾭѵϣ߿߾裬ⷸͬĴ
4.2.1Է֮һ
Ҵӿ˾رչ˾һЩ͸ܡ
Ҵӱ꼶ʼдͼγһһе˱˶ʿ΢רҵ1997괺ҵѾõ㽭ѧCAD&CGصʵҶʿѧλҸػŴһԼϲרҵѧĵһ죬˳رʵҡŲ5ӣ򲻶رŵŮѵ˼ΡΪ˲ðأҾʵʵץһݼֽվĶͻȻһɫˣԱ֮һҶϺȣڸʲôôԲͷ˵ıֽҾһƮƮȻȥӵˣӭ⣬³ȡèеèҡ
գҾͷʵǴԹСˮˮʵҵıͬѧΪԻң㽭ǲǶԣҿ㲻̫
һڹʱЦĵطȥҲա
ķ۵ؿCAD&CGʵңȴδȫˣŻҶûʵҵļһг򣩡
ʱʵֻһһ裬һһ롣ЩһһЩǮҡһ̨￪19978£ȥμ׽йѧԴչʾ·ҲǽģͬѧΪ׳ʱ˵ܻ񽱣ͻصʵҸɻɡ˵һõһǱʵֵĽĿꡣ
˵һųƴѧǡصûɶӦҾݵļ緢һݼѶһɷң̸һ죬ҷּ߻ǲ̫ףɴԼдűҺһ棺¾㱸ֻͶʡ10·ұ㽭ʡӢţѧֻйѧͷչصȽҵţμӡҵֵ̳һݽ˵ƵƵϵӣ10ͶߡѡһλҴһǳϻˣˡپ޹˾ʱҿνâ䣬׿ȺƬӡšҵΪΣʵֱĿƼԱ㽭ѧ뿪ңҡ֮֮顱ס
ҵʱ뿪һΪSoft3DͼϵͳϵͳߣӦ˾Ϊپ壺һǱʾ侳Ҷͼμ׷󣻶Ǳʾ쵽SGI˾ֵܵľ磬Ҷҵ׷
Ҵʵһλʦ飨ͷԱҵĴ󣬹1.5ʦֵΪϴһ˫ӣ˾ǸˡһļϣΪSoft3DƷ㵹һ뵽Microsoft˾ĶάWindowsϵͳSoft3DǱʱǾֲ֧徢ʮ㡣19987·ݣһ׼ȲǿֲȫƷ˼¶ûҪ199810·ݣù30Ԫʽֻùرչ˾ұһλ׽ȥ͸ġºҲķڷسԼʧˡ
ʧһ֮ʣҿ͹۵شӿԷǶ˵ҺͶʷĴдԼز۵˾
һҵҪ
1ʢڲ߱£һʯ쾪¡ҵƷѶȺܴһЩŵо⣩ֻ30ԪʽС˾ûв뼼ȥ¡뼼ԣɷҵƷ
2ԼΪĶûгΪȥƷΪԼϲҲһϲڹвɺг޷гжǵҪʲôǸϹæһ꣬һûҪгҲɷҵƷ
3ˡʵֱûдﵽĳ̶ȡõܶĿѧʱֻһֹǶҲܺҵȷϡΪҲ㣬ѧʶǳûиˮƽָңŻˡ
ͶʷĴ
1ͶʷǸˣҵƷһ˾Ƿ񶨵ġ˺üֵϣɹ飬ʹSoft3DɹֻҪǮСֶĲ̬ʹȷĿԷú޼ֵ
2Ҳҵеѧűˡд˲ĺͬҾȻǮ±ҵ30%ɷݡΪͶʷʵ˫һʽ51%ҳ49%֪Soft3Dܳɹ£ȴΪռҵı˶ɥʧӦеľյ˫ʧ
رչ˾ʱеĹ̶ƲͶ˼ֿ15ԪȴһáºʶƽЭʱ˵ֻԹԼ޴ʿźͬ
ҾԼڴ޵ʵֱƷʼϲиŬұǻۡԼķܶûʲôԺڵģѧԶʧȥĶ࣬һλøá
4.2.2 Է֮
19993£һλͬͬͬͬʱҰæһݳ8ҳͶʷ
ΪʲôͶʻ
йӦϢʷ
¼ơʷпԷ
㽭ʡӪҵϴеǮͶҶˡҵʱæŶԼв©ȱڸϰƵļγ̡ͷؿǷݡʷñȥдSoft3DƷʮϣǺɵط
ʣΪʲô
ҴԻΪе˶
ѳЦǷϻͶ߶еĻͲ˷ˡҪдũҵҿöĿԷ棬Žˮƽ
˵ããͿͬͬͬͬʱķϣһѡ
ҾΪӵмʮʲһȺũ񲮲дһ6ҳֽĿԷ档ˡʷǸܵ͵Ĳзҽժ¼һΪзҲʶдʷˣȻܶ࣬Ҷ˺޶⡣ҵĿԷд֪߱ʶ˿ģвýΪճϢҵһЩЩһ̶ǺģǲϽġ
áʷĶҪݣÿε˼¡
һΣInternetҵĺ𣬵óһЩۣǡͶʻĹؼ۾֮һҪ£
ʻӢҵŻYahooNetscapeЩҵһص㣬Ӯ΢תǵ㣬ȴﵽʮڡлҵֻҪһУĹɼ۾Ϳֱϣκιжǽǵʲô̶ȡ
ڶΣڹͶInternetҵļôǽͶInternetҵĹؼ۾ݡҪ£
軥ͶߵĿãƱܴɵ壬йڶڼƶƱʵַ
ŲõĽҵĻƽӮڼɵʵϣڽ뻥ӪվֱӳɱܵͣĿǰڵľ󲿷վΪСС֣ûмվۺʽע뽨衣
ͨһվȫȫĹӰ޿ɹġƣЧԶԶͬȽĵӡֽ档
Σ÷˵ԼѾһ˾ӪһСйӦϢվ㡣ĿǰһЩ˼ϣͶ200Ԫ/꣬ķԺܿʹŹƱǧѷꡣҪ£
ǾӪվ2ʷˡ꾭Ӫɱ9Ԫֻһ֡ȫ10Ԫ˵޷״ϣȡʽ200򡣡Ԥ12002000򡣡
վÿϢ๤κһվеǶС
й羭Ű飬ÿܸµÿո¡
ÿϵͳһҪͶʹá
ĶΣ˵ԼɽˣҲԴɽ
һԡʷһεķ
InternetӢҵǵ͵֪ʶòŻ˾ӪҵǼ΢ġϿһ̶ʲԱԵģûӪҵInternetҵмߵĹмֵֵͣǡΪʲôܹм̵ǰġǡʷһʼۣ
лҵֻҪһУĹɼ۾Ϳֱϣκιжǽǵʲô̶ȡ
ȻǺΪʹҲšҲȥŻ˾Ը⾡׵ͨ׵ؽŻ
ǰInternetޱ޼ʵÿĽ֯վÿվٿԷһ̨InternetĻϵмܹ໥ͨѶڵһ̨ʮǰ£޷̨Internetжôǿı졣Internetزҵ֧ҵ
Ϊһ̨ϿԿϢ밲װһֽҪͬڳһȷͬʱҵһλΰSGI˾˾֮һĴʼԶ׿ʶͶǧԪָյǳ˾һλվǰӢۣһλվںӢۡ˾еʱû̸ۣ󣩣ʵ̫мֵˣ΢˾±磩˾еһֵʮԪ˾۲Ʒõֻת˾ģԶȲеļֵмֵɲһInternetҵ˾ôԻ͡
ٺӰɡһЩƱƷһ겻ľӪ룬ֻɨ޲ֲݡа׾סն¾޴Ĺףǧۻġġʷֵֹǧڡ躼У1Ԫң治֪жֵȻǧٱҼһҲС˴ġֵٸڣ֪ͻƶһ첻ԪǮͻᰤ
ȥ˵Ż˾ɡ
InternetϢʮַ㣬ƽInternetķչһ⣬ûû֮ǰ֪ܵҪҵϢʲôط绰ҲҪ֪Էĺ룩**|www.taohuke.Cn̨ܶɡʱҪһֽϵͳרڴϢһûһֽСڡֻҪ롰ڡ֣ͻںܿҳȫйءڡվַҪԣһ⽨ʳĲرͼھļˣͷͷǸᣩ棬ǳŻ˾ù˾õձͷSoftBank˾ͶʡҲŻ˾ʵ̫мֵˣԹֵܿﵽͶʵİٱȥ뷢Ѿ̫ˡ˼Ҷõɻˣǻùɻ
ŻС᣺ֻھ߱г󡢼֪ʶƷҵܳ£ſʹһ˾ĹֵԶԶ䡰ԭʼͶ + Ӫ󡱡ȥͶһûмֵĹ˾ֻϿͶʷͶʳʶ
ԡʷڶεķ
1軥ͶߵĿãƱܴɵ壬йڶڼƶƱʵַ
ۣͯ¡ʵ۵װǡǸ÷죬ͶʷǸʵۣ൱ɵĳô׵飬ΪѧҵˣйϢҵҲ̫
2ŲõĽҵĻƽӮڼɵʵϣڽ뻥ӪվֱӳɱܵͣĿǰڵľ󲿷վΪСС֣ûмվۺʽע뽨衣
ۣ˵뻥Ӫվֱӳɱܵ ǼֱǺڰ׵ߵгɱͲССֵģйISPInternetӦ̣չʷȫ֪90гɰǧISPҪԭǾӪɱžֵǮ̫߶û̫١ΪʲôһЩISPСС֣ΪȫʣһճһڻڻָֻŵĶйŲйϵISPΪʲôûмվۺʽע뽨 Ϊ
뿴ġй硱йISPչʷֱҵʿйſѪʷ˲ISPǱӮʱաй֮ǰͽйԼġСInternetߡҲЩ¼ͶʳǧͶʷУڿ̫1998꣬ӮʱաܲŮʿһλвŻISPҵߣ»ǿнְԭдҵ߸ȫˡҵ硣˭Ǯжࣿ˭йŸܿƻ
3ͨһվȫȫĹӰ޿ɹġƣЧԶԶͬȽĵӡֽ档
ۣλһƪ˵йϰͨInternetȡϢĴ˵1000ϡһ򵥵ףйϰյĹʲ˵ʮ֮һйվϢԶʮ֮һйInternetʲʮ֮һ绰ֱĸߡ˼˻˵1000ϡ
˵ܶܳɹйԳɹInternetϣ1000ѶȣԶɱͨ˾
Һͬ¶רҵĲʿInternetǶԾ۾һҪҲûʹInternetרҵϹӣͨϰո˵ˡûȺûISP˭һ꣬ISP͵öôȥȫӰ죿ôȥӭӲýĹԴ
ԡʷεķ
1ǾӪվ2ʷˡ꾭Ӫɱ9Ԫֻһ֡ȫ10Ԫ˵޷״ϣȡʽ200򡣡Ԥ12002000
ۣԿľӪΪ10/꣬ǸɻôһӾͿԾӪͶ200򣬲Ԥǧҵѧ·Ϳܵøӵһ죬ɣ
2վÿϢ๤κһվеǶС
ۣ仰Ż˾ҿڡ
3й羭Ű飬ÿܸµÿո¡
ۣģ̨»վӦˡ
4ÿϵͳһҪͶʹá
ۣ飬ǹš˰šСϵͳ̵һ˺ſġ
ġԡʷĶεķ
˵ԼɽˣҲԴɽѡš
ۣͶʻɲΪţҲΪɽϰգһѧĶסҵͶʲӦô̫ĸɫʣŵķУҲҪ
ϵķȫ̷˸áͶʷŲҪͶISPϧû˷ҿ˾ʱķ
4.2.2 Է֮
˵һܻϧ˵ڶܾúЦ˵϶
19991£һӪҵGһ⣺ҸһͶ100ԪһҴ»ϢӦÿ˾ŵһڴǧԪǲŹȥ5£Ͱ100ԪˣʲôҲûʵڲô£ҷ
λGҵ2.5ʮļԸˬͶʵǸ˽Y³YԳӢĹѧƾܶԹ˾гһץGϲ˵Ǯû⡱ҲͶ100ԪҸY40%Ĺɷݡ
GY̸ʱͻȻƻԳGԶݣ뵼ĽЩͬˣYĸ߼YȻſڿӣϲ಻ϣƺӷģһʰҼȥιĹ˾ͲƷʾҪרҵתרҵYЦITҵͲˣǾӪһǲƷǹȽ˼롣ιҵĹ˾㿴ĶֻȥᡣƨȲԪʣΧǡʫҸֻ8깦˵ҲITҵ֡Ҷ10ѧûˡȽ˼롣ӢѧĳɹΪԼѾǡղ۹˥ܵԭбҪӢдһ
ҶG˵YΪ˼両䡣ӦϹرչ˾Ծ󻼡100ԪҲ𣬾ѵɡ
G˵Ǯû⣬100ԪڰŶĲˡ
19995£Gһ⡣
˵Сְϴ˵úеҽ˽ѵ
˵Ǻ£С֪͸Ǻú
̾һ£Yֻ100Ԫ
ҵʱҭ׵ѵGYǺöرչ˾㲻˵Ǯû⣬200Ԫá
˴СӣYÿһҪǮʱظ֤¸¾һ١ٶǮϣܾȻ˾ڸô죿
һ20ְԱ˾Աֻĸʮ硣200ԪĲ񱨱У100ԪڳԺֺлߡֹ˾ȫҩɾȡ̨˵ûһʱҲӦ5·ݵ8·ݣ壬G˾YЩࡣ
ģΪGͶʵĹ˾GҲ֡뷽跨סYĲʱYܴGڳǮGѪȴԴ룺ѪκҵĲЩѪɡ
YֺһڵƭHע⣬GͶ100Ԫ½һָơ˾˵󽫱ȻϢӦÿӿɹۣҪ׼֮ͬʣż·쳣ǿֹ
GǸˣ̡̫üֲܣֲĺ˱۸G˵Ǯû⣬˽˲Ʋᱻƭ⡣Ұ©סɣҰĵػѧУ격ʿѧλġ
8·ݣҺGӣͬѣǿаǸ˾GĹУԱǸ˾˽ӹܣȻÿ¿𲻹ԪGܵҾͲȥG˰̡
ǰδ˹ĶǵϷµľƣǸ˾Ա͸¶YӢƾԼϺĳרѵģΧǡеķ轥ٴѧʿƾ֪߳ܣYȴֺƽ޹ΪӢ絣ģӢٹйг衣
G˾ӣСˣʵڲִˡҺ꽻GһμʱҹʼΣҴԻ300Ԫ򼸱顣GΪżôͰᵽҼסɣҼã԰ĵѧϰΪҶסҾͿڹҵķסҡԴӶѧҵһʳ죬ϴµݳޡΨһ鷳ҵܶѽͣҲǱˣΪ˹ҵ棬ѲôġGеĲŮģûд޵Ů
4.3 Ϊʲô
мԭʹѣ1ͻ˵󣻣2䶯3Աͻ
4.3.1 ͻ˵
ЩͻֻʵĸоȻ˵ȫصĺܶڸ罨裬Щλ쵼Ͱ칫Ա಻ʲôãҪϵͳԱ๤̵˵ۣ²̰ܶ۸
ЩͻǳҪʲôȴ˵ס߿ܺܲΪȻ;ճɣ˵ЬӡǷǳ˽ѵĽţû˵ŵĴС״ֻЬȥԣԴʱоŻЬȻҲͨۻԱһۿͻ֣֪ӦôʲôЬ
ͻͶܰ˵ǳɡ졣ͻȫҲð졣ԱͻȲɿͻ񶨲Ҫģȷͻµľǡװߡ붮СĿͻǻʵʵЩͻԼϵ۵İְ֣ôͨЭ̶ѡ
4.3.2 䶯
ɮ˵Ҫʴ֮ģͲ֮ʥȢס
ģ˵ˡϲ֮飬Ҳ˱ö˶ʡ
仯
𣺾ʷأûһĶΡΨһֻĶεĿͻǸˡļһﻹ͵·ϱײġ[Cline 1995]
Ƚܡ䶯ʵɣ䶯ʱʧ롣ס䶯ڽʱҪ
1ܵطЩȶЩױԱڽϵͳʱĺĽȶϣ򽫻Ծͷ
2ںͬһҪ˵ʲô͡ʲôͬպƤͶࡣҪֹ󺫸ڱȾƳԷʱʲôͷ˼Ҿ͸ڣղŴӦ¶ﳤȥ
4.3.3 Աͻ
и˼Ǳ̽鱨˾дһݱ棺׵ǳǺͣĸӹǰɤżҹ˫ǿ⡣Ȥǣסһֽˡļ棬Щȫ˳
ϵͳԱܶȫšͻ󣬲ͬķԱвͬ⡣Աˣܻᵼ¿Ա׸ɻֺáҶѧʱд⣬ˣдö೤֡ԷԱд˵Ҫͻĸ֤ܸӣ˫̫ףбҪ뿪Աٹԭͣ˫ٴ֤˵Ƿȷ
ڿͻ಻ǿܾܵģһЩ޷ʵֵʱͻϵͳԱĽ𸴸ˡ
һԱϲͻڡϢٹ·桱ֺôͻýζĶĿͻԱ˵õúܣжɡƵĳߴͷٹ·ϣȥ
ΪʲôϵͳԱĹҪͨԱߣΪ
4.4 ν
һ˵ѣҪ֪Ѷ
֮ͷоʲôɫҪΧ⿪չ1Ӧ˽ʲô2ͨʲôʽȥ˽⣿
4.4.1 Ӧ˽ʲô
ܵгǣ֪ʱҪȴӺϽһġ壬ٴϸϽABCDE̽˿֡Ӧ˽۵⣬˽ϸڵ⣬ͼ4.1ʾ
                                      Ӧϵͳ
                                       Ӧϵͳ
Ϊܣ                                     ӦĽӿ
ͼ4.1 ʱҪ˽
һϵͳΪ S漰ܹܺ㣬԰ͬ򣨼ΪD࣬ÿӦһϵͳ
S = { D1D2D3 Dn }
Di ɸ⣨ΪPɣÿӦϵͳеһ
Di = { P1P2P3 Pm }
PjɸΪܣΪFÿΪӦеĽӿڡ
Pj = { F1F2F3 Fk }
ͼ4.1ṹдɵ˵飬Щֻ˽쵼Ҫ˽ϸڵļԱʡд˵ʱӦע⣺
1Ϊÿע͡ΪʲôóԱ˽ıʣԱѡʵļʵִ
2˵жԣǰìܡжԻǰìܣҪ·
4.4.2 ͨʲôʽȥ˽
˽ķʽкü֣
1ֱͻ̸ԱԱš족ͷǳ٩
2ЩͻԱֲ²͸ʱҪмҡЩĺ㻹ûпʼʣܽǰеһϯԣʤʮ顣
3кܶܿͻԱ붼û̫ɡҪĺŵͬŵ;ȡȱΪ䡣ǰ˼Ȼѧѣ˾ͲҪܾɡ
4.5  С 
Ϊ˲ԷĸҪأáỷˣ½˼˴ͷɥİѧ˿͹ۡѧĿԷʱҪϣҪѧϰеˡлǲУоͽ飬о顣
²ûйĴѶȣŻˡˣ鷳ʮǰΰëϯ˵һ˶󡱣й˿ڱĵ13ڡ˼һԻ͵ˣȴ˳صĴۡ
ҪÿԷ
  ϵ ͳ  
ϵͳǰתΪϵͳҪĻڡϵͳƵڸϾϵͳһе۹嶼ֽϻԶ϶ϵͳƱضϵͳҪŬ֤ϵͳơ족һ㡢˼ѿ״̬
Windows NTһλϵͳʦӵ8ܳMicrosoft˾һЩԱʮۺ졣ֻĽܷߺޣΪÿԱб³ΪϵͳʦϵͳҪȴıѵöࡣͻȴδ֪ӦʲôϵͳǮÿͻ⡣ʮǺݡǧǰն´ѧʿɾ׵ϵͳƣʹΪáúֻʣ̾ƻķˡ
½ϵͳƵķݣϵṹơģơݽṹ㷨ơûơϵͳΪ壬ô
1ϵṹͬ˵ĹǼܡĳһĹǼǺӣôιݣһʼնǺӣΪˡ
2ģͬ˵٣ضĹܡɫģ֮һֻ֣мֶȴ޶顣ģ֮һͣͽмֵɵļֹԷ˵ǻΪһ壬ʹ֮޷д֮ҡ
3ݽṹ㷨ͬ˵Ѫ񾭣پܷӹܡݽṹ㷨ֲϵṹģУЭϵͳĸܡ˵ĶȻԶ٣ʧˣ;ֻܷءɥʧ˵Ĺܣưͣȴƴ˵ݽṹ㷨ʮ沢ʮֿЦ
4ûͬ˵һһġ׷ϵͳҲ׷ڵģǿͣģѺáļӿ죬ȤȥƷζز¶Unixϵͳǽ׳ĺӺ͸ˣôWindowsϵͳĵСͺ꾫벻WindowsϵͳȻ˷ˣռȥгмڴˣӦùŮʿױƷʿǮԻøõĽ档
ڽϵͳʱҪعעأȷ뾫ȷԡЧʡԡԡɸԵȵȡʹϵͳˣҲζžܲõϵͳڳơԡάȻڻҪĹĸڳ˲Ѻ¸ˡ˵ϵ۰еŮʿƳʹʹ·ʱЩ˫ŵأЩŵءϵ۵һúܶŮ͸ġڿʱһҪȡѵ
5.1  ϵṹ
Ժָӣ
ѧпѧѧִѧѧҿԡʡͰһ˻ô󻯣ǻΪʲôΪǡʡǱģѧеʵĶ
ϵṹϵͳʵĶ
1ϵṹǶԸһֳõϵṹձõģԸЧشֶĸһ𡰷ӡǵϾͻַӵӡ󣨶ǵضӡ󣩡ӡǶס޻칫һֳ󡣲ǰ칫¥񷿣ͬһཨͬĽ֮䶼зǳƵϵṹ͹췽ʽ13йÿ˶Ҫرķʽķӣô960ƽؽǧٿףղð
2ϵṹһʱڱȶֻȶĻ£ǲܸɵ飬ܷչѧǣʱ޿̲˶СǵڵϱȶǿǵسԷ˯ѹʶԼǻĵµľ仯ᷢ仯Ǹ޷ӱܵʵϣ仯ʱֻЩƤƤëë޸ģǧĶϵṹǶס޵Ҳ䶯Ծı䷿װ諺Ͱ裬ÿα䶯ʱҪȥǽڵػ仯ʱԱòȥ޸ϵṹôϵͳʧܵġ
õϵṹζʡЧȶڽַǳͨõϵṹνṹͿͻ/Client/Serverṹ
5.1.1 νṹ
νṹôһֳʶЩȽϸӣûһ꣬ͰΪü㣬һһȥ߲ĹǽڵͲĹ֮ϡιϵҪ֣¼ϵ˳ڹϵ
һ¼ϵĲνṹ
ǴСѧһֱʿоҵҪ20꣬ԷΪΡ֪ʶṹֻ㣺˽ӡ͡šʮ꣬ͼ5.1ʾһشڽϸ߲εѧӦöеͲε֪ʶڵͲѧ޷и߲ε֪ʶͼ5.1Ĳνṹ¼ϵͬھУϼ¼¼ϼͼ5.1ĲνṹһϵͳĽṹôϲϵͳʹ²ϵͳĹܣ²ϵͳܹʹϲϵͳĹܡ
˳ڹϵĲνṹ
˳ڹϵĲνṹͨѶֻ֮䷢Ϣֻܱһһ˳򴫵ݡֲνṹľ֮ǼOSIοģͣͼ5.2ʾΪ˼Ƶĸԣ綼㣨Layer򼶣Levelķʽ֯ÿһĿĶһṩһķ񣬶ʵһϸڶһΡһ̨ϵĵnһ̨ϵĵnжԻͨĹǵnЭ顣ݲǴһ̨ĵnֱӴ͵һ̨ĵn㡣ͷݺͿϢ´ݡͲʣʵʵͨѶշݺͿϢϴݡ
ÿһڲ֮䶼нӿڡӿڶ²ṩԭͷ񡣵ھһӦٲ㣬ÿһӦʲôʱкҪĹڲ֮䶨Ľӿڡӿڿʹͬһ׵ĳһʵ֣Implementation滻һȫͬʵ֣ŵеĵ绰ߣֻҪµʵϲṩͬһͿˡ[Tanenbaum 1998]
ϡˡʱʮ
ϰˡ˼ʮ
ͼ5.1aСѧʿڵѧϰ׶         ͼ5.1b֪ʶṹ
ͼ5.2  OSIοģ
Ĳνṹ
ĿǰڴҵӦϵͳлһְмMiddlewareĲνṹͼ5.3ʾ[Jacobson 1997]м֧ƽ̨޹صķֲʽ㣬DCOMCORBAʵ֡
ͼ5.3  мĲνṹ
5.1.2  ͻ/ṹ
Ȼعһڵĵ绰ϵͳAlexander Graham Bell1876˵绰רʱڵĵ绰һһԵûԼ绰֮һߡһ绰û绰ûͨnߵÿ˵ķں̵ܶʱڣﵽǴݺľĻҵĵ绰ߡԣͼеĵ绰ȫͼ5.4aʾвͨġ
绰˾1878꿪˵һ֡˾Ϊÿͻһߡ绰ʱͻҡ绰ʹ绰˾칫ҵԱԺҪ󽫺зͱзֹּнʽģͼ5.4bʾܿأϵͳĽ־ͳڸءҪܴмĳ;绰ͳ˶֣ԺһչΪ֡[Tanenbaum 1998]
5.4aȫĵ绰ϵͳ               5.4bнʽĵ绰ϵͳ
ͼ5.4bеĵ绰ǿͻ򣬽ĵĽֿǷôͼ5.4bǵ͵Ŀͻ/ṹעͻͷָָӲһ̨ԷŶͻͷ
ͻ/ṹȻŵ㣺
1ԼеķʽЧʵعͨѶǰ潲绰ϵͳĹ¾Ҫ˵һ㡣
2ԹԴϢϵͳУϢκοͻͨʷϢ
ͻͷ֮ͨѶԡ󡪡ӦķʽСͻ󡱣RequestӦResponseͼ5.5ʾ

Ӧ
ͼ5.5  ClientServer֮ͨѶԡ󡪡Ӧķʽ
á󡪡ӦͨѶʽĻΪ˽ۼRendezvous⡣Ϊһ⣬һͼڷĻǽͨѶסٶҪ˵Ĳٶȸ߳һ󣬸óʼִвԵȳϢڼ΢ڣ㷢ֶԵȳ򻹲ڣǾͷһϢȻ˳˺˵ڶ򡣲ҵǣڶʼִʱҲҲһ˳ʹͨѶǵִٶôߣͬһ˲ϵϵĸʷǳ͡ڿͻ/ṹУ루ڵأȴͻġ󡱣˾γˡ󡪡ӦͨѶʽ
Internet/IntranetĿǰWeb ݿ ṹһַǳеĿͻ/ṹͼ5.6ʾֽṹŵǣͻͳһⲻûʹ÷㣬ʹÿͻ˲ά⡣ȻάĹԶʧˣתƵWeb ˡWeb ˣԱҪýűԱдӦҳ档MicrosoftASPԲѯݿWeb ҳУʾ
HTTP 
ѯ
HTTP Ӧ
ͼ5.6  Web ݿṹ
5.2  ģ   
ƺϵṹ󣬾Ѿںȷ˸ģӦʲôܣӦϵṹĸλáϰߵشӹϻģ飬֡ܶģ黯ƵĻԭΪܶģԽͿԡάȽ׶εĴۡǡܶζģ֮䱣־ԵĹһϵͳҪĳҪģ໥ϲʵ֣ʱģ֮ҪϢ
ֺͽܶģ顣ûнʱܸɻûʱԿ·ϣܵÿ죬ôʱһҪұ˦ۣҽʱҪ˦ұۡһģʱҪǡģ͸ṩʲôĹܡҪǡģӦģ齻Ϣ
ڽģӵأϢءھϡ͡աԡ
5.2.1 Ϣ
һڲгĿʦ̾ҪںͬѧмƵͬѧôͲӰ쵽ǰ˯ͬѧ
¸ǣû´Ӧðѻҳ󲻿Ϊ˾ĳģΪȥͬһϵͳеģ飬ģʱҪעϢءӦģҪ֪ݣһݡ
ģϢؿͨӿʵ֡һģṩ޸ӿڣInterfaceִģĹܻģ齻Ϣֻͨùнӿʵ֡ģһC++ôģĹнӿھͶӦڶĹкģһCOMôģĹнӿھCOMĽӿڡһCOMжӿڣÿӿʵһЩļϡ[Rogerson 1999]
ҲϳĹңΪ׷áϢҵĹңģ黯Ƶķ˳ģӦúܶáϢǰìܣЩУ
5.2.2 ھ
ھۣCohesionһģڲɷ̶֮ȵĶϣCouplingģ̶֮ȵĶھۺصģģǿϵģͨζھۣǿھ۵ģͨζģ֮ϡģ׷ǿھۣϡ
һھǿ
ھ۰ǿȴӵ͵¼ͣ
1żȻھۡһģĸɷ֮޹ϵΪżȻھۡ
2߼ھۡ߼صĹܱͬһģУΪ߼ھۡһģȡֲͬ롣߼ھ۱żȻھۺһЩ߼ھ۵ģɷڹϲ޹ϵʹֲܵ޸ʱҲӰȫ֣ģ޸ҲȽѡ
3ʱھۡһģɵĹܱͬһʱִУϵͳʼЩֻΪʱعһΪʱھۡ
4ھۡһģڲĴɷصģЩضĴִУΪھۡ
5ͨھۡһģгɷֶͬһݼͬһݼΪͨھۡ
6˳ھۡһģĸɷֺͬһأһɷֵΪһɷֵ룬Ϊ˳ھۡ
7ھۡģгɷֶɵһĹܶǱģΪھۡ
ǿ
ϵǿ¼أ1һģһģĵã2һģһģ鴫ݵ3һģʩӵһģĿƵĶ٣4ģ֮ӿڵĸӳ̶ȡ
ϰǿ˳ɷΪ¼ͣ
1ϡһģֱ޸Ļһģ,ֱתһģʱͷϡʱ޸ĵģȫ޸ģ顣
2ϡϵģ鹲ͬһȫͳΪϡ
3ϡһģڽϴһźţ翪ֵ־ȣһģ飬źŵģĶźֵеΪϡ
4ϡģͨݸӵڲݽṹΪϡݽṹı仯ʹصģ鷢仯
5ϡģͨݻ͵ݣΪϡ
6ֱϡģûϢʱڷֱϡ
ģϣ;ʹϣÿϣƹϵķΧʹϡ
5.2.3 ա
һģΪһ屻ãģзԡһģԱ䣬ģпԡ
ϿģСաԡìܵģǿ͹۴ڵġһʱǺһԽ⡣ӦݹһЩҪ棬ͬʱԺ󲹳׼ģڡԡǻ顣ԡҲҪģΪǲܵȵȫսϢٰѳɱõģ顣
ģġաԡʵ϶ӦеĿɸԺͿԡ̵ķгƣѿȾз־пԵģ顣ƷԽϺõؽ⡣
5.3  ݽṹ㷨
ѧݽṹ㷨ǱдЧʵĳҲҪʣڼٶĽ죬ΪʲôҪЧʵĳ
ΪǵһģҲ첻ٶȺʹ洢ϵĸ½ṩ˴ЧߣԸЧʵĳԶʱ
ƸЧʵĳǻõݽṹ㷨ǻڱСɡѧϵÿγʱѧϰԭԼݽṹ㷨ơ
һ˵ݽṹ㷨һݵıʾصĲ㷨ֵָ㷨ݱʾĹ۵洢еһҲһݽṹ㷨ָݽṹʩӵһЩһԱм롢ɾȲһ㷨ҪԴƣResource ConstraintsΧڽã㷨ЧʣEfficientġһԴƿǡڴ洢ݵڴޡߡִÿʱޡһ㷨֪㷨ҪԴ٣㷨ҲΪЧʵġ㷨ĴۣCostָĵԴһ˵һؼԴʱռġ
ӹɣǱдΪ˽⡣ֻͨԤȷȷﵽĿ꣬ϣѡȷݽṹ൱ĳԱһֱ̣ѡĳһϰʹõģⲻƵݽṹƳһЧʵĳʹü򵥵ƾܹﵽĿʱѡøӵݽṹҲûеġ
ǶԳõݽṹ㷨оѾ൱͸ԹɳһЩԭ
1ÿһݽṹ㷨ʱ䡢ռĿ档һµʱҪ׵Ȩʱտ㷨ЧԵķҪ㷨ԭһҪ˽ʹõʵԣ磬ݴ洢ڴ洢ڴУвͬĿǣ
2뿪йصʱ䡪ռȨ⡣ͨøʱ俪ȡռ棬֮Ȼʱ䡪ռȨձشĸ׶С
3ԱӦóֵ˽һЩõݽṹ㷨ⲻҪظƹ
4ݽṹ㷨ΪӦ÷Ǳ˽ӦõѰһʵӦƥݽṹ[Shaffer 1998]
5.4       
ĳа취Լ졢ʮ㡣һ죬һΧŶκһƹھսȫʤˡΪΧŶδƹ򣬸ƹھΧ塣ûı̼Ϥò˵£ҾһȽİġûѧ
λ黭Ĳʿ͸ᡣҴͷβֻˡʵܲšλָ㡣ȻҲ٣ȴ鷨ĽǶ跨֡ҼȲ鷨Ҳ֣ƺĲԴڶʱرϲдû򣬲ҳͬѧʾŪҾû񫣬дһƪûѧĶ[ 1997]·ʵҵͬѧҴסҵ֮ʶãȻʹ߾Ӷࡣҵʶӣ֮ززְƪժ¼ˣŵɡ
5.4.1 뵼
Ƕ׷еġȻûԸԼĳҲûûȺóªĽ档ҪûҪԽǿûĹͬ
ĸܳ޷˵ʲôǽͬʱֺʵ˶ȥͺ͸֮ܽ㡣ѧһѧʣ˶ѧָؽƹйԱ˵ľоڳԱܵĽҪʹɹι˽ԱƶɵĽòûϿɡ
Ľûɸоķζźƣͣ䣩ûĹЧʣӶһΪûܺΪûס˻淢չʷϿԿǶԽԼڽеĵá
Ѿ޷ʱһıΪļ򵥽糣Уַ˵ȡڵһ濼˵̫٣ûȤߡżķչ˵ڶֱӲݵĽ档ʹͼΡý飬ֵؿ˶ֱӲݵĽʹȼ˿ƾʶ񡣸߲εĽģ˵ռ䣬ʵ
˻˵ͼԽԽûͨ˻򽻵
5.4.2 ں
ڴӺԡ͹ں
һĺ
ĺָǷǢ治ʺĹܣô潫ôں޴̸ԽĺǽҪأ߲ҪƬ׷Ưʧ򻪶ʵĺԼᳫ㣬ǿǡ֡
ԲĽɻͼʹû⡣ʹܣҲʹûеһЩϲΪƷһζʾԱûĹעⱾ޿ɷģʾǷһȱһ׸ӵĶں̨׳Ľ֮ȴһͨı༭ûȴûе̶ǾϲԲĽֻˡ
ķ
ķ࣬һǡһԡǡԻ
ҵӦĽעһԡ߱עͬӦеĽ棬ûʹЩϰߡҵϰF1Ϊȼĳ߱ĲõF1ΪֹȼôûõֻF1һɲǣĹʹ군ûһҧʮ¾
ĿǰеVisual C++Visual BasicDelphiC++ BuilderPower BuilderȣܹٵؿǳƵͼû档Internet/IntranetΨһĿͻΪûϣȫһµǧ򻯵Ӧ
УиԻĽȻȻڵĽһ˵רҵԱ濴ˣ֡׺ΪˮĸоҿһSoniqueķֵʱĴޣ̲סŮУͼ5.7ʾ
ͼ5.7  Soniqueļֽ
Ǿ㲻ʲôӦ׷һԡ򡰸Իڴ죬ǶʱЩϲֻҼƬ߲ҶڹԡϴʱȴҲϲ·
Ĺ
ܽûĹܣȴǱΪٵġûʹýʱֱӵĸй⣬кܴһǼӵģǴǵʹУ緽㣬ʵõȡͼûȣԭʼĽ棬ѼѿûԣʹԻøЧʡиЧʶӮרҵʿϲڵUnixϵͳǳͷβϵͳ˵һ˻Ľضй
ƵһЩ⿼Ҳ˹跨ʹҲʹIBM˾1985Ѿ˲˹֧ġApple˾רŽ칫ṩһЩڲʹõļϢƷ
5.5 ϵͳʾ
֧ЭͬĽʽάͼϵͳ
֧ЭͬĽʽάͼϵͳϵͳƣΪµʾ ȡߵĲʿĹ[ 2000]
5.5.1 Ʊ
ͼα׼ͼҪĵλ3DӦóĿʹ3DӦóĿֲԸáʷֵͼα׼APICoreGKSPHIGSPEXGLDoreRenderManHoopsOpenGLȵȡ̭ĿǰOpenGLΪϹϵ3Dͼιҵ׼UnixPCƽ̨õ㷺ӦáOpenGLṩٸ⺯Էػƾʵе3DͼΡڿʽ3DͼӦóʱͼεĻֻһֹĹڳݽṹͼζάͼûϡ
OpenGL봰ϵͳ޹أṩκνֶΣɳԱԼдеĽܡOpenGL ı̽ӿǵͼCṩɸõĶӦóܣЧʲߡΪ˿˷Щѣͼα׼֮ٽ߼Ŀ(3D Toolkit3D Engine)OpenGLĿOpen InventorIRIS PerformerOptimeizer/Cosmo3DԼGLUTȵȡOpen InventorΪǽʽ3Dߵġʵ׼Ȼûһ3DеӦ3DĹ㷺ӦҪĿ֧֡
żͼμ缼ѸͷչߵĽڱСҵСֵڷֲʽ⻷Distributed Virtual Environments, DVEsͼ֧ЭͬComputer Supported Cooperative Work, CSCWͼϵͳѳΪоӦõȵ㡣DVEsϵͳDIVEdVSMRRepo-3DȡЩDVEsϵͳȱ3DߵĽʽͼιԼͨԣͨõ3DOpen Inventorֲֲַ֧ʽЭͬڴϵͳͼ֧ſ⡢Եȷڲ죬DVEsϵͳ3DԷؽʹá
Ƕ෽3DӲPCƽ̨֧ЭͬĽʽάͼϵͳͼ5.8ʾУ
1Intra3D 2.0ǻOpenGLͨýʽάͼߣڿٿWindow 9x/NTµĽʽάͼӦ
2CNC 1.0֧ЭͬͨѶϵͳCooperative Network Communicator֧֡ģʽ롰鲥ģʽķAPI
Intra3D 2.0CNC 1.0Կٿ֧ЭͬĽʽάͼӦ
ͼ5.8 ֧ЭͬĽʽάͼϵͳ
5.5.2 ͨýʽάͼ Intra3D 2.0
Intra3D 2.0ĺǼ˳ݽṹͼζά㷨ͼûC++COMComponent Object Model⣬֧Visual C++Visual BasicDelphiԵӦñ̡Intra3DĺĿĲ㴴
1һΪ뺯Basic Objects and Functions
2ڶΪͼζ󡱣Graphical Objects
3Ϊͼڵ㡱Scene Graph and Nodes
4ĲΪ뽻Rendering and Interaction
ϵṹͼ5.9ʾи߲㹹õͲ㹹Ͳ㹹ø߲㹹
ͼ5.9  Intra3D 2.0 ϵṹ
Intra3D 2.0鼮ʽάͼμơ׼Լ25ףĿ7C++ȫûԷ޸ںӦͬ
5.5.2.1 Ҫģ͹
һ뺯
1ڶüڴࣻ
2ʸԪ㣬㷨
3άʸݿӻͼεݱע
4ͼԼӳ䣬֧BMPGIFJPEGSGITGAͼʽ
5üͼԪĻƣ׶򡢻ȣ֧Swept壬Ļƣ
6ṩ450ֲʣڵĲпԽʽ༭Щʡ
ͼζ
ͼζܽתΪģͲԻƳIntra3D 2.0ṩͼζ
1üζ糤塢׶塢Բ塢塢Բ塢Sweptȣ
2ģͶ󣬿ڻAutodesk˾.3dsģͺWavefront˾.objģͣ
3ҵͳͼζͼ״ͼͼͼͼͼͼͼͼͼƱͼȡ
ͼζĿӦأûʹü̳зµͼζ󣬶Ӱ쵽Ĺ
ͼڵ
ͼScene Graph޻ͼScene GraphҪڵУ1SceneNodeнڵĻࡣSceneNodeж˾ֲϵԼӦͼα任ڵĲͬĲʽʵά2ڵ㣨CameraNode֧ƽͶӰ͸ͶӰֶ֧л3Դڵ֣ƽйԴڵ(DirLightNode)Դڵ(PointLightNode)׶Դڵ(SpotLightNode)4ڵ㣨ShapeNodeͼζйͼζάShapeNode
ġ뽻
Intra3DĽࣺһǶ塢ԴֱӲһʵԵı༭Intra3DĳͼSceneViewװ˽ʽƵϸڣϢڵıơزݡ꽻ȡΪ˱ڱ༭ʵԣIntra3DһЩöԻʸԻFontDialogɫԻColorDialogʿԻMaterialLibDialogʶԻMaterialDialogԴԻDirLightDialog, PointLightDialog, SpotLightDialog
5.5.2.2 û
Intra3DĳͼSceneViewڿٴʽ3DӦó档SceneView֧selectingscalingrotatingtranslatingcreatingdeletingʮֲṩڽͼ5.10ʾ
Ϊ˱༭ʵԣڶԻл3D ͼΡMicrosoftĴϵͳṩ3DĶԻڡʹIntra3DWindow3DڶԻд3Dͼͼ5.11ĲʶԻͼ5.12ĲʿԻʹWindow3Dɫ༭3DͼγõĽԴı༭ʵͨıɫʵֵġҪɫ༭Ľ漰HSVRGBģʽɫתIntra3Dġ뽻㡱ʵЩ㣬ṩɫĻ꽻ͼ5.13ͼ5.14ֱΪԴԻɫԻ
ͼ5.10  ֱӲά
ͼ5.11  ʶԻ                           ͼ5.12  ʿԻ
ͼ5.13 ԴԻ                           ͼ5.14  ɫԻ
5.5.3 ֧ЭͬͨѶϵͳ CNC 1.0
򵥵ЭͬģʽͻֱͨѶSocketʵ֡ n ͻμЭͬÿͻĿͻͨѶôܹn(n-1)/2 SocketֱͨѶÿͻı䶯ͻ޸ġSocketֱͨѶʹЭͬĹͿͻĳƱ÷ǳѡCNCϵͳṩ֧֡ģPublish-Subscribe롰鲥Multicast ģʽķAPIԸЧعȺЭͬʹÿͻĳʮּ򵥡CNC 1.0ϵͳṹͼ5.15ʾ
CNC ͻڡġģʽУݵĽ̳ΪߣProducerݵĽ̳ΪߣConsumer߿ݣЩݡ߿ݡÿͻǺܶݵ߻ߡͬһʱ̣CNCϵͳߺߴڡCNCġġ TCPЭʵֵġ
ڡ鲥 ģʽУ̬طÿ鲥ַͻ飬鲥ϢЩ鲥ϢCNCġ鲥UDPЭʵֵġ
ͼ5.15  CNC 1.0 ϵͳṹ
5.5.3.1  CNC ͻAPI
CNCClientͻʵ֡ġ͡鲥ܣҪӿڣк£
class CNCClient
{public:
BOOL Connect();// ӷ
BOOL Disconnect();// Ͽ
BOOL PublishData();// 
BOOL QueryData(); // ѯ
BOOL SubscribeData();// 
GROUPIP QueryGroupIP(); // ѯ鲥ַ
DWORD MulticastMessage();// 鲥Ϣ
virtual void MessageResponse();// Ӧ鲥Ϣ

};
һͻġЭ
ͻÿݱ͡ơơںݳȵϢĸʽͼ5.16ʾݽṹ DataPublish 
struct DataPublish
{
BYTE iDataType;// 2 ֽͣ궨ΪDATA_PUBLISH
charstrGroupName[16];// 16ֽڵĹ
charstrDataName[16];// 16ֽڵ
DWORDdwLifeTime;// 4 ֽڵڣΪλ
DWORDdwLength;// 4 ֽڵݵĳ
char*pchContent;// 
};
2ֽ      16ֽ          16ֽ        4ֽ      4ֽ
ͼ5.16  ڷıĸʽ
ͻġġЭ
ͻݷʵ֣
1ȵúQueryDataһ DataQueryʽıģڲѯҪĵǷڡ
struct DataQuery
{
BYTEiDataType;// 2 ֽͣ궨ΪDATA_QUERY
char strGroupName[16];// 16ֽڵĹ
char strDataName[16]; // 16ֽڵ
};
2յѯʱ DataQueryṹеstrGroupNamestrDataNameݲڣServerClientһFALSE־ݴڣͻһTRUE־֮ͻ͸ݣDataPublishʽ
ͻõTRUE־Ĳѯ͵úSubscribeDataշ͹ݡ
ͻġ鲥Э
ͻȵúQueryGroupIPһGroupAddressʽıģڲѯ鲥ַӦʮƵʽIPַ
struct GroupAddress
{
BYTEiDataType;// 2 ֽͣ궨ΪGROUP_ADDRESS
char strGroupName[16];// 16ֽڵĹ
};
ͻúMulticastMessageָ飨鲥ַϢ鲥ݱṹ DataMulticast£
struct DataMulticast
{
DWORDdwContentType;//鲥ݱͣû
char*pchContent;//鲥ݱݣû
};
ͻյ鲥ϢԶúMessageResponseӦϢMessageResponse麯dwContentTypeϢδ鲥Ϣ幦û塣
5.5.3.2  CNC 
һݽṹ
CNC ݽṹҪɣ
1һڹ鲥ַ鲥ַɷ̬ɣͻѯ鲥ַ
2һڹָ߳ö̲߳ʹͻӦ
3ÿ鶼һڹġݵHashͬһʱ̣ϵͳܴڶߣݵĴ롢ȡٶȳΪܵҪָꡣHashṩݼٶȡHashеṹDataElement 
struct DataElement
{
charstrGroupName[16];// 
charstrDataName[16];// ݵ
BYTEiStorageType;// 洢ͣ STORAGE_FILE  STORAGE_MEMORY
ColeDateTimeTimeToDie;// ʱ
BOOLbLock;// ־ TRUE  FALSE
DWORDdwLength;// ݵĳ
char*pchContent;// 
};
洢ͣiStorageType;ȫڴнǳķڴԴںܶûбҪġΪڴʹЧʣڽ϶̻߳Ƚ϶̵ݱڴУΪSTORAGE_MEMORYͣڽϳ߳ȽϳݱļУΪSTORAGE_FILEͣ
ʱ̣TimeToDie;ͻݾָڣڽյʱɼʱ̡ɨHashݳʱ̣ûбɾݡ
־bLock;ܶͻͬʱĳݣݿѳʱ̼ɾΪͻ涨ֻҪпͻݣiLock־ݣֱɺ
̲߳
һ̺߳Ͷ̸̡߳߳ͻȻ󴴽һ߳TCPӡÿ̰߳CNC APIЭͻͨѶж̹߳еݣ̶߳ԹԴͬʳΪʵֵѵ㡣CNC Ҫ˹ؼֶͬν⡣
Winsockʹ
CNC 1.0Windows 9x/NTϵͳ£ײͨѶWinsockдWinsockֹʽʽͷʽʽŵǱ̼򵥣ɿԺáȱʹӦóסܴ񡣷ʽWindows ϢʵֵġŵݵʱϵͳӦó򴰿ڷϢʹӦó򲻱ڵȴݣ˹ЧʡȱڷͺͽʱӦó򲢲꣨ӦóҪάӵ״̬
ʽͷʽȱ㣬CNC ˻Ϸʽ̲߳÷ϢʽԿӦͻӡ߳УԲ÷ϢʽܿͻֻӦʱķʽһԵݵķͻա
5.5.4 Ӧʾ
ͼ5.17ͼ5.18ǲμЭͬͻʾIntra3D 2.0 CNC 1.0ͼ5.17ĿͻCNC  .3ds .objʽĶģݲִнʽơͼ5.18ĿͻCNC ҵͳͼݲִнʽơһͻԴCNC ݣ鲥֪ͨͻǰʲôݣϢ
Intra3D 2.0CNC 1.0ĿǰѾʵãϵȡ
5.6  С 
3DϷQuakeʦMichael Abrash Ļܽ᱾£ܳһƺãôļ򵥺Զ׼ڻýܳƵĹУҪŵŬ[Abrash 1998]
ͼ5.17  .3ds.objģ͵Ŀͻ
ͼ5.18  ҵͳͼεĿͻ
  C++
ǰҸ󡱣Object-Orientedʱһס˽ʮ塣ҴӼʮгй׼дĵʱȴ޷ʲôǡ󡱣˵ʲôѧ
еʱ͡ơͨԡ͡ϵͳơڵġмѧɣϵۺøԵķʽ磬һѾ硣
Щѧ߽ҡ󡱣һӵ﷨ҳʺͶʣʾǶ󣬶Ƕķ
񵳵Ϊ˶Կë󶫵ġ԰ѩ峯дһЩ̹ʫ뽯ʯĿϽôϣƥȫһɹײ︯ʬζ
ҿ˼ǧҳϣڷԼЩǡ޷⡰󡱵ۣͬʱ򵽡Ӳ
Ժܶ࣬SmalltalkAdaEiffelObject PascalVisual BasicC++ȵȡC++ϲΪCԣҾ߱CԵܡ꣬һֽJavaĴԺ켫һʱ˽кҪJavaC++ΪJavañC++ȻֱŴģҲھ˾ˣʱһ˲Ϊ˶
C++Ƶǳ࣬²C++﷨ֻһЩССı̵缸ЩСͿԴʮгˡ
6.1  C++ƵҪ
ڸӰƬһɫ˵ǵҴҾǵͬ־Ǵѡ
C++ĳԱһ
C++ĳԱһ
߶δء󻵵뵳δܳΪˣ˲뵳δرɻ
Ҳ´ŭ˵󻰣C++ûи֣CԲи֡CC++8֮źԼCԵĸ֣źû˵㲦νơҺͺܶC++ԱһõC++﷨ĺôʱΪԼѾơ󼷵ƤǱѽ
ǲƴҲὲͨƴͨøáҲC++̣C++øáڽǳĸ󡱡̳ϡ麯̬Щ߳رߡɸԡ롰ԡ
6.1.1 
ObjectࣨClassһʵInstanceӣôǷӵͼֽƵصƣǶơ
ԽݺͺװһкʾΪƷ񣩡ṩؼpublicprotectedprivateЩݺͺǹеġܱĻ˽еġԴﵽϢصĿģҪ֪ݣһݣμ5.2.1ڡϢءǲķװܣҪɻʲôӡ
ΪģΪΪģ
šΪġһ˹עڲݽṹϰϽprivate͵дǰ棬public͵ĺдں棬8.1(a)ʾ
šΪΪġһ˹עӦṩʲôķͽӿڣϰϽpublic͵ĺдǰ棬private͵дں棬8.1(b)ʾ
Class A
{
private:
int    i, j;
float  x, y;

public:
void Func1(void);
void Func2(void);

}
class A
{
public:
void Func1(void);
void Func2(void);

private:
int    i, j;
float  x, y;

}
8.1(a) Ϊĵд             8.1(b)ΪΪĵд
ܶC++̿ʱΪġҼֲҽʱΪΪġȿӦṩʲôĺMicrosoft ˾COM淶ĺǽӿƣCOMĽӿھ൱Ĺк[Rogerson 1999]ڳƷ棬ǲҪMicrosoft˾ķ
ƹǱȽ׵ģѵȷƻ༰ࡣΪЩԱ㲻̳СInheritanceϡComposition̬ PolymorphismЩ
6.1.2 ̳
Aǻ࣬BA࣬ôB̳Aݺͺʾ£
class A
{
public:
void  Func1(void);
void  Func2(void);
};
class B : public A
{
public:
void  Func3(void);
void  Func4(void);
};
// Example
main()
{
B  b;// Bһ
b.Func1();// BA̳˺Func1
b.Func2();// BA̳˺Func2
b.Func3();
b.Func4();
}
򵥵ʾ˵һʵC++ġ̳СԿ߳ĿɸԡΪ̳С̫á̫ãҪֹá̳СҪ̳СһЩʹù
һABأΪʹBĹܸЩB̳AĹܡҪá׳԰ײԡһö˶˵Ľ׳Ե޹ʵس˲β塣
BбҪʹAĹܣҪǣ
1߼BAġһ֡a kind of B̳AĹܡˣManˣHumanһ֣кBoy˵һ֡ôManԴHumanBoyԴManʾ£
class Human
{

};
class Man : public Human
{

};
class Boy : public Man
{

};
2߼ABġһ֡a part ofB̳AĹܣҪAϳBۣEyeǣNoseڣMouthEarͷHeadһ֣HeadӦEyeNoseMouthEar϶ɣɡʾ£
class Eye
{
public:
void  Look(void);
};
class Nose
{
public:
void  Smell(void);
};
class Mouth
{
public:
void  Eat(void);
};
class Ear
{
public:
void  Listen(void);
};
// ȷƣ߳ĳ
class Head
{
public:
void Look(void){  m_eye.Look();  }
void Smell(void){  m_nose.Smell();  }
void Eat(void){  m_mouth.Eat();  }
void Listen(void){  m_ear.Listen();  }
private:
Eye  m_eye;
Nose  m_nose;
Mouth  m_mouth;
Ear  m_ear;
};
HeadEyeNoseMouthEarɣôHeadԶLook SmellEatListenЩܣ
// 
class Head : public Eye, public Nose, public Mouth, public Ear
{
};
ʮּ̲ȷȴǴġܶԱ𡰼̳Сջƴ
һֻʹ׷һֻ˵ĸ֪Ϊʲô
ΪĸѼ
3.3ڽȷĳ򲻼þǸĳ򣬴˴һ֤
6.1.3 麯̬
˼̳⣬C++һֶ֧̬ĶĶʹáAǻ࣬BCA̬࣬TestĲAָ롣ôTestABCĶʾ£
class A
{
public:
void  Func1(void);
};
void Test(A *a)
{
a->Func1();
}
class B : public A
{

};
class C : public A
{

};
// Example
main()
{
A  a;
B  b;
C  c;
Test(&a);
Test(&b);
Test(&c);
};
ϳ򿴲̬ʲôֵ麯ͳ󣬡̬ʾˡ
C++ùؼvirtualһΪ麯麯ǣoverrideӦ麯Ĺܡʾ£
class A
{
public:
virtual void  Func1(void){ cout<< This is A::Func1 \n}
};
void Test(A *a)
{
a->Func1();
}
class B : public A
{
public:
virtual void  Func1(void){ cout<< This is B::Func1 \n}
};
class C : public A
{
public:
virtual void  Func1(void){ cout<< This is C::Func1 \n}
};
// Example
main()
{
A  a;
B  b;
C  c;
Test(&a);//  This is A::Func1
Test(&b); //  This is B::Func1
Test(&c); //  This is C::Func1
};
A£
class A
{
public:
virtual void  Func1(void)=0;
};
ôFunc1麯д麯ࡣֻܶ崿麯ʽĹʵ֡
ϡࡱ̬͡ͻŵ㣺
1Ӧó򲻱ΪÿһдܵãֻҪԳдɡһнСԲӦ䡱Դ߳ĿɸԣǽӿƵĸãǴʵֵĸã
2ĹܿԱָãݣ߳ĿԺͿάԡǰдĳԱдĳòΪ棬ǽдĳԱǰдĳǿ˲
6.2  õı̷
ڹֳָƽ档̸ͬҲŹдõı̷ǲǰᡣ
6.2.1 Լ
в˱ʱƴ˵ܰȴô˳ԺܶϷ˲ƴҾͲеӢһ㲻̫ӣôҪ׼ȷ
Microsoft˾ [Maguire 1993]ȻܷϰҲͳȻûǿúһӦԼĳһ¡
ұʱõԼ
1궨ôдĸ»߱ʾMAX_LENGTH
2ôдĸͷĵ϶ɣSetName, GetName 
3ָǰ׺p *pNode 
4BOOL ǰ׺b bFlag 
5int ǰ׺i iWidth 
6float ǰ׺f fWidth 
7doubleǰ׺d dWidth 
8ַǰ׺str strName 
9öٱǰ׺e eDrawMode 
10ĳԱǰ׺m_ m_strName, m_iWidth 
 int, float, double ͵ıĺʮԣ򲻼ǰ׺ⷳѭintͱ i,j,k float ͵ά꣨x,y,zȡ
6.2.2 ʹö
һΪDebug汾Release汾Debug汾ڲԣRelease汾иûʹá
assertǽDebug汾õĺ꣬ڼ顰Ӧáһڴ渴ƳйУassertĲΪ٣ôͻֹһػʾԻ˵ʲôطassert
//Ʋصڴ
void  memcpy(void *pvTo, void *pvFrom, size_t size)
{
void *pbTo = (byte *) pvTo;
void *pbFrom = (byte *) pvFrom;
assert( pvTo != NULL  &&  pvFrom != NULL );
while(size - - > 0 )
*pbTo + + = *pbFrom + + ;
return (pvTo);
}
assertһִƴĺ꣬Ϊ˲ڳDebug汾Release汾assertӦòκθáassertǺǺꡣԱ԰assertһκϵͳ״̬¶԰ȫʹõ޺ֶΡ
бȸٵĶԣȴ֪öԵø˾ɥˡ㻯˺ܶʱ䣬Ϊų󣬶ֻΪŪ󵽵ʲôеʱ򣬳ԱżƳдĶԡ㲻ԼʲôͺжϴǳڳУǳڶС˵ܺýֻҪעͼɡⱾԶ׼飬ǺгԱñһɭ϶һ顰ΣաĴӡΣյʲôҪзϾҰޣǸǡΣաʲô𵽻ЧáĶԳԱԣɾ[Maguire 1993]
ʹöԵļԭ
1ʹöԲ׽Ӧ÷ķǷҪǷ֮𣬺ǱȻڵĲһҪġ
2ʹöԶԺĲȷϡ
3ڱдʱҪзĿ飬ʣҴЩٶһȷ˵ļٶҪʹöԶԼٶм顣
4һ̿鶼ԱǽзԵĳƣҪס̷ֱ󡣵зԱʱܷȷˣҪʹöԽб
6.2.3  newdeleteָ
C++Уnewڴ棬deleteͷڴ档CУmallocڴ棬freeͷڴ档C++Cԣnewdeletemallocfreeпһʹánewܱmallocɸ£ڴ棬mallocܡ
C++Cеָޱȣô˻ѡһָpnewڴ棬deletefreeͷšmallocڴ棬freedeleteͷš
deletefreeͷpָڴӦʽؽpΪNULLԷ´ʹpʱʾ£
void Test(void)
{
float *p;
p = new float[100];
if(p==NULL) return;
// do something
delete p;
p=NULL;   // õı̷
// Լʹp
p = new float[500];
if(p==NULL) return;
// do something else
delete p;
p=NULL;
}
ǻҪԤҰָ롱Ұָ롱ָڴָ룬Ҫ֣
1ָûгʼ
2ָָѾͷŵڴ棬˷ʤʾ£
class A
{
public:
void Func(void){}
};
void Test(void)
{
A  *p;
{
A  a;
p = &a;// ע a 
}
p->Func();// pǡҰָ롱
}
6.2.4 ʹconst
ڶһʱconst #defineconstĳͣóԲ߼㡣磺
constint LENGTH = 100;// LENGTHint
constfloatMAX=100;// MAXfloat
#defineLENGTH  100// LENGTH 
#defineMAX 100// MAX 
ܶ峣⣬constܣ
һǿƱĲֵ仯
³УfınameֵǺghпܸınameֵ
void f(String  s);// pass by value
void g(String &s);// pass by referance
void h(String *s);// pass by pointer
main()
{
String  name=Dog;
f(name);// nameֵı
g(name);// nameֵܸı
h(name);// nameֵܸı
}
һԣ䡮&*͵ĲֻããôӦڸòǰconstȷĴ벻ıòֵı˸òִֵ󾯸棩еĺghӦöɣ
void  g(const String &s);
void  h(const String *s);
ǿƱĳԱıκݳԱֵ
³УstackĳԱCountڼΪȷCountıеκݳԱֵӦCountconst͡
class Stack
{
public:
void push(int elem);
void pop(void);
intCount(void)  const;// const͵ĺ
private:
intnum;
intdata[100];
};
int Stack::Count(void)  const
{
++ num;// numֵ仯
pop();// popıԱֵ
return num;
}
6.2.5 
1Ҫдһָӵ䣬յC++/C벢ܵõЧʵĻ룬ȴήͳĿԣļҲߡ
2ҪдֹһĺںķֵУҪֵʹ־һ
3ҪBOOLֵTRUEFALSEӦ10б̡ԽFALSEΪ0κη0ֵTRUEVisual C++TRUEΪ1Visual BasicTRUEΪ-1ʾ£
BOOLflag;

if(flag){ // do something }// ȷ÷
if(flag==TRUE){ // do something }// Σյ÷
if(flag==1){ // do something }// Σյ÷
if(!flag){ // do something }// ȷ÷
if(flag==FALSE) { // do something }// ÷
if(flag==0){ // do something }// ÷
4СĲҪ= =дɡ=Զִ
5Ҫ123д0123ǰ˽Ƶֵ
6Լı̴¼ƳɱڼԱߡ
6.3  С 
C++/Cͬµ书һ8ֻ꣬ѧɡʲôʱ򣬶ҪԼıˮƽµһ˺õļͷҪѧϰ
µٵÿڿʱֻһ÷ԣһ񫡣ҽ軨׷Ƽһ飺Marshall P. ClineġC++ FAQs[Cline 1995]㿴˺һ޲ڡ
дC++/C򣬲Ҫ˵ֻǳԱļҪѡϵͳϵͳƱսԾߡôֻ̳ǡսָӹǸ󱿵ʿ¸Ҳ԰̡ǳԱҪֻ۹ⶢڳϣҪԼѧšӦ򱱾ͬСѧϰСС;ָ㽭ɽ¡
  Ĵ
̴ʦ˵κһôСܴŴ󡣡
ѧ߲ŴʦĻʣһСִֻһ򵥵Ĺܣǻ
һû壬ʦ˵ĳڵĻϵͳʧЧһ󡣡
ѧ߲㣬ʣϵͳʧЧô
ûвʧЧĲϵͳʦ˵ĲϵͳڵĻӲʧЧһ󡣡
ѧԲ㣬ʣӲʧЧô
ʦ̾һûвʧЧӲӲڵĻûͻǸһͬ£Ҳһ󡣡
ûдĳ[James 1999]
һصĳȱݡԵĿΪ˷־ܶȱݣͨĴȱͳͳڲĴʵûʲôķֵô飬ҲֳܱԱĴǡ෴أǴ˸ɧʹࡣڽѧͿʵУĴǱεĹߵ
ҽ԰Ĵڵ£ԱܡǱҪѧĴҰѲĴá
7.1 ԲԵ
Եĵ£רҵԱӦסô򵥵£רҵĲʿҲδضѾ⡣
һ죬һλҴ̱ҿ죬ѧϰǿļרҵʿãʷǰƻҳԣΪ̡̡⡣ضΪλֺѧ֮ҲҺͬδֹ̡̽⡣ֻΪҪȥӦƸμԣ±ʵҵΪһѡ̡صҡʲôǰ׺вԺͺںвԣӦ˭ִУй˾ӦƸߣҽԵĵʱ̾һ˵ЩҶѧʮûôܽóȥɡСĸоһȺʿЩ˵£ҵʱѧʼȲҲ־һƸĴǰʿ빷ڡ
ǹڲԵļҪ
7.1.1 ԵĿ
ԵĿΪ˷־ܶȱݡ
ȱһַƣָܵĴҲָܵ£ԲȵȡȼдȱݣִͨгֲոȱݡԵĿǸҪʶ⡣˵ԵĿΪ˵ûȱݣôԱͻĿ꿿£ʶѡһЩױ¶ĲʾĲٵġ
ĿǰУĿƼɹձƵڶ˶ʿʱ¡ǵĿоɵ·еĳƷ⡣ʱڴļɵ·Ʒֻаٷ֮ұдʾԽɵ·ĳƷŻ98%ʾЧ˵ĺãһλίĳܹʦ޷̵˵ǵĳɹǿҪˡĿ׵ͨ˼Ҳú˵ӹҵƼȽڿʱͨȡ˺óɼʱҴ棬֮࣬ԸУгɹˮƽʵԴʧѲʧΪٱϣ
һɹĲʾڷδֵȱݡ
ԲǸ⣬Ǹְҵ⡣
7.1.2 ԵҪ
Ҫ˶ɻִУͲءΪ˲ԵʵԣԲԵҪǡ顱ƺ̫пˡԱܺܺõزԼĳΪ顣Աȴ𿪷Աķŭ˰ۡ
Ѿ˲ԵĿΪ˷־ܶȱݣԱķһȱʱȴֵߵߵȥϲǸùĿߣܵġ
7.1.3 Ե
ֻ֤ȱݴڣ֤ȱݲڡ
ǣһӵϵͳԣ۲ȡʲôĲֶζ֤ȱѾڡ׵زԡֻһ롣ʵУҪʱ䡢õƣֹزԡ
7.1.4 Ĺϵ
ڲԡĹϵڿС顱롰ɼĹϵ
ѧϰõѧڿʱܼͨɵĴ󣬴Ӷߡ˿Գɼȡ͸õõĺóɼ
ѧϰѧԭͲĿۼôϸģҲ߳ɼ
˵ĸƳģǿ޲ġ
7.2 Աѡ
ҪԱ
ҪĲС
Ҫû
ȿһMicrosoft˾ڲԵľѵٻش⡣
7.2.1 Microsoft˾ľѵ
80ڣMicrosoft˾ƷˡBug磬1981IBM PCһƳBASICûá.1֣10ʱͻFORTRANҲƻݵġBugɴ˼MicrosoftϵͳPC̵ļҺܶûҲ׷Ͷߡ
Microsoft˾ľǷбҪõڲƷ⵽ܶʦһЩ߼ļԣǹִΪڸУѧʿЭ£ԱԼԲƷ1984ƳMacMultiplanӱ֮ǰMicrosoftصArthur Andersonѯ˾вԡ繫˾һûִȫԡһ൱ƻݵġBugʹMicrosoft˾Ϊģûṩ°汾ÿ汾10Ԫһ20Ԫνʧء
ʹ˼ʹMicrosoft˾ľǵóһۣٲĲԲţƷͲܴﵽߵ׼IBMųɹʷĹ˾ЧİMicrosoft˾հIBMľ飬ѡزһЩȽȽķĲС飬ԶԼΪؼԵĹд븴ȡMicrosoft˾һλܴ¶˵ÿԼˡҪһСƲԣвԣѲϢšһΰת۵㡣
˶ĲС󣬲´ˡԴMicrosoft˾19841986֮˲С󣬿ԱʼˡǰѴһߵŲԣΨпԱԼֹķδʱMicrosoft˾ʷϵڶδѽˡԭ1986ꣷ·еMacWord 3.0ǧ򻽷19872Ȼ700ദеĴƻݻٳһӾʹMicrosoftɨء˾òΪûṩ汾ó100Ԫ[Cusumano 1995]
7.2.2 Աķֹ
Microsoft˾Ľѵп֪˾ڲԲƷĲԣΪԣҪԱĲС鹲ͬ롣ԱӦִС׺СԣԴ߼ṹԼʵϸڣ׺СָüڲṹСӦִСںСԣչ˵ԳǷҪ󣨡ںСָڲṹڲһģʱ׺СԷҪģдеٲԡںСԷֻģĽӿǷҪĳⲿֶڲʵϸڡ
С͵˾ûĲС飬ҲпܲСԱæʱÿСĳԱ໥ԶԷĳ
ҪǿǣԲڿԱ߲Сеһ˫ͬ롣׺вԡɿԼִУΪĲԱ޷˽⵽ڲʵϸڡںвԡɶĲԱִУΪ͹ۡڲԼĳʱһЩײ
1߶Լĳӡ̣ΪȷģӦõģʱʹ󣬻ıϰ߶ô˺ѷ
2߶ԳĹܡӿʮϤԼΪʹòû̫ƣԼԳԾ߱ԡ
3ƣϲͳĳɹ֮Ըʧ֮ÿȥƻĲԣɱԼĺһԽܡ㿪߷ǳʵ䰮򡱵ڲʱ֪شٳɷݡ
Ʒʽǰڹ˾ⲿһЩûԲƷвԣΪ²ԡ²Ե漰㣬ܷӳûʵԸѵʱÿơһأ˾²Ա֮һֻЭ顣²Ա޳Ϊ˾ԣڵݽԱ棬뽨顣˾²ԱͻԺܴŻݼ۸ʽ汾
7.3 ԵҪ볣÷
һѧԣʸ߶Ĺˡһּոߣ֪йˡһϹ·ַԣҲⲻʲô
Ƕģ黹ϵͳйͬҪԣȷԲԣݴԲԣЧʲԣԲԣĵԵȡ׺вԡָԱӳڲݽвԣںвԡָĲԱӳⲿݽвԡ̲ܶ̽Ľ˸ָĲԷ˲ʾ[Pressman 1997] [Sommerville 1992] [ 1997]ڼؽõĲԷ
7.3.1 ȷԲ
ȷԲֳƹܲԣĹǷϹ˵ȷҪأҲҪ
ķǹһЩ룬Ƿõһöٷöٿռ޵ģǿɲˣؼͷԱһҪ跨öٵĴûӹؼѰҵȼ䣬ΪڵȼУֵֻһμɡȼĸɱ£
ǣA, Bf(x) һȼ䣬ڣA, Bȡx1вԡ
f (x1) ôf (x) A, B䶼
f (x1) ȷôf (x) A, B䶼ȷ
ԷΪȼ۲ԣԴǵֱ뾭飬°빦
һЧĲԷǱֵ߽ԡöߵȼıֵ߽вԡΪԱ߽Ҳϲڱֵ߽
ԵһγƾֱȼӦǣ0, 1ͣ1, +ޣȡx=0.5Լx=2.0еȼ۲ԡȡ x=0Լx=1бֵ߽ԡ
һЩӵĳƾֱ뾭ҵȼͱֵ߽ʱöٲԾ൱Ѷȡ
á׺вԡʽȷԲʱиĺôԷ˴󣬲ߣԱϾ޸ĴԽ󣬸Ĵ۾Խ͡Դ˾ҪԱдʱִлڵٵġ׺вԡ
7.3.2 ݴԲ
ݴԲǼ쳣µΪݴԺõȷϵͳ޷ϵ¹ʡ
ȽݴԲͨһЩ磺
1ͣ硰ꡰ¡
2붨ֵ֮Ϻ˳˵ġʮ㡱Ҳһ֡
ֱһЩݴԲ׳ơɡԣ˲ȭҧʲôʹҾٲӣΪûжԳֱⱲҲѧֱ
7.3.3 Чʲ
ЧʲҪǲٶȺͶԴʡʱǹĲԵġֵÿٱءʱǹĲԵġֵĳһٱ
ڻȡԵġֵʱҪֿǲ¼лԲԵӰ졣Ƶ߽ṹⲿ豸ӰٶȣԴпţС
ڻȡԵġֵʱҪȷԵļȫһµĻСӲһԱȽͬһ̨ɣؽ϶࣬˲ϵͳԺͱϵͳҲϴӰ졣ǱȽϼ㷨ܣҪԺͱҲȫһ¡
ЧʲкҪһǼ޲ԣΪܶϵͳڼ޲б磬ͣ󣬲ԷǷ״̬԰ΣرݣǷԵ
7.3.4 Բ
Բûһָ꣬ԽǿûеĳʱȻͬ¡̡ҪٲãƷֲ֧Ŵ绰ֻ30%ûûֲᡣ[Cusumano 1995]
һΪûֲʹôнϺõԡ
7.3.5 ĵ
ĵҪĵȷԡ걸ԺͿԡö֪ĵһɲ֡
ȷָҪĹܺͲдҲĵǰìܡ
걸ָĵԡͷβ©ؼݡЩѧ֤ѧʱϲáȻɻءĵкܶݶԿ߿ǡȻģûԲöǡȻġ
ĵдɢġʫ̽С˵Ҫôûö⡣
ܶԱܱдóȴдĵҪ˵Լǰѧòûˣҽڲǰ취ûдó򣬶ġͬһдĵͶдĵؾͻдĵϴѧǰ˵ͨдģҼ˵дѴ´ࡣ
7.4  
ʱ˴󣬱ԱĴԹͰ׸ˡ
ĴǸ󱯴ϲḶ́һ֮ڿڱ˵ĵ͹Ⱥϲõĵ߷֮ĹôŮǲؾʧĴҲܱó
ҴӴʼܸĴĥѼǲٴκ䤱ʪ͸ʡĲ˴ʱ޲ײǽ˴ʱŮӳЦЦġ
Ʊҵʱһҹһܵҵʵң£ض£֪ʲôéٿ𣿡
׳Ƶҡҡͷ
˵һʮСʱûܸɵһ󣬸ղȥ˲ӣһжˡ
ûϴңһҪҳԡɡǵ⾢·ͬʱ̸Ůѡ
ڱڣҪԱܽڸĴļ˼뷽
1Ҫиֳˣڷܣһܸɼ˵ĻǰʮǷģܵĽӼһԼ̫Բɭ֣Ĳȴ󡣺ʮֲģܵĽӼ˴Ҳ
еĴֻпԼҳĵηӣ鲻ʳζ˯㡣ԳʹʹҪоԸ
2ɡ˵ǣҲšΪż˾ͻɣѡǡԺ󡣲ˣҲˡ
Ǿ۷߲ӬӲзɳǻᶥŲڼСʱȴôԱɵطߡԭΪ۷ͲӬ̫СҰޣ¿ߵֻ֮ɡһҹֻȸɽҵķ䣬ʽȻ۷һģһõƹȴ򿪵ĴΪ·ƣ˵޼¡ǵŷߵģһûϢá
3ҳĸԴʰ᣺ҶʹӦʲôҩ˵ӦҩˮΪ۾ãණŶʹ
ӦùɡȷȷĸԴ
4ڸĴ֮һҪϽ²ԣµĴ·ϼǮΣԼȴײһȻϲ£ҪֹּϸҪǣԭгǷȷֻҪԴ˳Ķ΢ģҪ²ԡ
7.5 С 
ĳԱԼĴûдĽѡһҲ΢СǳڴºءܷòĴ˼ʶͰ̬ؼġ
ԱӦðѲԵɷ֮£ҪġںвԡںвԡͨжһǷǸӣ޷֪Ϊʲô˷ӡóԱеĴִеٲܷʱ䣬ϰ͸оʲô㡣ٲԽʹԺӸɡ
˴һҪĴǡд޴ĳǸĽ֮ڴˣҽĶSteve MaguireġWriting Clean Code : Microsoft Techniques for Developing Bug-free C Programs뱾[Maguire 1993]ܴĽ̻壬ǳ
ڰ  ά
̴ʦ˵³ֻгһҲòά
ܶƷһԵڵšڵЩϵͳҪʮ꣬άǱزٵġ8.1ڽܡάĳʶάз࣬ΪʲôάȽѡ
˾ľûһϲάķһάĴͨǸ߰ġ7.2ڽ˵Ӱά۵һЩҪǼء
ϣҵȴ޷άʵֻ֣öȫֵ߲ĸ죬ֻ̣Reengineering7.3ڽʲộ̵ͣعRestructure򹤳̣Reverse Engineeringǰ򹤳̣Forward Engineering
8.1 άĳʶ
ԣάǸֱ̫۵ΪƷظʹʱᱻĥ𣬲ҪԳάάǶԼȷḻֻĻͳơзḻʵĻָЩӳ͹仯ʹϵͳƵ޸ĺ乤ĻָЩֹҸ˾ɴȴ´Ĺ
һЩѧ߽άΪҪࣺάCorrective maintenanceӦάAdaptive maintenanceάPerfective maintenance
1άǰڵĲԲܽ¶ϵͳڵĴûʹʱԽϺ͸ЩĹ̳Ϊά
2ӦάµӲ豸ƳϵͳͱϵͳҲϵΪʹӦµĻĳ޸ĺΪӦά
3άʹùУû᲻µΪûµܵĻΪά
Lientz Swanson鷢֣1980꣩άԼռ65%ӦάԼռ18%άԼռ17%[Sommerville 1992]20ǰˣǲ̫ľıɡ
һЩؽάѣ
1ԱҪĳЩάʱҲԭĿԱֻȥЩ
2һԶ˵ĳǿʱﲻֲֹĳӣô֪α̡
3ûĵĵܲʱֱ֪֡
4ܶʱûпǵҪĶ֮໥֯һǣ١ʹкܺõĵҲпݽ
5˶汾Ҫ׷ݻǳѡ
6άĸã޸Ĵ롢ݻĵпܲµĴ
7άˮƽĳԱȻԸȥ˾Ҳ᲻øˮƽĳԱȥŵͳĵˮƽĳԱֻάһͿ
8.2 άĴۼҪ
άǼƲַĹüĴЩΪάͶάӸ߰ǳ֮ΪɱΪ˵õĳֶĶ[Mankiw 1999]ѺܶԱԴάȻᵢ²ƷĿɥʧִ޷ġ
Ӱά۵ķǼҪУ
1ӦĸԡӦѱܺõ⣬Ƚƣôά۾ͽϵ֮͡ά۾ͽϸߡ
2ԱȶԡĳЩĿ߻ڣǶԼĳάô۾ͽϵ͡ԭĿѾڣֻάİĳô۾ͽϸߡ
3ڡԽڵĳԽάʮǰĳǶô˼뿪߶󣩡һأԽά۾ԽߡԽ̣ά۾Խ͡
4ҵģʽ仯Ӱ졣Բƶȵı仯Сƶһ䶯ͱ޸ġһأҵģʽ仯ԽƵӦά۾Խߡ
Ӱά۵ļҪУ
1лԡӲԼϵͳºܿ죬ʹöлԺǿӦҲҪͣظ£ά۾͸ߡ
2ԡȻͼԱȸ߼ԾиõٶȣǵͼԱȸ߼⡣ø߼ԱдĳõͼԱдĳάҪ͵öࣨʸߵöࣩһأҵӦø߼ԡ磬һWindowsµϢϵͳûVisual BasicDelphiPower BuildeṛVisual C++ľЩû˻ûԡ
3̷õı̷ζõĿԣԽάĴۡ
4ĴĴúãڵά۾֮ܽ͡ά۾ߡ
5ĵȷ걸ĵܽάĴۡĵάĴۣٳĵûĵ
8.3 
ҪԸ1ҵҪ߲Ʒľ2ڼҪ߲ƷԸ޷άʵ֣Ϊ1ĿάԿܼʵڲֵȥ2ʹĿάԱȽϺãҲֻαα̸ɴȫ򲿷ֵĸ죬µĻ
ڶԴһ֮ͽʱԽ˼ĺͰַʽڡάҲ԰ؽȥ͸ģַʽ൱ġ̡˻͸ˣͱеˡ
άĹ֮ͬûԭеά޲ô̾ǡʹǰǡ̲һάĴҪߣڽȡȴҪͨάõĶࡣ
Ҫͣع򹤳̺ǰ򹤳̡
8.3.1 ع
عһָͨ޸ĴʹµҪعͨƷԭϵṹҪǸһЩģݽṹعһЩô£
1ʹߣʹ˳Ӧµĳ׼
2ʹĺ汾ʸߡ
3ͺڵάۡ
Ҫעǣڴعع֮һҪعӦĵ
8.3.2 򹤳
򹤳ԴӲ硣ӲŪֲƷƺ조ءֵòֳɵĵֻòжֵĲƷзͼлȡмֵĶҵĺܶͬѧ¼ɵ·ƹǾʹļɵ·ԭⲻظƸõ·İͼȻͶԻơReverse Design
򹤳ڵӲơںܶʱ򹤳̲ԾֵģԼ˾ǰĲƷϲƷȡϵͳơ˵мֵϢ
8.3.3 ǰ򹤳
ǰ򹤳ҲԤάMillerͳɡΪҪѽķӦõϵͳϡ[Pressman 1999]
էȥһĿǰеϵͳֱǡǡչѸ٣ȴһмֵĲƷȥ£Իȡ档ͬԤһԣԤάǡСռˡ¡
8.4  С 
ѧлάˡÿһµоѱҵµһͨȻȫƵҵʱֵĹˡֻأûʲôɹ¡
ϣϵͳܻ£ҪάϣϵͳЧ棬跨άĴۡ
   
[Abrash 1998] Michael Abrash, ͼγ򿪷Աָϣǰ룩еҵ磬1998
[Cline 1995] Marshall P. Cline, Greg A. Lomow, C++ FAQs, Addison-Wesley, 1995
[Comer 1996] Douglas E. Comer, David L. Stevens, Internetworking With TCP/IP, Vol III, Prentice-Hall,1996
[Cusumano 1995] Michael A. Cusumano, Richard W. Selby, ΢ܣ̻ 룩ѧ磬1995
[Jacobson 1997] Ivar Jacobson, Martin Griss, Software Reuse, ͼ湫˾1997
[James 1999] Geoffery James, ֮ 룩廪ѧ磬1999
[Kruglinski 1999] David J. Kruglinski, Scot Wingo, Programming Visual C++, ϣӳ, 1999
[ 1996] 񣬲΢ѧӻϵͳƣӿƼѧ磬1996
[ 1997] 񣬴꣬ͼû뼼ӿƼѧ磬1997
[ 2000] ֧ЭͬĽʽάͼϵͳӻƽ̨㽭ѧʿģ2000
[Maguire 1993] Steve Maguire, Writing Clean Code 룩ӹҵ磬1993
[Mankiw 1999] N. Gregory Mankiw, ѧԭС룩ѧ磬1999
[Norman 1996] Ronald J. Norman, Object-Oriented Systems Analysis And Design, Prentice-Hall, 1996
[Pressman 1997]Roger S. Pressman, Software Engineering: A Practitioners Approach ( Fourth Edition),
McGraw-Hill, 1997
[Rogerson 1999]Dale Rogerson, COM Ļ 룩廪ѧ磬1999
[Shaffer 1999] Clifford A. Shaffer, ݽṹ㷨룩ӹҵ磬1999
[Sommerville 1992] Ian Sommerville, Software Engineering, Addison-Wesley, 1992
[Summit 1996] Steve Summit, C Programming FAQs, Addison-Wesley, 1996
[ 1997] Ҧ䣬ƣ̣ӹҵ磬1997
[Shaw 1996] Mary Shaw, David Garlan, Software Architecture, Prentice-Hall, 1996
[Tanenbaum 1998] Andrew S. Tanenbaum ,磨棬ܹϲ룩廪ѧ磬1998
ڶ  Ա
ڵһߵԱǳԱͳǾˡõĳԱͳɫĹĿɹıҪǹƣȥס˼ҵĲӣΪԱһȺҰѼӡĿôһѹãø˻øԵĿֺ㡣һ֯ɫ쵼ʱԱ֪ѱ쵼ĿʱǻԺ˵ͨŬȡõĳɼɡԹ߲ϵԼһ٣ӦʱʶԼεҪеߡ
Ǿоͷεڸ̸ۣҲᣬĿeasyɸȥϵͳͷٽмԱɳ򣬲OK𣿡
Ӣ׼ΪeasyOKǱʡҪĿʧܺףֻҪ֮һɣ
1Ŀһ֪
2˶Ա̲Ȥ
3дĳԱʱõġ
ͬʱ߱ʧܺˡ
ٻԼǱȶǴģȵóԱͳ˵
2.1      Ա
ڵĳԱɻֱܴͨӲޱȡǵϢʱ䡢оֹ볣˲̫һö֮͸ˡءƧӡҵȻ죬͵ĳԱڴɽ᮵ľҲܱڳԭǳԱ˲𼸱ٳɡʮһͨ鼮ҲҵڹںųϰԱ֧ӣѸ㲻ЩЩλˡ
ĳԱ±ԣ
һʵ
Աѧϰ빤ڼ伸򽻵ѹûƭƭ˵ĻᡣڷܵĳԱڵĳBugʱѾؽˡʵĽʵˣ϶ҲóԱ
һгӪԱһԱŷϷԣһ¼Ϣڡ
гӪԱ˵ȵ绰ܺԭӵӰ춼Ҫ󡣡
Ա˵޵ڣ޵ĳ̶ϣһЩԵ⡣
ΪǵӳʵѧҪץ
򵥡ʵ
һѧңһѧҺһԱһм棿
ѧһش˵棬Ϊǳ塣
ѧһش˵12棬Ϊ66ڱ 
Աش˵ֻ棬ŵ·Ӳ̣ʾͼ̡
ĿǰʹȽļҲ߱ܣԱĻǰѸӵתΪܴļ򵥵ĳһ⸴ӵԱԼ⣬޷øļԳԱŷ򵥡ʵá塣
Ҳвѧʡ˵ߵ¡仰г˵׵£ǵҪ̧ߵ۴µĳ̶ȣдȥڻŪʿѧλڵһ߹ĳԱʵɵġ

ԱϲսϲάˮƽĳԱϲˮƽĳԱһΪ¡壬ԽԽԱɡˣ󡣲ţһʶĳԱмǵʿ
ġζ
ʱ̴ʦƵʲô 
ʦش˵˵ʱͳԣʱ˯ֻҪʱǡͽгơ
ʵԱ͹Ϊһ壬ܵȴζܶ¶ʫΪ֤
ұ

ֻӲڸ質
ۣĳԱûɲϲԶȹƧÿɰ
2.2       
ָһ֧Ա쵼ߣְǿ鳤ĿǲžǼԵĻвɲҵԷչѡǲݲʵ¡ЩҵλֻҪοںźڿ졢ҷԵͿɻ쵼ҲһЩŻֻ˵İ칫ҲҪκ͸Ρո֣ᶷûûˡ
һҵ˾ĳԱܴ󺰴вҸɾʮ㣬ܳΪһ΢˾ѡԱʱǰǵļ֪ʶüȥ׬ǮλһǳԱǸһȶǴ[Cusumano1996]
һӦݣڽѸٽһ򣬸һͷͷǵĽ͡һѪҪܼʱѧ֪ʶҲǿǣܰѱΪɵϵһʹõд¾񡭡
õĳӦþ߱¼
һˮƽǳԱе߼
ÿԱͷһɰ㲻ܼѹȺۣǾͲָӡһˮƽϲ˱ΪǸ磬һȨƵ̫࣬˶ͷȴ˱ӡ
ѵĹ
ҪҺáҪһĻ꣬ŻоȥӦϵͳϵͳѵĿָͬˮƽĳԱѸԵĹáֲҪͬʱɼ˵Ļ
˸
̣㲻ִָͨйƶõƷܶ˾ĳǹרҵģҲΪ˸ùŪĻɫĳһģԹصӦǡ򡱡ˡϰʱſ˯ԱҲɡԱſڻ˯ֻһУһ̾˯˼ң˯ʱű̡
û˸ûŷ㣬ŶӾͲں֮ڲܿ
ۣһл˾ĸ̾ΪɶҲɣֻõ쵼
2.3  ԱΪǷҪ
ȿMicrosoft˾ϵͳӦŵ쵼[Cusumano1996]Windows NT 3.0Ŀ¦µľһÿ컨һʱд룺
ƶҪһÿ˶ṇ̃˭ҲǶʩҷֹߺʧȥĿ꣬޷ʶıʲҷӦٻʼղд룬ܶĿĽչָƣʱֲ⡭Ҵÿ컨һʱд벢ѰĿȱݡ
ΪӦľ˹˵˹ҲͬĿWordĿܾʱΪ
һЩ˾ڲžѾĲơһϿžܿͻԼӸλΪɷ̣ͬأС鳤ԼڼԸ̣ڳԱҲԼʮַæٶдȻ270Ա쵼ƺҪʲôĹˣһΪWord°汾дһԡ
ԱΪһҪ̣Ѿ˵úˡµǡĽܣ߽ӣÿ컨һʱ̣û͹صˡ
2.4 뼼Ľ
ǾӪһӹһ꣬ǿԲضΪǵĳʶԼͨĿûѯܽʵе⡣򣬼ģһ֮ھͿʹҵޱ䡣ҲҵϺܾ޷֤Լڼ˳аȻ˾ĸüȾֶͨ
һɫ쵼һ֧ӲĶ飬пܴҵָܹӻȥ籭ϲԴй˺ܴʺϸҲûܹʵʮ˿ڲӦйϲӡȽչַḻʵԽԣҵû˼ұȡڵһߵĳԱӦʶñýģǺģҪѧ侲ط⣬Ҫȥ
˾ϣɫȾͨƳҵ˲Ѿ˵˲뵽Ҳס԰ѹ˾еͨԱΪ˲Ҫľٴ롣˾ϰ岻ҪԳԱƫΪֻ򽻵һˮƽĳԱȻѧ߼кܶǶסࡰҵ˼Ĵ۸ӵĹϵϽسҲ⡣
ںܶŮʿղˣȴܰѲ˵ӪͷͷǵȻǸֵð̾⣬ӦڴǷǵղ˲ɣôþܰѲյֺóӪԱҵϵԭҪǸȤͻ¡˾ϰӦԱܰѼô¸㲻ùĸɰɣȷܶ༼ԱڹιģǾĥΪ鳤ĿΪ˾Ҫľߡ
ĳԱϲĳԱһһԸһͨ˾зǳԱУҲһͬһ²Һ޷ݡйԷ⽨ϲڶķϰߣǧ͸䣬»ƺˮˣҲϮȥҪʹԱȽкĵȼƶάȼƶȲɺΪ˭ҲǶκܶһӣÿ˲лǽͷժѾõҰɢһľʱֻͼ̡̿
ǳŽһԱĵȼƶȡ
ѼˮƽΪļһͣļߡһˮƽĳԱҪ˱̻ҪϸҪԸձҵĴѧڶˮƽĳԱҪߣĿĹ飬ֵָĹˮƽĳԱҪϵͳϵͳƵҪ似㹻Ⱥ͹ȡļˮƽĳԱǳɹƷʦȺʹתΪмֵƷ
ѹָҵĹˮƽҲֳļ㼶ͣߡ㼶ˮƽûйְ񣬾ͨԱһˮƽǿС鳤ɴ켸ԱڶˮƽĿˮƽ˾ĳЩƷǷҪԼȥռг
ÿԱȷļ͹𡣼һϵһأһˮƽֻͨԱڶˮƽ˿Եһ鳤ˮƽ˿ԵһĿļˮƽ˿ɳΪ˾Ʒľߡͼ2.1ʾĿǰļˮƽڶˮƽ鳤Ҫڶѧʹѧʱ̵صδҲ鳤
         
ļ                       
                       Ŀ
                       鳤
һ                       ͨԱ
ͼ2.1 
2.5 ʧѧϰ
ǶӦʧѧϰĿڶݵĽ껪ٷʧܣȷĶй׵¡
Ŀʧܵغܶ࣬ȥҽڵĻͻִᷢĸԴԼϣ֪ʶƶܵ¡鲻㡢ԸǱĲȱ㣬Żѧѵǳ̫٣Ϊ˿˷ϰװ˷˺ܶ౾ڴľ
跸ǳʵĲڷܵġԸⲻٵظĽԼͻȻʧʱܾԼһǴҲ᲻֪룬ҲᲡͶҽԱһֹͬ᣺ڵԳʱʱֻʮеĳ򾹻ϰٸôĴʵĳһгġڹʱҪ侲ط⣨³ģҳҪģӦȽ
ǰ꣬йһСֹа̣ͽ֮࣬Ⱥ亦ǰȫҪýԡֹµ¶Ŀ˺ܶܺ˵Ŀߺܹסֹаġġڷŭʹ֮࣬ǲҪ˼Ϊʲôôа̣Ƿ˽ѵ
ڵϿܶ˵ȷ̵ļ֣Ǻڰ־ֹͷͷҶԲᡭԺһҪ֯ĻҸʲôҾ͸ʲôϻ˵ĵ
ҾЩܺһ㶼ûֹֻ֪Ǹа̣֪ԼΪʲôа̡ЩֻҪԴȥһֱܷǷǣǾǲȥ˼ȴܸԡǡԸԼԴ˩ڱ˵ĿϡѵĴɰ𣿻عһʷڡĸʱڣźϷĵ֯캦£һɾʮģɼĸĸ֯ȷԵӢ
˵šɵƭӵĽɵ򣬱ƭɵδ£ɵһƭӾͻһɵ¡Ϊ˲ԼɵӦȥѧһЩ֪ʶŬԼˣҪŰһиĳ˻ĳ֯
ԱĿʧܲʼʡʱҪֻǾµؽ۹ضĿϣһǵӦóüǲŶԡ߸ոʧܹȽܡ
ڶƺ˶ʿоʱһֱŷԵҵҪƶҰںڰ칫ӵѧרҵ̡ڶ˶ʿоĵһ꣬˵һҶʿоĵһ꣬³ɵػȫѧԴչʾһʱΪѾӲˣٻعǰЩļ࣬Сϱšı׳оںСط199710·ݿһ˾
ҿʼѡҵճ̣ǰǽǮ̫òô졣֮ҿʼΪƷɲûгֶ糱ӦϾƣʵѹûзӦѾʶгûҶԣԾеļмֵ׼ٿ¾档ֻһ֮Եڱһλ֣СչʾԼ10C++ʱʮھָദشƴʹĿɿڴʶϵͳļֵΪ㡣ʹźӱǳԵһ
199810£λһδӱɵݣҰֻһĹ˾رյĲ£ҡҩδذ׽ϽĲţѧϰ顣ĶӪһգȥһпԭµĽڡҲ̫ٵˣ֪ʧҵë۵һˮ׼̲ס緢ĽҾ᲻̫гΪʵطܹȥҰԼʮëгպһһ˷Ĵ󲿷ȡһǰĽѵ¼
Ĵ֮Ҳѹͦ֡õһʧֵܺûտʼдⱾʱλѰѽ쵽ɢ˳ָҼҩõұҵȱǸĲģ̺ﳤҪһ
2.6 ۺ
ǰԱ˹һɫĳԱԺĿһС첻ܸһ̫ŵ㣬ûбʾǫء
ѧʱ̫̫ޣ֪ʶṹǳֻµҲɲ˴ԱóʱҪʱֲԼóķǼܡﳤ̲ۺʡ
ܻصѧʱϣܰĿѧáʱʢѧ߱¶¡Ҷѧʱ֪һĿƣںĪ߿ĳɼ54ֻ֣ҵֵ6֣дĵĿǲ⣬ǰǷûɹ£ĲɣϴѧĵһҾȻ޷ͨ˵ȥϴôߡֻûζƱ븨ԱѧʷҲ̤ˣʱֻдοʦĳĳĳҼӢ¾壬˭ĳɼӽ֡ҾɥǣЩоҷģҶǸƨѣһԺжûС
ӵĿֻѧƲͬڡ°װǰժ˿ϵͳĻ˶ԶͷˡҸ˰ûͬⷢҵıʲǵҵϡҷԼڲÿĵطһɬĹӡ֮ܲӲ飺ɷѧࡢȥɳĮʮڣݺ£ΪʿҮҪڵ̫ˣֻڿЩ֪ԼɴԸΣѧø㡣
Ҫ˾óԱֻмԲ²ӦɢԱΪɶԵõӦǳ˲űõְҵ
2.7  С 
½óԱͳһЩΪ˰ȥ谭ǽЩα߶˼¡
й˺ܶ򶷡˵ĸȴûһθϹҵе£ǲٵˡ90ڣйһЩԱӢۣǼݹЩµӢǺܿؼȫˣֻ¹£û¸ļֵһʶҵһһϦĻԻ͡Աڷѧϰ͹ֻͼɼĿ⣬Ӧҵʢ˥ƶҵ־Ƚطչ
  Ŀƻ
ڿԷ֮Ŀƻᴩϵͳơơԡά̻ڡ
ĿƻҪṩһݺḺ̌пԱȷһ£չͬ׼ʱĿĿƻҪʵʩģͺοںţԺܿšĿƻڡ׼ȷǡ١
̵ҪĿꡣһͳҵִͨϸĲ淶֤ƷСʵͽŵĳԱδؾܿԱ˽ķ棨ΪأȷԡܡԡԡɸԡԵȵȣڽϵͳơʱڽСĸǡģʵƳģĹֻһԤֶ֤ζѡ
3.1   Ŀ  
ĿƻͬһӤдѡĿдƻǾɶˣҿ100% ׼ȷ
ʷѵһһԺŻһͨ򹲲壬ôھͲҪæҹָӢܲ򹲲ʱԼĿƻʱӦһи硣ֻС֪֪ˡĿƻ֪ˡָҪ˽ĿĹģѶʱơ֪ѡָҪ˽жٿԴɵõĳԱмǵˮƽΣӲʩΣ
3.1.1 ֪֪
Ҫ˽ĿĹģѶʱƣſȷӦͶȥĿڿԷ׶ξҪ⡣ҵǣĿԲ֮ǰ׼ȷعĿĹģѶȡﾭҪá
Ŀʱࡣһ࣬ĿӦɵдںͬУˣ򿪷ҪӦ⳥ڶǿԼƷȻֻȷ˸òƷµķڲ󣬵̫ʧȥ̻ʧ
ĿԴΪࣺˡɸõ͡Ӳͼ3.1ʾмֵԴĿƻƶҪȷԱҪǵרзֹ
ɸõǴмֵԴ1.2.1˸ʡһҪԼģרҵӦ̹
ӲȻҪԴȴǱԴԭӲֻҪĿĿҪ󼴿ɡЩĿҪõ豸Ҫ׼ʱҲ˽̡
ͼ3.1 ĿԴ
3.1.2 Ȱ
һλԱæűд򣬾Ҫòɡ
ͿɡԱش
ǲʵʵģʵʵ˵׻Ҫʱ䣿˵
һӽһЩµĹܣҪڡԱһ˵
ʹҲˣֻҪʱһҲˡ˵
Ժ󣬾ҪˡȥͻʱλԱſڻ˯ļһ϶æڱдǸ[James 1999]
ԱҲÿ糿7:00׼ʱ𴲣һ͵ˡĿڽȱǼҳ㷹شС֡һЩ¼ᵼĿ
1ϼ쵼ܶϣƶ˲ʵޡĿԱǱȰղĽȱչ
2ͻ˱仯ûжԽȱӦ޸ġ
3͹ĿĹģѶȣͶ㡣
4δԤԿ˷ļϰ
5δԤԱᷢ⣬ְȵȡ
6Ա֮䲻ܺܺõĽЭ¸׶ɡ
д̱Сѧд롣һЩĽ飺
1ƶȱþĿˣ˽ĿͿԱȱҪСۣڵõ˵ֺ֧ʵʩһԸľ档
2ȰŲһҪ߼˳ӦܵѶȸߵ£Ѷȵ͵¡Ҳǰں
СʱҶһλԷܸȤȰһе׷ԹˣȻҸƷһСвˡĸйĴͳ£Сȿ𡱡Ӵģ˵ȥѧϰ͹ڷȰѲ˳ˣųԵ׷ģ̫ˣҾáȳԷ ǡȳԲˡ
3һĿӦýȱΪɸ̱һ̱֮ڵĶͬСԱ׳ڼҪôֲ˼Ҫôͷö̱ĵʹæµȺңʧ
4ȱблʱ䣬ʱõȷϡΪǶԼҪ֪֮٣ҪһЩʱԷ⡣Microsoft˾һЩСƶˡ50% [Cusumano 1996]Ŀԣ̽ȱдڻʱ䣬ΪϵһԾ
5ĿӦ޷ǳҪ쵼ͻſޡȡͻ仯ʱҪԽȱӦҪ޸ĽȱѺ鷳޸ĲŻ鷳ܶΪ̺ѣˡ˵̺ףһͽ伸ʮΡ
3.2  ȱĹ
ȱݡĹԴһЩӲ̡ĿӲмĲ𣬵ԿԴӡȱݡеõϡȱݡݣһǸĿ꣬ǿִеĹ淶
3.2.1 Ŀ
һʱڴںܶ಻ȷأһ㲻100% شﵽĿꡣƽĿ80%ĳ˵Ŀ100֣ôճɼɴ80֡ĳ˵Ŀֻ60֣ôճɼֻ48֡ڿսЩֻ켰ѧͨἰЩø߷ֵѧҲΪԼʧض㡣
һĿͨҪ˵ЭĿΪ1ʮԱĹ֮ÿ˵Ŀ0.95ôʮ˵ۻᳬ0.19ÿ˵Ŀ0.9֣ôʮ˵ۻᳬ0.03ֻÿ˶1ĿŻ1
ûиĿ꣬˵Ķͺܿ졣ûСȱݡĿ꣬Ҳȱݾͻɶѡ
3.2.2 ִеĹ淶
ʵ100Ȼʵ80ҪŬȱݡĿ겻ģõ塣ʵָĿҪһ׿ִеĹ淶֤
50ĩȫˡ硱ΪʵĶƹַȫּġ벻ǧļйũôԵˡ
ù淶ǱҵִеġһͨҵհһҵĹ淶δе̵ͨĹ淶״鼮ҵЩ淶ܰáںܶ˾ûȥִҵƼ̹淶׶εġݡ뷢ʱҵġ硱ȷвͬʽ
˵ûй淶Լϲö»磻淶̫ˣͻɱԱĴƶ淶ǽѵ¡Ա˽෽أЩصĸֹ淶ֲУڸʵȻȻذѸƵС
3.3  
ȷĳǸĳ
̰۵ĹپǺù
ʱϰնһЩܵĵطʹԡ١ֻҪٵĲ̰ۣºҲǡù١ҲһЩϰմţҪ̰۷Ҫ󱿵֮£ԱǹҸˡΪͨŬԼˡôͲҪ׷Ȩˡ
ȷĳ򲻼þǸĳҲٶȺܵͲ˷ڴ棻ҲдһͿ˿߱˭ҲҲʹáȷֻǷӳһضѡ
غܶ࣬ȷԡȷԡɿԡݴԡܡЧʡԡԡԡɸԡԡԵȵȣгʮЩ֮䡰ңǳࡣԱÿҪôҧĽ֣þͻظѣҲŮѵΣա
Ϊ˱⣬ԲС˵еѧ࣬شԵطֳɼɡѧԴԴ໥͸˭жٽɱ𡣵ڵϻ죬֪ܵɣɡ䵱ɡɡɽɡɡ͡ɡصķͼ3.2ʾСȷ뾫ȷԡλλͬɡ롰䵱ɡЧʡԡԡ͡ɸԡǾصأλ·𡰶ɡɽɡɡ͡ɡܿͼ3.2ҵʵԵϵڲһһϸ
ͼ3.2  طѧ
3.3.1 ȷ뾫ȷ
ȷ뾫ȷ֮صĵһλΪвȷ߲ȷͻûɲʧƭˣвȷ߲ȷһ㶼ɵġʹһ100% ذִУˣôԿͻҲڴ󡣼ʹȫϿͻҪ󣬵û100% ذִУôҲڴ󡣿һĿԱҪΪȷȷĸֽ߾
ȷԡȷصݴԺͿɿԡ
ݴȳϵͳڲȷ벻ȷأΪ˷ֹǱڵĲȷ벻ȷѣϵͳΪ˰ȫʩһЩ߷յϵͳ纽պ졢ڵϵͳУݴƷǳҪ
ɿָһĻ£ڸʱڣϵͳϵĸʡɿԱӲĳ豸һʼڹʻᷢ仯緢ȣϵͳͻʧһȫȷӲϵͳڹδؾǿɿġʱᷢʵı仯ǳΪĳȷģôһӶȷġ޷г׵زԣ޷ǱڵĴƽʱеúúõģ˵׼һͲˣ硰2000ꡱ⡣˰ѿɿġһɿԵѧʽҷĿǰѧʵԿϽЩʲôˡҵҰѴûñʻһǺš
3.3.2 Ч
ûϣٶȸЩܣռԴЩЧʣôԴģɻҪ㣬ԵҪٵ㡣ԱͨŻ㷨ݽṹʹ֯ϵͳЧʡŻĹؼҳЧʵġƿҪ޹ʹĵطϹæְÿ죬⿿ӿʱܶƨã͸һдʮƪ£ȡƸڡ
3.3.3 
ָûоʹ׳̶ȡûǲûҲЩҪʹԴĳԱִ˵죬ɶ¶ͼ㡣԰ΪҪ޿ɷ顣
ԲĸԭǿԱˡλëΪֻҪԼ㣬ûҲһ⡣׻˵ϣԿ䡱ԱûչʾʱؽǳãҲ㿴ǺܺðɣҪûۡûĸеܺʱһůĸоȻǾáѺáԡ
3.3.4 
ԱһӵԸһǮܵʲôСʱһڶѧʱ޷֮úܷգ׺ѧˡ
ҲǶûԵġԱֻԼ˼·ʱſдñĳ򡣱ʱҪעⲻüɣӦȻķʽ̡ǵȷ֪Լĵ֮پǽǻ㡣һͷһʻŪʫ黭⣬ȴΪһڵţࡣ
һԼûͬСУǡ¡йС˵衱ɮһ飺ֻɮա˽ɳɮˣҪ޸һࣿгȼִŮԺذɮĩ
һԭʼӦܸܺӣˮƽ˾ܹϵͳƵúܼࡣϵͳӷײ⡣ǶԹ󾫡Ľ
ϻʦоԣɵˣһ˵Ļһֵ᣺ѧдúܼ࣬˺⣬вˣֻмһЩĶѱ򵥵ŪɸӵģŻͶʡʵϣҿ5֮˵Ĺòд100ҳĲʿġٽҵʱŷԼȫʺ϶ʿѧλһҪúṇ̃ˡ
3.3.5 ɸ
õһַʽԭⲻʹֳɵһַʽǶֳɵбҪʹáɸԺõĳһҲõĿԡ½ƿɸáC++
3.4     
ǲԼͱ˵һΪĳЩ漰ʱҪм֤ƽƼʹ˹ᣬҲٲ˼顣
鲢ҪȵĿʱִΨһһΣӦÿʵڶҪִСӦڽȱÿ̱ʱִȽϺжһǺϸǲϸܴٷ֣飬ΪʲôΪʲôзԱ㡰ĲΪáϼӺá
Ǿõʩ[Pressman 1999]
1ȰѼҪƳһűʹҪϡ
2ֻ󿪷ߡӦǢġڵĴӦñòָκ˵ӦӻС
3һճ̲ѭ̲ܷɣռȶķճ̽С
4Ҫ̫ʱۺͱ粵
5˵ڣҪͼ⡣
6ԼԱʵѵ

ü鹤Ǽ׵¡ԹߣжԲߡ ٵ黹粻飬潲Ϊ͡
һ
ǰһصĴѧطУ԰﷿ǰݺ˴ոСѧǴµӿƼģСɶѽĿǰʳ㣬ȻֺҲ¡ڹ̩񰲣ƺòšڶ֪ѧУᴴڼԼС󻹲߲ءͬѧңСΪӦ211̣Ϊ21ѡ100صѧļţΪ211нϸߵָ̻ꡣƫƫڶ죬ʱѳݡѧ˶٣һϾͻᱻ̸ѧĥһ죬У԰͹ͺͺһƬС̻У԰νǧžʣŵЩȨʿȲ֣֪ġƺ
鹤ҪԤŪ١
¶
ϸʱһ󡣺ѡмλǺѧмλǻѧ롰塱Ļᵽˣû֪֧ǴǴ֮˵ﻹһЩͬѧûţţвͬ֡Ƕ֪ôˡǽ˵Ȼû˾ַԣͱʾȫͬ⣬ҹƻӭ󲻵һӾͽˣӴ˺Ҳûȡ뵳
鹤Ҫпѧʽ
3.5  С  
֪ΪʲôںܶҵҪ500ǿʵˣ500ǿȫйռˡĿƻеĿںšĿƻʱмɡðҪָĿȡĸҪƳģǡܡģ顣Ϊ˳ԱҪ˽أֻˮƽܿ
 Է
ԷҪǲ
Ҫʲôʲô
ʹԷǿ͹۵ġѧģпǴġΪˣ˻嶯жĲ̬Էĳµĳɹ10%ʧ90%ǳ󣬾ҲһԴȥɣͶһݼϲ뼫4.1ڽԷĴҪأáỷˡ
Ŀǰںܶ˾ϵͳĿ̸̸ϵͳĿĿԷ˼ЩϵͳĿģҵв淶ҿͻڸҵû˵ϵͳĿ˾עȫڡõĿԼõɻءϣʹɥʧŪԷĻᡣȻָһ£ô͹ȰҪ°ɡ
4.2ڽԷͶ˾ʧܵĽѵ߱ûʸ̸Ͷʣдɣһҹرһ30Ԫ˾Լģݿһ200Ԫ˾ѵģɱһ200ԪͶʷİ˵ģһѿ״̬100ԪͶ루˵ģڱȽϸеӪҵͶҵԽԽ̸̸ֵ࣬ⷽĿԷҽĸܣһЩ顣
ΪͻĿΪԼƷҪ֮ĿʱĿһʱ˱仯ǽʹĿ4.3ڽΪʲôѣ4.4ڽνµ漰̣Բǽṹȷ
4.1ԷҪ
ԷƫȫҲʲôëƤϸڶȨ⡣ԷΪṩмֵ֤ݡ
뼯쵼־˵ûǮ׬ǲɣǮ׬ͶǮ²ɣǮ׬ҲͶǮûпɿѡҲɡ־Ϊ׼ͬʱҲΪԷָص㡣
һأĿԷҪĸҪأáỷˡֻǷؽĸҪأּڽȫַĹ4.2ڽϰΧҪؽصע
4.1.1 
ÿԷҪɱ桱͡ڡԶ桱
һɱ
ɱ⣬ɱˣɱǾͿˡ˶ϲԿ顣Щ̵šһ¥ı˼ǣ׼Դռˣͬ־Ϲɡ
ΪͻĿôдںͬСԼƷô۶
ԤƷ۶ʱֹ۶´ЩĲƷ˵ά˲þҪˣ׻˵ӻˡûһ̵˶оƷõû㷢ʱҪûƲ׼
С⣬ǿɵöԳɱϸ㡣ĳɱָŹ̵ĳɱָɱҪǵĳɱУ
1칫ҷ⡣
2칫ƷΡյȡ
3ӡӲ豸
4绰ͨѶ豸ԼͨѶá
5Ϸѡ
6칫ģˮѡӡӡѵȡ
7ԱԱĹʡ
8ϵͳķãϵͳݿ⡢ߵȡЩϰϵͳȴгɱɴ׬һʡ
9г顢ԷĽʷá
10˾Աѵá
11ƷáInternetҪǽWebվķá
12ͻţҪֿڳԺ֡лߵķá
13˾ķˮãкܶĪĹѡÿһ޵Ĺ¶ҪһѳƱ
ڡԶ
ϲġŹģű˼ġͳԶ¡ҵϣȺ¿ɲ׽١
װգսϵ͡˾һѷȥϢϵͳý̡ϵͳĿInternetÿǳڶ治˼ȡʱ**|www.taohuke.CnӦúúûͯʱЩΰıԼһЩ
Զ԰գսϴΪ˳Զ治ϧڿˣҪôĲĽ˧֮ţҪôǡ̸ֽ۸ֵסһӹˡĿǰвInternetҵֻͶ벻Ϊ˳ɾͽİҵԸƴԡļ˾Ϸг
ЩΪԶܶǣǿɵðѳ·;갡ǧҵ;زۡ
4.1.2 
ԷҪ¼أ
1ڸʱܷʵ˵еĹܡĿԿ˷ļ⣬鷳ʹˡӽȣĿ
2ΣЩӦöʵʱҪܸߣţ㹦ܾ߱ҲʵüֵЩ߷յӦöȷ뾫ȷҪ󼫸ߣ˲ɿͻʧôҪˡ
3Σʵ£׬Ǯ٣һɥʧͳܵĿʱʱ©άʱ䡣άǷǳϺȵ£ܰǰõĹ⡣ãᵼάĴۺܸߣͼͨ͵϶ʣǵòʧ¡
ԷԼ򵥵رΪúÿ
4.1.3 ỷ
ỷĿٰأгߡ
гַΪδггͽҪг
δгҪðܴķգҪ׼ȷعǱڵгжԼռٷݶ೤ʱʵ֣
гȻղߣˮҲࡣ󣬼˾࣬Ŀ٣ôھʱֶܻɱ۵ΡڵһġϵͳɵĹ˾˲ƣۺҲҵƽҲ½ˡ
ҪгͱȥˡܺܶԱDOSʱ̵쾡£ûҪDOSӦˡѧУѧпDOSҵ˾򲻿ȥDOS
߶˾뷢չӰǳ90йŵշ൱ߣһоͰѹڻҵһϢĳЩҵܸߣܴڵطߣʹƽ߲谭˾ĽչµĻԤҵΪ磺
ڼҵҵǳңһҵܲʮ˵ãѶִýڽڰˡ쵼˾ӲҵǵҵԻͣõĸ߶ӣңʱңܵøֵҵͬ־ڷ԰!
һҰݷ˱ѧһλоѧѡˣǸԱȻô˵оҵ˥⣬ҷһɣҵһ쵼ӲԼ˭ͻЩĴ¡
ʵڲҵΪʲôҪСǡְλΪǡµһſЦĹΣǡǡ顱secretaryͬʣǸп޵ԱĳƺйȻĹΡÿοѹϯгҶʮߣΪǵĳֻԼǧĵԱãҵŻѵʮͨϰգҽĹλǡ£ÿ׼æﻹоȥ̡
4.1.4 
оԣ˷ࡪ˲ţ֣
һ˾ȫˣôõķֹá쵼˲šһߵĿԱ֡Աлߡ
̸ֻ˾쵼뿪ԱлǲСϾ˲šǼüõġࡰ˲š쵼ص˲ʺԱһȺѧʿ˶ʿͲʿƾıҵ˾ӦƸ¼أҵĽ£
ѡ񱾿ƱҵΪഺɾʮ㡢ڼӡʡҪ󲻸ߡࡣ
ѡ˶ʿҵû󷶽оʱôϣڶ˶ʿʱûȥ¶˱̹ôоѧʿԱ¾Ϳˡ
ѧʿ˶ʿ˾ȡˣֻü񼸸ʿʿ˾ʲôأ벻ʲôãֵֻ֪ͦÿģ˶ʿʿͷʱ䣬汾ûѧ٣ѧᡰ۸ֵ͡Ū١ҵʱȻףഺѱȣѳ̬Ψг̾꣬ǿԸšҲʿҵҪΪִˡĽЩѧʿ˶ʿǣǿԶ߸߷ɣ
4.2 ԷͶ˾ʧܵĽѵ
̸ҵܲἰȶǴMicrosoft˾ΪȶǴĴMicrosoft˾Ϊ׸ʵʹĴͬ롣̫˼йıȶǴ и˷һֺ뷨ýϷǱȶǴġ̨س嶯ذһ͵Ժʿ̸̸ԼȶǴĵıȽϣλԺʿһرԼйıȶǴġ
һInternetӢҵYahooNetscapeʼһͳ£طսʱԱ߳MicrosoftӰõ硣ǸɫС˾ڹڱؿ
ˮ׵СӺܶ࣬þͻ˾ҵڡáỷ˵شڲ죬ЩɣģδؾóɹȻ֮𡢿ԭǵĹʵݲð޵Ļӵë֮ءҪпԷУͲҪȥģܽᾭѵϣ߿߾裬ⷸͬĴ
4.2.1Է֮һ
Ҵӿ˾رչ˾һЩ͸ܡ
Ҵӱ꼶ʼдͼγһһе˱˶ʿ΢רҵ1997괺ҵѾõ㽭ѧCAD&CGصʵҶʿѧλҸػŴһԼϲרҵѧĵһ죬˳رʵҡŲ5ӣ򲻶رŵŮѵ˼ΡΪ˲ðأҾʵʵץһݼֽվĶͻȻһɫˣԱ֮һҶϺȣڸʲôôԲͷ˵ıֽҾһƮƮȻȥӵˣӭ⣬³ȡèеèҡ
գҾͷʵǴԹСˮˮʵҵıͬѧΪԻң㽭ǲǶԣҿ㲻̫
һڹʱЦĵطȥҲա
ķ۵ؿCAD&CGʵңȴδȫˣŻҶûʵҵļһг򣩡
ʱʵֻһһ裬һһ롣ЩһһЩǮҡһ̨￪19978£ȥμ׽йѧԴչʾ·ҲǽģͬѧΪ׳ʱ˵ܻ񽱣ͻصʵҸɻɡ˵һõһǱʵֵĽĿꡣ
˵һųƴѧǡصûɶӦҾݵļ緢һݼѶһɷң̸һ죬ҷּ߻ǲ̫ףɴԼдűҺһ棺¾㱸ֻͶʡ10·ұ㽭ʡӢţѧֻйѧͷչصȽҵţμӡҵֵ̳һݽ˵ƵƵϵӣ10ͶߡѡһλҴһǳϻˣˡپ޹˾ʱҿνâ䣬׿ȺƬӡšҵΪΣʵֱĿƼԱ㽭ѧ뿪ңҡ֮֮顱ס
ҵʱ뿪һΪSoft3DͼϵͳϵͳߣӦ˾Ϊپ壺һǱʾ侳Ҷͼμ׷󣻶Ǳʾ쵽SGI˾ֵܵľ磬Ҷҵ׷
Ҵʵһλʦ飨ͷԱҵĴ󣬹1.5ʦֵΪϴһ˫ӣ˾ǸˡһļϣΪSoft3DƷ㵹һ뵽Microsoft˾ĶάWindowsϵͳSoft3DǱʱǾֲ֧徢ʮ㡣19987·ݣһ׼ȲǿֲȫƷ˼¶ûҪ199810·ݣù30Ԫʽֻùرչ˾ұһλ׽ȥ͸ġºҲķڷسԼʧˡ
ʧһ֮ʣҿ͹۵شӿԷǶ˵ҺͶʷĴдԼز۵˾
һҵҪ
1ʢڲ߱£һʯ쾪¡ҵƷѶȺܴһЩŵо⣩ֻ30ԪʽС˾ûв뼼ȥ¡뼼ԣɷҵƷ
2ԼΪĶûгΪȥƷΪԼϲҲһϲڹвɺг޷гжǵҪʲôǸϹæһ꣬һûҪгҲɷҵƷ
3ˡʵֱûдﵽĳ̶ȡõܶĿѧʱֻһֹǶҲܺҵȷϡΪҲ㣬ѧʶǳûиˮƽָңŻˡ
ͶʷĴ
1ͶʷǸˣҵƷһ˾Ƿ񶨵ġ˺üֵϣɹ飬ʹSoft3DɹֻҪǮСֶĲ̬ʹȷĿԷú޼ֵ
2Ҳҵеѧűˡд˲ĺͬҾȻǮ±ҵ30%ɷݡΪͶʷʵ˫һʽ51%ҳ49%֪Soft3Dܳɹ£ȴΪռҵı˶ɥʧӦеľյ˫ʧ
رչ˾ʱеĹ̶ƲͶ˼ֿ15ԪȴһáºʶƽЭʱ˵ֻԹԼ޴ʿźͬ
ҾԼڴ޵ʵֱƷʼϲиŬұǻۡԼķܶûʲôԺڵģѧԶʧȥĶ࣬һλøá
4.2.2 Է֮
19993£һλͬͬͬͬʱҰæһݳ8ҳͶʷ
ΪʲôͶʻ
йӦϢʷ
¼ơʷпԷ
㽭ʡӪҵϴеǮͶҶˡҵʱæŶԼв©ȱڸϰƵļγ̡ͷؿǷݡʷñȥдSoft3DƷʮϣǺɵط
ʣΪʲô
ҴԻΪе˶
ѳЦǷϻͶ߶еĻͲ˷ˡҪдũҵҿöĿԷ棬Žˮƽ
˵ããͿͬͬͬͬʱķϣһѡ
ҾΪӵмʮʲһȺũ񲮲дһ6ҳֽĿԷ档ˡʷǸܵ͵Ĳзҽժ¼һΪзҲʶдʷˣȻܶ࣬Ҷ˺޶⡣ҵĿԷд֪߱ʶ˿ģвýΪճϢҵһЩЩһ̶ǺģǲϽġ
áʷĶҪݣÿε˼¡
һΣInternetҵĺ𣬵óһЩۣǡͶʻĹؼ۾֮һҪ£
ʻӢҵŻYahooNetscapeЩҵһص㣬Ӯ΢תǵ㣬ȴﵽʮڡлҵֻҪһУĹɼ۾Ϳֱϣκιжǽǵʲô̶ȡ
ڶΣڹͶInternetҵļôǽͶInternetҵĹؼ۾ݡҪ£
軥ͶߵĿãƱܴɵ壬йڶڼƶƱʵַ
ŲõĽҵĻƽӮڼɵʵϣڽ뻥ӪվֱӳɱܵͣĿǰڵľ󲿷վΪСС֣ûмվۺʽע뽨衣
ͨһվȫȫĹӰ޿ɹġƣЧԶԶͬȽĵӡֽ档
Σ÷˵ԼѾһ˾ӪһСйӦϢվ㡣ĿǰһЩ˼ϣͶ200Ԫ/꣬ķԺܿʹŹƱǧѷꡣҪ£
ǾӪվ2ʷˡ꾭Ӫɱ9Ԫֻһ֡ȫ10Ԫ˵޷״ϣȡʽ200򡣡Ԥ12002000򡣡
վÿϢ๤κһվеǶС
й羭Ű飬ÿܸµÿո¡
ÿϵͳһҪͶʹá
ĶΣ˵ԼɽˣҲԴɽ
һԡʷһεķ
InternetӢҵǵ͵֪ʶòŻ˾ӪҵǼ΢ġϿһ̶ʲԱԵģûӪҵInternetҵмߵĹмֵֵͣǡΪʲôܹм̵ǰġǡʷһʼۣ
лҵֻҪһУĹɼ۾Ϳֱϣκιжǽǵʲô̶ȡ
ȻǺΪʹҲšҲȥŻ˾Ը⾡׵ͨ׵ؽŻ
ǰInternetޱ޼ʵÿĽ֯վÿվٿԷһ̨InternetĻϵмܹ໥ͨѶڵһ̨ʮǰ£޷̨Internetжôǿı졣Internetزҵ֧ҵ
Ϊһ̨ϿԿϢ밲װһֽҪͬڳһȷͬʱҵһλΰSGI˾˾֮һĴʼԶ׿ʶͶǧԪָյǳ˾һλվǰӢۣһλվںӢۡ˾еʱû̸ۣ󣩣ʵ̫мֵˣ΢˾±磩˾еһֵʮԪ˾۲Ʒõֻת˾ģԶȲеļֵмֵɲһInternetҵ˾ôԻ͡
ٺӰɡһЩƱƷһ겻ľӪ룬ֻɨ޲ֲݡа׾סն¾޴Ĺףǧۻġġʷֵֹǧڡ躼У1Ԫң治֪жֵȻǧٱҼһҲС˴ġֵٸڣ֪ͻƶһ첻ԪǮͻᰤ
ȥ˵Ż˾ɡ
InternetϢʮַ㣬ƽInternetķչһ⣬ûû֮ǰ֪ܵҪҵϢʲôط绰ҲҪ֪Էĺ룩̨ܶɡʱҪһֽϵͳרڴϢһûһֽСڡֻҪ롰ڡ֣ͻںܿҳȫйءڡվַҪԣһ⽨ʳĲرͼھļˣͷͷǸᣩ棬ǳŻ˾ù˾õձͷSoftBank˾ͶʡҲŻ˾ʵ̫мֵˣԹֵܿﵽͶʵİٱȥ뷢Ѿ̫ˡ˼Ҷõɻˣǻùɻ
ŻС᣺ֻھ߱г󡢼֪ʶƷҵܳ£ſʹһ˾ĹֵԶԶ䡰ԭʼͶ + Ӫ󡱡ȥͶһûмֵĹ˾ֻϿͶʷͶʳʶ
ԡʷڶεķ
1軥ͶߵĿãƱܴɵ壬йڶڼƶƱʵַ
ۣͯ¡ʵ۵װǡǸ÷죬ͶʷǸʵۣ൱ɵĳô׵飬ΪѧҵˣйϢҵҲ̫
2ŲõĽҵĻƽӮڼɵʵϣڽ뻥ӪվֱӳɱܵͣĿǰڵľ󲿷վΪСС֣ûмվۺʽע뽨衣
ۣ˵뻥Ӫվֱӳɱܵ ǼֱǺڰ׵ߵгɱͲССֵģйISPInternetӦ̣չʷȫ֪90гɰǧISPҪԭǾӪɱžֵǮ̫߶û̫١ΪʲôһЩISPСС֣ΪȫʣһճһڻڻָֻŵĶйŲйϵISPΪʲôûмվۺʽע뽨 Ϊ
뿴ġй硱йISPչʷֱҵʿйſѪʷ˲ISPǱӮʱաй֮ǰͽйԼġСInternetߡҲЩ¼ͶʳǧͶʷУڿ̫1998꣬ӮʱաܲŮʿһλвŻISPҵߣ»ǿнְԭдҵ߸ȫˡҵ硣˭Ǯжࣿ˭йŸܿƻ
3ͨһվȫȫĹӰ޿ɹġƣЧԶԶͬȽĵӡֽ档
ۣλһƪ˵йϰͨInternetȡϢĴ˵1000ϡһ򵥵ףйϰյĹʲ˵ʮ֮һйվϢԶʮ֮һйInternetʲʮ֮һ绰ֱĸߡ˼˻˵1000ϡ
˵ܶܳɹйԳɹInternetϣ1000ѶȣԶɱͨ˾
Һͬ¶רҵĲʿInternetǶԾ۾һҪҲûʹInternetרҵϹӣͨϰո˵ˡûȺûISP˭һ꣬ISP͵öôȥȫӰ죿ôȥӭӲýĹԴ
ԡʷεķ
1ǾӪվ2ʷˡ꾭Ӫɱ9Ԫֻһ֡ȫ10Ԫ˵޷״ϣȡʽ200򡣡Ԥ12002000
ۣԿľӪΪ10/꣬ǸɻôһӾͿԾӪͶ200򣬲Ԥǧҵѧ·Ϳܵøӵһ죬ɣ
2վÿϢ๤κһվеǶС
ۣ仰Ż˾ҿڡ
3й羭Ű飬ÿܸµÿո¡
ۣģ̨»վӦˡ
4ÿϵͳһҪͶʹá
ۣ飬ǹš˰šСϵͳ̵һ˺ſġ
ġԡʷĶεķ
˵ԼɽˣҲԴɽѡš
ۣͶʻɲΪţҲΪɽϰգһѧĶסҵͶʲӦô̫ĸɫʣŵķУҲҪ
ϵķȫ̷˸áͶʷŲҪͶISPϧû˷ҿ˾ʱķ
4.2.2 Է֮
˵һܻϧ˵ڶܾúЦ˵϶
19991£һӪҵGһ⣺ҸһͶ100ԪһҴ»ϢӦÿ˾ŵһڴǧԪǲŹȥ5£Ͱ100ԪˣʲôҲûʵڲô£ҷ
λGҵ2.5ʮļԸˬͶʵǸ˽Y³YԳӢĹѧƾܶԹ˾гһץGϲ˵Ǯû⡱ҲͶ100ԪҸY40%Ĺɷݡ
GY̸ʱͻȻƻԳGԶݣ뵼ĽЩͬˣYĸ߼YȻſڿӣϲ಻ϣƺӷģһʰҼȥιĹ˾ͲƷʾҪרҵתרҵYЦITҵͲˣǾӪһǲƷǹȽ˼롣ιҵĹ˾㿴ĶֻȥᡣƨȲԪʣΧǡʫҸֻ8깦˵ҲITҵ֡Ҷ10ѧûˡȽ˼롣ӢѧĳɹΪԼѾǡղ۹˥ܵԭбҪӢдһ
ҶG˵YΪ˼両䡣ӦϹرչ˾Ծ󻼡100ԪҲ𣬾ѵɡ
G˵Ǯû⣬100ԪڰŶĲˡ
19995£Gһ⡣
˵Сְϴ˵úеҽ˽ѵ
˵Ǻ£С֪͸Ǻú
̾һ£Yֻ100Ԫ
ҵʱҭ׵ѵGYǺöرչ˾㲻˵Ǯû⣬200Ԫá
˴СӣYÿһҪǮʱظ֤¸¾һ١ٶǮϣܾȻ˾ڸô죿
һ20ְԱ˾Աֻĸʮ硣200ԪĲ񱨱У100ԪڳԺֺлߡֹ˾ȫҩɾȡ̨˵ûһʱҲӦ5·ݵ8·ݣ壬G˾YЩࡣ
ģΪGͶʵĹ˾GҲ֡뷽跨סYĲʱYܴGڳǮGѪȴԴ룺ѪκҵĲЩѪɡ
YֺһڵƭHע⣬GͶ100Ԫ½һָơ˾˵󽫱ȻϢӦÿӿɹۣҪ׼֮ͬʣż·쳣ǿֹ
GǸˣ̡̫üֲܣֲĺ˱۸G˵Ǯû⣬˽˲Ʋᱻƭ⡣Ұ©סɣҰĵػѧУ격ʿѧλġ
8·ݣҺGӣͬѣǿаǸ˾GĹУԱǸ˾˽ӹܣȻÿ¿𲻹ԪGܵҾͲȥG˰̡
ǰδ˹ĶǵϷµľƣǸ˾Ա͸¶YӢƾԼϺĳרѵģΧǡеķ轥ٴѧʿƾ֪߳ܣYȴֺƽ޹ΪӢ絣ģӢٹйг衣
G˾ӣСˣʵڲִˡҺ꽻GһμʱҹʼΣҴԻ300Ԫ򼸱顣GΪżôͰᵽҼסɣҼã԰ĵѧϰΪҶסҾͿڹҵķסҡԴӶѧҵһʳ죬ϴµݳޡΨһ鷳ҵܶѽͣҲǱˣΪ˹ҵ棬ѲôġGеĲŮģûд޵Ů
4.3 Ϊʲô
мԭʹѣ1ͻ˵󣻣2䶯3Աͻ
4.3.1 ͻ˵
ЩͻֻʵĸоȻ˵ȫصĺܶڸ罨裬Щλ쵼Ͱ칫Ա಻ʲôãҪϵͳԱ๤̵˵ۣ²̰ܶ۸
ЩͻǳҪʲôȴ˵ס߿ܺܲΪȻ;ճɣ˵ЬӡǷǳ˽ѵĽţû˵ŵĴС״ֻЬȥԣԴʱоŻЬȻҲͨۻԱһۿͻ֣֪ӦôʲôЬ
ͻͶܰ˵ǳɡ졣ͻȫҲð졣ԱͻȲɿͻ񶨲Ҫģȷͻµľǡװߡ붮СĿͻǻʵʵЩͻԼϵ۵İְ֣ôͨЭ̶ѡ
4.3.2 䶯
ɮ˵Ҫʴ֮ģͲ֮ʥȢס
ģ˵ˡϲ֮飬Ҳ˱ö˶ʡ
仯
𣺾ʷأûһĶΡΨһֻĶεĿͻǸˡļһﻹ͵·ϱײġ[Cline 1995]
Ƚܡ䶯ʵɣ䶯ʱʧ롣ס䶯ڽʱҪ
1ܵطЩȶЩױԱڽϵͳʱĺĽȶϣ򽫻Ծͷ
2ںͬһҪ˵ʲô͡ʲôͬպƤͶࡣҪֹ󺫸ڱȾƳԷʱʲôͷ˼Ҿ͸ڣղŴӦ¶ﳤȥ
4.3.3 Աͻ
и˼Ǳ̽鱨˾дһݱ棺׵ǳǺͣĸӹǰɤżҹ˫ǿ⡣Ȥǣסһֽˡļ棬Щȫ˳
ϵͳԱܶȫšͻ󣬲ͬķԱвͬ⡣Աˣܻᵼ¿Ա׸ɻֺáҶѧʱд⣬ˣдö೤֡ԷԱд˵Ҫͻĸ֤ܸӣ˫̫ףбҪ뿪Աٹԭͣ˫ٴ֤˵Ƿȷ
ڿͻ಻ǿܾܵģһЩ޷ʵֵʱͻϵͳԱĽ𸴸ˡ
һԱϲͻڡϢٹ·桱ֺôͻýζĶĿͻԱ˵õúܣжɡƵĳߴͷٹ·ϣȥ
ΪʲôϵͳԱĹҪͨԱߣΪ
4.4 ν
һ˵ѣҪ֪Ѷ
֮ͷоʲôɫҪΧ⿪չ1Ӧ˽ʲô2ͨʲôʽȥ˽⣿
4.4.1 Ӧ˽ʲô
ܵгǣ֪ʱҪȴӺϽһġ壬ٴϸϽABCDE̽˿֡Ӧ˽۵⣬˽ϸڵ⣬ͼ4.1ʾ
                                      Ӧϵͳ
                                       Ӧϵͳ
Ϊܣ                                     ӦĽӿ
ͼ4.1 ʱҪ˽
һϵͳΪ S漰ܹܺ㣬԰ͬ򣨼ΪD࣬ÿӦһϵͳ
S = { D1D2D3 Dn }
Di ɸ⣨ΪPɣÿӦϵͳеһ
Di = { P1P2P3 Pm }
PjɸΪܣΪFÿΪӦеĽӿڡ
Pj = { F1F2F3 Fk }
ͼ4.1ṹдɵ˵飬Щֻ˽쵼Ҫ˽ϸڵļԱʡд˵ʱӦע⣺
1Ϊÿע͡ΪʲôóԱ˽ıʣԱѡʵļʵִ
2˵жԣǰìܡжԻǰìܣҪ·
4.4.2 ͨʲôʽȥ˽
˽ķʽкü֣
1ֱͻ̸ԱԱš족ͷǳ٩
2ЩͻԱֲ²͸ʱҪмҡЩĺ㻹ûпʼʣܽǰеһϯԣʤʮ顣
3кܶܿͻԱ붼û̫ɡҪĺŵͬŵ;ȡȱΪ䡣ǰ˼Ȼѧѣ˾ͲҪܾɡ
4.5  С 
Ϊ˲ԷĸҪأáỷˣ½˼˴ͷɥİѧ˿͹ۡѧĿԷʱҪϣҪѧϰеˡлǲУоͽ飬о顣
²ûйĴѶȣŻˡˣ鷳ʮǰΰëϯ˵һ˶󡱣й˿ڱĵ13ڡ˼һԻ͵ˣȴ˳صĴۡ
ҪÿԷ
  ϵ ͳ  
ϵͳǰתΪϵͳҪĻڡϵͳƵڸϾϵͳһе۹嶼ֽϻԶ϶ϵͳƱضϵͳҪŬ֤ϵͳơ족һ㡢˼ѿ״̬
Windows NTһλϵͳʦӵ8ܳMicrosoft˾һЩԱʮۺ졣ֻĽܷߺޣΪÿԱб³ΪϵͳʦϵͳҪȴıѵöࡣͻȴδ֪ӦʲôϵͳǮÿͻ⡣ʮǺݡǧǰն´ѧʿɾ׵ϵͳƣʹΪáúֻʣ̾ƻķˡ
½ϵͳƵķݣϵṹơģơݽṹ㷨ơûơϵͳΪ壬ô
1ϵṹͬ˵ĹǼܡĳһĹǼǺӣôιݣһʼնǺӣΪˡ
2ģͬ˵٣ضĹܡɫģ֮һֻ֣мֶȴ޶顣ģ֮һͣͽмֵɵļֹԷ˵ǻΪһ壬ʹ֮޷д֮ҡ
3ݽṹ㷨ͬ˵Ѫ񾭣پܷӹܡݽṹ㷨ֲϵṹģУЭϵͳĸܡ˵ĶȻԶ٣ʧˣ;ֻܷءɥʧ˵Ĺܣưͣȴƴ˵ݽṹ㷨ʮ沢ʮֿЦ
4ûͬ˵һһġ׷ϵͳҲ׷ڵģǿͣģѺáļӿ죬ȤȥƷζز¶Unixϵͳǽ׳ĺӺ͸ˣôWindowsϵͳĵСͺ꾫벻WindowsϵͳȻ˷ˣռȥгмڴˣӦùŮʿױƷʿǮԻøõĽ档
ڽϵͳʱҪعעأȷ뾫ȷԡЧʡԡԡɸԵȵȡʹϵͳˣҲζžܲõϵͳڳơԡάȻڻҪĹĸڳ˲Ѻ¸ˡ˵ϵ۰еŮʿƳʹʹ·ʱЩ˫ŵأЩŵءϵ۵һúܶŮ͸ġڿʱһҪȡѵ
5.1  ϵṹ
Ժָӣ
ѧпѧѧִѧѧҿԡʡͰһ˻ô󻯣ǻΪʲôΪǡʡǱģѧеʵĶ
ϵṹϵͳʵĶ
1ϵṹǶԸһֳõϵṹձõģԸЧشֶĸһ𡰷ӡǵϾͻַӵӡ󣨶ǵضӡ󣩡ӡǶס޻칫һֳ󡣲ǰ칫¥񷿣ͬһཨͬĽ֮䶼зǳƵϵṹ͹췽ʽ13йÿ˶Ҫرķʽķӣô960ƽؽǧٿףղð
2ϵṹһʱڱȶֻȶĻ£ǲܸɵ飬ܷչѧǣʱ޿̲˶СǵڵϱȶǿǵسԷ˯ѹʶԼǻĵµľ仯ᷢ仯Ǹ޷ӱܵʵϣ仯ʱֻЩƤƤëë޸ģǧĶϵṹǶס޵Ҳ䶯Ծı䷿װ諺Ͱ裬ÿα䶯ʱҪȥǽڵػ仯ʱԱòȥ޸ϵṹôϵͳʧܵġ
õϵṹζʡЧȶڽַǳͨõϵṹνṹͿͻ/Client/Serverṹ
5.1.1 νṹ
νṹôһֳʶЩȽϸӣûһ꣬ͰΪü㣬һһȥ߲ĹǽڵͲĹ֮ϡιϵҪ֣¼ϵ˳ڹϵ
һ¼ϵĲνṹ
ǴСѧһֱʿоҵҪ20꣬ԷΪΡ֪ʶṹֻ㣺˽ӡ͡šʮ꣬ͼ5.1ʾһشڽϸ߲εѧӦöеͲε֪ʶڵͲѧ޷и߲ε֪ʶͼ5.1Ĳνṹ¼ϵͬھУϼ¼¼ϼͼ5.1ĲνṹһϵͳĽṹôϲϵͳʹ²ϵͳĹܣ²ϵͳܹʹϲϵͳĹܡ
˳ڹϵĲνṹ
˳ڹϵĲνṹͨѶֻ֮䷢Ϣֻܱһһ˳򴫵ݡֲνṹľ֮ǼOSIοģͣͼ5.2ʾΪ˼Ƶĸԣ綼㣨Layer򼶣Levelķʽ֯ÿһĿĶһṩһķ񣬶ʵһϸڶһΡһ̨ϵĵnһ̨ϵĵnжԻͨĹǵnЭ顣ݲǴһ̨ĵnֱӴ͵һ̨ĵn㡣ͷݺͿϢ´ݡͲʣʵʵͨѶշݺͿϢϴݡ
ÿһڲ֮䶼нӿڡӿڶ²ṩԭͷ񡣵ھһӦٲ㣬ÿһӦʲôʱкҪĹڲ֮䶨Ľӿڡӿڿʹͬһ׵ĳһʵ֣Implementation滻һȫͬʵ֣ŵеĵ绰ߣֻҪµʵϲṩͬһͿˡ[Tanenbaum 1998]
ϡˡʱʮ
ϰˡ˼ʮ
ͼ5.1aСѧʿڵѧϰ׶         ͼ5.1b֪ʶṹ
ͼ5.2  OSIοģ
Ĳνṹ
ĿǰڴҵӦϵͳлһְмMiddlewareĲνṹͼ5.3ʾ[Jacobson 1997]м֧ƽ̨޹صķֲʽ㣬DCOMCORBAʵ֡
ͼ5.3  мĲνṹ
5.1.2  ͻ/ṹ
Ȼعһڵĵ绰ϵͳAlexander Graham Bell1876˵绰רʱڵĵ绰һһԵûԼ绰֮һߡһ绰û绰ûͨnߵÿ˵ķں̵ܶʱڣﵽǴݺľĻҵĵ绰ߡԣͼеĵ绰ȫͼ5.4aʾвͨġ
绰˾1878꿪˵һ֡˾Ϊÿͻһߡ绰ʱͻҡ绰ʹ绰˾칫ҵԱԺҪ󽫺зͱзֹּнʽģͼ5.4bʾܿأϵͳĽ־ͳڸءҪܴмĳ;绰ͳ˶֣ԺһչΪ֡[Tanenbaum 1998]
5.4aȫĵ绰ϵͳ               5.4bнʽĵ绰ϵͳ
ͼ5.4bеĵ绰ǿͻ򣬽ĵĽֿǷôͼ5.4bǵ͵Ŀͻ/ṹעͻͷָָӲһ̨ԷŶͻͷ
ͻ/ṹȻŵ㣺
1ԼеķʽЧʵعͨѶǰ潲绰ϵͳĹ¾Ҫ˵һ㡣
2ԹԴϢϵͳУϢκοͻͨʷϢ
ͻͷ֮ͨѶԡ󡪡ӦķʽСͻ󡱣RequestӦResponseͼ5.5ʾ

Ӧ
ͼ5.5  ClientServer֮ͨѶԡ󡪡Ӧķʽ
á󡪡ӦͨѶʽĻΪ˽ۼRendezvous⡣Ϊһ⣬һͼڷĻǽͨѶסٶҪ˵Ĳٶȸ߳һ󣬸óʼִвԵȳϢڼ΢ڣ㷢ֶԵȳ򻹲ڣǾͷһϢȻ˳˺˵ڶ򡣲ҵǣڶʼִʱҲҲһ˳ʹͨѶǵִٶôߣͬһ˲ϵϵĸʷǳ͡ڿͻ/ṹУ루ڵأȴͻġ󡱣˾γˡ󡪡ӦͨѶʽ
Internet/IntranetĿǰWeb ݿ ṹһַǳеĿͻ/ṹͼ5.6ʾֽṹŵǣͻͳһⲻûʹ÷㣬ʹÿͻ˲ά⡣ȻάĹԶʧˣתƵWeb ˡWeb ˣԱҪýűԱдӦҳ档MicrosoftASPԲѯݿWeb ҳУʾ
HTTP 
ѯ
HTTP Ӧ
ͼ5.6  Web ݿṹ
5.2  ģ   
ƺϵṹ󣬾Ѿںȷ˸ģӦʲôܣӦϵṹĸλáϰߵشӹϻģ飬֡ܶģ黯ƵĻԭΪܶģԽͿԡάȽ׶εĴۡǡܶζģ֮䱣־ԵĹһϵͳҪĳҪģ໥ϲʵ֣ʱģ֮ҪϢ
ֺͽܶģ顣ûнʱܸɻûʱԿ·ϣܵÿ죬ôʱһҪұ˦ۣҽʱҪ˦ұۡһģʱҪǡģ͸ṩʲôĹܡҪǡģӦģ齻Ϣ
ڽģӵأϢءھϡ͡աԡ
5.2.1 Ϣ
һڲгĿʦ̾ҪںͬѧмƵͬѧôͲӰ쵽ǰ˯ͬѧ
¸ǣû´Ӧðѻҳ󲻿Ϊ˾ĳģΪȥͬһϵͳеģ飬ģʱҪעϢءӦģҪ֪ݣһݡ
ģϢؿͨӿʵ֡һģṩ޸ӿڣInterfaceִģĹܻģ齻Ϣֻͨùнӿʵ֡ģһC++ôģĹнӿھͶӦڶĹкģһCOMôģĹнӿھCOMĽӿڡһCOMжӿڣÿӿʵһЩļϡ[Rogerson 1999]
ҲϳĹңΪ׷áϢҵĹңģ黯Ƶķ˳ģӦúܶáϢǰìܣЩУ
5.2.2 ھ
ھۣCohesionһģڲɷ̶֮ȵĶϣCouplingģ̶֮ȵĶھۺصģģǿϵģͨζھۣǿھ۵ģͨζģ֮ϡģ׷ǿھۣϡ
һھǿ
ھ۰ǿȴӵ͵¼ͣ
1żȻھۡһģĸɷ֮޹ϵΪżȻھۡ
2߼ھۡ߼صĹܱͬһģУΪ߼ھۡһģȡֲͬ롣߼ھ۱żȻھۺһЩ߼ھ۵ģɷڹϲ޹ϵʹֲܵ޸ʱҲӰȫ֣ģ޸ҲȽѡ
3ʱھۡһģɵĹܱͬһʱִУϵͳʼЩֻΪʱعһΪʱھۡ
4ھۡһģڲĴɷصģЩضĴִУΪھۡ
5ͨھۡһģгɷֶͬһݼͬһݼΪͨھۡ
6˳ھۡһģĸɷֺͬһأһɷֵΪһɷֵ룬Ϊ˳ھۡ
7ھۡģгɷֶɵһĹܶǱģΪھۡ
ǿ
ϵǿ¼أ1һģһģĵã2һģһģ鴫ݵ3һģʩӵһģĿƵĶ٣4ģ֮ӿڵĸӳ̶ȡ
ϰǿ˳ɷΪ¼ͣ
1ϡһģֱ޸Ļһģ,ֱתһģʱͷϡʱ޸ĵģȫ޸ģ顣
2ϡϵģ鹲ͬһȫͳΪϡ
3ϡһģڽϴһźţ翪ֵ־ȣһģ飬źŵģĶźֵеΪϡ
4ϡģͨݸӵڲݽṹΪϡݽṹı仯ʹصģ鷢仯
5ϡģͨݻ͵ݣΪϡ
6ֱϡģûϢʱڷֱϡ
ģϣ;ʹϣÿϣƹϵķΧʹϡ
5.2.3 ա
һģΪһ屻ãģзԡһģԱ䣬ģпԡ
ϿģСաԡìܵģǿ͹۴ڵġһʱǺһԽ⡣ӦݹһЩҪ棬ͬʱԺ󲹳׼ģڡԡǻ顣ԡҲҪģΪǲܵȵȫսϢٰѳɱõģ顣
ģġաԡʵ϶ӦеĿɸԺͿԡ̵ķгƣѿȾз־пԵģ顣ƷԽϺõؽ⡣
5.3  ݽṹ㷨
ѧݽṹ㷨ǱдЧʵĳҲҪʣڼٶĽ죬ΪʲôҪЧʵĳ
ΪǵһģҲ첻ٶȺʹ洢ϵĸ½ṩ˴ЧߣԸЧʵĳԶʱ
ƸЧʵĳǻõݽṹ㷨ǻڱСɡѧϵÿγʱѧϰԭԼݽṹ㷨ơ
һ˵ݽṹ㷨һݵıʾصĲ㷨ֵָ㷨ݱʾĹ۵洢еһҲһݽṹ㷨ָݽṹʩӵһЩһԱм롢ɾȲһ㷨ҪԴƣResource ConstraintsΧڽã㷨ЧʣEfficientġһԴƿǡڴ洢ݵڴޡߡִÿʱޡһ㷨֪㷨ҪԴ٣㷨ҲΪЧʵġ㷨ĴۣCostָĵԴһ˵һؼԴʱռġ
ӹɣǱдΪ˽⡣ֻͨԤȷȷﵽĿ꣬ϣѡȷݽṹ൱ĳԱһֱ̣ѡĳһϰʹõģⲻƵݽṹƳһЧʵĳʹü򵥵ƾܹﵽĿʱѡøӵݽṹҲûеġ
ǶԳõݽṹ㷨оѾ൱͸ԹɳһЩԭ
1ÿһݽṹ㷨ʱ䡢ռĿ档һµʱҪ׵Ȩʱտ㷨ЧԵķҪ㷨ԭһҪ˽ʹõʵԣ磬ݴ洢ڴ洢ڴУвͬĿǣ
2뿪йصʱ䡪ռȨ⡣ͨøʱ俪ȡռ棬֮Ȼʱ䡪ռȨձشĸ׶С
3ԱӦóֵ˽һЩõݽṹ㷨ⲻҪظƹ
4ݽṹ㷨ΪӦ÷Ǳ˽ӦõѰһʵӦƥݽṹ[Shaffer 1998]
5.4       
ĳа취Լ졢ʮ㡣һ죬һΧŶκһƹھսȫʤˡΪΧŶδƹ򣬸ƹھΧ塣ûı̼Ϥò˵£ҾһȽİġûѧ
λ黭Ĳʿ͸ᡣҴͷβֻˡʵܲšλָ㡣ȻҲ٣ȴ鷨ĽǶ跨֡ҼȲ鷨Ҳ֣ƺĲԴڶʱرϲдû򣬲ҳͬѧʾŪҾû񫣬дһƪûѧĶ[ 1997]·ʵҵͬѧҴסҵ֮ʶãȻʹ߾Ӷࡣҵʶӣ֮ززְƪժ¼ˣŵɡ
5.4.1 뵼
Ƕ׷еġȻûԸԼĳҲûûȺóªĽ档ҪûҪԽǿûĹͬ
ĸܳ޷˵ʲôǽͬʱֺʵ˶ȥͺ͸֮ܽ㡣ѧһѧʣ˶ѧָؽƹйԱ˵ľоڳԱܵĽҪʹɹι˽ԱƶɵĽòûϿɡ
Ľûɸоķζźƣͣ䣩ûĹЧʣӶһΪûܺΪûס˻淢չʷϿԿǶԽԼڽеĵá
Ѿ޷ʱһıΪļ򵥽糣Уַ˵ȡڵһ濼˵̫٣ûȤߡżķչ˵ڶֱӲݵĽ档ʹͼΡý飬ֵؿ˶ֱӲݵĽʹȼ˿ƾʶ񡣸߲εĽģ˵ռ䣬ʵ
˻˵ͼԽԽûͨ˻򽻵
5.4.2 ں
ڴӺԡ͹ں
һĺ
ĺָǷǢ治ʺĹܣô潫ôں޴̸ԽĺǽҪأ߲ҪƬ׷Ưʧ򻪶ʵĺԼᳫ㣬ǿǡ֡
ԲĽɻͼʹû⡣ʹܣҲʹûеһЩϲΪƷһζʾԱûĹעⱾ޿ɷģʾǷһȱһ׸ӵĶں̨׳Ľ֮ȴһͨı༭ûȴûе̶ǾϲԲĽֻˡ
ķ
ķ࣬һǡһԡǡԻ
ҵӦĽעһԡ߱עͬӦеĽ棬ûʹЩϰߡҵϰF1Ϊȼĳ߱ĲõF1ΪֹȼôûõֻF1һɲǣĹʹ군ûһҧʮ¾
ĿǰеVisual C++Visual BasicDelphiC++ BuilderPower BuilderȣܹٵؿǳƵͼû档Internet/IntranetΨһĿͻΪûϣȫһµǧ򻯵Ӧ
УиԻĽȻȻڵĽһ˵רҵԱ濴ˣ֡׺ΪˮĸоҿһSoniqueķֵʱĴޣ̲סŮУͼ5.7ʾ
ͼ5.7  Soniqueļֽ
Ǿ㲻ʲôӦ׷һԡ򡰸Իڴ죬ǶʱЩϲֻҼƬ߲ҶڹԡϴʱȴҲϲ·
Ĺ
ܽûĹܣȴǱΪٵġûʹýʱֱӵĸй⣬кܴһǼӵģǴǵʹУ緽㣬ʵõȡͼûȣԭʼĽ棬ѼѿûԣʹԻøЧʡиЧʶӮרҵʿϲڵUnixϵͳǳͷβϵͳ˵һ˻Ľضй
ƵһЩ⿼Ҳ˹跨ʹҲʹIBM˾1985Ѿ˲˹֧ġApple˾רŽ칫ṩһЩڲʹõļϢƷ
5.5 ϵͳʾ
֧ЭͬĽʽάͼϵͳ
֧ЭͬĽʽάͼϵͳϵͳƣΪµʾ ȡߵĲʿĹ[ 2000]
5.5.1 Ʊ
ͼα׼ͼҪĵλ3DӦóĿʹ3DӦóĿֲԸáʷֵͼα׼APICoreGKSPHIGSPEXGLDoreRenderManHoopsOpenGLȵȡ̭ĿǰOpenGLΪϹϵ3Dͼιҵ׼UnixPCƽ̨õ㷺ӦáOpenGLṩٸ⺯Էػƾʵе3DͼΡڿʽ3DͼӦóʱͼεĻֻһֹĹڳݽṹͼζάͼûϡ
OpenGL봰ϵͳ޹أṩκνֶΣɳԱԼдеĽܡOpenGL ı̽ӿǵͼCṩɸõĶӦóܣЧʲߡΪ˿˷Щѣͼα׼֮ٽ߼Ŀ(3D Toolkit3D Engine)OpenGLĿOpen InventorIRIS PerformerOptimeizer/Cosmo3DԼGLUTȵȡOpen InventorΪǽʽ3Dߵġʵ׼Ȼûһ3DеӦ3DĹ㷺ӦҪĿ֧֡
żͼμ缼ѸͷչߵĽڱСҵСֵڷֲʽ⻷Distributed Virtual Environments, DVEsͼ֧ЭͬComputer Supported Cooperative Work, CSCWͼϵͳѳΪоӦõȵ㡣DVEsϵͳDIVEdVSMRRepo-3DȡЩDVEsϵͳȱ3DߵĽʽͼιԼͨԣͨõ3DOpen Inventorֲֲַ֧ʽЭͬڴϵͳͼ֧ſ⡢Եȷڲ죬DVEsϵͳ3DԷؽʹá
Ƕ෽3DӲPCƽ̨֧ЭͬĽʽάͼϵͳͼ5.8ʾУ
1Intra3D 2.0ǻOpenGLͨýʽάͼߣڿٿWindow 9x/NTµĽʽάͼӦ
2CNC 1.0֧ЭͬͨѶϵͳCooperative Network Communicator֧֡ģʽ롰鲥ģʽķAPI
Intra3D 2.0CNC 1.0Կٿ֧ЭͬĽʽάͼӦ
ͼ5.8 ֧ЭͬĽʽάͼϵͳ
5.5.2 ͨýʽάͼ Intra3D 2.0
Intra3D 2.0ĺǼ˳ݽṹͼζά㷨ͼûC++COMComponent Object Model⣬֧Visual C++Visual BasicDelphiԵӦñ̡Intra3DĺĿĲ㴴
1һΪ뺯Basic Objects and Functions
2ڶΪͼζ󡱣Graphical Objects
3Ϊͼڵ㡱Scene Graph and Nodes
4ĲΪ뽻Rendering and Interaction
ϵṹͼ5.9ʾи߲㹹õͲ㹹Ͳ㹹ø߲㹹
ͼ5.9  Intra3D 2.0 ϵṹ
Intra3D 2.0鼮ʽάͼμơ׼Լ25ףĿ7C++ȫûԷ޸ںӦͬ
5.5.2.1 Ҫģ͹
һ뺯
1ڶüڴࣻ
2ʸԪ㣬㷨
3άʸݿӻͼεݱע
4ͼԼӳ䣬֧BMPGIFJPEGSGITGAͼʽ
5üͼԪĻƣ׶򡢻ȣ֧Swept壬Ļƣ
6ṩ450ֲʣڵĲпԽʽ༭Щʡ
ͼζ
ͼζܽתΪģͲԻƳIntra3D 2.0ṩͼζ
1üζ糤塢׶塢Բ塢塢Բ塢Sweptȣ
2ģͶ󣬿ڻAutodesk˾.3dsģͺWavefront˾.objģͣ
3ҵͳͼζͼ״ͼͼͼͼͼͼͼͼͼƱͼȡ
ͼζĿӦأûʹü̳зµͼζ󣬶Ӱ쵽Ĺ
ͼڵ
ͼScene Graph޻ͼScene GraphҪڵУ1SceneNodeнڵĻࡣSceneNodeж˾ֲϵԼӦͼα任ڵĲͬĲʽʵά2ڵ㣨CameraNode֧ƽͶӰ͸ͶӰֶ֧л3Դڵ֣ƽйԴڵ(DirLightNode)Դڵ(PointLightNode)׶Դڵ(SpotLightNode)4ڵ㣨ShapeNodeͼζйͼζάShapeNode
ġ뽻
Intra3DĽࣺһǶ塢ԴֱӲһʵԵı༭Intra3DĳͼSceneViewװ˽ʽƵϸڣϢڵıơزݡ꽻ȡΪ˱ڱ༭ʵԣIntra3DһЩöԻʸԻFontDialogɫԻColorDialogʿԻMaterialLibDialogʶԻMaterialDialogԴԻDirLightDialog, PointLightDialog, SpotLightDialog
5.5.2.2 û
Intra3DĳͼSceneViewڿٴʽ3DӦó档SceneView֧selectingscalingrotatingtranslatingcreatingdeletingʮֲṩڽͼ5.10ʾ
Ϊ˱༭ʵԣڶԻл3D ͼΡMicrosoftĴϵͳṩ3DĶԻڡʹIntra3DWindow3DڶԻд3Dͼͼ5.11ĲʶԻͼ5.12ĲʿԻʹWindow3Dɫ༭3DͼγõĽԴı༭ʵͨıɫʵֵġҪɫ༭Ľ漰HSVRGBģʽɫתIntra3Dġ뽻㡱ʵЩ㣬ṩɫĻ꽻ͼ5.13ͼ5.14ֱΪԴԻɫԻ
ͼ5.10  ֱӲά
ͼ5.11  ʶԻ                           ͼ5.12  ʿԻ
ͼ5.13 ԴԻ                           ͼ5.14  ɫԻ
5.5.3 ֧ЭͬͨѶϵͳ CNC 1.0
򵥵ЭͬģʽͻֱͨѶSocketʵ֡ n ͻμЭͬÿͻĿͻͨѶôܹn(n-1)/2 SocketֱͨѶÿͻı䶯ͻ޸ġSocketֱͨѶʹЭͬĹͿͻĳƱ÷ǳѡCNCϵͳṩ֧֡ģPublish-Subscribe롰鲥Multicast ģʽķAPIԸЧعȺЭͬʹÿͻĳʮּ򵥡CNC 1.0ϵͳṹͼ5.15ʾ
CNC ͻڡġģʽУݵĽ̳ΪߣProducerݵĽ̳ΪߣConsumer߿ݣЩݡ߿ݡÿͻǺܶݵ߻ߡͬһʱ̣CNCϵͳߺߴڡCNCġġ TCPЭʵֵġ
ڡ鲥 ģʽУ̬طÿ鲥ַͻ飬鲥ϢЩ鲥ϢCNCġ鲥UDPЭʵֵġ
ͼ5.15  CNC 1.0 ϵͳṹ
5.5.3.1  CNC ͻAPI
CNCClientͻʵ֡ġ͡鲥ܣҪӿڣк£
class CNCClient
{public:
BOOL Connect();// ӷ
BOOL Disconnect();// Ͽ
BOOL PublishData();// 
BOOL QueryData(); // ѯ
BOOL SubscribeData();// 
GROUPIP QueryGroupIP(); // ѯ鲥ַ
DWORD MulticastMessage();// 鲥Ϣ
virtual void MessageResponse();// Ӧ鲥Ϣ

};
һͻġЭ
ͻÿݱ͡ơơںݳȵϢĸʽͼ5.16ʾݽṹ DataPublish 
struct DataPublish
{
BYTE iDataType;// 2 ֽͣ궨ΪDATA_PUBLISH
charstrGroupName[16];// 16ֽڵĹ
charstrDataName[16];// 16ֽڵ
DWORDdwLifeTime;// 4 ֽڵڣΪλ
DWORDdwLength;// 4 ֽڵݵĳ
char*pchContent;// 
};
2ֽ      16ֽ          16ֽ        4ֽ      4ֽ
ͼ5.16  ڷıĸʽ
ͻġġЭ
ͻݷʵ֣
1ȵúQueryDataһ DataQueryʽıģڲѯҪĵǷڡ
struct DataQuery
{
BYTEiDataType;// 2 ֽͣ궨ΪDATA_QUERY
char strGroupName[16];// 16ֽڵĹ
char strDataName[16]; // 16ֽڵ
};
2յѯʱ DataQueryṹеstrGroupNamestrDataNameݲڣServerClientһFALSE־ݴڣͻһTRUE־֮ͻ͸ݣDataPublishʽ
ͻõTRUE־Ĳѯ͵úSubscribeDataշ͹ݡ
ͻġ鲥Э
ͻȵúQueryGroupIPһGroupAddressʽıģڲѯ鲥ַӦʮƵʽIPַ
struct GroupAddress
{
BYTEiDataType;// 2 ֽͣ궨ΪGROUP_ADDRESS
char strGroupName[16];// 16ֽڵĹ
};
ͻúMulticastMessageָ飨鲥ַϢ鲥ݱṹ DataMulticast£
struct DataMulticast
{
DWORDdwContentType;//鲥ݱͣû
char*pchContent;//鲥ݱݣû
};
ͻյ鲥ϢԶúMessageResponseӦϢMessageResponse麯dwContentTypeϢδ鲥Ϣ幦û塣
5.5.3.2  CNC 
һݽṹ
CNC ݽṹҪɣ
1һڹ鲥ַ鲥ַɷ̬ɣͻѯ鲥ַ
2һڹָ߳ö̲߳ʹͻӦ
3ÿ鶼һڹġݵHashͬһʱ̣ϵͳܴڶߣݵĴ롢ȡٶȳΪܵҪָꡣHashṩݼٶȡHashеṹDataElement 
struct DataElement
{
charstrGroupName[16];// 
charstrDataName[16];// ݵ
BYTEiStorageType;// 洢ͣ STORAGE_FILE  STORAGE_MEMORY
ColeDateTimeTimeToDie;// ʱ
BOOLbLock;// ־ TRUE  FALSE
DWORDdwLength;// ݵĳ
char*pchContent;// 
};
洢ͣiStorageType;ȫڴнǳķڴԴںܶûбҪġΪڴʹЧʣڽ϶̻߳Ƚ϶̵ݱڴУΪSTORAGE_MEMORYͣڽϳ߳ȽϳݱļУΪSTORAGE_FILEͣ
ʱ̣TimeToDie;ͻݾָڣڽյʱɼʱ̡ɨHashݳʱ̣ûбɾݡ
־bLock;ܶͻͬʱĳݣݿѳʱ̼ɾΪͻ涨ֻҪпͻݣiLock־ݣֱɺ
̲߳
һ̺߳Ͷ̸̡߳߳ͻȻ󴴽һ߳TCPӡÿ̰߳CNC APIЭͻͨѶж̹߳еݣ̶߳ԹԴͬʳΪʵֵѵ㡣CNC Ҫ˹ؼֶͬν⡣
Winsockʹ
CNC 1.0Windows 9x/NTϵͳ£ײͨѶWinsockдWinsockֹʽʽͷʽʽŵǱ̼򵥣ɿԺáȱʹӦóסܴ񡣷ʽWindows ϢʵֵġŵݵʱϵͳӦó򴰿ڷϢʹӦó򲻱ڵȴݣ˹ЧʡȱڷͺͽʱӦó򲢲꣨ӦóҪάӵ״̬
ʽͷʽȱ㣬CNC ˻Ϸʽ̲߳÷ϢʽԿӦͻӡ߳УԲ÷ϢʽܿͻֻӦʱķʽһԵݵķͻա
5.5.4 Ӧʾ
ͼ5.17ͼ5.18ǲμЭͬͻʾIntra3D 2.0 CNC 1.0ͼ5.17ĿͻCNC  .3ds .objʽĶģݲִнʽơͼ5.18ĿͻCNC ҵͳͼݲִнʽơһͻԴCNC ݣ鲥֪ͨͻǰʲôݣϢ
Intra3D 2.0CNC 1.0ĿǰѾʵãϵȡ
5.6  С 
3DϷQuakeʦMichael Abrash Ļܽ᱾£ܳһƺãôļ򵥺Զ׼ڻýܳƵĹУҪŵŬ[Abrash 1998]
ͼ5.17  .3ds.objģ͵Ŀͻ
ͼ5.18  ҵͳͼεĿͻ
  C++
ǰҸ󡱣Object-Orientedʱһס˽ʮ塣ҴӼʮгй׼дĵʱȴ޷ʲôǡ󡱣˵ʲôѧ
еʱ͡ơͨԡ͡ϵͳơڵġмѧɣϵۺøԵķʽ磬һѾ硣
Щѧ߽ҡ󡱣һӵ﷨ҳʺͶʣʾǶ󣬶Ƕķ
񵳵Ϊ˶Կë󶫵ġ԰ѩ峯дһЩ̹ʫ뽯ʯĿϽôϣƥȫһɹײ︯ʬζ
ҿ˼ǧҳϣڷԼЩǡ޷⡰󡱵ۣͬʱ򵽡Ӳ
Ժܶ࣬SmalltalkAdaEiffelObject PascalVisual BasicC++ȵȡC++ϲΪCԣҾ߱CԵܡ꣬һֽJavaĴԺ켫һʱ˽кҪJavaC++ΪJavañC++ȻֱŴģҲھ˾ˣʱһ˲Ϊ˶
C++Ƶǳ࣬²C++﷨ֻһЩССı̵缸ЩСͿԴʮгˡ
6.1  C++ƵҪ
ڸӰƬһɫ˵ǵҴҾǵͬ־Ǵѡ
C++ĳԱһ
C++ĳԱһ
߶δء󻵵뵳δܳΪˣ˲뵳δرɻ
Ҳ´ŭ˵󻰣C++ûи֣CԲи֡CC++8֮źԼCԵĸ֣źû˵㲦νơҺͺܶC++ԱһõC++﷨ĺôʱΪԼѾơ󼷵ƤǱѽ
ǲƴҲὲͨƴͨøáҲC++̣C++øáڽǳĸ󡱡̳ϡ麯̬Щ߳رߡɸԡ롰ԡ
6.1.1 
ObjectࣨClassһʵInstanceӣôǷӵͼֽƵصƣǶơ
ԽݺͺװһкʾΪƷ񣩡ṩؼpublicprotectedprivateЩݺͺǹеġܱĻ˽еġԴﵽϢصĿģҪ֪ݣһݣμ5.2.1ڡϢءǲķװܣҪɻʲôӡ
ΪģΪΪģ
šΪġһ˹עڲݽṹϰϽprivate͵дǰ棬public͵ĺдں棬8.1(a)ʾ
šΪΪġһ˹עӦṩʲôķͽӿڣϰϽpublic͵ĺдǰ棬private͵дں棬8.1(b)ʾ
Class A
{
private:
int    i, j;
float  x, y;

public:
void Func1(void);
void Func2(void);

}
class A
{
public:
void Func1(void);
void Func2(void);

private:
int    i, j;
float  x, y;

}
8.1(a) Ϊĵд             8.1(b)ΪΪĵд
ܶC++̿ʱΪġҼֲҽʱΪΪġȿӦṩʲôĺMicrosoft ˾COM淶ĺǽӿƣCOMĽӿھ൱Ĺк[Rogerson 1999]ڳƷ棬ǲҪMicrosoft˾ķ
ƹǱȽ׵ģѵȷƻ༰ࡣΪЩԱ㲻̳СInheritanceϡComposition̬ PolymorphismЩ
6.1.2 ̳
Aǻ࣬BA࣬ôB̳Aݺͺʾ£
class A
{
public:
void  Func1(void);
void  Func2(void);
};
class B : public A
{
public:
void  Func3(void);
void  Func4(void);
};
// Example
main()
{
B  b;// Bһ
b.Func1();// BA̳˺Func1
b.Func2();// BA̳˺Func2
b.Func3();
b.Func4();
}
򵥵ʾ˵һʵC++ġ̳СԿ߳ĿɸԡΪ̳С̫á̫ãҪֹá̳СҪ̳СһЩʹù
һABأΪʹBĹܸЩB̳AĹܡҪá׳԰ײԡһö˶˵Ľ׳Ե޹ʵس˲β塣
BбҪʹAĹܣҪǣ
1߼BAġһ֡a kind of B̳AĹܡˣManˣHumanһ֣кBoy˵һ֡ôManԴHumanBoyԴManʾ£
class Human
{

};
class Man : public Human
{

};
class Boy : public Man
{

};
2߼ABġһ֡a part ofB̳AĹܣҪAϳBۣEyeǣNoseڣMouthEarͷHeadһ֣HeadӦEyeNoseMouthEar϶ɣɡʾ£
class Eye
{
public:
void  Look(void);
};
class Nose
{
public:
void  Smell(void);
};
class Mouth
{
public:
void  Eat(void);
};
class Ear
{
public:
void  Listen(void);
};
// ȷƣ߳ĳ
class Head
{
public:
void Look(void){  m_eye.Look();  }
void Smell(void){  m_nose.Smell();  }
void Eat(void){  m_mouth.Eat();  }
void Listen(void){  m_ear.Listen();  }
private:
Eye  m_eye;
Nose  m_nose;
Mouth  m_mouth;
Ear  m_ear;
};
HeadEyeNoseMouthEarɣôHeadԶLook SmellEatListenЩܣ
// 
class Head : public Eye, public Nose, public Mouth, public Ear
{
};
ʮּ̲ȷȴǴġܶԱ𡰼̳Сջƴ
һֻʹ׷һֻ˵ĸ֪Ϊʲô
ΪĸѼ
3.3ڽȷĳ򲻼þǸĳ򣬴˴һ֤
6.1.3 麯̬
˼̳⣬C++һֶ֧̬ĶĶʹáAǻ࣬BCA̬࣬TestĲAָ롣ôTestABCĶʾ£
class A
{
public:
void  Func1(void);
};
void Test(A *a)
{
a->Func1();
}
class B : public A
{

};
class C : public A
{

};
// Example
main()
{
A  a;
B  b;
C  c;
Test(&a);
Test(&b);
Test(&c);
};
ϳ򿴲̬ʲôֵ麯ͳ󣬡̬ʾˡ
C++ùؼvirtualһΪ麯麯ǣoverrideӦ麯Ĺܡʾ£
class A
{
public:
virtual void  Func1(void){ cout<< This is A::Func1 \n}
};
void Test(A *a)
{
a->Func1();
}
class B : public A
{
public:
virtual void  Func1(void){ cout<< This is B::Func1 \n}
};
class C : public A
{
public:
virtual void  Func1(void){ cout<< This is C::Func1 \n}
};
// Example
main()
{
A  a;
B  b;
C  c;
Test(&a);//  This is A::Func1
Test(&b); //  This is B::Func1
Test(&c); //  This is C::Func1
};
A£
class A
{
public:
virtual void  Func1(void)=0;
};
ôFunc1麯д麯ࡣֻܶ崿麯ʽĹʵ֡
ϡࡱ̬͡ͻŵ㣺
1Ӧó򲻱ΪÿһдܵãֻҪԳдɡһнСԲӦ䡱Դ߳ĿɸԣǽӿƵĸãǴʵֵĸã
2ĹܿԱָãݣ߳ĿԺͿάԡǰдĳԱдĳòΪ棬ǽдĳԱǰдĳǿ˲
6.2  õı̷
ڹֳָƽ档̸ͬҲŹдõı̷ǲǰᡣ
6.2.1 Լ
в˱ʱƴ˵ܰȴô˳ԺܶϷ˲ƴҾͲеӢһ㲻̫ӣôҪ׼ȷ
Microsoft˾ [Maguire 1993]ȻܷϰҲͳȻûǿúһӦԼĳһ¡
ұʱõԼ
1궨ôдĸ»߱ʾMAX_LENGTH
2ôдĸͷĵ϶ɣSetName, GetName 
3ָǰ׺p *pNode 
4BOOL ǰ׺b bFlag 
5int ǰ׺i iWidth 
6float ǰ׺f fWidth 
7doubleǰ׺d dWidth 
8ַǰ׺str strName 
9öٱǰ׺e eDrawMode 
10ĳԱǰ׺m_ m_strName, m_iWidth 
 int, float, double ͵ıĺʮԣ򲻼ǰ׺ⷳѭintͱ i,j,k float ͵ά꣨x,y,zȡ
6.2.2 ʹö
һΪDebug汾Release汾Debug汾ڲԣRelease汾иûʹá
assertǽDebug汾õĺ꣬ڼ顰Ӧáһڴ渴ƳйУassertĲΪ٣ôͻֹһػʾԻ˵ʲôطassert
//Ʋصڴ
void  memcpy(void *pvTo, void *pvFrom, size_t size)
{
void *pbTo = (byte *) pvTo;
void *pbFrom = (byte *) pvFrom;
assert( pvTo != NULL  &&  pvFrom != NULL );
while(size - - > 0 )
*pbTo + + = *pbFrom + + ;
return (pvTo);
}
assertһִƴĺ꣬Ϊ˲ڳDebug汾Release汾assertӦòκθáassertǺǺꡣԱ԰assertһκϵͳ״̬¶԰ȫʹõ޺ֶΡ
бȸٵĶԣȴ֪öԵø˾ɥˡ㻯˺ܶʱ䣬Ϊų󣬶ֻΪŪ󵽵ʲôеʱ򣬳ԱżƳдĶԡ㲻ԼʲôͺжϴǳڳУǳڶС˵ܺýֻҪעͼɡⱾԶ׼飬ǺгԱñһɭ϶һ顰ΣաĴӡΣյʲôҪзϾҰޣǸǡΣաʲô𵽻ЧáĶԳԱԣɾ[Maguire 1993]
ʹöԵļԭ
1ʹöԲ׽Ӧ÷ķǷҪǷ֮𣬺ǱȻڵĲһҪġ
2ʹöԶԺĲȷϡ
3ڱдʱҪзĿ飬ʣҴЩٶһȷ˵ļٶҪʹöԶԼٶм顣
4һ̿鶼ԱǽзԵĳƣҪס̷ֱ󡣵зԱʱܷȷˣҪʹöԽб
6.2.3  newdeleteָ
C++Уnewڴ棬deleteͷڴ档CУmallocڴ棬freeͷڴ档C++Cԣnewdeletemallocfreeпһʹánewܱmallocɸ£ڴ棬mallocܡ
C++Cеָޱȣô˻ѡһָpnewڴ棬deletefreeͷšmallocڴ棬freedeleteͷš
deletefreeͷpָڴӦʽؽpΪNULLԷ´ʹpʱʾ£
void Test(void)
{
float *p;
p = new float[100];
if(p==NULL) return;
// do something
delete p;
p=NULL;   // õı̷
// Լʹp
p = new float[500];
if(p==NULL) return;
// do something else
delete p;
p=NULL;
}
ǻҪԤҰָ롱Ұָ롱ָڴָ룬Ҫ֣
1ָûгʼ
2ָָѾͷŵڴ棬˷ʤʾ£
class A
{
public:
void Func(void){}
};
void Test(void)
{
A  *p;
{
A  a;
p = &a;// ע a 
}
p->Func();// pǡҰָ롱
}
6.2.4 ʹconst
ڶһʱconst #defineconstĳͣóԲ߼㡣磺
constint LENGTH = 100;// LENGTHint
constfloatMAX=100;// MAXfloat
#defineLENGTH  100// LENGTH 
#defineMAX 100// MAX 
ܶ峣⣬constܣ
һǿƱĲֵ仯
³УfınameֵǺghпܸınameֵ
void f(String  s);// pass by value
void g(String &s);// pass by referance
void h(String *s);// pass by pointer
main()
{
String  name=Dog;
f(name);// nameֵı
g(name);// nameֵܸı
h(name);// nameֵܸı
}
һԣ䡮&*͵ĲֻããôӦڸòǰconstȷĴ벻ıòֵı˸òִֵ󾯸棩еĺghӦöɣ
void  g(const String &s);
void  h(const String *s);
ǿƱĳԱıκݳԱֵ
³УstackĳԱCountڼΪȷCountıеκݳԱֵӦCountconst͡
class Stack
{
public:
void push(int elem);
void pop(void);
intCount(void)  const;// const͵ĺ
private:
intnum;
intdata[100];
};
int Stack::Count(void)  const
{
++ num;// numֵ仯
pop();// popıԱֵ
return num;
}
6.2.5 
1Ҫдһָӵ䣬յC++/C벢ܵõЧʵĻ룬ȴήͳĿԣļҲߡ
2ҪдֹһĺںķֵУҪֵʹ־һ
3ҪBOOLֵTRUEFALSEӦ10б̡ԽFALSEΪ0κη0ֵTRUEVisual C++TRUEΪ1Visual BasicTRUEΪ-1ʾ£
BOOLflag;

if(flag){ // do something }// ȷ÷
if(flag==TRUE){ // do something }// Σյ÷
if(flag==1){ // do something }// Σյ÷
if(!flag){ // do something }// ȷ÷
if(flag==FALSE) { // do something }// ÷
if(flag==0){ // do something }// ÷
4СĲҪ= =дɡ=Զִ
5Ҫ123д0123ǰ˽Ƶֵ
6Լı̴¼ƳɱڼԱߡ
6.3  С 
C++/Cͬµ书һ8ֻ꣬ѧɡʲôʱ򣬶ҪԼıˮƽµһ˺õļͷҪѧϰ
µٵÿڿʱֻһ÷ԣһ񫡣ҽ軨׷Ƽһ飺Marshall P. ClineġC++ FAQs[Cline 1995]㿴˺һ޲ڡ
дC++/C򣬲Ҫ˵ֻǳԱļҪѡϵͳϵͳƱսԾߡôֻ̳ǡսָӹǸ󱿵ʿ¸Ҳ԰̡ǳԱҪֻ۹ⶢڳϣҪԼѧšӦ򱱾ͬСѧϰСС;ָ㽭ɽ¡
  Ĵ
̴ʦ˵κһôСܴŴ󡣡
ѧ߲ŴʦĻʣһСִֻһ򵥵Ĺܣǻ
һû壬ʦ˵ĳڵĻϵͳʧЧһ󡣡
ѧ߲㣬ʣϵͳʧЧô
ûвʧЧĲϵͳʦ˵ĲϵͳڵĻӲʧЧһ󡣡
ѧԲ㣬ʣӲʧЧô
ʦ̾һûвʧЧӲӲڵĻûͻǸһͬ£Ҳһ󡣡
ûдĳ[James 1999]
һصĳȱݡԵĿΪ˷־ܶȱݣͨĴȱͳͳڲĴʵûʲôķֵô飬ҲֳܱԱĴǡ෴أǴ˸ɧʹࡣڽѧͿʵУĴǱεĹߵ
ҽ԰Ĵڵ£ԱܡǱҪѧĴҰѲĴá
7.1 ԲԵ
Եĵ£רҵԱӦסô򵥵£רҵĲʿҲδضѾ⡣
һ죬һλҴ̱ҿ죬ѧϰǿļרҵʿãʷǰƻҳԣΪ̡̡⡣ضΪλֺѧ֮ҲҺͬδֹ̡̽⡣ֻΪҪȥӦƸμԣ±ʵҵΪһѡ̡صҡʲôǰ׺вԺͺںвԣӦ˭ִУй˾ӦƸߣҽԵĵʱ̾һ˵ЩҶѧʮûôܽóȥɡСĸоһȺʿЩ˵£ҵʱѧʼȲҲ־һƸĴǰʿ빷ڡ
ǹڲԵļҪ
7.1.1 ԵĿ
ԵĿΪ˷־ܶȱݡ
ȱһַƣָܵĴҲָܵ£ԲȵȡȼдȱݣִͨгֲոȱݡԵĿǸҪʶ⡣˵ԵĿΪ˵ûȱݣôԱͻĿ꿿£ʶѡһЩױ¶ĲʾĲٵġ
ĿǰУĿƼɹձƵڶ˶ʿʱ¡ǵĿоɵ·еĳƷ⡣ʱڴļɵ·Ʒֻаٷ֮ұдʾԽɵ·ĳƷŻ98%ʾЧ˵ĺãһλίĳܹʦ޷̵˵ǵĳɹǿҪˡĿ׵ͨ˼Ҳú˵ӹҵƼȽڿʱͨȡ˺óɼʱҴ棬֮࣬ԸУгɹˮƽʵԴʧѲʧΪٱϣ
һɹĲʾڷδֵȱݡ
ԲǸ⣬Ǹְҵ⡣
7.1.2 ԵҪ
Ҫ˶ɻִУͲءΪ˲ԵʵԣԲԵҪǡ顱ƺ̫пˡԱܺܺõزԼĳΪ顣Աȴ𿪷Աķŭ˰ۡ
Ѿ˲ԵĿΪ˷־ܶȱݣԱķһȱʱȴֵߵߵȥϲǸùĿߣܵġ
7.1.3 Ե
ֻ֤ȱݴڣ֤ȱݲڡ
ǣһӵϵͳԣ۲ȡʲôĲֶζ֤ȱѾڡ׵زԡֻһ롣ʵУҪʱ䡢õƣֹزԡ
7.1.4 Ĺϵ
ڲԡĹϵڿС顱롰ɼĹϵ
ѧϰõѧڿʱܼͨɵĴ󣬴Ӷߡ˿Գɼȡ͸õõĺóɼ
ѧϰѧԭͲĿۼôϸģҲ߳ɼ
˵ĸƳģǿ޲ġ
7.2 Աѡ
ҪԱ
ҪĲС
Ҫû
ȿһMicrosoft˾ڲԵľѵٻش⡣
7.2.1 Microsoft˾ľѵ
80ڣMicrosoft˾ƷˡBug磬1981IBM PCһƳBASICûá.1֣10ʱͻFORTRANҲƻݵġBugɴ˼MicrosoftϵͳPC̵ļҺܶûҲ׷Ͷߡ
Microsoft˾ľǷбҪõڲƷ⵽ܶʦһЩ߼ļԣǹִΪڸУѧʿЭ£ԱԼԲƷ1984ƳMacMultiplanӱ֮ǰMicrosoftصArthur Andersonѯ˾вԡ繫˾һûִȫԡһ൱ƻݵġBugʹMicrosoft˾Ϊģûṩ°汾ÿ汾10Ԫһ20Ԫνʧء
ʹ˼ʹMicrosoft˾ľǵóһۣٲĲԲţƷͲܴﵽߵ׼IBMųɹʷĹ˾ЧİMicrosoft˾հIBMľ飬ѡزһЩȽȽķĲС飬ԶԼΪؼԵĹд븴ȡMicrosoft˾һλܴ¶˵ÿԼˡҪһСƲԣвԣѲϢšһΰת۵㡣
˶ĲС󣬲´ˡԴMicrosoft˾19841986֮˲С󣬿ԱʼˡǰѴһߵŲԣΨпԱԼֹķδʱMicrosoft˾ʷϵڶδѽˡԭ1986ꣷ·еMacWord 3.0ǧ򻽷19872Ȼ700ദеĴƻݻٳһӾʹMicrosoftɨء˾òΪûṩ汾ó100Ԫ[Cusumano 1995]
7.2.2 Աķֹ
Microsoft˾Ľѵп֪˾ڲԲƷĲԣΪԣҪԱĲС鹲ͬ롣ԱӦִС׺СԣԴ߼ṹԼʵϸڣ׺СָüڲṹСӦִСںСԣչ˵ԳǷҪ󣨡ںСָڲṹڲһģʱ׺СԷҪģдеٲԡںСԷֻģĽӿǷҪĳⲿֶڲʵϸڡ
С͵˾ûĲС飬ҲпܲСԱæʱÿСĳԱ໥ԶԷĳ
ҪǿǣԲڿԱ߲Сеһ˫ͬ롣׺вԡɿԼִУΪĲԱ޷˽⵽ڲʵϸڡںвԡɶĲԱִУΪ͹ۡڲԼĳʱһЩײ
1߶Լĳӡ̣ΪȷģӦõģʱʹ󣬻ıϰ߶ô˺ѷ
2߶ԳĹܡӿʮϤԼΪʹòû̫ƣԼԳԾ߱ԡ
3ƣϲͳĳɹ֮Ըʧ֮ÿȥƻĲԣɱԼĺһԽܡ㿪߷ǳʵ䰮򡱵ڲʱ֪شٳɷݡ
Ʒʽǰڹ˾ⲿһЩûԲƷвԣΪ²ԡ²Ե漰㣬ܷӳûʵԸѵʱÿơһأ˾²Ա֮һֻЭ顣²Ա޳Ϊ˾ԣڵݽԱ棬뽨顣˾²ԱͻԺܴŻݼ۸ʽ汾
7.3 ԵҪ볣÷
һѧԣʸ߶Ĺˡһּոߣ֪йˡһϹ·ַԣҲⲻʲô
Ƕģ黹ϵͳйͬҪԣȷԲԣݴԲԣЧʲԣԲԣĵԵȡ׺вԡָԱӳڲݽвԣںвԡָĲԱӳⲿݽвԡ̲ܶ̽Ľ˸ָĲԷ˲ʾ[Pressman 1997] [Sommerville 1992] [ 1997]ڼؽõĲԷ
7.3.1 ȷԲ
ȷԲֳƹܲԣĹǷϹ˵ȷҪأҲҪ
ķǹһЩ룬Ƿõһöٷöٿռ޵ģǿɲˣؼͷԱһҪ跨öٵĴûӹؼѰҵȼ䣬ΪڵȼУֵֻһμɡȼĸɱ£
ǣA, Bf(x) һȼ䣬ڣA, Bȡx1вԡ
f (x1) ôf (x) A, B䶼
f (x1) ȷôf (x) A, B䶼ȷ
ԷΪȼ۲ԣԴǵֱ뾭飬°빦
һЧĲԷǱֵ߽ԡöߵȼıֵ߽вԡΪԱ߽Ҳϲڱֵ߽
ԵһγƾֱȼӦǣ0, 1ͣ1, +ޣȡx=0.5Լx=2.0еȼ۲ԡȡ x=0Լx=1бֵ߽ԡ
һЩӵĳƾֱ뾭ҵȼͱֵ߽ʱöٲԾ൱Ѷȡ
á׺вԡʽȷԲʱиĺôԷ˴󣬲ߣԱϾ޸ĴԽ󣬸Ĵ۾Խ͡Դ˾ҪԱдʱִлڵٵġ׺вԡ
7.3.2 ݴԲ
ݴԲǼ쳣µΪݴԺõȷϵͳ޷ϵ¹ʡ
ȽݴԲͨһЩ磺
1ͣ硰ꡰ¡
2붨ֵ֮Ϻ˳˵ġʮ㡱Ҳһ֡
ֱһЩݴԲ׳ơɡԣ˲ȭҧʲôʹҾٲӣΪûжԳֱⱲҲѧֱ
7.3.3 Чʲ
ЧʲҪǲٶȺͶԴʡʱǹĲԵġֵÿٱءʱǹĲԵġֵĳһٱ
ڻȡԵġֵʱҪֿǲ¼лԲԵӰ졣Ƶ߽ṹⲿ豸ӰٶȣԴпţС
ڻȡԵġֵʱҪȷԵļȫһµĻСӲһԱȽͬһ̨ɣؽ϶࣬˲ϵͳԺͱϵͳҲϴӰ졣ǱȽϼ㷨ܣҪԺͱҲȫһ¡
ЧʲкҪһǼ޲ԣΪܶϵͳڼ޲б磬ͣ󣬲ԷǷ״̬԰ΣرݣǷԵ
7.3.4 Բ
Բûһָ꣬ԽǿûеĳʱȻͬ¡̡ҪٲãƷֲ֧Ŵ绰ֻ30%ûûֲᡣ[Cusumano 1995]
һΪûֲʹôнϺõԡ
7.3.5 ĵ
ĵҪĵȷԡ걸ԺͿԡö֪ĵһɲ֡
ȷָҪĹܺͲдҲĵǰìܡ
걸ָĵԡͷβ©ؼݡЩѧ֤ѧʱϲáȻɻءĵкܶݶԿ߿ǡȻģûԲöǡȻġ
ĵдɢġʫ̽С˵Ҫôûö⡣
ܶԱܱдóȴдĵҪ˵Լǰѧòûˣҽڲǰ취ûдó򣬶ġͬһдĵͶдĵؾͻдĵϴѧǰ˵ͨдģҼ˵дѴ´ࡣ
7.4  
ʱ˴󣬱ԱĴԹͰ׸ˡ
ĴǸ󱯴ϲḶ́һ֮ڿڱ˵ĵ͹Ⱥϲõĵ߷֮ĹôŮǲؾʧĴҲܱó
ҴӴʼܸĴĥѼǲٴκ䤱ʪ͸ʡĲ˴ʱ޲ײǽ˴ʱŮӳЦЦġ
Ʊҵʱһҹһܵҵʵң£ض£֪ʲôéٿ𣿡
׳Ƶҡҡͷ
˵һʮСʱûܸɵһ󣬸ղȥ˲ӣһжˡ
ûϴңһҪҳԡɡǵ⾢·ͬʱ̸Ůѡ
ڱڣҪԱܽڸĴļ˼뷽
1Ҫиֳˣڷܣһܸɼ˵ĻǰʮǷģܵĽӼһԼ̫Բɭ֣Ĳȴ󡣺ʮֲģܵĽӼ˴Ҳ
еĴֻпԼҳĵηӣ鲻ʳζ˯㡣ԳʹʹҪоԸ
2ɡ˵ǣҲšΪż˾ͻɣѡǡԺ󡣲ˣҲˡ
Ǿ۷߲ӬӲзɳǻᶥŲڼСʱȴôԱɵطߡԭΪ۷ͲӬ̫СҰޣ¿ߵֻ֮ɡһҹֻȸɽҵķ䣬ʽȻ۷һģһõƹȴ򿪵ĴΪ·ƣ˵޼¡ǵŷߵģһûϢá
3ҳĸԴʰ᣺ҶʹӦʲôҩ˵ӦҩˮΪ۾ãණŶʹ
ӦùɡȷȷĸԴ
4ڸĴ֮һҪϽ²ԣµĴ·ϼǮΣԼȴײһȻϲ£ҪֹּϸҪǣԭгǷȷֻҪԴ˳Ķ΢ģҪ²ԡ
7.5 С 
ĳԱԼĴûдĽѡһҲ΢СǳڴºءܷòĴ˼ʶͰ̬ؼġ
ԱӦðѲԵɷ֮£ҪġںвԡںвԡͨжһǷǸӣ޷֪Ϊʲô˷ӡóԱеĴִеٲܷʱ䣬ϰ͸оʲô㡣ٲԽʹԺӸɡ
˴һҪĴǡд޴ĳǸĽ֮ڴˣҽĶSteve MaguireġWriting Clean Code : Microsoft Techniques for Developing Bug-free C Programs뱾[Maguire 1993]ܴĽ̻壬ǳ
ڰ  ά
̴ʦ˵³ֻгһҲòά
ܶƷһԵڵšڵЩϵͳҪʮ꣬άǱزٵġ8.1ڽܡάĳʶάз࣬ΪʲôάȽѡ
˾ľûһϲάķһάĴͨǸ߰ġ7.2ڽ˵Ӱά۵һЩҪǼء
ϣҵȴ޷άʵֻ֣öȫֵ߲ĸ죬ֻ̣Reengineering7.3ڽʲộ̵ͣعRestructure򹤳̣Reverse Engineeringǰ򹤳̣Forward Engineering
8.1 άĳʶ
ԣάǸֱ̫۵ΪƷظʹʱᱻĥ𣬲ҪԳάάǶԼȷḻֻĻͳơзḻʵĻָЩӳ͹仯ʹϵͳƵ޸ĺ乤ĻָЩֹҸ˾ɴȴ´Ĺ
һЩѧ߽άΪҪࣺάCorrective maintenanceӦάAdaptive maintenanceάPerfective maintenance
1άǰڵĲԲܽ¶ϵͳڵĴûʹʱԽϺ͸ЩĹ̳Ϊά
2ӦάµӲ豸ƳϵͳͱϵͳҲϵΪʹӦµĻĳ޸ĺΪӦά
3άʹùУû᲻µΪûµܵĻΪά
Lientz Swanson鷢֣1980꣩άԼռ65%ӦάԼռ18%άԼռ17%[Sommerville 1992]20ǰˣǲ̫ľıɡ
һЩؽάѣ
1ԱҪĳЩάʱҲԭĿԱֻȥЩ
2һԶ˵ĳǿʱﲻֲֹĳӣô֪α̡
3ûĵĵܲʱֱ֪֡
4ܶʱûпǵҪĶ֮໥֯һǣ١ʹкܺõĵҲпݽ
5˶汾Ҫ׷ݻǳѡ
6άĸã޸Ĵ롢ݻĵпܲµĴ
7άˮƽĳԱȻԸȥ˾Ҳ᲻øˮƽĳԱȥŵͳĵˮƽĳԱֻάһͿ
8.2 άĴۼҪ
άǼƲַĹüĴЩΪάͶάӸ߰ǳ֮ΪɱΪ˵õĳֶĶ[Mankiw 1999]ѺܶԱԴάȻᵢ²ƷĿɥʧִ޷ġ
Ӱά۵ķǼҪУ
1ӦĸԡӦѱܺõ⣬Ƚƣôά۾ͽϵ֮͡ά۾ͽϸߡ
2ԱȶԡĳЩĿ߻ڣǶԼĳάô۾ͽϵ͡ԭĿѾڣֻάİĳô۾ͽϸߡ
3ڡԽڵĳԽάʮǰĳǶô˼뿪߶󣩡һأԽά۾ԽߡԽ̣ά۾Խ͡
4ҵģʽ仯Ӱ졣Բƶȵı仯Сƶһ䶯ͱ޸ġһأҵģʽ仯ԽƵӦά۾Խߡ
Ӱά۵ļҪУ
1лԡӲԼϵͳºܿ죬ʹöлԺǿӦҲҪͣظ£ά۾͸ߡ
2ԡȻͼԱȸ߼ԾиõٶȣǵͼԱȸ߼⡣ø߼ԱдĳõͼԱдĳάҪ͵öࣨʸߵöࣩһأҵӦø߼ԡ磬һWindowsµϢϵͳûVisual BasicDelphiPower BuildeṛVisual C++ľЩû˻ûԡ
3̷õı̷ζõĿԣԽάĴۡ
4ĴĴúãڵά۾֮ܽ͡ά۾ߡ
5ĵȷ걸ĵܽάĴۡĵάĴۣٳĵûĵ
8.3 
ҪԸ1ҵҪ߲Ʒľ2ڼҪ߲ƷԸ޷άʵ֣Ϊ1ĿάԿܼʵڲֵȥ2ʹĿάԱȽϺãҲֻαα̸ɴȫ򲿷ֵĸ죬µĻ
ڶԴһ֮ͽʱԽ˼ĺͰַʽڡάҲ԰ؽȥ͸ģַʽ൱ġ̡˻͸ˣͱеˡ
άĹ֮ͬûԭеά޲ô̾ǡʹǰǡ̲һάĴҪߣڽȡȴҪͨάõĶࡣ
Ҫͣع򹤳̺ǰ򹤳̡
8.3.1 ع
عһָͨ޸ĴʹµҪعͨƷԭϵṹҪǸһЩģݽṹعһЩô£
1ʹߣʹ˳Ӧµĳ׼
2ʹĺ汾ʸߡ
3ͺڵάۡ
Ҫעǣڴعع֮һҪعӦĵ
8.3.2 򹤳
򹤳ԴӲ硣ӲŪֲƷƺ조ءֵòֳɵĵֻòжֵĲƷзͼлȡмֵĶҵĺܶͬѧ¼ɵ·ƹǾʹļɵ·ԭⲻظƸõ·İͼȻͶԻơReverse Design
򹤳ڵӲơںܶʱ򹤳̲ԾֵģԼ˾ǰĲƷϲƷȡϵͳơ˵мֵϢ
8.3.3 ǰ򹤳
ǰ򹤳ҲԤάMillerͳɡΪҪѽķӦõϵͳϡ[Pressman 1999]
էȥһĿǰеϵͳֱǡǡչѸ٣ȴһмֵĲƷȥ£Իȡ档ͬԤһԣԤάǡСռˡ¡
8.4  С 
ѧлάˡÿһµоѱҵµһͨȻȫƵҵʱֵĹˡֻأûʲôɹ¡
ϣϵͳܻ£ҪάϣϵͳЧ棬跨άĴۡ
 ѧ ʮ 
1999ĩ
дʹҺΪѣһǵĶΪḡھͿʼдԴǵΪҵ˾֢
׻ǲ׵ۣڴѧʮﶼǳ͵ĺѧһֱҶǺһЩ꼶ѧǶкܴӰ졣ʮһɵḶ́֯Ŵڷɢųɹʧܡ˵¿Ϊ¿ɹΪӡд¾ܣԴѧǡǳûѧҵ죬Ҳûʫ˵ķ绪ûʵˣֻܽһЩԱԸ
ҳ1973ĴڣţǡţͷĸΪ˺ֽܺС񡱡һаʾұģңʱϵȥһ˲˼ʱ֮󣬾ϵ۴Сļڣһضȹͯ꣬˳Ϊˡ
Сʱ㽭ҵƫƧɽĸѧʦɽʦȱĸҪһɽͷһɽͷѧһСѧĿҵ仹ûл飬ҲûмҵĸҾڻɵСһţڸ˻־ʱࡰౡౡؽмڶСѧе8ȲãҲƤȷе˵ľͷֱֵķʡѧϰûܹһαҲûκֵ˻¡ڶôŬ޷׷ʧȥ8ɫ껪ʹ
ҲݲݵزϡͿ13ʱӳбҵ޴ȥҷˣʼѧϰһ뿪ɽͰ͵صһȽϺõѧضڿ糿4:30ӢԴƺҲſˣѧúܺãƽһе֡һδӳбҵʱȫУһĳɼ˻ѧС
ѧũа࣬ҵȻũ׼׼ӡ൱дٽõġ˼ίԱͬѧϰߵذѻңСٵζѧüãһֱҿ׼ȷؽ⣬ʦհĿдҾͱʱûϻΪһھǱ׼𰸡
ϧҵĿƳɼʱʢѧ߱¶¡ٲ£̤ѧĿƵĺʱ⡣дĵĿǲ⣬ǰǷûɹ£ĲɣʷʱдοʦĳĳĳҼӢ¾塱˭ĳɼӽ֡ҾɥǣЩоҷģҶǸƨѣһʱԺжûС
ΪĿƽʵʽʲߣкٴҲԳɴȻҲŮ
߿ʱĵ54֣ǰˮƽֻܷص߸ʮ֡ҲұõطֻѡڵءѡѡȥֻɶлðѳڵͼһҼֱ߾϶̣Ǿѡʦֻ˵ͨѧȽ˭Ҳ˽⡣Ϊͨѧѧϰ𳵡ִģҲܿܿǵԼĵСʹˡҾӿƼѧֺܺѧҵ룬ǾͱӿƼѧ¼磩ϵ
ϵ۾ӵشӲѾϴѧҲԭǰҰ廪߱ģˣɴҲֲˡһ͵Ǻ£ڶѧʮɷչ׿Ⱥѧ
ս磬ҵȸɡȸԲԲģֱǻɵⵯǲˣɶѾۼ֣ΪûнһȺְִ󣬼ȲҲǣȲͷҲӡ˺Ӳ˵ͬѧ¥µİԴһӡЦǰѡɼ⡱гɡɡǶʵںóԡ
ԭǾУϽУ԰ЩɽˮĵطҵȷϲĴ뺩һҿһдĺĴֱһǡ̤˶ȥгҲЦһЦζš۸СӡʷĽС۸ӡ¼ԪĿʼ
ϴѧĵһѧڸպˣɳĮ籩жʱȫ̸սȫУоӵģԾӦΪͬѧǶкǿʹУұĶʮ㡣
һգϵӲƫƫͬѧٵϵκʣΪʲôٵˣ
Ϊˣͬѧػش𣬰Ȼ
ڰСҲСϿʱɶĺôۡϵѧһѧڵġͨγ̾Ե÷ǳҪϵθϿΣҶգӣ鼫졣ڸҳڡҶաдĿʱͱ𰸡ͷΣҶաɺɨǣҪץסεгоǸڵһŷңֵ졣μϢʱҶաԱߣͬѧǴʱҾñʰŪ˶ޱȵָָͿʲô
ڵһѧ꣬ҾҲݴеҰӱʦͬѧǵĹػҹٵоƨɶŹʵʱ򣬷ҵսľѧϰȱݡʵ顣һʵңҾ޲ߣŴһѧģΪάҫȫڸǡ͵͵ֲʵĲ㡣
һ˲£Ϊ˶ԿٵգҿǵذѡȱݡÿһʶˣûлƭԼ
˲öǻۣȱʵƷʡȻ˶ʿҵʱԡʵֱĿƼԱ18ʱѾˡʵұضһ֡
һٻؼңõһϲﾹȻ˵·ʵң
ΪҳйĴԼʵε֮³Ϊҡĸ֡šӢĸ׽Ĺͬ˽вƲȫÿܵԶƷгԪԼģڼｨʵҡ׺ϣҴСǸһҲһʵ飬ѧ𣬻Ͷõȫͬ¹ϵҵȤת˼ʵҾɸ׶ƣڸˮƽڼԶѧǶӢʦ
ĸѧʦʱɫԶʤסɽͷѧУʱһķ˾ͰеˡСʱƶҾһƮС׻ĸƶ档6ѧʱĸ׾˵Ӱ㽫ֻܿʳԷܿͷԷСʱĸұթѧ塣ڴѧѾ൱ɫĸܲȫ淢չöصķʽң
1Ƿ֡ˣˡΪڷܵûɱ֡
2˵Ƿ񻹿졣˵˹ұ䱿ˡΪû˵졣
Ҷʿоʱĸ׵üͷ濪ʦзۣӵԸȫŴģֺް㹦͡
ѧڵҪγǵ··Ŀܻͷ󺹵ؽ귽ʱ㡣ҹ˲ٹʽڼ򻯼㣬ʦ·ͼʱ𰸡ѧϰ˵̫Ŀʱ䡣
ڿҳ˼£
1Ϊѧϰϲʮͬѧ˲ϰ࣬ǽΣҵ⡣ҾĸһȺСʹ೤ѧϰίԱȰɲͬ衣Լıְͬѧ²ʦҸɵģԼ⡣
2Ҿﺸӵ·սʱ䣬ѴŴܷľֵߵߵ͸һŮӡϧú˼ӴҲûĶ
ϴѧǰҸûڵѧʱʮʦά棬ӶԱ̲ǿҵȤFortranԣFortranԶûӰ죬ӰҵʦеʦԼڽѧͿеľҵҴѧˣѧʡ
ܶϵʦҵʱϲ򡰡̡򡰡¡ʦҵĴҳһע͡Ϊ˲ʦۣȫϵͬѧһԼϿʱ׼֣ҵ𽻣졣
Fortranĩԣҵľɼ97֣иŮͬѧ99֡ҵʱΪδ벻һŮΪɥǱϵĳɼϣҵĳɼ99֣ǸŮͬѧ97֡ΪʦˣȥʦЦЦ˵ƽʱѧϰ֣õ֡ΪеһʧĻԣԸӣΪһϻ޲ߣҪ֪Գɼ߲ʾѾѧˣ2ʾ档㱾ǵһʱһ顱ɼͬѧ59֣ʦʦ˵Ծҿ˺ü飬ĵȷȷ59֡ƽʱѧϰҲᳬ59֡һֲܼӣһẦһ
һ90ʦΪϵ̳֡ҺҺ˶ʿʱ۰磬ϵѧ޷֮ͷһ˶á뿪ڡϧҺʦദһ꣬ϢѧԺȻʦĺ񱡲ʱ䳤̣õʦмһӡ
ϴѧǰѧڣѧϰͬݣȤɡԴӵѧѧϰ˼γ̣Ҿµ׷Ҷôӵһ̨̡һܻȡһϻʱĻԸÿ찤1440ơǵüһ޲ɣϣһꡣ
ұƵרҵǰ뵼һ꼶ϵ︺ѧ꼶΢ѧڵѧĩϵƼ΢μӿУ½ڡҡ̤΢һţҴӴѧϰת˿Уӡ߷ֵܡתˡͷָܡ
һ̨286ԣǸҾ˯ʵʱʱ̿ҹһ˳ЦһϲһƿһġһġӡҺܿ񡪡һ㡱ģ·ѧCԡ
иôͳÿ궬ٰһȫУԵġǻ𱭡ѧƼƷÿ춼߰ټƷչʾ꼶ѧ޲ѪڣԾԾԡҺϣܶһμӱ조ǻ𱭡ʦоɵ·ɿԵģУҿɵ·ɿԷ
ҿʼһоֵ㷨һȵ8·ݵʮһ£̣ͨܿһС뾺ʣһҵʱ򣬳˴⡣ǳ󣬶ҷԭȵ㷨ЧʱѾûܹȡҡʦ̣֪⾿ڳϻǳ㷨ϣʵ߶⣩Щʦʵڿҵг֯ġֻܱ˵ؿҾӿΣѧ˻ѧϵ󣬼ʦʮΪѡʦͬѧȰҸϽаĿֵСʧ
ʱи޷ҡһΣôһʱҾͻֶɹôһսʱһἤԼȡɹ
ѹǰȻͦÿнչʱһϲֻܿµѣʱһ20Сʱÿϲõĵ߷յԨ֮䷴ڡھǰ죬ڳɹзȽֵһᣬҸصĴۡרҵʧȥȤʱҲ19꣬ڼ״̬£ĥ־ʹպ顣
ڱ꼶ʶ΢ĺԾʦѧʿ΢вŻ쵼緶ѧߡҳȥѧ⣬緢һµġܶ˶ʿһʱҲòһ죬ʦ˵ҵѧɡҾͺɵشӼʦ¡ۡʦ¡ʦҵ˶ʿʦʱϲ˵ãܺãǳãҿڣУʦ˷ֱڸԵĽײԺա
꼶ҵרҵγûһż΢ʦѾϿңͰҵľɼΪߣҶͬѧǵİĪڴˣҪҿоҾԿϡϵΰعӢҽǰ;ǲ˱˷ԣһԶ˶ʿо
˶ʿоҵĿ൱áʦʮֿɷչϲͼûͿݿӻͼγǼôҲ͡˵ġܶྫýôƯͼôǷֵãⲻǿһ¡ҵʱŮӵ߾ǰҵͼγᲢۡ
ϲûΪԼ൱õСڶʱģ¹߸Ľ棬ͬѧʾŪû񫣬дһƪΪûѧĶġ·ʵҵͬѧҴסҵ֮ʶãȻʹ߾Ӷࡣҵʶӣ֮زز
ҵоԼɵ·ֵΪֵһѶݳҸͷתҷͼݿԼԺȥǸо˯ʱˮһ˶ʿѧλеͼ漯ɵ·СȱݡԳƷʵӰ졣Ҳڿѧĺſʼоӻģ˹ŷЩļӻҶͷȷл˶ʿһ꼶ûʹá롰Ǻܶдķֻʱдһ΢ѧӻϵͳơ
ڶ˶ʿڼĹǿ뱾ʱ൱ʽкܴͬȷĿ꣺1ȨƷ2쵼ĲܡĿͨŶӹμȫԴѧƼʵ֡
ˡӴС顱ꡢҵҪ飬ֺܶࣨмƯŮ칫˱硰ԵҵҪƶǻڰ֡ôʧдġսͼʱơÿдһš״ڻϣ񻹼¼Щ桢á֡ǶôҸӣҹ֡ҧл۵öڲ˯ˡ
19941995ĶǵƷֱйѧӦÿƼȽȫѧսѧƼƷȽǡϴ󡱡ҳѧİѧԲʶУ쵼ֵ˲þ㲻ܲʶңͲǸѧĽҵѧһҸյʿѧλʱյһϵѧţ˵ˣҴû˼׼˶ʿ㵽Ҿ͸
˶ʿҵǰڼдȰƼҵͬȰһ5ĿйʵҲõͬʱҲеʹ࣬Ϊ5ҶĿÿ̫Ū١ҷģһʵֱĿƼԱ㡣
ȹҸ6룬ǣҶǵǡԡ顱͡顱
ҵһγԺĺʱжᣬζҾǰ17׻ˡڶ˶ʿʱѾҿһǮ˶ʮƽÿ500Ԫдø7000ԪʱҼֱǸ̡ЩǮСŮ󲿷ںǳĺġ
ԼѾСԣҷһóԵĶڵ̯ϣĶһģĶһġ׺ΪˮٳΪմĿе
СʱҰֺȻ˲ҳĸҸ̰̣һ̵ֱϴѧԶ߸߷ɡ˵½ŮѣôδҲҪʳ羭õ¯ûץסΪġĲˣ쳤վãǸɴҡ
ҳԱ˼̾ҪسԣĻ˶ǮЩ̰پôԵ޿ģҽôԵõԼǮ
ڶѧ뱾ʱͷ׷ԴԵĵá˶ʿҵվʱһͷˣҲ֪ʳãЩ׷СǣǾ͵ѧɡ
ѡѧʱͬסһᣬ񵳱ҸŮ´ңʣϲɶ
ػش𣺡ƹ򡣡
ʣʲô񡣡
Ҵ𣺡򡣡
ͻȻɽЦҵļ˵ãϲԺҵѡˣũ񣬻ῪͿҵļңԺɶ£Ͷ֨һ
ҴƹʱдʣߣҺݣҶݣҺãҶáü˵ҪóԵİ͸һһҵڶûõ
ҹＫ٩ܵÿ죬Ұ׷ʱ̫ף6Ⱥ֮Ϊ˰һټ쵽ͼݲ顰ϡҹ¶ˡ˫ӡͻ˹̹ͺһӵ¡
ϴѧǰҲûԼмǿǵһϻʱӡԱ˵ҷŹܻģҪ̨ӡûҷӦͿʼ֫⡱ӡޱ̵ᵽͽʱ£ĵľǸŷġ5޺˴ӡͶأԸ´ٸɡ¡
һֱΪ̵һ̵֣ʱˣָ롣֮ҵһΪҰĳдҵ֣˲Ǯ
Ůҽܵģһ۾Ϳ޸˹ˣֻ޸˶ʿҵǰټʱ˵ҺˣֵҪҡϲԴ
ǵİ೤ҲǰԤԱ֮ɮܲˡڶ꼶ʱһҴһѵŮͬѧվɥʹȥŮͬѧһͨʱʮֳʹ˼ϣ̵ļ֣ûй̺ܽøǷСӡΪǵȼϣڲõĽ³ΪĽȫƮ
ڱ꼶ʮԣϲȥʱԼʵУп֣ȵƱҵʱ͵طѾ档
ѧϰȲҲǴûкоʲôϲΪȤסҲǡҰޡͬһˡ
Ʊҵʱֵ֮ǰΪС˶ʿѧʱҵķűһ߿ҺһӰֻˡҾɩ˱ǵߵĺӡ
˶ʿʱ䵽771ֲ˼ӡһ죬ľŮӣһ˶ʿһƣšϴˮļַ죬Ů׷һϴһᰴϴҾ֮Ľ֮޲ðҡ벻ѧȻȻ֣Ҷ˶ʿӰ׹ˡ
ǸһŮӼ޸ȥʱ̾һѶӽ㣬Ҿͷˡֵúϲ£죬Ȼ޷̾
ڣѴӸѧòʿѧλҸسɼҵǷޣã顣ϴϡ
ϴϡʡϹ˻Ϊʲô
𣺡ÿ֡
ۿҸĪڴˡ
ڴʱΪϵѧϰʮͬѧ˲ϰ࣬лΰϰеǰé˯ʱͱޱȳ̧صƤľ˶Աûͦſˡ
ʼһξҰɣһһһȥģˡ
Ҳϡ
ô˯5ӣġ
Բͬ⡣
ôʹ110Ҫһ㣬ּۻۡ
9ʱͽ9.1,9.2, 9.3 
һʼҺܺ棬ϲ벻ˡΪѧϰãʱ沢ҳ꼶æڿʱչҵҡүֳܼǲ÷Ʊҹýеһ룬򷹲˺ϴ롣
һѧݾ˹˾ĴʼʷлΰǲǺʷһܳԿࣿ
˵أѾܳԿࡣ㽫һҵҾͰϣˡ
ǶʱҳеĵֻҪƲϣڡΪȢһձն׷ձµϣ
ʮҾΪһ˿޹ʱƱҵ
Ҷ˶ʿоʱҵӰ죬ϵ꼶ѧӿ΢μӿСҹ￴ʮߵĿƼ¥ƻַͨǷһ΢ʱ΢ѧеĵλ·˵ķ±ࡣ
дһʱмֵȴӣվ겻ɢʹûʱڵشݸ塣ҾӹдС˵֮ʣ뵽ддһһΣһǳɡǱƼдúܻͬѧǿЦᣬ༭İоֻ˼־ͳˡ
ʱҵ֮ãΪһͬѧͷдһƪɢģһӡְһŮͬѧʵ鱨д顣ҵıʴžġ
һȺѧУꡢʷһõĻ飨Ƕţ
ò˧üһë⣬˺ųơüӥüӥ书˵ãƷĺĿԱǺáҿ˾ʹӹݴְΪҸжѣɼѧʱжһδãҹҲ
δ֮У԰ʽ򣬾ӹϵ³³òһһЦ紺紵յ̵һٵ̼Χۣ˿˿³һߣҺʹþ³ѧʱƤ꼶ʱ̡̫ıƱҵǷ桰״ٷȫұдġѼǲʲôʽֻ֪ÿμ󶼵һԻ򡰱泤٣Ŀꡱ³ҵڵһ˾һмҡ̸ʱֻķݣһͷ
ʷһˣһ顣ʷһԸأڡҷġˡҶ΢רҵһϲͨȫһʵһءҿ˾ʧܣ뾭ΣͰϣ̵һСи
ĵˡΪ飬ͷԼ顣мµѧȱ㣬ʹҽǮϲΪЩˡҰѵŰ˵ʱٸֹʵֻöƨ׷һȭţһºšŰ񡱡ԸҸţҿշġ
һȺСͬʱϲһŮӣн橣Ĵ֮һǲûԴףĸԸÿ˵ĲӡС5ʱֽҵͬ£Ǿһȥ㣬׵һˡϲ󺰴У߹޵٣ǽ֡򡱡
ҳ橵С̯ȥŮӲҳԵĶóԵĶǼƨɡ
ʦͨؼһ䣺ƨǼŵƨ
ҳŽӲţнŮҪҲա
ڱ꼶ҵһβμӡǻ𱭡ȽϳΪ꼶ѧеǡһ꼶ѧϻԱһѲӻһŮ
ҼĻϿհһƬûһгʮɻʣʲô⣿
û⡣һ˵ЩҵȻԸӸͬѧ֣ƲһߣƺѧϰΪ˸ҵ
ҶϸֱǡӢ۴Ļʱľ͡ͻͻͻֱû˯ţ¼Ŀβ֪ơѡ޿ΡϵͳʱҸдһⳬţǮ̸ˡҽ˰׾ֱȥ
ҵĳֻ£ȴ˼8ꡣҶȥʱûκɣȴʧǡұƱҵǰ18ҿȹǿЦݣҹ˾ʱʹ絶޷ơûΪҡˡӲͦȥģһξʹպǿҿ˾ʧȻʹԡ
ǷֺδΪİˣֻ⬣Զ˾еýˣʹŶԷʶʱȻԲ߱˵ܶҲ֪ôȥաʱϲܳΪҲԶо͸ѧʡ
Ҷ˶ʿоʱһȺѣʹûˡѶһλŮŶʡƽ޾Ϸҵ顣ҵоֹʹŶĵ̣˳˫ԣʮ׽֪˸顣ѾǵˣҺǣСɢʱֱһˡʱʧȥж־
ҵʱҵΪԼýһ춯ص¡ʷڴҵʱ飬Ϊҵ׸߲ɵü档
ǣҺ͵һ˿ƫƫͬͬѧ֪Ųֻûк³ҵĵȷȷͬʱϲˣܺ϶ΪһԸָҲԸʵĸоʱһͬ߹վ·϶˻ƵĿ˵ıӰƾֵָָ㡣
Һ͵ڶѾ˺ĸ飬ҵǧʻжҹִԸͶԳ˼顣ѾûȻüǿᡣ
ѧϰҲһģܲ硣
ǰһ磬طУ԰﷿ǰݺ˴ոСѧǴµӿƼģСɶѽ
Ŀǰʳ㣬ȻֺҲ¡ڹ̩񰲣ƺòšڶɡ֪ᴴڼԼС󻹲߲ء
ͬѧңСΪӦ211̣Ϊ21ѡ100صѧļţΪ211нϸߵָ̻ꡣƫƫڶ죬ʱѳݡ籾˶٣һϾͻᱻ̸ѧĥһ죬У԰͹ͺͺһƬС̻У԰νǧžʣŵЩȨʿȲ֣֪ġƺ
㽭ѧɽǸ߹Ĵѧ1997괺죬ҾɶĻõذҵѾõļͼѧCAD&CGصʵҶʿѧλʦʯӢڣʯʦȻѮ棬棬ʩɲ־
ҸػŴһԼϲרҵƻ35ҳΪʵΡѧĵһ죬˳رʵҡŲ5ӣ򲻶رŵŮѵ˼ΡΪ˲ðأҾʵʵץһݼֽվĶ²˭˰ɣ
ͻȻһɫˣԱ֮һҶϺȣڸʲôôԲͷ˵ıֽƺһм޳ܵˡ
ҾһƮƮȻȥӵˣӭ⣬³ȡèеèҡҿƪ£Ӧúúûڹ£Ĺ̬ȴʮѧĻԡұΪCAD&CGʵҶģõȴǼĵһӡ
գҾͷʵǴԹСˮˮʵҵıͬѧΪԻң㽭ǲǶԣҿ㲻̫
ҲΪǰоλյ߹CAD&CGʵңеʴӣеԱҲ΢豸ԱCAD&CGʵ΢İ칫ҾͱCAD&CGʵεĻáûκ˼ģѧɡֵĻܼǵĴѹֵĻһѧһȺСͷֻ˶۾ʾжôС
һڹʱЦĵطȥҲա
ķ۵ؿCAD&CGʵңȴδȫˣŻҶûʵҵļһг
նʱʵֻһһ裬һһ롣ЩһһЩǮҡһ̨￪Ʒӻ VA 4.019978£ȥμ׽йѧԴչʾ·ҲǽġͬѧΪ׳ʱ˵ܻ񽱣ͻصʵҸɻɡ
˵һõһȻȥɶ
չʾʱǷֺܶõƷǹҵĿĿѧ˵ƷΥ˾ּĻӦ˼߹дһݿ飬ʮǩܶ˸к޶ǩܶƨãҲμӹĿƼĿмˣһû٣дΪݲɳӡҵרҵΣȥˡ
ξѡʮǡֻҵ廪ѧʿĿֵһҲܷĿˮƽߣǲ˵Ʒίʶĵʦ֪ĿȥҵƷΪһĿΪڶίĵӣҲ㽭ѧչ塣Ϊ㽭ѧûκ׼һģҵƷںƷ֮Уûûաֻôϴϼ¡㽭ѧĸ֣չϳų档
й廪ѧһֱ㽭ѧͷϡҺôҲһǰ佱ʱίᾹط˳ӱ䵽ߣ
Ϻһһλÿ죬˹̸ƺϺεĿľΪ˷򱱾Խԡҹ㽭ѧĺɫУգҶ廪󲢲ʮԻ󣬾ʣ㽭ѧֶҪȥ
ѾǼԽˣĴֳҼࡣ벻ҪʲôƤëĺöߣϣɡ
199711£ÿ찤ʱһйѧͷչصȽȫ201Ԫ콱ʱΪνϼȴЭ֣ΪʧǳǮһʱƵļţǰü쵼˺̸ʲôôƫƫԼǸ߿ƼҵҪ﹤̣ǰ˿¡Ӣġ¡򡯼ֱСһڶиũƷֵС󳤵ñ˻ߣһǲöȵСơơȥͳǾ͸Ƶá
Ǽ񽱵ĲʿԱ㡢Ǯ󣬹Ǹϰһͨﳤ顣ΪǮ˵û
ˡͷչ𡱣ϻá㽭ʡӢŽ㽭ѧҲҷѧ𡣱Щһֻ300ԪʵĲʿǣҼֱǡǸҵġȼÿȻǸ̡ǾͷǮģﲻ̤ʵ㽭ѧУί߿ࡱУίҵġ֮ơƶѧУίʦ̹ϣ˵ԸҳΪĸʱٽܾڲҡɱȡѡΪұ⣬ϣ̡ѧѡ5һѧÿѧ500ԪḡΪԼİ5ѧֱ1998ҼеһѧŷԼĺֻˮнѡǵԼƶʧʱȥЩӵġ
1997꣬ѧʱڵѵǷ켫ԼĳѾӲˣٻȥΪԼǵڶʷӦÿ˾ҵţμӡҵֵ̳һݽڷݽûһǿԲģһɷң̸һ룬߻ûףɴԼдűҺһ棺¾㱸ֻͶʡ
˵ƵƵϵӣ10ͶߡѡһλҴһǳϻˣˡپ޹˾ʱҿνâ䣬ƬӡšҵΪΣʵֱĿƼԱ㽭ѧ뿪ңҡ֮֮顱ס
ҵʱ뿪һΪSoft3DͼϵͳϵͳߣӦ˾Ϊپ壺һǱʾ侳Ҷͼμ׷󣻶Ǳʾ쵽SGI˾ֵܵľ磬Ҷҵ׷󡣡پڶʱѾˣ1997׹˾һ죬һ֡ϱšı׳о
Ҵʵһλ˶ʿ顣С1978оǿ㽭ѧϵʿҵҪѧ˶ʿһͿԲʿҵͷԱҵĴ󣬹1.5ʦֵΪϴһ˫ӣ˾ǸˡһļϣΪSoft3DƷ㵹һ뵽Microsoft˾ĶάWindowsϵͳSoft3DǱʱǾֲ֧徢ʮ㡣
Ѿѡҵճ̣ǰǽǮ̫òô졣19985·ݣһ׼ȲǿֲȫƷƷ˼£ûгֶ糱ӦϾľ棨ʵѹûзӦʶûҶгԾòƷеһЩмֵװҲܿ¾档
ֻһ֮Եڱܺһ֣СչʾԼ10C++ʱʮھָദشƴʹĿɿڴʶϵͳļֵΪ㡣ʹźӱǳԵһ
199810£ù30ԪʽܺһһδӱɵݣҰֻһĹ˾رյĲ£ҡҩδذ׽ϽĲţѧϰ顣
ĶӪһգȥһпԭµĽڡҲ̫ٵˣ֪ʧҵë۵һˮ׼̲ס緢ĽҾ᲻̫гΪʵطܹȥ
ӱ͸ġ»ķڷسʧˡҰѲʮëгպһһ˷дġ˼롷һ飬󲿷ȡҿ˾ʧܵĽѵ¼ܿ͹۵شӿԷǶ˵ҺͶʷҪԼز۵˾
ҵҪ
1ʢڲ߱£һʯ쾪¡ҵƷѶȺܴһЩŵо⣩ֻ30ԪʽС˾ûв뼼ȥ¡뼼ԣɷҵƷ
2ԼΪĶûгΪȥƷΪԼϲҲһϲڹвг޷гжǵҪʲôǸϹæһ꣬һûҪгҲԷҵƷ
3ˡʵֱûдﵽĳ̶ȡõܶĿѧʱֻһֹǶҲܺҵȷϡΪҲ㣬ѧʶǳûиˮƽָңŻˡ
ͶʷҪ
1ͶʷǸˣҵƷһ˾Ƿ񶨵ġ˺üֵϣɹ飬ʹSoft3DɹֻҪǮСֶĲ̬ʹȷĿԷú޼ֵ
2Ҳҵеѧűˡд˲ĺͬҾȻǮ±ҵ30%ɷݡΪͶʷʵ˫һʽ51%ҳ49%֪Soft3Dܳɹ£ȴΪռҵı˶ɥʧӦеľյ˫ʧ
رչ˾ʱеĹ̶ƲͶ˼ֿ15ԪȴһáºʶƽЭʱ˵ֻԹԼ޴ʿźͬҾԼڴ޵ʵֱƷʼϲиŬұǻۡԼķܶûʲôԺڵģѧԶʧȥĶ࣬һλøá
˾رպҾڷʡϰ׼Ϊ֮󡰶ɽ
19991£һӪҵGһ⣺ҸһͶ100ԪһҴ»ϢӦÿ˾ŵһڴǧԪǲŹȥ5£Ͱ100ԪˣʲôҲûʵڲô£ҷ
λGҵ2.5ʮļԸˬͶʵǸ˽Y³YԳӢĹѧƾ**|www.taohuke.CnܶԹ˾гһץGϲ˵Ǯû⡱ҲͶ100ԪҸY40%Ĺɷݡ
GY̸ʱͻȻƻԳGԶݣ뵼ĽЩͬˣYĸ߼YȻſڿӣϲ಻ϣƺӷģһʰҼȥιĹ˾ͲƷʾҪרҵתרҵ
YЦITҵͲˣǾӪһǲƷǹȽ˼롣ιҵĹ˾㿴Ķֻȥᡣ
ƨȲԪʵʫΧǡҸֻ8깦˵ҲITҵ֡Ҷ10ѧûˡȽ˼롣ӢѧĳɹΪԼѾǡղ۹˥ܵԭбҪӢдһ
ҶG˵YΪ˼両䡣ӦϹرչ˾Ծ󻼡100ԪҲ𣬾ѵɡ
G˵Ǯû⣬100ԪڰŶĲˡ
19995£Gһ⡣
˵Сְϴ˵úеҽ˽ѵ
˵Ǻ£С֪͸Ǻú
̾һ£Yֻ100Ԫ
ҵʱҭ׵ѵG㽲YǺöرչ˾㲻˵Ǯû⣬200Ԫá
˴СӣYÿһҪǮʱظ֤¸¾һ١ٶǮϣܾȻ˾ڸô죿
һ20ְԱ˾Աֻĸʮ硣200ԪĲ񱨱У100ԪڳԺֺлߡֹ˾ȫҩɾȡ̨˵ûһʱҲӦ5·ݵ8·ݣ壬G˾YЩࡣ
ģΪGͶʵĹ˾GҲ֡뷽跨סYĲʱYܴGڳǮGѪȴԴ룺ѪκҵĲЩѪɡ
YֺһڵƭHע⣬GͶ100Ԫ½һָơ˾˵󽫱ȿϢӦÿӿɹۣҪ׼֮ͬʣż·쳣ǿֹ
GǸˣ̡̫üֲܣֲĺ˱۸G˵Ǯû⣬˽˲Ʋᱻƭ⡣Ұ©סɣҰĵػѧУ격ʿѧλġ
8·ݣҺGӣͬᡱѣǿаǸ˾GĹУԱǸ˾˽ӹܣȻÿ¿𲻹ԪGܵҾͲȥG˰̡
ǰδ˹ĶǵϷµľƣǸ˾Ա͸¶YӢƾԼϺĳרѵġ轥ٴѧʿƾ֪߳ܣΧǡYȴֺƽ޹ΪӢ絣ģӢٹйг衣
G˾ӣСˣʵڲִˡҺ꽻GһμʱҹʼΣҴԻ300Ԫ򼸱顣GΪżôͰᵽҼסɣҼã԰ĵѧϰΪҶסҾͿڹҵķסңһֱסʿҵԴӶѧҵһʳ죬ϴ·ݳޡΨһ鷳ҵܶѽͣҲǱˣΪ˹ҵ棬ѲôġGеĲŮģûд޵Ů
ڶʿѧλеءźǡʵѧûгûĴͲమ顣Ϊο˼˵£Ҳ˼Ȥ£ҷԼóˡ
Һ뽲һԼμϣ̵ľܡ
1998٣㽭ʡƺ÷ԴѧʦǴϣ༸ѧ㽭ѧĺͬѧҲ֪ѧһѧڵѧӷѾҪ600Ԫѧڲѧѧơǰ2000Ԫ53ƽɵģá
ʱ˾ʹծۣʮĴ벻ص£ûж񣬶ǡ䱾ȥĺʷһҡӹܡһѧһС׷ңҳ˻һġ񡱡19997·ݣҰѹʿ͸һѧԼ޲׼199711Ҳʿҵڼ䣬ֱӻӵΪ7ƶѧԼ1Ԫ˼ܣ
1˵İĪڸϣ
2κʱܹԼѵˣԼ
3ҪεģһҪ跨Ľεİǡʩᡱʩᡱȱ⣬Ϊ
˵µˣҪС˷ѾҪΪ˱˶Լ
ܶΪԼΰԸС£ӶҲûʲôмֵ¡ҲкܶϣԼɹȥˣճɹʧܣһҲûаˡкܶȨƻ󣬱ԼԺ֡ƨϲҪ£ܹ˵ʱȴԡ̫æûաΪɲȥ¡
ҲæµڷܶҲΪΰϣС³ʵһ
һҪһҳɵС¡
ܹܶߵȽ˱ġϰߡϰȻأųꡣ㽭ѧȵŵĵط㶼ԿƺУſڵķֽƤϴͬʹϵһȹʺޣǾȻ޶ԡҼǲԼٴεڡǼҶûڴѧ﷢ֵڶµˡ
ҺеĽڡʿ˶ʿѧʿǽ仰˲ֻҽɵ£Ҳֻ๤ɵ¡ֻҪ໯ӣ伸û࣬ࡣǲظòȻӦ
Щ׷ҺͽҪ׷ҵСǣһͶһϣ㶪һͲϣ
ݵؽϣ̡͡ڹҲڲֻϣЩԡܴΪԼǸʵǡ
ûжԸ顰֡Ҳûջ񣬵һΡ
ڹرչ˾ϣȥ¥գϼǰδϨĵơʱһλѲ󣩵꼶ŮҡһǰΪʵϰ߲ɷùң̸úͶ֪ǴѧѧԲѵؽ̵Ρҿ˾һＸû벻ҳ˹˾ʱܡңʵҸж
ҲԳض˵㲻ðοˣʧһͦס
˵ҲοġһֱĹ˾գһꡣȥ֮ǰл˵
һ㲻ʲôطˣ˼Ǻҡҵ֮ս̵ʱأġ֪͸ĵˣ²Ǹ
ң˵㿪˾ʱ⻷أҸ޷㡣ʱҳĺѣҲҷҰһˣһֱû㽲֪ʧܵģʧʱʣһˣŻ֪İģǳġǸѧǸĿѧŵԣϱڡ㲻ҪŮ׷еĺܻƣģһλᡣ
Ȼ鳡֣ôҲڰιӾǺˮ벻ִ֮£һŮ˵࣬޷ڸǾࡣ
һֱΪӦһӣŮڴ³ѧϰɫŮֻѣˡ
СϰʫŪģѧʱҼһʱͰΪҵϵѣԲŻ˾̸̵ŮѾڶ鲻̫õȽŮҴҲûָѧϰϲһŮӲϣΪҵŮѣȥ׷ˣֵ׷ҡ
岻ϲٰҵġ֤ݡҿ˾һָƣҵķҵа˼ܵȥҵϵףЩҹȥĻ鶼δ֪˼ʱд˺ܶʫ˺ܶᣬΪ˺һЩĴ׷顰׷
֪Щ˲򡢲ʵдģѵŮ֮䲻ӴҲ飿
һغҾͱڵأĪسˡɡ޵ݵذߡΪĿŮķ񣬾͵һȤ²ϡ
Ҵӱ͸ġúһʻң˵룺ںĶ죬ѩҰҹ¶ܵСľһХĻƻ裬һķˣӦһһľÿȽյźķľıԡ
ҶԵһõǣغ㡣
ҶԵڶĻǣˣһػҵʦ㵱ʦ
֮£ҵȷŮ˺ҹҼΣʶʱѲ԰ΡǺֵܹĶ˾𻨡һͷţһƥһɻûбҪסһ
ʹʹһΡ
Ҷ˵Ĳһ𡣡
Ϊʲô
˵Ҳϲ㡣
Ϊʲô
˵Ϊʲôûĸо
˵ʮ֮ҡ
֪ܷͼǿΪһֱšΪʲôԼиĴ𰸡 ·8ǰѾ߹ˡ
ǰټʱѾֱˣѧ˳Ľһʦѡ
˵ʦδؾͶ̵ĵд鼮һ
˵͸ĵһпͷļǹҺ
˵һдһƪи
ȻҲҪʮԼ
һֵûˣǹ¥Ĵ衣199915£ڲʿᾲڹҵġϾŵʱͻЩҳԡҺʹ׷ǹʣͬѧǶ״ΪʲôҺáΪûԼɡʿǵɡˡ
5·ݺҿڹҵķϰᵽһǧ̼ȥסҲèݡˡһȥһΣҾͺһ֪Һʹϵͷ׷дɫŮѡ
ȻְӴ¥ŮɴϾǴ裬õġ׼Ǽʮǰİ汾޷ֽļݡס˲öģȴ©˲©ģδɹһ
һ̵Ƶݿ⻹Ӧṩܺõ档
ѧеĺܶͨģǾͲЦд¡˼롷Ȿ飬дʮĹ£һҵ
ѧʮ˺ܶõĻ䣬ڿԴƯľˡҼѧһѧϰҲҳɲţлΪŵİְ֡
ֿ˫ְδԺ
Ҫ˵θ֮ԣ
һȥ컷޷
͹Ҫ飬޷ᵽ쾡µĻʹࡣ
ϵֻۣ˵һ仰㿴ȥɡ

ãصС˵ www.27txt.com ӭȥŶ
վԴȫתԻ֧棬ȨУ