| | | |

?


?eclipse ??2002/03/30 01:42pm

?
1?g??h??8?¡????????h?¡?????
2???û
?


1?j4
1.14
1.2j 4
1.3 ?5
2?7
2.1???g7
2.2L9
2.2.19
2.2.2??10
2.2.3Z11
2.3h??L12
2.4h?L13
2.5? 14
3?15
3.1??15
3.2?17
3.3????18
3.4?L18
3.5???20
3.6?21
3.7?22
4??22
4.1??23
4.1.1??23
4.1.2?24
4.2?L25
4.2.1?25
4.2.2??L?26
4.326
4.3.1???27
4.3.2?28
4.3.328
4.3.428
4.3.5?29
4.429
4.5?31
5?31
5.1??32
5.1.132
5.1.233
5.1.3?34
5.1.435
5.2?35
5.2.1??h36
5.2.2??38
5.2.3??42
5.3??ô44
5.3.1??44
5.3.2?44
5.3.3??45
5.4?46
5.4.1???ô46
5.4.2??ô???47
5.5?47
6??48
6.1??49
6.1.1??49
6.1.2?/?51
6.2g53
6.2.1?53
6.2.2?54
6.2.3?55
6.3???56
6.4û57
6.4.1?57
6.4.2?58
6.5???60
6.5.1?60
6.5.2Intra3D 2.061
6.5.3??????? CNC 1.064
6.5.4??69
6.6? 69
7C++70
7.1C++??71
7.1.172
7.1.2?73
7.1.3??77
7.2õi?81
7.2.1?81
7.2.2'ö82
7.2.3newdelete?83
7.2.4'const85
7.2.587
7.3?88
8J89
8.1??89
8.1.1??90
8.1.2??90
8.1.3?90
8.1.4L?91
8.2??91
8.2.1Microsoft?l?91
8.2.2?k?92
8.3???÷93
8.3.1??93
8.3.2??94
8.3.3??94
8.3.4?95
8.3.5j95
8.4J95
8.5?96
9?97
9.1???97
9.2?J??98
9.399
9.3.1?100
9.3.2??100
9.3.3j??100
9.4? 100


1 ?j
1.1
????j?????????h¡?ã??
?????????????????????l?????????????????g?????
ÿ?????????d?ÿÿ?j???ð????h??????j????????????L?h?????????z??????k????'?????
??L??i'????
??????U?ª????jh?????jj????


20002
?


1.2j

60????¡????????lñ?á?????h?????l????L????????????h?£???þ???S
1968?h???????h??????????kS??h??h?ë?ðh?Sk????d????dS?j????h?o
?j??????????L??????g??????á???L??W?????????ÿ??d????ô??¡
????????C++/C?????????????ëg????jI????????????hl?l???ÿj¼???¾??????
????????????ô??ôô??j??????g?I¾??
h¡??
?¡?
¡??
¡?
¡??o
¡C++ o
¡J
?¡??
¼??????
z?J????ÿh???£??l???i½??????h?????ã?ã?ã
???????????????
?ò?ãh??

1.3 ?

?????j??????????
???j?????CAD&CG?????????????????h??h???I????????????û?????j????h????j?
??jh???????????????j???
???????????????j???????d?????û??dJ????????h?j???????ø???????????
???h??????I??????k'??????j??k???Z???????
?????????l?£??????I??I'??L??h????L?Lÿ?300??h
??????o???????I??
????????????


20002
??CAD&CG??


2 ?


½?L?????????ò?h?ôh¾??h??U????j???

1.1????õg?1.2?L?á??Z???????·1.3h??L??????????1.4?h?L?

?£????·?I???ëh??I???????gŽMicrosoft?j??u??j????????????21?

2.1 ???g

????L?j?û'?????j???ø?????????j???????????????ã???????????????????ú?õ???Kõ????

?J?????h?????????????ß?ô?h???1?ÿ?????l????µ???2?û?????3h'??'??????ÿ????

??????????????????????????

???????oo????1.1?

g?h?ù?k?????g?g??1.2?g??1.3g??g??g?? [Pressmam 1999, Sommerville 1992]
 

?gg???g?g????"?g??z???dh???????õ??h?g??g??????h??????h????g????g?k??????h???l?????g??û??g????eg??1.3?g??g?g???g???

ù?g???J???o???L??????1.4a?h????????????1.4b?


?ôg???1.1????g??????oo??????C++/C?


2.2L

????????????e?ô???k???k??????ý÷?????k?·i?Z?õ?gj???????j????õ???????á??Z?

2.2.1

þ???K????õKe??e??òi???i????j????áLºZ???????50??õ??gL???õg???

õ????h???????g???µgh?uK????g?L????????ð??????J¹????????????á

?õ??á??1000?????gS?gObject Oriented???????????

h???'õ???(Software Component)ÿ??µ???ÿd?'????gµ??÷?????????h??'?g???????????L?1.5?

ò?'???ñ???????Microsoft?COM? [Rogerson 1999]??õ??gá

2.2.2??

???h???????????l??"???????????ÿ?ó???????h????'??

 

?1.6?k?????og?z???l?k????????h?h???n??ÿ??????????

2.2.3Z

Z?Z????????'û?ã'??e?????Z?ÿ???Z???????Z?h??Z??L???????

3D?Quake?PC?????????Quake?????µ?£Bresenham?ßü???h?h?Quake?????PC?l??????L????????j???Ik???????????????û??ã?????

?????????Z???ž?áZ?????g??L????'???õZ????

???????š?j??L??'?õ??ü??h??????h?

????'?h?????oh3D??????????ô?????3D?????ä?????

????Lôh???ò??k???¿??Z???z???j£'???øá

áZ?????ü??

ÿg10?ÿgh????20????hg?ô?

9?99?999?10??1?h????µh??


2.3h??L


?h????????J


?h?h???????????

?õ????L??k??????????1?L?g??'?????á2?ûh???????????


??õ??õlh

?õ????i????ûh?????????


??????

????u??????????1??µJ'??2????????'???????????j???á?k??????l


?g????h??g??g

?????????h'?????????????????ßh


2.4h?L


?h?L????ó?????????


?h??h?lh??

????????ô?h?????h?l??LL?????????????÷??ZL???

????????????????


?õ?õi

????ûõg??õg?K?÷?????BasicFortran PascalCC++??hhã???Visual BasicDelphiVisual C++Java?????ø?????k?????

???????


????ö'ü?

?????w??h?????????l?????h?w???ghg??k??üg

??L¸???l??????????á?L??g??gUg?l????g??o?û?û???


?g?J???????

???????????h?????? [Cusumano 1996]1.1?

h?

?h??û

?h??

l???L??g


1.1 ??


???g?g???A'B¹'??1.1?Ah?B??B?A???'????A?'???û??h????1.1l???»

????J?g?J?


2.5?


???????????????h?????½?ô÷ã???????????'h?


3?


?h???????õ????L??i???????????h?????ôh?ãø?ø????h??????????????U?õ??g????h?????e???

???e??????easy???????????OK??

???easyOK??????????h?

1?h?

2??_?

3????õg

??????

?????g?ó???

3.1??

???????????????????hö???????????????l??????????g?h??????u??????????

??±?

h?

?????????û???L???????Bug?????L????ó?

h???h?y??h¼??

????????????????

?????????h???

???????

???

h??h??h?h??

?h??????

?h??12??66?

?????w·?????

?j'?l????Lj?????l???h??????øl??y????á?

??????¡????£??¸??µ??????U????h?????g

??????????????h?¡????g???th??????

g?

?????ô

???????????????o

????h?????¶???

?

????

???û?????ÿ?

3.2?

?h?????????ž??L?????????¡???????z????????h?Z??I?????????ûû?

h???????????????h?????j?l??ü????h???h???[Cusumano1996]

h??????h??h???L?h???????????????h'õ?¾??

õ??þ?¼

h??????

ÿ??h??????????h???????h?????????

?L

??á?hL??Z?????????????????Lá??????L?

?

??????zõ???????g???ùUL??hg?????????????g?????h?h??????u?

û?ûy?Y??????

?h?????????õ?

3.3????

?Microsoft????w?[Cusumano1996]Windows NT 3.0?¦µlhÿ?h???

z?hÿ?ñ???????????????i????'?????L???????ÿ?h???????

??l??????Word????

h???ž??oh?ž??????????????????????æ???270?????ôL?h?Word°??h?

??h????ú?µ?L???ÿ?h??û???

3.4?L

??h?h???????????û???????gh???'????????????????ü???

h??h??K??????????????"??û?????????????????û????h?????ñýg?g???????

???????????????????????l????????t????h??????????????J??L?????

??U??????????????ð?????????ôþ????ó?????????¡??????ô¸?ù?????????g?h??????l?

?????hh?h???????h?h²????????k??g??»???????'???j?z??z????????h?ÿ??????õ??hl?????

?Žh?j?z?

????lh?l?h?????????????J?????????L???L????????????????l?????????'?????

???L????l??????û??????h????????????????????????

ÿ??l???h?h?h??????????h?????h?l???????l??2.1??jl??????????????d??

3.5???

????????L?????K??¡

?????????L?????????z?¡???????Z???????????????l

??????g????L???????h??????????h???????????????ôJ??h?g??????³g??g??

j??h?????????j??ý??µ¶???????????gg?u????????ôô?????

??????l???????????h??L??ô???ô??j

???h?û??????????ô???????h?????????????????????J????h??????z?j??£h??g???????

?š???L?????d£?h???h?¡???????h???U???Uh?????

????'?????µ?????h??óü?Y???????

??????h?y????z??????????????jh??h???jh?³???????h???????j?l???ši?????199710·?h?

?'????j???òô???'???û????????û?????û????l????¾??h???h??????10C++???????'??????l????z???h

199810£?hd?????hL????£??d????t???K?h??h??µL????????ë?h??_??L????????????ë??hh?J???hjL?¼

J?????õh???û??'????????????õ?????g???h

3.6?

j??h?????h???h?w?û??o?

??????????µ????ó?????ók???_??

????????á????¶¡????h???I???54????6??j???j?û?£????jh???????ô??û????????????????????¾????????????g????h??û?

???????°?j????L??????û???i???????ÿj?h?L??????????I???£??????????????S?ø?

??ó????²??????õ???uõ??


3.7?

½ó??h???????a??¡

????????ûh????£???90??h???????µ???????¹£û¸l?h??hh?L????????????????z?????

4 ??

????????oo????

????h?L_???h£??????????g???t??š???????

????h?????????????w??d????k????????????????o?????g??gL?h?????

4.1 ??

???h??????????100% ??

??hh?Zh????ô???æ????????????h????????????????Lg??o?????????õ??????S??S

4.1.1??

???Lg????????????????????j????Lg????á

???h??????????????????????ò?µk????????

??????õ???3.1??????z????????

?õ????1.2.1??h??g????

????????????????g???õ???????


4.1.2?

h??æu????òg

?g??

???g????????

h?h?µL????h?

'?????h???

?????????????lh?æ???[James 1999]

??ÿ?7:00????h???????????h?¼??

1????z????????L??

2???û?????g

3??Lg????

4d???l?

5d???????

6?????õL?¸?g

?_????h?L?

1z?þ???????????õ?????h?l?

2?Uh????????£???¡?j?

???h?????h???????h?????J?£?????g???????????u??g???á?? ????

3h??ý???_h_??K??????ô???ô?ö?_j'æµ???

4??????õ??????????h????Microsoft?h??z?50% [Cusumano 1996]??????????h?

5???????????????????L?????Z?????????h????

4.2?L


??L?h???????????????õ????h??????L?


4.2.1?

h???????h?100% ??????80%???100?ô???80?????60?ô???48??????????ø?????????

h???????1??L?ÿ??0.95ô????0.19ÿ??0.9?ô????0.03?ÿ?1?Z1

û????K???û???????????

4.2.2??L?

?100??80?U????gõ?????h???L??

50i?????K????g?gl?uô??

ù?????gh???h?L?d???L???????á???û???????eg????g?????

??û????ö»???????Jz???¡???????????????????

4.3

????

??L??ù

???h??j??????????º??ù??h???t???????£??????U??ô?????

????þ????????????h??????'á????h??

????????????????????????????????ÿ?ô?L?þ????U?S?

??????????????g?????????????????g?gg?gg?g?k?3.2?????????g??g???????????·??g?gg?g??3.2?????hh?

4.3.1???

?????jh???????û????????h??g'h100% ????ô??????'??????û100% ???ô????h?????????

?????????

?????????????????????????h????????????????

??hL£??????????????h'??????????h??????d???g???i?????gôh??g????????J???úúõg??h???2000?????gh??????j??????ô????ûñ?h?š

4.3.2?

û??????????ô?g?????????Z?????????ZL????g????j??æ?ÿ??????ã?h???£???

4.3.3

?û?'???û?û???'???????¶????????

???????ë?????û?h???????û?????ã????ð??û?û????hu????á?á?

4.3.4

?h??h???ô??h?????ú?????

??û?g????·???ñ???????ü???k??????j?????h?h?U?????h?t?

h?û????¡??????h??????????h????U???i

h?'???????????ú???????????L

??????h?Lh????ú????????h?K???U??gZ?????5??Lò?100???g???y??"????h?úñ??

4.3.5?

õh????'??h???????'á??õ?h?õ??½??áC++

4.4

????h???????????'??????

???????hhS?ÿ????????ÿ_?????h??????????ô??ô?????á??á

?õ?[Pressman 1999]

1????hu'???

2??????g?J?ñò??????

3h?_?_????k???

4??????

5?????

6????

ü???¡????? ???????

h

jh?J?????j??????µ??g????j?????¡?????òš??????????????????211??21?100??lt?211??????tt????????h?????hh??????h??????gž?w??????g??

???U?

??h?????????????L??û????????h???ûtt?????ô????û?????????????h??????û??

?????

4.5?
???ô????500???500??????????š????gð???????g??g???????????

5?


???

??ô?ô

'????g?g??g?????????µ??10%?90%????h????h???4.1??J??á??

?j??????????????????g???????û????????õ??õ???'??U?L???h£ô???°g

4.2??????L??û??????h??h30???g?h200???g?h200???I?gh???100????g????????????????????h??

???????????h????'?4.3???ô?4.4??µ??????

5.1??

?t???ôë????????????

????û????????²??????û????g???????????

h???????á????????????L?4.2???????

5.1.1

ÿ????????

h?

??????????????šh¥i??????????g

???ô??????ô??

??????´??????þ??????ûh????õû???û??

????ö???????Z??????????

1???

2?????

3???

4???????á

5??

6?g??????

7??L?

8??kã???????????????h?

9???L?á

10???á

11?áInternet??Web?ká

12?t???????ká

13?k?ã??IL?ÿh?L¶?h??

??

?gZgu?g??¡???¿???

??????h?????ý????Internetÿ???????úúû????i?h?

?????????????ô?L??t?ô??????h???j?Internet????????I????l???

???????ð?·;?g?;??

5.1.2

??¼?

1??????L????l???????

2S??ö?????t?????ü?????ö???????????ô??

3S?£???h???????©????????£?jõL?ã??J?????????ò?¡

??????úÿ

5.1.3?

??????

???d?????

d??ð?k??????????????????

?????????????ô????????hg???L????????½?

????????DOS???£û?DOS??????DOS?????DOS

??????90?w???h?????h??????????'????L?µL????

?????h????ã??ý???????????õ???????ø??????!

h????h????????ô??????h??h??????J¡

?????ô???????µh??LS???secretary??????????L?ÿ????????????gj?ã?Z??????L??£ÿ?æ????

5.1.4

??????t?

h???ôõk?á???šh???????

????????????š?üõg??š???"?h????????i????¼??L£

??????????????????

????û????ô?????û?¶??ô????¾??

????????ü??????ô???ôã????ÿg???????û???????U????????????????š???????L???????????

5.2?

??????Microsoft????JMicrosoft????'J?????i?? ??h??ý????g????h????????ji?????h???i??g

hInternet??YahooNetscape'h?£?????Microsoft?õ????????

??????þ????á???????gd?ó???????L??ð?L?ë?????????g??????????J

5.2.1??h

??????h???

???'???hh???????1997???õ??CAD&CG????????Wh?????jh?????U5????wU?????ð?????h???K??h????h?????ôô???i??hTT??????³?è?è?

????????????i?????????????

h???j????

k??CAD&CG???d??Z?û??lh???

???hh?hh??hh???h??19978£?µ??????·??g??????????????g?hõh???L??

?hu????û????l?h??h???h??????????u?h?¾????10·????t?????????tµ????h??????10???h??h??????????â?????š??S??????????????

???h?Soft3D???????????h?????µ??????SGI???l????

??h??????J??1.5????h?????hl??Soft3D??h?Microsoft?K?Windows??Soft3D????????19987·?h???????¶û?199810·?ù30???ù????h????gº?k?????

?h?????????????J?????

h??

1???£h??¡?????h?w???30????û???¡?????

2??Kû????????h???????????ô??æh?hû??????

3???û?????õ?????h?????????????û?????Z?

??J

1??????h????g?ü????'Soft3D????????'???ú??

2????u???l????±?30%???????h?51%?49%?Soft3D??£????i?????l???

?????L?????15??h�?????????z?

???????'??U????k?û?ô??g????K?h?øá

5.2.2??

19993£h???????æh?8???

??ô??

????

¼o???

????????????æY??©????l???????ñ??Soft3D??????

???ô

?????

???????L?????u??ö???Ž??

?ãã??????k?h?

??????h?u???h6??????????????¼h??????????????????????g?ý????h??h??g??g

á?K??ÿe?¡

hSInternet?l??óh?????L???h?£

???ZYahooNetscape??h???????????????h?L???????????ô??

?S??Internet?lô??Internet?L????£

????ã???????z???

UõL?L????????????????j?l???????û???????

?h???L???g??????j???

S÷???h??h???????jh????200?/?k??'Z?g???£

???2?????9??h??10???????200???12002000??

?ÿ???h????

??U?ÿ?µÿ?¡

ÿ??h??'á

KS???????

h??hek

Internet??????ò?Z?????g?h????gû??Internet???L???????ô???jg??h'?

????h?L???????????ô??

???'?š??Z???????Z

jInternet???ÿL??ÿ???h?InternetL???????h??j£??Internet?ô?i?Internet????

?h??????h????h????h???SGI???hJ'????g?????h??j??h????????û???????????±???h??????õ???g???l????hInternet??ô??

??gh???h?l???????????¾?L?g?gg???g???1???????g??h???g?????z?h?????

??Z?g

Internet?????Internetk?h?ûû?j??????ô??????l???g??h??????hûh????????????????????h??????l???????Z?ù?õ??SoftBank????Z????????????I????????õ???ù?

Z?????????????£?'h?L?????'? + ?????hû??L????????

???ek

1????ã???????z???

??¡?????÷?????????ô???????????

2UõL?L????????????????j?l???????û???????

????????? ????????????g?ISPInternet??????90??gISP?????ž????û????ôh?ISP??????h?h????wK?U??ISP??ôû?????? ?

?g???ISP??????????ISP??????j???g?Internet???¼??g?????1998?????U?h??ZISP??»?????????????????Ÿ??

3?h???L???g??????j???

??h?????Internet??J?1000?h??????L????h??????h?Internet???h???????1000?

???????Internet?1000??????

??¶????Internet???h??û'Internet?????????û?ûISP?h?ISP?öô????ô???ýL?

??ek

1???2?????9??h??10???????200???12002000

??l??10/???ôh?????200???g??·??ø?h??

2?ÿ???h????

??Z???

3??U?ÿ?µÿ?¡

?g?»???

4ÿ??h??'á

???š?š????h??g

g??Kek

????????š

?????t?????h?K?????ô????wk???

?k???á??U??ISP?û????k

5.2.3??

?h?????ú???

19991£h??Gh??h?100?h?»??ÿ?wh?g??Z?5£?100???ô?û??ô£?

?G?2.5?l??????Y³Y??L??????h?G???û???100??Y40%L??

GY??????G???L???Y??Y?????????gh????L??????????Y?IT?????h????????L??K????????????8???IT???10?û?????????????????????h

?G?Y????????????100?????g

G??û?100??Y??

19995£Gh?

?????ú????

??£????ú?

?h£Y?100?

?????GY?ö??????û?200?á

???Yÿh?????¸¾h????????ô?

h20????????200?????100???????????????ûh???5·?8·??G?Y??

g?G??L?G??????Y??Y?G??G??????????g

Y?h??H??G?100?½h?o???????ÿ????????z·???

G????ü???l??G??û????????©???j???????g

8·??G???????GL?????????ÿ¿???G????G??

jd?K??µl?????¶Y???????g???k????????Y????????g?????

G??????????Ghµ??'S??300????G?zô???????ã?j?????????k??????h???µ???h?????????????ôgG??Ugû??U

5.3 ??ô

??'?1????2?3??

5.3.1 ??

??????????l????????????ôã????????²???

?????ô????????;?????????Ltû?wJ?????????Z??????h?????ô?ô?

?????g????ð?????????g??µl???????????????I??ô????

5.3.2?

?????g?????

g???????ö??

?

????ûhK??h?Ke????lh??·??g[Cline 1995]

??????????????

1???????????lL??????

2??h???ô??ô???????????????ô??????W?¶??

5.3.3??

???????h????????j?z???????h??l????

?????š????k????????¿?????á???????ö????????????????????????????

??????gh?????????L???

h??????·??ô?ý?K????õú??g?????·??

??ô???L??????

5.4?

h?????

????ô?????1???ô2??ô????

5.4.1???ô

?????????hg????ABCDE????????????4.1?


h??? S?????????D?ÿ?h??

S = { D1D2D3 Dn }

Di ???P?ÿ????h

Di = { P1P2P3 Pm }

Pj????Fÿ???L??

Pj = { F1F2F3 Fk }

?4.1?????????????l????????

1?ÿ????ôó??i????l??

2???jì???jì??·

5.4.2??ô???

?k??ü?

1?????š????

2????²??????l?û?'??j?h?????

3??????û?g?lw?w;????j????????g

5.5?
??????á??½????I???????????????????????

²û?J??Z????j?ë??h??????j13??h??????J?

?ÿ?

6??

??j?????L????????h??????????????U???o?h?????

Windows NTh?????8?Microsoft?h??????L????ÿ??³????????i?ö???d???ô???ÿ?????gj?´???????'?áú????k?

½???k???ogo???oûo????ô

1????L???hL???ô??h'?????

2g????L??g?h???????g?h?????l?????h?'?????

3??????????????????g???????K?????;??????L?u????????????

4û??hhg??????g??g?ál???????¶Unix????l???ôWindows??j????Windows????????????ùU??????øõL?

????????????????????'?????ž?õ???o?????L????¸?????U??''·???w??w???hú?U?g??h???


6.1??


???

???????????h?ô?????ô????g????K

??????K

1????h?õ???õg?????h?????????????????????h???j?¥???h???L???????????13?ÿ???k?k?ô960??g???ð

2??h?????L£??????????_????????????????jµl???????????????ëë?ggK????????i?????ÿa??????????ò????ô????g

õ??????????õ??????/Client/Server?


6.1.1??

??ôh??????ûh???ü?hh??L???L??????¼????

h¼????

???h?????20????????????š???5.1?h????e??ö??e????????e???5.1???¼?????¼¼??5.1???h??L?ô???'²??L?²???'???L?

??????

??????????????hh???????l??OSI?g??5.2????????Layer??Levelk??ÿh?Kh?hk???h??h?h??jnh??jn???L?n????h?jn???h?jn?????´?????????????

ÿh????????²??????h???ÿh??ô???L???L????'?h??h??Implementation?h????w?j????µ????h??[Tanenbaum 1998]

???

?j??????h??Middleware????5.3?[Jacobson 1997]??????k???DCOMCORBA??

6.1.2?/?

??h?j???Alexander Graham Bell1876?????j?hh?û???h?h?û?û?n?ÿ?k?????????lL?j?????j???5.4a???g

??1878??h???ÿ?h??????'????????????????g?5.4b?????L????????;?????h???[Tanenbaum 1998]

?5.4b?j?????jL??ô?5.4b????/???????h??Y??

?/??w?

1??k??????j????L¾??h?

2?????????????

?????????k?????Request?Response?5.5?

á??????L???Rendezvous??h?h??L???????????h??ó'?????????????????h???????????'????h?'?????ô??h?????????/???????g???????????

Internet/Intranet?jWeb ? ?h?????/??5.6???w???h?û'÷?'ÿ??????L?????Web ?Web ???ýu?????MicrosoftASP???Web ???


6.2g

?????????g??ô??????á?????g???g??L???g??????eJ????g????Lh?????g?????g???

???g?û?????û??·??ÿ?ô?h??????????hg???g???ôL???g?g??

?g?????????

6.2.1?

h??????????????ô???j???

¸?û´?ð????????g???h???g?g??????g???h?

g??????hg????Interface?gL?g????ù????ghC++ôgL??????L?ghCOMôgL???COML??hCOM???ÿ??h?l?[Rogerson 1999]

??L???á???L?g??k?g?ú?á?jì???

6.2.2?

??Cohesionhg?????K?Couplingg???K???gg??g???????g??g??g?????

h??

??????¼?

1z???hg??????z???

2?????L??hg?????hg???????z???h????g?????'????????g????

3???hg?L??h?????'?????h????

4??hg?J??g??J?????

5???hg????h??h?????

6???hg????h?h???h???????

7??g????hL??g???

?

??¼?1hghgjã2hghg??3hg??hg??K?4g???????

?????¼?

1?hg??Lhg,??hg?????jg??g?

2??g??h????

3?hg??hzt????hg?zwgKz????

4?g??????????i?'?g??

5?g??????

6??gû?????

g?;'?ÿ???k?'?

6.2.3?

hg?h?ãg??hg??g??

?g???ì?g????gh??h????h?????????g???????g??????????õg?

gg????????????k????????g????õ??

6.3???

??????????????L???ô????

??hg????????½??????????

?????õ??????g??ÿ?????????o

h????h?i?????????L???h?h????????h?h?????h????Resource Constraints??ã???Efficientgh??????????ÿ??h???????????g?J?Cost?j?h?h????g

???????????????????????h????h?'õg?????h???'ü????????ø????û?g

??õ?????????h??

1ÿh????????hµ?????????k???h??'õ?????????????

2?????????ø????????????????

3??ó??h?õ???????

4?????÷???õ?h?????[Shaffer 1998]

6.4û


???????h?h?Y?h????????Yd???????ûi??ò?£?h?Igû?

????????ß????š????????L????????????????û??????U?û???h?û?K[ 1997]·?????????ã??????????????¼?wg

6.4.1?

???g?û????ûû?óªL??û???ûL?

?????ô?????????????h??????????l????L?'????z?Lòû?g

Lû??k?z???ûL???h?û??û????????????já

???hi?l????????h????û??zk??????L?'??ý???????L'????????eLg????

?????û????

6.4.2?

?????

hl

l????"L?ô?ô????l???????U????l??????

?L??'û?'??'û?h????h???ûL????g??h?h??K???L??h?i?û??û?????L??

k

k?h?h???

??L?h??????L?û'?????F1?????õF1???ôûõ?F1h??L??ûh??¾

?j?Visual C++Visual BasicDelphiC++ BuilderPower Builder???????û?Internet/Intranet?h???û??hµg???


???L???Lh?????????????hSoniquek??J?_?U??5.7?


???ô??h??????????????????????·

L

?ûL?????gû'ý????????h??g??'????õ??û??'L???û?'?ø???????????Unix????ß???h?L??

?h?????'?'IBM?1985????gApple??Ž??h??'õl??

6.5???

???L?????


???L?????????µ? ????L[ 2000]

6.5.1?

?a???j?3D?ó?'3D?ó???á???a?APICoreGKSPHIGSPEXGLDoreRenderManHoopsOpenGL????jOpenGL???3D????UnixPC??õ??áOpenGL????????3D????3D??ó??eL?h?L???????û?

OpenGL?????????S?????L?OpenGL i????C??õK?ó??????????a?????(3D Toolkit3D Engine)OpenGL?Open InventorIRIS PerFORMerOptimeizer/Cosmo3D?GLUT??Open Inventor???3D?g???ûh3D??3DL??????

z?µ?????L?????????Distributed Virtual Environments, DVEs????Computer Supported Cooperative Work, CSCW???????õ??DVEs??DIVEdVSMRRepo-3D??DVEs???3D?L???????õ3DOpen Inventor??????????????????DVEs??3D??'á

??3D?PC?????L??????5.8??

1Intra3D 2.0?OpenGL?ý??????Window 9x/NTµL????

2CNC 1.0???????Cooperative Network Communicator??g???g?kAPI

Intra3D 2.0CNC 1.0?????L????


6.5.2Intra3D 2.0

Intra3D 2.0l?????????ûC++COMComponent Object Model??Visual C++Visual BasicDelphi??ñ?Intra3Dl???

1h??Basic Objects and Functions

2??????Graphical Objects

3????Scene Graph and Nodes

4???Rendering and Interaction

???5.9????õ????ø??


Intra3D 2.0????µo??25??7C++?û?????

6.5.2.1?g?

h?

1?ü??

2????

3?????e??

4?????BMPGIFJPEGSGITGA??

5ü??L??????Swept?L?

6?450??????????

??

?????g???Intra3D 2.0???

1ü??????????Swept?

2g????Autodesk?.3dsg?Wavefront?.objg?

3??????????????????

?????û'ü??µ??????L

??

?Scene Graph??Scene Graph???1SceneNode??L?SceneNode???????a????????2??CameraNode??????????3???????(DirLightNode)??(PointLightNode)???(SpotLightNode)4??ShapeNode??????ShapeNode

g?

Intra3DL?h?????h??i?Intra3D??SceneView????????io??????????Intra3Dh?ö???FontDialog??ColorDialog??MaterialLibDialog??MaterialDialog??DirLightDialog, PointLightDialog, SpotLightDialog

6.5.2.2û

Intra3D??SceneView???3D?ó?SceneView?selectingscalingrotatingtranslatingcreatingdeleting?????5.10?

????????3D ??MicrosoftJ???3DK??'Intra3DWindow3D???3D??5.11????5.12???'Window3D??3D???õL?i???i???g???L?HSVRGBg???Intra3Dg???????L??5.13?5.14??????


6.5.3??????? CNC 1.0
????g?????Socket?? n ?µ??ÿ?????ô?n(n-1)/2 Socket???ÿ?i???gSocket???'??L????÷??CNC?????gPublish-Subscribe??Multicast g?kAPI??????'ÿ??????CNC 1.0????5.15?

CNC ??gg???L???Producer?L???Consumer??????ÿ???????h??CNC?????CNCgg TCP???g

?? g????ÿ?????????CNCg?UDP???g


6.5.3.1CNC ?API

CNCClient???g???????£

class CNCClient

{ public:

BOOL Connect(); // ?

BOOL Disconnect(); // ?

BOOL PublishData(); //

BOOL QueryData(); // ?

BOOL SubscribeData(); //

GROUPIP QueryGroupIP(); // ???

DWORD MulticastMessage(); // ??

virtual void MessageResponse();// ???

};

h?g?

?ÿ??oo???????5.16??? DataPublish

struct DataPublish

{

BYTE iDataType; // 2 ????DATA_PUBLISH

char strGroupName[16]; // 16??L

char strDataName[16]; // 16??

DWORD dwLifeTime; // 4 ?????

DWORD dwLength; // 4 ????

char *pchContent; //

};


?gg?

????

1?úQueryDatah DataQuery?ig???j??

struct DataQuery

{

BYTE iDataType; // 2 ????DATA_QUERY

char strGroupName[16]; // 16??L

char strDataName[16]; // 16??

};

2??? DataQuery??strGroupNamestrDataName??ServerClienthFALSE????hTRUE?????DataPublish?

?õTRUE????úSubscribeData???

?g??

??úQueryGroupIPhGroupAddress?ig????????IP?

struct GroupAddress

{

BYTE iDataType; // 2 ????GROUP_ADDRESS

char strGroupName[16]; // 16??L

};

?úMulticastMessage???????? DataMulticast£

struct DataMulticast

{

DWORD dwContentType; //???û

char *pchContent; //???û

};

?????úMessageResponse??MessageResponse?dwContentType?d???û?

6.5.3.2CNC

h??

CNC ????

1h????????????

2h???ö?_'??

3ÿ?h?g?Hash?h????????J?????????Hash????Hash??DataElement

struct DataElement

{

char strGroupName[16]; //

char strDataName[16]; // ?

BYTE iStorageType; // ?? STORAGE_FILE STORAGE_MEMORY

ColeDateTime TimeToDie; // ?

BOOL bLock; // ? TRUE FALSE

DWORD dwLength; // ??

char *pchContent; //

};

??iStorageType;????k????û??g??'?????????????STORAGE_MEMORY???????l??STORAGE_FILE?

??TimeToDie;???????????Hash???û???

?bLock;???????????????????iLock????

?_

h???????????h?TCP?ÿ??CNC API????????????????????CNC ???????

Winsock'

CNC 1.0Windows 9x/NT??£???Winsock?Winsock??????w??????á?'?ó?????Windows ???gw?????ó????'?ó??????????????ó????ó?????

?????CNC ????_÷?????????÷???????k?h??k??

6.5.4??

?5.17?5.18?µ????Intra3D 2.0 CNC 1.0?5.17??CNC .3ds .obj?Kg????o?5.18??CNC ???????oh??CNC ?????j?ô??

Intra3D 2.0CNC 1.0?j??ã??
6.6?

3D?Quake?Michael Abrash L??£?h?ãôl?????ý??L??wU[Abrash 1998]
 


7C++
j???Object-Oriented?h???????????j????ô?????ô?
????o?????o?g?????ø?k??h??
??????h???"???????k
?????ë??g????h???????ô????h?????
??g????????????????
???SmalltalkAdaEiffelObject PascalVisual BasicC++??C++??C???C???h?JavaJ??h????JavaC++?JavañC++??Wg?????h???
C++???²C++??h???i?????????

7.1C++??
???h??????????
C++??h
C++??h
?d????d?????d??
?´u???C++û??C???CC++8?z?C???zû???o???C++?hõC++?lô????o?????
???????øá?C++?C++øá???????????????????
7.1.1
Object?Classh?Instance?ô????????o
????h????????publicprotectedprivate?????g?L??g?????g???h?µ5.2.1????k?????ô?
?g??g
š?gh???????private??j?public?l???8.1(a)?
š??gh?????ôk?????public?l?j?private????8.1(b)?


?C++???g??????g????ôlMicrosoft ?COM?l???COML???L?[Rogerson 1999]?????Microsoft?k
????g???????????Inheritance?Composition? Polymorphism??
7.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; // Bh
b.Func1(); // BA??Func1
b.Func2(); // BA??Func2
b.Func3();
b.Func4();
}

????h?C++g???????????á?ã??á?????h?'ù
hAB??'BL??B?AL??á????hö??L??????ß?
B??'AL???
1?BAgh?a kind of B?AL??Man?Humanh??Boy?h?ôMan?HumanBoy?Man?£
class Human
{

};
class Man : public Human
{

};
class Boy : public Man
{

};

2?ABgh?a part ofB?AL??A?B?Eye?Nose?MouthEar?Headh?Head?EyeNoseMouthEar??g?£
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
{
};
??_???g????????
h?'?h??????ô
???
3.3?????þ?????h?

7.1.3??
???C++h???KK'áA??BCA??Test?A??ôTestABCK?£
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++ù?virtualh????override??L??£
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
};


class A
{
public:
virtual void Func1(void)=0;
};
ôFunc1?????????L??
?????w?
1?ó???ÿh??ã????gh??????????????ã????ã
2L???ã???????j?????ò??????j????

7.2õi?

????????Z?õi??j?
7.2.1?
???????ô??????????h???ô???
Microsoft? [Maguire 1993]??????û?úh???h¡
??õ?
1?ô??»??MAX_LENGTH
2ô???j??SetName, GetName
3?j?p *pNode
4BOOL j?b bFlag
5int j?i iWidth
6float j?f fWidth
7doublej?d dWidth
8?j?str strName
9ö?j?e eDrawMode
10??j?m_ m_strName, m_iWidth
int, float, double ?il????j???int? i,j,k float ???x,y,z?
7.2.2'ö
h?Debug?Release?Debug???Release??û'á
assert?Debug?õl????áh?????assert???ô??h?????ô?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);
}
asserth??l????Debug?Release?assert?ò??áassert?????asserth?????¶??'õ???
???K???ö?ø?????????u????U???ô?????z??K????ô???????????ý????g???????ñh???h?S?J?S??ô???????S??ô???áK????[Maguire 1993]
'ö?l?
1'ö???÷k??????????h?g
2'ö?????
3???????????h??l??'ö?????
4h?????????????????????'ö??

7.2.3newdelete?
C++?new??delete???C?malloc??free???C++C?newdeletemallocfree?h'ánew?malloc?£??malloc?
C++C????ô??h?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; // õi?

// ?'p
p = new float[500];
if(p==NULL) return;
// do something else
delete p;
p=NULL;
}

???????????????
1?û?'
2????w?????£
class A
{
public:
void Func(void){}
};
void Test(void)
{
A *p;
{
A a;
p = &a; // ? a
}
p->Func(); // p????
}

7.2.4'const
?h?const #define?const??ó????
const int LENGTH = 100; // LENGTHint
const float MAX=100; // MAXfloat
#define LENGTH 100 // LENGTH
#define MAX 100 // MAX

???const?
h?????
³?finame??gh??iname?
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?i
g(name); // name??i
h(name); // name??i
}

h??&*???ããô??òjconst?J?iò?i?ò??????lgh?ö?
void g(const String &s);
void h(const String *s);

????i????
³?stack??Count???Counti??????Countconst?
class Stack
{
public:
void push(int elem);
void pop(void);
int Count(void) const; // const?l
private:
int num;
int data[100];
};

int Stack::Count(void) const
{
++ num; // num??
pop(); // popi??
return num;
}

7.2.5
1??h????C++/C??õ??L??????l??
2???hl?k??????h
3?BOOL?TRUEFALSE?10???FALSE?0??0?TRUEVisual C++TRUE?1Visual BasicTRUE?-1?£
BOOL flag;

if(flag) { // do something } // ?÷
if(flag==TRUE) { // do something } // S?÷
if(flag==1) { // do something } // S?÷
if(!flag) { // do something } // ?÷
if(flag==FALSE) { // do something } // ÷
if(flag==0) { // do something } // ÷

4???= =?g=??
5?123?0123j???
6?i?¼?????
7.3?
C++/C?µ?h?8???g?ô?????i??µh?õl????
µ?ÿ???h÷?h??????h?Marshall P. ClinegC++ FAQs[Cline 1995]??h??
?C++/C???????l??????????ô??????????¸??????????????š?????????;???¡

8J
????hô??W??

??W?L?h???h??L??
hû?????L????h??
????????ô
û????????????L???h??
???????ô
??hû??????Lû??h?£?h??
û??[James 1999]
h?????????????J????J?û?ôk?ô?????J?????????????J?eL??
??J?£?????J??Já
8.1??
?j£?????ô??£?????d???
h?h??_?????l???ã?j????????????????d??????????µ?±???h?????ôj??????????????????j??h?????ûô?ó?g???h????£???'????h?Jj????
???l??
8.1.1??
????????
?h????J???£?????????????????????????û??ô????£??h??¶????g
?j??????????¡????·??????l?·??????????·??Z98%???lãh???????????????????ú??????????ó?????????????????????
h????d???
???????
8.1.2??
????????????????????????õ??????????ku??
???????????kh?????????ù???g
8.1.3?
?????????
?h???????ô???????????h??????õ????
8.1.4L?
??L??????L?
??õ??????J?????????õõló?
???????ô?g???
???g??g
8.2??
??
???

?hMicrosoft???l????
8.2.1Microsoft?l?
80?Microsoft???Bug?1981IBM PCh?BASICûá.1?10??FORTRAN???gBug??Microsoft??PC?l??û????
Microsoft?l???õ?????h??l?????????£????1984?MacMultiplan??jMicrosoft?Arthur Anderson??????hû???h???gBug'Microsoft??gû?°?ÿ?10?h20????
???Microsoft?l?óh????t??????IBMu??L??IMicrosoft??IBMl???h???k????????L???Microsoft?h??¶?ÿ???h???????šh????
?????´??Microsoft?19841986??????'?j?h?U??????kd?Microsoft????d???1986?·?MacWord 3.0g??19872?700??J???h?'Microsoft???ò?û??ó100?[Cusumano 1995]
8.2.2?k?
Microsoft?L???????????????????????????????????ü??????????????????????hg?????g????????gL??????????
???û????????æ?ÿ???????
?????????h???????????????????????????????????h??
1???????g?õg????i??ô??
2??L??????'òû???????
3?????????ÿ??????lh????????????????
??j???h?û?????²?²?????û?????ÿoh??²??h???²????????????²????Z????
8.3???÷
h????L?h??????h?·?????ô
?g??????????????????j?????????????????????????_L??????[Pressman 1997] [Sommerville 1992] [ 1997]??õ??
8.3.1??
??????L????????
k?h???õhö?ö???g??????h??ö?Jû????????????hµg???£
?A, Bf(x) h???A, B?x1??
f (x1) ôf (x) A, B?
f (x1) ?ôf (x) A, B??
??????????°?
h???????ö??i????????????
h??????0, 1?1, +??x=0.5?x=2.0????? x=0?x=1????
h????????????ö?????
á????????lô????????J???J?????????????g???
8.3.2??
????µ???õ?????¹?
????h??
1????¡
2??????g???h?
?h????og?????ô'????û???????
8.3.3??
?????????????g?ÿ??????g??h?
???g?????¼???????????????t?
???g?????l?hµL??h???h??????????????????????????h¡
????h???????????????????S????
8.3.4?
?ûh????û?????¡???ã???W??30%ûû??[Cusumano 1995]
h?û?'ô??õ?
8.3.5j
j?j??????ö?jh??
???L????jjì?
??j??ß©????????á???j???????gû?ö??g
j??g?????ôûö?
????ó??j???j?ò?û???j?û?ó??g?h?j??j???j??j???g????´?
8.4J
?????J????
J????L?h????j???õj??LôU???J??ó
??'?Jh????????????????U???g
???h??h????£?£??ôé???
?????
?h???û??h??????h??
û??h???g??·???U?
??????Jl??
1??????h???L?j??g?L?h???????????g?L???
?J????j?????????????
2g???š?z???????????
?????????U????ô?????????????¿???gh??????k????hghõ????J?·???¡?y?ghû?á
3?????????ô???????ã?Y?
?ùg????
4?J?h??²?µJ·??S???h??£??????????????K?g?²?
8.5?
???Jû?L?h?????º??òJ?????g
??ð????£?g????????h???????ô??ó??J??????????ô???'??g
?h?J?????L????KSteve MaguiregWriting Clean Code : Microsoft Techniques for Developing Bug-free C Programs?[Maguire 1993]?L???
9?
???³??h?ò?
??h??š???????????g8.1???????????ô???
?lûh??kh?J???g7.2?????h????
????????ö????????Reengineering7.3??ô????Restructure???Reverse Engineeringj???Forward Engineering
9.1???
??????????'??h???????????L??o???L??????'????l?L????????´L
h????????Corrective maintenance??Adaptive maintenance?Perfective maintenance
1?j????¶???Jû'?????L???
2??µ???????????'?µL??l????
3?'ù?û?µ?ûµ?L???
Lientz Swanson??1980????65%????18%???17%[Sommerville 1992]20j???lig
h????
1?????????????
2h??????????ô?a?
3ûjj?????
4??û???K???h??'??õj????
5???????
6??ã?J??j??µJ
7???????????ø?????w?j??????h?
9.2?J??
????LüJ?????????????õ??K[Mankiw 1999]???????²??????g
???k???
1??????õ???ô???????????
2????????????ô??????????I?ô????
3???????j??ô?????h????????????
4?g?????z?i??zh???gh??g?????????
???l??
1??????º??'ö????????£????
2????????õ????????ø????õ???????ö???ö?h???ø???hWindowsµ???ûVisual BasicDelphiPower Builder?Visual C++l?û?û?
3?õi??õ????J?
4JJúã?????????
5j??j??J?j?J??jûj
9.3
??1????l2??????????1?????????2'?????ã??aa????????µL
??h?????l??????????g???g???????
?L??û????ô???j?_h?J????????õK?
??????j???
9.3.1?
?h???J'µ?????????h?g???h?ô£
1'?'??µ??
2'l???
3????
???????h???j
9.3.2??
??????U??????ò??j?ò??????????K?l???¼?·??'l?·????õ·I????oReverse Design
????o?????_??g??j???????o????
9.3.3 j??
j?????Miller?g???k?õ???[Pressman 1999]
??h?j??????????h?????£?????h???????¡
9.4?
????ÿhµ???µh???????L???û?ô?¡
????£?????????J


 ?

? | ? | | ? | ? | | | ? | ? | ??

Copyright® 2003 Test Engineer, Inc. All rights reserved.

 

| | | What SQA Does Not Do! | SQA Example | SQA Example | CMM Definition | CMM Levels | Process Capabilities | Level-2 Key Process Area | Level-2 Evaluation | Activities Performed for | IV&V Definition | Comparing SQA and IV&V | Success Stories | Software Quality Metrics | Determination of Metrics | Example Measures | Example Measures (cont.) | Defect Measurement | Change Activity | PPT Slide | PPT Slide | ArrayArrayArrayArraySuper Design - Saudi Arabia Calling Cards - Replica Rolex Watches - Bravo Abo - Recreation And SportArrayArrayArrayArray