³nÅé¤uµ{(Software Engineering;SE)
¥»ºô¶¥H¥´³yµL»Ùê¾\Ū¬°¥Ø¼Ð¡A¥i¥H¥Î¥ô¦óÂsÄý¾¹¨ÓÆ[¬Ý¥»ºô¶
³nÅé¤uµ{³oªù½Òµ{¦b°ê¤º±Ð¨|¤W¡A¸ê¤u»P¸ê¬ìµ¥¨t©Ò·|¦C¬°¥²×¦Ó¸êºÞ¶È¦C¬°¿ïצӤw¡A¸êºÞ·|¦C¬°¥²×ªº¬O¨t²Î¤ÀªR»P³]p¡A¦ý¨t²Î¤ÀªR»P³]p¥u¬O¾ãÓ³nÅé¤uµ{ªº¤@¤p³¡¤À¦Ó¤w¡A©Ò¥H¸êºÞ¥X¨ªº¸ê°T¤H¬O¤@©wnÁA¸Ñªº°Õ....¡C
²¤¶
- 1968¦~¬î©u¡ANATO¡]¥_¬ù¡^ªº¬ì§Þ©eû·|¥l¶°¤Fªñ50¦W¤@¬yªº½sµ{¤Hû¡Bpºâ¾÷¬ì¾Ç®a©M¤u·~¬É¥¨ÀY¡A°Q½×©M¨î©wÂ\²æ¡§³nÅé¦M¾÷¡¨ªº¹ïµ¦¡C¦b¨º¦¸·|ij¤W²Ä¤@¦¸´£¥X¤F³nÅé¤uµ{¡]softwareengineering¡^³oÓ·§©À¡C
- ¤j¦h¼Æ³nÅé¶}µo¶µ¥Øªº¥¢±Ñ¡A¨Ã¤£¬O¥Ñ©ó³nÅé¶}µo§Þ³N¤è±ªºì¦]¡C¥¦Ìªº¥¢±Ñ¬O¥Ñ©ó¤£¾A·íªººÞ²z³y¦¨ªº¡C¿ò¾Ñªº¬O¡AºÉºÞ¤H̹ï³nÅé±M®×ºÞ²z«n©Êªº»{ÃѦ³©Ò´£°ª¡A¦ý¦b³nÅéºÞ²z¤è±ªº¶i¨B»·¤ñ¦b³]p¤èªk¾Ç©M¹ê²{¤èªk¾Ç¤Wªº¶i¨B¤p¡A¦Ü¤µÁÙ´£¤£¥X¤@®MºÞ²z³nÅé¶}µoªº³q¥Î«ü¾Éì«h¡C
- ¡u·s§Þ³N¤@ª½«_¥X¨Ó¡A¾Ç³£¾Ç¤£§¹¤F¡A¨º¸Ì¦³ªÅ·d³nÅé¤uµ{¡v¡B¡upµe»°µÛ¶i¦æ¡A°µ³£°µ¤£§¹¤F¡A¨º¸Ì¦³ªÅ·d³nÅé¤uµ{¡v...... ´N¦b³o¤@Ó¤S¤@ÓªºÂǤf¤¤¡A쥻¥i¥HÀ°§U³nÅé²£·~¶i¨Bªº³nÅé¤uµ{¡A³ºµMÅܦ¨¥L̤f¤¤ªýê³nÅé²£·~¶i¨Bªº²Ì¸}¥Û¦üªº¡A«ç¤£¥O¤H¹ï¥L̪ºµLª¾·P¨ì¤ß´H¡C
-
¼gµ{¦¡ªºÃø«×·U¨Ó·U§C¡A¦]¬°µ{¦¡»y¨¥¶V¨Ó¶V°ª¶¥¡AAPI ¶V¨Ó¶V¦h¡A¶}µo¤u¨ã¶V¨Ó¶V¦n¥Î¡A¼gµ{¦¡ªºªùÂe¦ÛµM´N¤j¤j¦a°§C¤F¡C·Qn¶}µo¥X¦³»ùȪº¤¤¤j«¬¨t²Î¡A³nÅé¤uµ{´N«Ü«n¤F¡A¥H»\©Ð¤l¨Ó»¡¡A§A¥i¥HÀH«K§ä¤@¨âÓ¤u¤H¥Î¿j©Î¤ì§÷¨Ó»\¤@´É¸G©Ð¡A¦ý¬O¦pªG·Q»\¤@¦Ê¦h¼h¼Óªº101¤j¼Ó¡A§A«D±o¦³¨}¦nªº¤uµ{³W¹º¤£¥i¡A³nÅ餣¤]¬O¦p¦¹¡Hµ{¦¡³]p®v¦W¤ù¤WªºÀY»Î³£¬O¤uµ{®v¡AÁöµM©M«Ø¿v¤uµ{®v¡B¾÷±ñ¤uµ{®v... ¤@¼Ë³£³QºÙ¬°¤uµ{®v¡A¦ý¤ñ¸û°_¨Ó¡A³nÅé²£·~ªº¤uµ{®v«o¬O³Ì¤£¤uµ{¾É¦Vªº ¡C
³nÅé¤uµ{
³nÅé¤uµ{¥]¬A¨â¤è±¤º®e¡G³nÅé¶}µo§Þ³N©M³nÅé±M®×ºÞ²z¡C
- ³nÅé¶}µo§Þ³N¥]¬A³nÅé¶}µo¤èªk¾Ç¡B³nÅé¤u¨ã©M³nÅé¤uµ{Àô¹Ò¡C
- ³nÅé±M®×ºÞ²z¥]¬A³nÅé«×¶q¡B¶µ¥Ø¦ôºâ¡B¶i«×±±¨î¡B¤Hû²Õ´¡B°t¸mºÞ²z¡B¶µ¥Øpµeµ¥¡C
-
³nÅé¤uµ{¬O¬°¤F¸Ñ¨M³nÅé¦M¾÷¦Ó½Ï¥Í¡Aªñ¨Ó³Ì¼öªùªº§Þ³N¦³
- UML
- Design Patterns
- re-engineering
- XP
-
³nÅé¬[ºc
¤w¦¨¬°³n¤u¼öªùªº¬ã¨s¤§¤@¡C
- ¶}µo¬yµ{¥Ñ±j½ÕÂr¥¬¦¡¬yµ{(waterfall)Âର±j½Õ¤ÏÂЦ¡¬yµ{(iterative)¡C ¤ÏÂЦ¡¬yµ{ªº¥Dnºë¯«¬O¤ÀªR¤@¨Ç¡A³]p¤@¨Ç¡A¹ê§@¤@¨Ç¡A°õ¦æ¤@¨Ç¡A¤]´N¬O±N¾ãÓ¶}µo¬yµ{¤Á³Î¦¨¼ÆÓ¶g´Á(iteration)¡A¨CÓ¶g´Á³£¬O¤@Ó¥s¤p«¬ªºª½½u¦¡¬yµ{¡A¨Ã¥B±j½Õ¶g´Áµ²§ô®É³£¦³¥i¥H°õ¦æªºµ²ªG¡A¦Ó¨CÓ¶g´Á³£¬O¥H«e¤@¶g´Áªºµ²ªG¬°°ò¦¡A¦b·s¼W»Ý¨Dªº¤è¦¡¶i¦æ¡Aª½¨ì©Ò¦³ªº³nÅé»Ý¨D³£º¡¨¬¬°¤î¡C¦]¦¹¤ÏÂЦ¡¬yµ{¤]¬O¤@ºØº¥¼W¦¡¬yµ{(°§C·ÀI)¡C¥Hµ²ªG¨Ó¬Ý¡AÂr¥¬¦¡¬yµ{¥u·|¥æ¥I¤@¦¸²£«~¡A¤ÏÂЦ¡¬yµ{·|¥æ¥I¦h¦¸²£«~¡C
SA -> SD -> coding -> test -> installation -> maintance
process
- Quality Assurance
- Configuration Management
- Project Management
- CMM
software system
-
bussiness application
- TPS,DSS,MIS,ES
-
web application
- Web System
- Web Service
- E-service : marketing+MIS
- real-time
- safety-critical
safety critical system
±`¥Îªºformal¤u¨ã : Petri Nets
- Petri Nets ªº reachability graph ±`¦]¥i¯àªºª¬ªp¤Ó¦h¦Ó¤£¥i¯à¤ÀªR¡A©Ò¥H¦³³\¦h½×¤å·|°Q½×¦p¦ó²¤Æ¥¦
- ²{¤µ¤]±`¥Î¦b¹q¤l°Ó°È¤W
³nÅé¶}µo¬[ºcªººt¶i
ÀHµÛInternetªº¿³°_¡A¤À´²¦¡¨t²ÎªºÀô¹Ò¤éÁͦ¨¼ô¡An±N¾ãÓInternetµø¬°°Ï°ìºô¸ô¯ëªº¦s¨ú¸ê·½»P¥æ´«¸ê®Æ¡Aµ{¦¡³]p¤W´N¥²¶·¦Ò¼{¨ì©Ò¿×ªº3¼h¦¡¬[ºc
-
®i¥Ü¼h(Presentation Tier)
-
±NUIªº³¡¤À¿W¥ß¥X¨Ó¡A°£¤F¥iÅý±M·~ªº¬ü¤u³B²z¤§¥~¡AÁÙn¦Ò¼{¨ìµ{¦¡Å޿誺Åܰʤ£·|¼vÅT¨ìµe±¡A©Î¬Oµe±ªºÅܰʤ£·|¼vÅT¨ìµ{¦¡ÅÞ¿è
-
°Ó·~ÅÞ¿è¼h(Business Logic Tier)
-
±N¥ø·~¹B§@ªºÅÞ¿è¿W¥ß¦¨¤¸¥ó¡A¥H¤è«K§ó·sµ{¦¡½X®É¥u»Ýn²§°Ê¬ÛÃöªº¤¸¥ó§Y¥i
-
¸ê®Æ¼h(Data Tier)
-
±NÃö©ó¸ê®Æ¦s¨úªº³¡¤À¿W¥ß¥X¨Ó¡A¦p¦¹¤@¨Ó¦bÅÜ°Ê¸ê®Æ®w¬[ºc®É«K¤£»Ýn§ó§ïµ{¦¡ÅÞ¿è©Îµe±
±µ¤U¨Ó¡AÅý§Ų́ÓÁA¸Ñµ{¦¡¶}µo¬[ºc¬O¦p¦ó¥Ñ1-Tier¨«¦VN-Tierªº
³æ¾÷¬[ºc(1-Tier)
®i¥Ü¼h¡A°Ó·~ÅÞ¿è¼h¡A¸ê®Æ¼h³£¦b³æ¾÷¤W³B²z¡A¾A¥Î©ó¤å¦r³B²z¡AÓ¤H¸ê®Æ³B²z(PIM)µ¥³æ¾÷¬[ºc¡A¨ä²~ÀV¬°
- Àɮ׫¬ªº¸ê®Æ¦³¶Ç¿é®ö¶OÀW¼e»P²§°Ê»ÝÂê©wµ¥°ÝÃD
- °Ó·~ÅÞ¿è©Î¨Ï¥ÎªÌ¤¶±§ïÅÜ¡A»Ý«·s³¡¸p
¥D±q¬[ºc(Client/Server , 2-Tier)
±N¸ê®Æ¼h¤ÀÂ÷¥X¨Ó¡AÀx¦s¨ì¸ê®Æ®w¦øªA¾¹¡A¾A¥Î©ó¦h¤H¦s¨ú¸ê®ÆªºÀô¹Ò¡A¨ä²~ÀV¬°
- °Ó·~ÅÞ¿è©Î¨Ï¥ÎªÌ¤¶±§ïÅÜ¡A»Ý«·s³¡¸p
- ¸ê®Æ®w¦øªA¾¹®e©ö¦¨¬°®Ä²vªº²~ÀV¡A¨Ò¦pClientºÝªº³s½u¼Æ·|¼W¥[¦øªA¾¹connection¬ö¿ýt¾á
//¦]¦¹§ÚÌÀ³¸Ó¥u¦b¨ú¥Î¸ê®Æ»P±N¸ê®Æ¦^¦s®É¤~¶i¦æconnection
-
°Ó·~ÅÞ¿èÀ³¸Ó©ñ¦bclient©ÎserverºÝªº°ÝÃD
- ©ñ¦b«eºÝ¡A¸ê®Æ®w¥i¤£¨ü¨îªº©â´«¡A¦ý°Ó·~ÅÞ¿è§ïÅÜ¡A»Ý«·s³¡¸p
- ©ñ¦b«áºÝ¡A³q±`¬O§Q¥ÎStored Procedure¡A¦ý³o¼Ë´N¤£©ö©â´«¸ê®Æ®w³nÅé
¤À´²¦¡¬[ºc(N-Tier)
±N®i¥Ü¼h¡A°Ó·~ÅÞ¿è¼h(©ñ¦bAP Server)¡A¸ê®Æ¼h(©ñ¦bDatabase Server)³£¦U¦Û¿W¥ß¡A¾A¥Î©ó¥¥x¤£¦P¡Aºô»Úºô¸ôªºÀô¹Ò¡C
Y®i¥Ü¼h¥H¤@¯ë¶}µo¤u¨ã¶}µoºÙ¬°
Rich Client
¡AY§Q¥Î°ÊºAºô¶§Þ³N¹B§@©óÂsÄý¾¹¤W«hºÙ¤§¬°
Thin Client
¡C
¨ä²~ÀV¬°
- AP Server »P Database Server°£¤Féw¹B§@ªº»Ý¨D¥~¡A¤]©ö¦¨¬°®Ä²vªº²~ÀV
- »Ýn¯à±N°Ó·~ÅÞ¿è¥]¸Ë¦¨¤¸¥óªº§Þ³N¡AªùÂe¸û°ª
ºô¸ôªA°È(Web Service)
±N¾ãÓºô»Úºô¸ôµø¬°°Ï°ìºô¸ô¬Æ©Î¬O§@·~¨t²Î¯ë¡A¹ý©³¹ê½î¤À´²¦¡¨t²Îªº¬üÄR·s¤Ñ¦a¡A¨Ï¥Îºô»Úºô¸ô¤Wªº¸ê·½´N¦p¦P¨ú¥Î³æ¾÷¸ê·½¤@¯ë®e©ö¡A¥Dn¬O§Q¥ÎXML§@¬°¸ê®ÆÂà´«ªº¼Ð·Ç¡A³z¹LSOAP³q°T¨ó©w¬ï¹L¨¾¤õÀð¡A¥´¯}ºô»Úºô¸ôªº¹j»Ò¡A¥Ø«e¦³Sun ªºJava One¬[ºc»PMicrosoftªº.NET¬[ºc¥i¨Ñ°Ñ¦Ò¡C
¨t²Î¤ÀªR»P³]p(Systems Analysis & Design)
¸ê°T¨t²ÎªººØÃþ
- ¥æ©ö³B²z¨t²Î(Transaction Processing System;TPS)
- ºÞ²z¸ê°T¨t²Î(Management Information system;MIS)
- ¨Mµ¦¤ä´©¨t²Î(Decision Support System;DSS)
- °ª¶¥¥DºÞ¸ê°T¨t²Î(Executive Information System,EIS)
-
±M®a¨t²Î(Expert System;ES)
- ¾Þ§@©Ê¨t²Î(Operational Systems)
- ¿ì¤½«Ç¦Û°Ê¤Æ¨t²Î(Office Automation Systems;OA)
¸ê°T¨t²Îªº«Ø¸mµ¦²¤
-
¤½¥q¤º³¡¿W¤O§¹¦¨
- ¨Ï¥ÎªÌ¦Û«Ø(End User Development;EUD)
- ¸ê°T³¡ªùµo®i
-
¤½¥q¥~³¡¨ú±o
- ©e¥~¶}µo(Outsourcing)
- ®M¸Ë³nÅé(Application Package)
-
¨ä¥L¤è¦¡
¨t²Î¶}µo¼Ò¦¡(SoftWare Process Model)
Âr¥¬¦¡(Waterfall)
-
½s½X»P×¥¿¼Ò¦¡(Code-andfix Model)
-
¶¥¬q¼Ò¦¡(Stagewise Model)¡GBenington(1956)
-
Âr¥¬¼Ò¦¡(Waterfall Model)¡GRoyce(1970)
= ¨t²Îµo®i¥Í©R¶g´Á(System Development Life Cycle;SDLC)
-
¯S¼x
- ¾A¥Î©ó»Ý¨D©ú½T¡A»â°ìª¾ÃÑ(Domain KnowHow)®e©ö¨ú±oªº±M®×
- ±j½Õ¶}µo¹Lµ{»Ý¦³§¹¾ãªº³W¹º¡A¤ÀªR¡A³]p¡A´ú¸Õ¤Î¤å¥óµ¥ºÞ²z±±¨î
- «e¤@¶¥¬q§¹¦¨«á¤~¯à¶i¤J¤U¤@¶¥¬q¡A¦U¶¥¬q¶È´`Àô¤@¦¸
- ¨S¦³©ú½T³W©wn¹º¤À¦¨¦h¤ÖÓ¶¥¬q¡A¨C¤@¶¥¬q¬Ò¦³¤å¥ó²£¥X
-
¦Ü¤Ö¹º¤À3¶¥¬q
-
³q±`¹º¤À5~7¶¥¬q¤£µ¥(¨C¤@®a¾Ç»¡³£¤£¦P,´x´¤ºë¯«§Y¥i)
- ªì¨B½Õ¬d (Preliminary Investigation)
- ¨t²Î¤ÀªR (System Analysis)
- ¨t²Î³]p (System Design)
- ¨t²Î¶}µo (System Development)
- ¨t²Î¹ê¬I»Pµû¦ô (System Implementation and Evaluation)
¤ÏÂЦ¡(Iterative)
-
º¥¼W¼Ò¦¡(Incremental Model)¡GMills(1971)
- ±j½Õ»Ý¨D¥i¤À¦¨´XÓ³¡¤À
- ¶}µo¶g´Á¥i¤ÏÂжi¦æ
-
Âú§Î¼Ò¦¡(Prototyping Model)¡GBally(1977)
- ¾A¥Î©ó»Ý¨D¤£©ú½T¡A±M®×¤p¡AÀ³¥Î»â°ì¤£¼ô±x©Î°ª·ÀI¤§±M®×
- ±j½ÕÂú§Î¤§§Ö³t¶}µo¡A¥HÂú§Î§@¬°¨Ï¥ÎªÌ»P¸ê°T¤Hû·¾³q¤§¤u¨ã¡A¨Ï¥ÎªÌ°ª«×°Ñ»Pµ¥
-
Âú§Îµ¦²¤
- ºt¶i¦¡Âú§Î(Evolutionary Prototyping)
- ¥Î«á¥á±ó¦¡Âú§Î(Rapid Throwaway Prototyping)¡G¦]¦¨¥»¸û°ª¡A¬G¾A¥Î©ó·ÀI³Ì°ªªº±¡§Î
-
Á³±Û¼Ò¦¡(Spiral Model)¡GBoehm(1988)
- ±j½Õ¡u·ÀI¤ÀªR¡vµ²¦X¤FSDLC»PÂú§Î¼Ò¦¡
-
Á³±Û¼Ò¦¡ªº4Ó¨BÆJ
- §ä¥X¨t²Î¥Ø¼Ð¡A¥i¦æ¤è®×»P¨î
- ¨Ì¥Ø¼Ð»P¨îµû¦ô¤è®×
- ¶}µoÂú§Î
- ¨Ï¥ÎªÌµû¦ô¡A¨M©w¤U¤@¨BÆJ
-
¦P¨B¼Ò¦¡(Concurrent Model)¡GAoyama(1993)
- ºc·Q·½©ó»s³y·~ªº¦P¨B¤uµ{(Concurrent Engineering)¥Øªº¦b©óÁYµu²£«~¶}µo®É¶¡¡A¾A¥Î©ó®M¸Ë³nÅ骺±M®×
-
¦P¨B¼Ò¦¡ªººc·Q
- ¬¡°Ê¦P¨B(Activity Concurrency)¡G¤£¦P¹Î¶¤¥¦æ¶}µo
- ¸ê°T¦P¨B(Information Concurrency)¡G¤£¦P¹Î¶¤¸ê°T¦@¨É
- ¾ã¦X©ÊªººÞ²z¨t²Î¡G¨ó½Õ¦UºØ¸ê·½ªº¤¬°ÊÃö«Y
»Ý¨DÂ^¨ú»P¤ÀªR
¨Ï¥ÎªÌ»Ý¨Dªº¤ÀÃþ
- ¥¨Æ[»Ý¨D¡G±ý¹q¸£¤ÆªºÀô¹Ò¡A§@·~µ{§Ç»P½d³ò¡A¿é¥X»P¿é¤J©Ò»Ý¤§¸ê°T©Îªí³æ¤Î¨t²Î¥Ø¼Ð¡A¨î¡A¥Dn¥\¯àµ¥¡AºÉ¥i¯à¦b»Ý¨D¤ÀªR¶¥¬q¤¤Âç²M»P½T©w¡C
- ²Ó³¡»Ý¨D¡G¨Ï¥ÎªÌ¤¶±¤§n¨D¡A¨Ò¥~ª¬ªp¤§³B²z¡A¿ù»~¤Î»²§U°T®§¤§Åã¥Ü¡A³q±`¨ì³]p¶¥¬q³B²z¡C
»Ý¨DªºÂ^¨ú¤è¦¡
- ¬d¾\¤å¥ó
- ¹ê¦aÆ[¹î(Observation)
-
³X½Í(Interview)
- ¶}©ñ¦¡³X½Í(Open Interview)¡GÃþ¦ü¥æ½Í
- µ²ºc¤Æ³X½Í(Structured Interview)¡GÃþ¦ü¸ß°Ý
-
°Ý¨÷
- ²³æÀH¾÷©â¼Ë
- ¤À¼h©â¼Ë
- «K§Q©â¼Ë
- §PÂ_©â¼Ë
- ¶}·|°Q½×
-
Áp¦X¶}µo(Joint Application Development;JAD)
- ½d³ò¬É©w
- ÃöÁä¤Hûªº¼ô±x
- ·|ij·Ç³Æ
- ·|ij¶i¦æ
- ¤å¥ó²£¥Í
»Ý¨Dªºªí¹F¤u¨ã
-
¬yµ{¹Ï(Flow Chart)
- ¡¼¡Gªí¹F§@·~³B²z¡A¥i°t¦X
³B²z´yz
- ¡º¡Gªí¹F¬yµ{±±¨î
- ¡÷¡Gªí¹F¸ê°T¬y¦V
- ªi®ö§Î¡Gªí¹F¸ê°Tªº®i¥Ü»PÀx¦s¡A¥i°t¦X
ÂŹÏ(Drawing)
»P
¸ê®Æµü·J(Data Glossary)
»Ý¨D¤ÀªR¤å¥óªº¼Ëª©
- °ÝÃD´yz
- ·s¨t²Î¥Ø¼Ð
- ·s¨t²Î¨î
-
¨Ï¥ÎªÌ»Ý¨D
-
¬yµ{¹Ï
- ³B²z´yz
- ÂŹÏ
- ¸ê®Æµü·J
¨t²Î¤ÀªR»P³]pªº¨â¤j§Þ³N
-
µ²ºc¤Æ§Þ³N
¡G±N¸ê®Æ»P¬yµ{¤À¶}¦Ò¼{
- ¬yµ{¶ì¼Ò¡G¥Dn³z¹L¸ê®Æ¬yµ{¹Ï(DFD)
- ¸ê®Æ¶ì¼Ò¡G¥Dn³z¹L¹êÅéÃö«Y¼Ò¦¡(E-R Diagram)
- ¨Ï¥ÎªÌ¤¶±¶ì¼Ò
-
ª«¥ó¾É¦V§Þ³N
µ²ºc¤Æ§Þ³N
-
µ²ºc¤Æ³]p(1960)¡G±j½Õ¨t²Îªºµ²ºc¤Æ»P¥iºûÅ@©Ê¡A¨M©w¨t²ÎÀ³¦³þ¨Ç¼Ò²Õ(¼Ò²Õ¦WºÙ,¿é¤J,¿é¥X,¤º³¡¸ê®Æ,³B²zÅÞ¿è)
µ²ºc¤Æ§Þ³N©Ò»Ý¤u¨ã
|
¤å¥ó
|
¤u¨ã
|
¸gÅçªk«h
|
µû¦ô·Ç«h
|
|
µ²ºc¹Ï(Structure Chart)
|
|
¼Ò²Õ¤j¤p¡G¤p¼Ò²Õ200¦æ¥H¤º
|
¤º»E¤O
|
|
HIPO¹Ï(Hierarchical Input Process Output)
|
|
±±¨î¶¡¶Z¡G(Magic Number 7¡Ó2)
|
½¢¦X¤O
|
³B²z³W®æ´yz(Process Specification)
- µ²ºc¤Æ^»y(Structured English)
- µ{¦¡³]p»y¨¥(Program Design Language;PDL)
|
|
¼vÅT½d³ò
|
|
|
¸ê®Æ¦r¨å(Data Dictionary;DD)
|
|
±±¨î½d³ò
|
|
-
µ²ºc¤Æ¤ÀªR(1970)¡G§Q¥Î¹Ï§Î¤Æ¤å¥ó¤u¨ã(Graphic Documentation Tools)¶i¦æ¥ø·~¬yµ{¤Î¥ø·~¸ê®Æ®æ¦¡¶ì¼Ò
-
¨Æ¥ó¦C(Event List)
- ¸ê®Æ¬y¾É¦V¡G«È¤á¿é¤J¥N¸¹
- ®É¶¡¾É¦V¡G¤U¤È3ÂInñµo¤ä²¼
- ±±¨î¾É¦V¡G¨t²Îªº¶}±Ò©ÎÃö³¬
-
Àô¹Ò¹Ï(Context Diagram)
- ¡³¡G¨t²Î
- ¡¼¡G¥~³¡¹êÅé
- ¡÷¡G¸ê®Æ¬y
-
¸ê®Æ¬yµ{¹Ï(Data Flow Diagram;DFD)¡Gªí¹F¨t²Î§@·~³B²z»P¸ê®Æ¬y¤§Ãö«Y
-
ªí¥Ü²Å¸¹
- ¡¼¡G¥~³¡¹êÅé(Entity)
- ¡÷¡G¸ê®Æ¬y(Data Flows)
- ¡³¡G³B²z(Process)
- ¤G¡G¸ê®ÆÀx¦s(Data Store)
-
«Øºc¤è¦¡
- ¥Ñ¤W©¹¤U¤À³Î(Top-Down Partitioning)
- ¥Ñ¤¤¶¡©¹¥~¤À³Î(Middle-Out)¡GYourdon-1988
-
¹êÅéÃö«Y¹Ï(Entity-Relationship Diagram;ERD)
-
ªí¥Ü²Å¸¹
- ¯x§Î¡G¥Nªí¹êÅéÃþ«¬ (Entity Type)
- µÙ§Î¡G¥Nªí¹êÅéÃþ«¬»P¹êÅéÃþ«¬¶¡¤§Ãö«Y (Relationship)
- ¾ò¶ê¡G¥Nªí¹êÅéÃþ«¬©ÎÃö«Y¤§ÄÝ©Ê (Attribute)
- ª½½u¡G§âÄݩʳsµ²¨ì¹êÅéÃþ«¬©Î§â¹êÅéÃþ«¬³sµ²¨ìÃö«Y
- °ò¼Æ²v(Cardinality Ratio)¡G¥Nªí¹êÅéÃþ«¬»P¹êÅéÃþ«¬¶¡¤§Ãö«Yµ{«×¡C±`¨£ªº°ò¼Æ²v¬O¡u1:1¡v¡B¡u1:N¡v¤Î¡uM:N¡v¤TºØ
- °Ñ»P¨î(Participation Constraint)¡GÓÅ骺¦s¦b¬O§_ÂǥѻP¥t¤@ÓÓÅ餧¶¡ªºÃö«Y¦Ó¦s¦b¡C°Ñ»P¨î¤À¬°¡u¥þ³¡°Ñ»P¡]Total Participation¡^¡v¡B¡u³¡¥÷°Ñ»P¡]Partial Participation¡^¡v¨âºØ¡C
- ³B²z³W®æ´yz(Process Specification)
- ª¬ºAÂಾ¹Ï(State Transition Diagram;STD)
-
µ²ºc¤Æµ{¦¡³]p(1969)¡GDijkstra´£¥X¡AÁ×§KGOTO©Ò³y¦¨ªº²V¶Ã
- ´`§Ç(Sequence)¡Gcompute,read,write
- ¿ï¾Ü(Condition)¡Gif then else, case
- «½Æ(Repetition)¡Gdo while
-
¥Ñ¤W¦Ó¤Uµo®i
- ¥Ñ¤W¦Ó¤U³]p(Top-Down Design)
- ¥Ñ¤W¦Ó¤U½s½X(Top-Down Coding),¥Ñ¤U¦Ó¤W½s½X(Bottom-Up Coding)
-
¥Ñ¤W¦Ó¤U¹ê¬I(Top-Down Implementation)¥Ñ¤W¦Ó¤U´ú¸Õ(Top-Down Integration Test)
-
¥Õ½c´ú¸Õ¡G¥Ñ¤W¦Ó¤U©Î¥Ñ¤U¦Ó¤W¨Ì¥\¯à´ú¸Õ
-
¶Â½c´ú¸Õ¡G±¡ªp·¥ºÝ»P¨Ò¥~ªº´ú¸Õ
µ²ºc¤Æ¤ÀªR»P³]pªºµû¦ô·Ç«h
¨}¦nªº³]p§Æ±æ¹F¨ì¼Ò²Õªº¤º»E¤O¬°¥\¯à¤º»E¤O¡A½¢¦X¤O¬°¸ê®Æ½¢¦X¤O
¤º»E¤O(Cohesion)¡G¿Å¶q¼Ò²Õ§¹¦¨¤@¥ó¤u§@ªºµ{«×
-
¥\¯à¤º»E¤O(Function Cohesion)
¡G³æ¿W³B²z¤@¥ó¤u§@
-
¶¶§Ç¤º»E¤O(Sequential Cohesion)
¡G¼Ò²Õ¶¶§Ç°õ¦æ¡A¤@Ó¼Ò²Õªº¿é¥X·|¦¨¬°¤U¤@²Õªº¿é¤J
-
·¾³q¤º»E¤O(Communication Cohesion
)¡G¨Ï¥Î¬Û¦Pªº¸ê®Æ
- ¼È®É¤º»E¤O(Tempral Cohesion)¡G¼Ò²Õ°õ¦æµL¶¶§ÇÃö«Y¦ý¶·¦b¤@©w®É¶¡¤º§¹¦¨¤@¥ó¤u§@
- µ{§Ç¤º»E¤O(Procedural Cohesion)¡G«ö·Ó¶¶§Ç°õ¦æ¦Ó¤£¦@¥Î¸ê®Æ
- Å޿褺»E¤O(Logical Cohesion)¡G®Ú¾Ú¤W¼h¼Ò²Õ¶Ç¨Óªº°Ñ¼Æ¨M©w°õ¦æªº¥\¯à
- °¸µo¤º»E¤O(Coincidental Cohesion)¡G¼Ò²Õ¥i°µ¦n´X¥ó¤£¬Û¤z¤u§@¡A¦U¼Ò²Õ¨ã¦³¥\¯à¤º»E¤O
½¢¦X¤O(Coupling)¡G¿Å¶q¼Ò²Õ¶¡¬Û¤¬Ãö³sªºµ{«×
-
¸ê®Æ½¢¦X¤O(Data Coupling)¡G¼Ò²Õ¶¡ÂÇ¥Ñ¸ê®Æ¶Ç»¼°Ñ¼Æ
-
¸ê®Æµ²ºc½¢¦X¤O(Stamp Coupling)¡G¼Ò²Õ¦U¦Û¨Ï¥Î¸ê®Æµ²ºcªº¤@³¡¥÷
- ±±¨î½¢¦X¤O(Control Coupling)¡GA¼Ò²Õ¶Ç»¼ºX¼Ð±±¨îB¼Ò²Õ
- ¦@¦P½¢¦X¤O(Common Coupling)¡G¨â¼Ò²Õ¨Ï¥Î¬Û¦Pªº¸ê®Æ°Ï
- ¤º®e½¢¦X¤O(Content Coupling)¡GA¼Ò²Õ¥i¨Ï¥ÎB¼Ò²Õªºµ{¦¡½X©Î§ïÅܨäÅܼÆ
ª«¥ó¾É¦V§Þ³N(Object-Oriented Technique¡AOOP)
- °w¹ï¤éÁͽÆÂø¤§³nÅé»Ý¨Dªº¬D¾Ô¡A³nÅé·~¬Éµo®i¥X¤Fª«¥ó¾É¦V (OO) ªº³nÅéµo®i¼Ò¦¡¡A§@¬°°w¹ï¡u³nÅé¦M¾÷¡vªº³Ì¨Î¹ïµ¦¡C
- ª«¥ó¾É¦V¤§Æ[©À°_·½©ó¼ÒÀÀ»y¨¥(1966, Simula »y¨¥)¡A¥Hª«¥ó¼Ò¦¡¨Ó´yz¯u¹ê¨t²Î¡A¨Ã±N¸ê®Æ©â¶H¤Æ(Data Abstraction)¡B«Ê¸Ë¡BÄ~©Ó»P¦P¦W²§¦¡ªºÆ[©À¿Ä¤J©óª«¥ó¨t²Î¶}µo¤¤¡C
- ²Ä¤@ӯº骺OOP»y¨¥¡G1980¥þ¿ý(Xerox)¤½¥qªºPARC¬ã¨s¤¤¤ß©Ò¶}µoªº
Smalltalk-80
OOPªº¥ýÅX Brad Cox ´¿´£¥XSoftware-ICªº·§©À¡A¦Ón¹F¨ì³nÅéICªº·§©À¡A«h»Ýn¤U¦C¯S©Ê
- ª«¥ó & Message
- Ä~©Ó©Ê(inheritance)
- «Ê¸Ë©Ê(encapsulation)
- °ÊºA³sµ²(dynamic binding)
©â¶H¤Æ(Abstraction)
- ©â¶H¤Æ©Ò´yzªº¹Lµ{¡A´N¬O¥Ñ³\¦hª«¥ó¤¤©âÂ÷¥X«nªº¯S©Ê¨Ó¡A¦Ó³o¨Ç¯S©Ê¡A¨¬¥HÅý³Q©â¶H¤Æªºª«¥ó¡A»P§Oªºª«¥ó¤À§O¶}¨Ó¡C¦P®É¡A¹ï©óª«¥ó©â¶H¤Æªºµ²ªG¡A¤]¦]§Ú̪º»Ýn¤£¦P¡A¦Ó¦³©ÒÅܤơC
- ©Ò¦³ªº©â¶H¤Æ³£¬O¨t²Îªºµo®i¡A¬°¤Fºûô¦s¦b¡A¥²¶·¾AÀ³Åܤƪº°ß¤@¸ô³~¡C
- ©â¶H¤Æªº¥Ø¼Ð»Pª«¥ó¾É¦V¤@¼Ë¡A´N¬O¡yÅý§Ú̧ó®e©ö¼ÒÀÀ¥@¬É¡A¨Ã¥[¥H³B²z¡z¡C
ª«¥ó(Object)=®×¨Ò(Instance)
- ¥Ñ¤@¸s¨ã¦³¬Û¦P¸ê®Æµ²ºc»P¬Û¦P¦æ¬°ªºª«¥ó©Ò´yzªº¶°¦X¤¤¡A¬Y¤@Ó¯S©w¥B¦s¦bªºª«¥ó¡C
- ª«¥ó¬O¤@Ө㦳ª¬ºA(State)¡B¦æ¬°(Behavior)»PÃѧO(Identity)ªº¹êÅé©Î©â¶H¤Æ·§©À(Abstract Concept)¡A¥B¨ä¦æ¬°·|¼vÅT¨äª¬ºA¡C
- ª«¥ó¬O¤@Ó«Ê¥]¡A¥]¬A¤F¦WºÙ(name)¡B
ÄÝ©Ê(attribute)
¤Î
¾Þ§@(operation)
3³¡¤À¡C
- ¦bC++¤¤ºÙ¬°
¸ê®Æ¦¨û(Data Member)
»P
¦¨û¨ç¦¡(Member Function)
¦bJava¤¤ºÙ¬°
Äæ¦ì(Field)
»P
¤èªk(Method)
- ¨C¤@Óª«¥ó³£¬O¤@Ó³Qclass©Ò¤ÀÃþªºinstance (Every object is an instance of a class)
Ãþ§O(Class)=ª«¥óÃþ«¬(Object Type)=©â¶H¤Æ¸ê®Æ«¬ºA(Abstract Data Type;ADT)
- ¥Ñ¤@¸s¨ã¦³¬Û¦P¸ê®Æµ²ºc»P¬Û¦P¦æ¬°ªºª«¥ó´yz¡A©Ò§Î¦¨ªº¶°¦X¡A¸g¥Ñ©â¶H¤Æ(Abstraction)«áºÙ¤§¬°Ãþ§O¡C
- Ãþ§O¬O¤@ºØ©w¸q(Definition)¡B´yz(Description)¡B¼Ëª©(Template)¡A¬G¥i¥HÃþ§O«Ø¥ß·sªºª«¥ó¡C
«Ê¸Ë(Encapsulation)
- ±N¸ê®Æ»P¾Þ§@¦¹¸ê®Æªº¤èªk¥]¸Ë¦¨¤@Óª«¥óºÙ¤§¬°«Ê¸Ë¡C
-
«Ê¸Ë«áª«¥óªºµ²ºc¤À¬°2³¡¤À
1.¤¶±(Interface)2.¹ê§@(Implementation)
- «Ê¸Ë±Nª«¥óªº¹ê§@²Ó¸`ÁôÂáA¨Ï¨ä»P¥~¬ÉÀô¹Ò¹jÂ÷¡A¥u¤¹³\¸Óª«¥ó©Ò¥]§t¤§¾Þ§@×§ï¨ä¸ê°T¡AºÙ¤§¬°¸ê°TÁôÂÃ(informatiion hiding)¡C
Ä~©Ó(Inheritance)
-
©Ò¿×Ä~©Ó´N¬O±q°ò©³Ãþ§O(base class)¡A«Ø¥ßl¥ÍÃþ§O(derived class)¡Cl¥ÍÃþ§O°£¤FÄ~©Ó°ò©³Ãþ§Oªº©Ò¦³¯S©Ê¥~¡A¥i¨Ì¾Ú»Ý¨D«Ø¥ß·sªº¥\¯à©Î×§ï¡A¨ä°ò©³Ãþ§O¤£·|¨ü¥ô¦ó¼vÅT¡CÄ~©Ó¥i´£¤Éµ{¦¡½Xªº«½Æ¨Ï¥Î©Ê(reusability)¡C
-
¦h«Ä~©Ó(multiple inheritance)¡G¤@ÓÃþ§O¥i¥Hª½±µÄ~©Ó¦hÓ°ò©³Ãþ§O¢wºô¸ôµ²ºc¡C¦h«Ä~©Ó³Ì±`¤Þµoªº³Â·Ð«K¬O¡u¼Ò¸W¨â¥i¡v(ambiguity) ¡C
- ²³æÄ~©Ó(single inheritance)¡G¤@ÓÃþ§O³Ì¦h¥u¯àª½±µÄ~©Ó¤@Ó°ò©³Ãþ§O¢w¾ðµ²ºc¡C
-
Ãþ§O¶¡ªº¼h¯ÅÃö«Y
- ¤÷Ãþ§O(Superclass)¡Bªx¤Æ¡B¤@¯ë¤Æ(Generalization)¡GµÑ¨úÃþ§Oªº¬Û¦PÄݩʻP¾Þ§@©Ò¦¨ªº¤W¼hÃþ§O¡C
- ¤lÃþ§O(Subclass)¡BÄ~©Ó¡B¯S®í¤Æ(Specialization)¡G¦b¬J¦sÃþ§O¤U¡A¥[¤W±Mªùªº¯S©Ê©Ò¦¨ªº¤U¼hÃþ§O¡C
- ¡uis a¡vªºÃö«Y¡G¤lÃþ§O is a ¤÷Ãþ§O¡A¦p¿ûµ^¬O¼Ö¾¹¡C
¦P¦W²§¦¡(Polymorphism)=¦h«¬=°ÊºAôµ²(Dynamic binding)
- ©w¸q¬Û¦P¦WºÙªº¾Þ§@¡A¥H¤£¦Pªº¤è¦¡³B²z¤£¦PÃþ«¬ªº¸ê®Æ¡C
- ¦h«¬¦bµ{¦¡°õ¦æ´Á§Q¥Î°ÊºA³sµ²(Dynamic Binding)ªº¤è¦¡§PÂ_°T®§°Ñ¼ÆªºÃþ«¬»PӼƨӨM©w¹B§@ªº¤èªk¡C
-
¹F¨ìª«¥ó¾É¦V¤¤¡u¦h«¬¡vªº¤èªk
- ©â¶HÃþ§O (abstract class)¡G©â¶HÃþ§O¬O¬°¤FÅý¤èªkªº¨Ï¥Î§ó¦h¼Ë¤Æ¡Aª«¥óÂà´««¬§O¬°©â¶HÃþ§O«á¡A§Y¨Ï¤èªk¦WºÙ¬Û¦P¡A¨ä¹ê§@ªº¤º®e»P°õ¦æµ²ªG«o¤£¦P¡C
ª«¥ó¾É¦Vªº¨t²Î¶}µo¤èªk(Process)
ª«¥ó¾É¦Vªº¨t²Î¶}µo¬O¤@Ó¤ÏÂÐ(Iterative)ªº¹Lµ{¡A¥]¬A¤F¤TÓ¶¥¬q
- »Ý¨D¤ÀªR ->
(»Ý¨D¼Ò¦¡) ¥Dn¥H¨Ï¥ÎӮ׹ϡB¬¡°Ê¹Ï¡BÂŹϡB¸ê®Æµü·J¡B¤¶±¤¸¥óµ¥§@¬°ªí¹F¤u¨ã¡C
- ¨t²Î¤ÀªR»P³]p ->
(¤ÀªR¼Ò¦¡) ±N»Ý¨D¼Ò¦¡¤¤ªº¨t²Îªí¹F¦¨¤@Óª«¥ó¬[ºc¡A¥]¬A¤Fª«¥ó¹Ï»PÃþ§O¹Ï
(³]p¼Ò¦¡) ±Nª«¥ó¬[ºc¦Ü²{ªp¤§¹ê¬IÀô¹Ò¡A¥]¬A¤F´`§Ç¹Ï¡B¦X§@¹Ï¡Bª¬ºA¹Ï¡B¬¡°Ê¹Ï¡C
- ¹ê¬I»P´ú¸Õ ->
(¹ê¬I¼Ò¦¡)¤¸¥ó¹Ï¡B³¡¸p¹Ï¡C
(´ú¸Õ¼Ò¦¡)
³oºØ¤ÏÂЪº¶}µo¤è¦¡¡A¦b¨CÓiteration(¤ÏÂЪº´Á¶¡)µ²§ô«á¡A§Æ±æ¯à²£¥Í¨ã³Æ²£«~«~½è¡B´ú¸Õ¡B¾ã¦X¹Lªº³nÅé¥X¨Ó¡A©Ò¥H·|¦³¦hÓµo¦æª©¥»(release)¦s¦b
«nªºª«¥ó¾É¦Vªº¨t²Î¶}µo¤èªk
|
¤èªk¦WºÙ
|
¤èªk½×ªÌ(3 Amigo)
|
|
Booch
|
Grady Booch
|
|
OMT(Object Modeling Technique)ª«¥ó¶ì¼Ò§Þ³N
|
Jim Rumbaugh
|
|
OOSE(Object-Oriented Software Engineering)ª«¥ó¾É¦V³nÅé¤uµ{
|
Ivar Jacobson
|
|
RUP(Rational Unified Process)Rational²Î¤@¬yµ{
|
Rational / IBM
|
|
XP(eXtreme Programming)·¥Pµ{¦¡³]p
|
Kent Beck
|
|
n¬Ý¬ÝÁÙ¦³þ¨Ç¨t²Î¶}µo¤èªk¡A¥i°Ñ¦Ò¡G
http://www.cetus-links.org/oo_ooa_ood_methods.html
|
Booch
Booch¤§¤èªk±N¨t²Î¶}µo¹Lµ{¤À¬°
Æ[©À´Á¡B¤ÀªR´Á¡B³]p´Á¡B¶i¤Æ´Á¡BºûÅ@´Á¡A±`¥Î©ó¤j«¬³nÅé±M®×¡C
- Æ[©À´Á¡G½T©w®Ö¤ß»Ý¨D
- ¤ÀªR´Á¡Gµo®i¨t²Î¦æ¬°¼Ò¦¡
- ³]p´Á¡G«Øºc¨t²Î¬[ºc
- ¶i¤Æ´Á¡G§ï¨}¨t²Î
- ºûÅ@´Á¡G§ï¨}²¾¥æ«á¤§¨t²Î
OMT
Rumbaugh¤§OMT¤èªk±N¨t²Î¶}µo¹Lµ{¤À¬° Æ[©À§Î¦¨¡Bª«¥ó¾É¦V¤ÀªR¡Bª«¥ó¾É¦V³]p¤TÓ¶¥¬q¡A±`¥Î©ó¥ø·~¸ê°T¨t²Î¡C
OOSE
Jacobson¤§OOSE¤èªk±N¨t²Î¶}µo¹Lµ{¤À¬° ¤ÀªR¡B«Øºc¡B´ú¸Õ¤TÓ¶¥¬q¡A¥H¨Ï¥ÎÓ®×µÛ¦W¡C
RUP
- ªì©l¶¥¬q(inception)
- ¸Ôz¶¥¬q(elaboration)
- «Øºc¶¥¬q(construction)
- Âà´«¶¥¬q(transition)
ª«¥ó¾É¦Vªº¶ì¼Ò = ³nÅé¬[ºc
³nÅé¶}µo¦p¦Pµ¼ÖÃЦ±¤Î«Ø¿v³]p¡A¨ä¹Lµ{¤¤¥²¶·±N»Ý¨D¡B¤ÀªR¡B³]p¡B¹ê§@¡B§G¸pµ¥¦U¶µ¤u§@¬yµ{¤§¤£¦PÆ[ÂI¤©¥H§e²{¡A³o´N¬O³nÅé¨t²Î¤§¶ì¼Ò(Modeling)¡C
Boochµ¥¤H / Rational Software ´£¥X¥i±q4+1Æ[ÂI(4+1 view)¨Ó¬Ý³nÅé¨t²Î¬[ºc(¥YÅã¨Ï¥ÎӮתº«n©Ê)
- ¨Ï¥ÎӮׯ[ÂI(Use Case View)¡G¥H¨Ï¥ÎÓ®×¥R¤Àªí¹F³nÅé¥\¯à»Ý¨D
- ³]pÆ[ÂI(Design View)¡G¥Hª«¥óªºÆ[©À¡Aªí¹F¥X³nÅé³]pµ²ªG (Logical View)
- ¬yµ{Æ[ÂI(Process View)¡G
- ¹ê¬IÆ[ÂI(Implementation View)
- §G¸pÆ[ÂI(Deployment View)
®Ú¾Ú¤Wz5ÓÆ[ÂI§ÚÌ¥i¥H¾ã²z¥X6ºØ¶ì¼Ò
- ¨Ï¥ÎÓ®×¶ì¼Ò¡G¨Ï¥ÎÓ®×¹Ï
- ª«¥ó¸ê®Æµ²ºc¶ì¼Ò¡GÃþ§O¹Ï¡Bª«¥ó¹Ï
- ª«¥ó¤¬°Ê¦æ¬°¶ì¼Ò¡G¤¬°Ê¹Ï(¥]§t¤F´`§Ç¹Ï¡B¦X§@¹Ï)
- §@·~¦æ¬°¶ì¼Ò¡G¬¡°Ê¹Ï¡Bª¬ºA¹Ï
- ¨Ï¥ÎªÌ¤¶±¶ì¼Ò¡G
- ¨t²Î¤¸¥ó»P²Õ´µ²ºc¶ì¼Ò¡G¤¸¥ó¹Ï¡B³¡¸p¹Ï
ª«¥ó¾É¦Vªº³nÅéºûÅ@
- ³nÅ骺ºûÅ@´N¬O³nÅ骺¦A¥Í¡AºûÅ@¸û¶}µo¦Ó¨¥nªá§ó¦hªºª÷¿ú»P®É¶¡
- ³nÅéºûÅ@ªº«äºû¤W´N¬On¦Ò¼{¨ì
¥iºûÅ@©Ê(Maintainability)
»P
¥i«½Æ¨Ï¥Î©Ê(Reuseability)
- ¶Ç²Îªº«½Æ¨Ï¥Î¤è®×¨ÃµLªkÝÅU¥iºûÅ@©Ê»P¥i«½Æ¨Ï¥Î©Êªº¥Ø¼Ð¡Aª«¥ó¾É¦V³]pªº«½Æ¨Ï¥Î¤è¦¡¥i¦b§t¦³§»Æ[°Ó·~Å޿誺©â¶H¼h¦¸ªº¤W¼hµ²ºc¨Ó¦Ò¶q¡A¥H¹F¨ì¥iºûÅ@»P¥i«½Æ¨Ï¥Îªº¥Ø¼Ð¡C
-
ª«¥ó¾É¦VÃþ§O³]pªºªk«h
- ¶}³¬ì«h(Open-Closed Principle ; OCP)
- Liskov¥N´«ì«h(Liskov Substitution Principle ; LSP)
- ¨Ì¿àËÂàì«h(Dependency Inversion Principle ; DIP)
- ¤¶±¹jÂ÷ì«h(Interface Segregation Principle ; ISP)
- ²Õ¦X/»E¦X«½Æ¨Ï¥Îì«h(Composition / Aggregation Principle ; CARP)
- Demeterì«h(Law of Demeter; LoD)
¶}³¬ì«h(Open-Closed Principle ; OCP)
-
¼Ò²ÕÀ³·í´¯¶}ÂX¥R¤jªù¡A¦ýÃö³¬×§ï¤§µ¡
¡C
- ¦p¦ó¹F¦¨¶}³¬ì«h¡AÃöÁä¦b©â¶H¤Æ¡C
- ¤£¤¹³\§ó§ïªº¬O¨t²Îªº©â¶H¼h¡A¤¹³\ÂX¥Rªº¬O¨t²Îªº¹ê§@¼h¡C
- OCPªº¥t¤@Ó¨¤«×¬OEVP¹ï¥iÅܩʪº«Ê¸Ëì«h(Principle of Encapsulation of Variation)§Y§ä¨ì¤@Ó¨t²Îªº¥iÅܦ]¯À¡A¨Ã±N¤§«Ê¸Ë°_¨Ó¡C
- ¥iÅܩʥ²¶·³Q«Ê¸Ë¡A¨º¤£¦Pªº¥iÅܩʩO¡HÀ³¥ÎÄ~©Ó¨Ó³B²z¡A¦]¦¹Ä~©ÓÀ³³Qµø¬°«Ê¸ËÅܤƪº¤èªk¡A¦ýÄ~©Óªº¼h¼ÆÁ×§K¶W¹L2¼h¥H§K¤£¦Pªº¥iÅܩʲV©M¡C
- À³Á×§K±N³æ¯Âªº¬yµ{±±¨îÂಾ»y¥y§ï¼g¦¨¦h«¬¡A°£«D¤º§t¤F¬YºØ°Ó°ÈÅÞ¿è¡C
- ©Ò¦³ªº³]p¼Ë¦¡(Design Pattern)³£¬O°w¹ï¤£¦Pªº¥iÅܩʫʸˡA¨Ï¨t²Î¦b¤£¦Pªº¨¤«×¤W¹F¨ì¶}³¬ì«h¡C
Liskov¥N´«ì«h(Liskov Substitution Principle; LSP)
-
¤lÃþ§OÀ³¸Ó¥i¥H¨Ï¥Î¨ä°ò¦Ãþ§O´À¥N
¡C
- Liskov¥N´«ì«h¬OÄ~©Ó¤§©Ò¥H¯à«½Æ¨Ï¥Îªº°ò¥Û¡A¥u¦³·íl¥ÍÃþ§O¥i¥H´À´«±¼°ò¦Ãþ§O¡A¥B³nÅ骺¥\¯à¤£¨ü¼vÅT®É¡A¨äÃþ§O¤~ºâ¯u¥¿ªº³Q«½Æ¨Ï¥Î¡A¦Ól¥ÍÃþ§O¤]¤~¯à°÷¦b°ò¦Ãþ§Oªº°ò¦¤W¼W¥[·sªº¦æ¬°¡C
- Liskov¥N´«ì«hn¨D¤Z¬O°ò¦Ãþ§O¨Ï¥Îªº¦a¤è¡Al¥ÍÃþ§O¤@©w¾A¥Î¡A¬Gl¥ÍÃþ§O¥²¶·¥]§t¥þ³¡°ò¦Ãþ§Oªº¤¶±
-
°w¹ï¹H¤ÏLSP³]p®É¥i¦æªº«ºc(Refactoring)¤è¦¡
- ·íÃþ§OA¿ù»~ªºÄ~©ÓÃþ§OB®É¡A¥i«Øºc¤@Ó·sªº©â¶HÃþ§OC¡A§@¬°2Ó¨ãÅéÃþ§OA,Bªº¤÷Ãþ§O
- ·íÃþ§OA¿ù»~ªºÄ~©ÓÃþ§OB®É¡A¥i«ºc¬°Ãþ§OB©e¬£(Delegate)Ãþ§OA
¨Ì¿àËÂàì«h(Dependency Inversion Principle; DIP)
-
n¨Ì¿à©ó©â¶H¡A¦Ó¤£n¨Ì¿à©ó¨ãÅé
¡C
-
¨Ì¿àËÂàì«hªºµ¦²¤¬O¨Ì¿à¤¶±©Î©â¶H¤èªk¤ÎÃþ§O¡A¦Ó¤£¬O¨ãÅé¤èªk©ÎÃþ§O¡A¥]¬A¤F¤U¦C±¡ªp³£±o¿í´`DIP
- ÅܼƪºÃþ§O«Å§i
- °Ñ¼ÆªºÃþ§O«Å§i
- ¤èªkªº¶Ç¦^«¬ºA«Å§i
- «¬ºAªºÂà´«
- ©â¶H¼h¯Å§t¦³§»Æ[©M«nªº°Ó°ÈÅÞ¿è¡A¨ãÅé¼h¯Å§t¦³»P¹ê§@¦³Ãöªººtºâªk»y¦¸nªº°Ó·~ÅÞ¿è¡A¦Ó¶Ç²Îªºµ{§Ç©Ê³]p©Î¿ù»~ªºÃþ§O³W¹º·|Åý©â¶H¼h¯Å¨Ì¿à©ó¨ãÅé¼h¯Å¡A¦]¦¹¨Ì¿àËÂàì«h¥iËÂহ¤@²{¶H¡AÅý¹ê§@§ïÅܮɡA°Ó·~ÅÞ¿èµL¶·ÅܰʡC
- ¤@Ó¨ãÅéJavaÃþ§OÀ³·í¥u¹ê§@Java¤¶±©M©â¶HJavaÃþ§O¤¤«Å§iªº¤èªk¡A¦Ó¤£À³·íµ¹¥X¦h¾lªº¤èªk¡C
-
YJavaµ{¦¡n°Ñ·Ó¤@Óª«¥ó¡AY¦¹ª«¥ó¦³¤@Ó©â¶H«¬ºA¡A«hÀ³¨Ï¥Î¦¹©â¶H«¬ºA§@¬°ÀRºA«¬ºA(Static Type)
- ÀRºA«¬ºA(Static Type) = ¹ê»Ú«¬ºA(Apparent Type)¡GÅܼƳQ«Å§i®ÉªºÃþ§O
- ¹ê»Ú«¬ºA(Actual Type)¡GÅܼƩҰѷӪºª«¥ó¯u¹ê«¬ºA
- Y¤@Óª«¥ó¦s¦b¨ä©â¶HÃþ§O¡A´NÀ³·í¦b¥ô¦ó°Ñ·Ó¦¹ª«¥óªº¦a¤è¨Ï¥Î©â¶HÃþ§O
-
Java»y¨¥¤¤«Øºc¤@Óª«¥óªºµ{¦¡¬O¹HIOCP»PDIPªº¡A¦ý¥i¦b¦¹Ãþ§O³Q«Øºc¥X¨Ó«á¹L¦h«¬©Ê¨Ï±o¨Ï¥ÎºÝ¨Ì¿à©ó¨ä©â¶HÃþ§O¡C
- List employees = new Vector();
- DIP¬O³ÌÃø¹ê§@ªºì«h¡A¦]¬°·|¨Ï¥Î¨ìª«¥ó¤u¼t´N·|²£¥Í¤j¶qªºÃþ§O¡C
- DIP°²©w©Ò¦³ªº¨ãÅéÃþ§O³£¬O·|Åܤƪº¨Ã¤£§¹¥þ¥¿½T¡A¦]¬°¬Y¨Ç¨ãÅéÃþ§O¬O¬Û·íªºÃ©w¦]¦¹¨Ã¤£»Ýn¬°¦¹µo©ú¤@Ó©â¶H«¬ºA¡C
¤¶±¹jÂ÷ì«h(Interface Segregation Principle; ISP)
- ¥Ñ«È¤áºÝ«ü©wªº³\¦h¤¶±¤ñ¤@Ó¤@¯ë¥Î³~ªº¤¶±¦n¡C
- ¨Ï¥Î¦hÓ±Mªùªº¤¶±¤ñ¨Ï¥Î³æ¤@ªºÁ`¤¶±n¦n¡A§_«h·|³y¦¨¹ï¤¶±ªº¦Ã¬V(Interface Contamination)¡C
- ¤@ÓÃþ§O¹ï¥t¤@ÓÃþ§Oªº¨Ì¿à©ÊÀ³·í¬O«Ø¥ß¦b³Ì¤pªº¤¶±¤Wªº¡C
²Õ¦X/»E¦X«½Æ¨Ï¥Îì«h(Composition / AggregationPrinciple ; CARP)
Demeterì«h(Law of Demeter; LoD)
²Î¤@¶ì¼Ò»y¨¥(Unified Modeling Language ; UML)
- ¥ÑRational software corporation¿Ä¦X¤Fª«¥ó¾É¦V¤T¼C«Èªº¤èªk½×¡A²Î¤@¤F¥Hª«¥ó¾É¦V¤ÀªR»P³]pªºªí¥Üªk¡A©ó1997¦~11¤ë¥Ñ
OMG(Object Management Group)
¤½¥¬¬°ª«¥ó¾É¦VµøÄ±¤Æ¶ì¼Òªº¼Ð·Ç¡A¥Ø«e
³Ì·sªºª©¥»¬° 2.0 (2003/06/01)
- UML¬O¤@ºØ¶ì¼Ò»y¨¥¡A¦Ó«D¤èªk½×¡A¥¦¨Ã¨S¦³³W½d²Å¸¹ªº¨Ï¥Î®É¾÷»P¦¸§Ç¶È§Q¥Î²Å¸¹¨Ó¹F¨ì·¾³qªº¥Øªº¡A±q¤ÀªR¡A³]p¨ì¹ê§@³£¥i¥H¨Ï¥Î¦P¤@®M²Å¸¹¨Óªí¹F¡A¦]¦¹À³¥Î®É¥i¥H·f°t¾A¦Xªº¤èªk½×¡C
- UML¤§©Ò¥H«n¡A´N¬O¦]¬°¥L¦³§U©ó³nÅé¶}µo¤Hû¤§¶¡ªº·¾³q¡C§ÚÌ¥²¶·¦b¬YºØµ{«×¤W¨Ï¥Î¥L¥H¨ó§U·¾³q¡A¦Ó«Dªýê·¾³q¡C
- ´`§Ç¹Ï¡B¦X§@¹Ï¦XºÙ¤¬°Ê¹Ï¡C
-
UML³]pªº²z©À
- ¨Ï¥ÎӮ׾ɦV(±j½Õ¥H¨Ï¥ÎªÌªº¨¤«×¨Ó©w¸q¥\¯à»Ý¨D)
- ³nÅé¬[ºc³]p(±j½Õ¨t²Î¶}µon¦³ÂŹÏ)
- ©¹ÂСAº¥¼W¦¡¬yµ{(±j½Õ°§C±M®×·ÀI)
¨Ï¥ÎÓ®×¹Ï(Use Case Diagram)
- ¥HOO§Þ³N¶}µo¨t²Î®É¦b»Ý¨D¤ÀªR®É±`§Q¥Î¨å«¬ªº±¡¸`(Scenario)¨Ó¶i¦æ»Ý¨D¶ì¼Ò¡A³oºØÓ®×¼Ò¦¡¤@ª½¨S¦³²Î¤@ªºªí¹F¤è¦¡ª½¨ìIvar Jacobsonµ¥¤H(1996) ¤~±N¨Ï¥ÎӮתºªí¹F¥¿¦¡¤Æ¡C
- ¨Ï¥ÎӮ׹Ϫí¥Ü±q¨Ï¥ÎªÌ¤§Æ[ÂI´yz¨t²Îªº¦æ¬°ªÌ»P¨t²Î¶¡¤§¤¬°Ê¦æ¬°»PÃö«Y¡A¥]§t¤F¦æ¬°ªÌ©M¨Ï¥ÎӮפGÓ¤¸¥ó¡A¦¹ªk¦b¸ê®Æ»P®i¥Ü®æ¦¡¤W¶È§Q¥Î¤å¦r´yz¡AY¯à·f°tµ²ºc¤Æ¤¤ªºÂŹϻP¸ê®Æµü·J«h¥i¸É±j¨ä¤£¨¬¤§³B¡C
- ¨Ï¥Î®×¨Ò¬O±M·~¤À¤uªº¨Ì¾Ú¡A¬O±M®×¶i«×µû¶qªº«n¦]¯À¡C
¦æ¬°ªÌ(Actor) = °Ñ»PªÌ
- Àô¹Ò¤¤»P¨t²Î¦³¤¬°ÊÃö«Yªº¤H©Î¨Æª«¡A¦³¸Ó¨Ï¥ÎӮתº±Ò°ÊªÌ§Y
¥Dn¦æ¬°ªÌ(Primary Actor)
»P¨ä¥L°Ñ»PªÌ§Y
¦¸n¦æ¬°ªÌ(Secondary Actor)
¡C
- °Ñ»PªÌ³Qø»s¦¨¤@Ó¤õ®ã´Î§Îª¬ªº¤p¤H¨Ã±N¦WºÙ¸m¨ä¤U¤è¡C
¨Ï¥ÎÓ®×(Use Case)
- ¨Ï¥ÎªÌ³z¹L¤¶±n¨D¨t²Î©Ò°µ¤@¨t¦C¬ÛÃöªº¨Æ¥ó¬y¡A¥]§t¤F³Ì¥Dnªº¨Æ¥ó§Y
°ò¥»¸ô®|(Basic Course)
»P¨ä¥Ll¥Í¨Æ¥ó©Î¥i¯àµo¥Íªº¿ù»~§Y
´À¥N¸ô®|(Alternative Courses)
¡C
- ¨Ï¥Î®×¨Ò³Qø»s¦¨¾ò¶ê§Î¨Ã±N¦WºÙ¸m©ó¹Ï§Î¤º³¡©Î©³³¡¨Óªí¥Ü
-
¨Ï¥ÎÓ®×¶¡ªºÃö«Y¡G
- ÃöÁp(association)¡G¨Ï¥ÎÓ®×»P¦æ¬°ªÌ¤§¶¡ªºÃö«Y¡A¥H¹ê½u¬qªí¥Ü¡C
-
¥]§t(Include)¡G¤@ӨϥÎÓ®×·|¥Î¨ì¥t¤@ӨϥÎӮסA¤GÓ©Î¥H¤Wªº¨Ï¥ÎӮר㦳¬Û¦Pªº¦æ¬°¼Ò¦¡®É¡A¥i±N¸Ó¬q¦æ¬°¼Ò¦¡¿W¥ß¥X¨Ó¦¨¬°¤@Ó·sªº¨Ï¥ÎӮסA¦A«Ø¥ß¥]§tªºÃö«Y¡A¥Î¤@Óµê½u¹ê¤ß½bÀYªº½u¬q¨Ã§t¦³ÃöÁä¦r <<include>> ¡C
- ©µ¦ù(Extend)¡G¦b¬Y±¡ªp¤U¡A¨Ï¥ÎÓ®×·|´¡¤J¥t¤@¨Ï¥ÎӮתº©w¸q¤¤¡A¥Î¤@Óµê½u¹ê¤ß½bÀYªº½u¬q¨Ã§t¦³ÃöÁä¦r <<extend>> ¡C
-
¤@¯ë¤Æ(Generalization)¡G¤@ӨϥÎÓ®×Ä~©Ó¥t¤@ӨϥÎӮתº¦æ¬°¡A
¥Î¤@Ó¹ê½uªÅ¤ß½bÀYªí¥Üªº½u¬q±q¤l¨Ï¥ÎӮ׫ü¦V¤÷¨Ï¥ÎӮסA¥B½bÀY´Â¦V¤÷¨Ï¥ÎӮ׺ݡC
±¡¸`(Scenario)
¨Ï¥ÎӮפ¤ªº¬Y¤@Ó³æ¤@°õ¦æ¸ô®|¡A¥i¯à¬O°ò¥»¸ô®|¤]¥i¯à¬O´À¥N¸ô®|¡C
«Øºc¨Ï¥ÎӮ׹Ϫº¨BÆJ
- §ä¥X¦æ¬°ªÌ¡G±qÀô¹Ò¹Ï§ä
- §ä¥X¨Ï¥ÎӮסG¥Ñ¦æ¬°ªÌ§ä¥X¨Ï¥ÎÓ®×
- ´yz¨Ï¥ÎӮסG¥i¥Î¦ÛµM»y¨¥©Î¨Æ¥ó±ø¦C¦¡
- §ä¥X¨Ï¥ÎÓ®×¶¡ªºÃö«Y¡G
- ø»s¨Ï¥ÎÓ®×¹Ï
Ãþ§O¹Ï(Class Diagram)
- ªí¥Ü¨t²Î¦s¦b¤§Ãþ§O¡B¤¶±¤Î¥¦Ì¶¡¤§ÀRºA¸ê®Æµ²ºc»PÅÞ¿èÃö«Y
-
³q±`¥H¤T¼hªí¥Ü
- Ãþ§O¦W¡G¥¿Åé¦r¡G¨ãÅéÃþ§O¡A±×Åé¦r¡G©â¶HÃþ§O¡A¤¶±¡G<interface>
- Äݩʼh¡G
- ¤èªk¼h¡G
-
ÄݩʻP¤èªk¦³¥|ºØ«Ê¸Ë¤è¦¡
- public:¥H²Å¸¹
+
ªí¥Ü
- private:¥H²Å¸¹
-
ªí¥Ü
- protected:¥H²Å¸¹
#
ªí¥Ü
- static:¥H²Å¸¹
_
ªí¥Ü
- ´yz¤¶±ªºÃþ§O¹Ï¡G¨S¦³privateªº«Ê¸Ë
- ´yzª«¥óªºÃþ§O¹Ï¡G´yzÃþ§Oªº¹êÅé¡A¦WºÙ¤U»Ý¥[©³½u
Ãö«Y
Ãþ§O¶¡ªºÃö«Y¥]¬A¤F
-
¨Ì¿à / ¬Û¨Ì(Dependency)
- ¨Ï¥ÎªºÃö«Y¡Aªí¹F¤@ÓÃþ§O·|¥Î¨ì¥t¤@ÓÃþ§O
- ¥t¤@ÓÃþ§Oªº§ïÅÜ·|¼vÅT¨ì¨Ï¥Î¥LªºÃþ§O¡A¦ý¤Ï¤§¤£¥²µM
- ¤@Ãþ§Oªº°Ï°ìÅܼơA¤èªk°Ñ¼Æ¡A¤èªkªð¦^È¡A¹ïÀRºA¤èªk©I¥s®É¬O¥t¤@ÓÃþ§O®ÉºÙ¤§
- ¥Hµê½u¶}½bÀYªí¥Ü¡C------->
-
¤@¯ë¤Æ(Generalization)
- Ä~©ÓªºÃö«Y¡A¥]¬A¤FÃþ§O¶¡ªºÄ~©Ó¡A¤¶±¶¡ªºÄ~©Ó¡AÃþ§O¹ï¤¶±ªº¹ê§@µ¥
- ¥H¹ê½uªÅ¤ß½bÀYªí¥Ü¡C
-
ÃöÁp/µ²¦X(Association)
- ¦P¤@¼h¯ÅªºÃþ§O¶¡ÀRºAªºµ²ºcÃö«Y
- Java»y¨¥¤¤¬O¨Ï¥Î¹êÅéÄݩʹê§@ªº
- ¨äÃö«Y¦³Âù¦V»P³æ¦V¡A«ØÄ³¦h¥Î³æ¦V
- Ãö«Y¦³°ò¼Æ(Multiplicity)¡AÃö«Y¦³¦WºÙ¡A¦ý³q±`§¡¤©¥H¬Ù²¤
-
¥H¹ê½u¬qªí¥Ü¡C ¡X
-
¨ÌÃöÁpªºÃþ§OӼƨӤÀ
- ¤G¤¸ÃöÁp(Binary Association)
- ¦h¤¸ÃöÁp(n-ary Association)
-
¨Ì´yz¾ãÅé»P³¡¤ÀªºÃö«Y¨Ó¤À(¤£¦P¼h¯ÅªºÃþ§O)
- »E¦X / »E¶°(Aggregation)¡G¥H¹ê½u¥B¾ãÅéºÝ¥[¤@ӪŤߪºµÙ§Îªí¥Ü¡C¡º¡X
- ¦X¦¨ / ²Õ¦X(Composition)¡G¾ãÅ骫¥ó»Ýt³d³¡¤Àª«¥óªº¥Í©R¶g´Á¡A¥H¹ê½u¥B¾ãÅéºÝ¥[¤@Ó¹ê¤ßªºµÙ§Îªí¥Ü¡C¡»¡X
-
¹ê²{¤Æ(Realization)
- ¥H¤¶±¹ê²{¨ä¥LÃþ§O¤§´yz
- ¥Hµê½uªÅ¤ß½bÀYªí¥Ü¡C
°ò¼Æ(Multiplicity) =¦h«©Ê
¦bÃþ§O³s½u¤W»PÃþ§O¤§®Ç¥H¼Æ¦r¼Ð¥Ü»P¤§ÃöÁpªº¼Æ¶q¡C
ª«¥ó¹Ï(Object Diagram)
- ´yz¨t²Î©ó¬Y¤@®É¶¡ÂIªºÀRºAµ²ºc¡A¤]ºÙ¬°®×¨Ò¹Ï¡A¥]§t¤F
ª«¥ó
»P³s½u¤GÓ¤¸¥ó¡C
- ª«¥ó¶¡ªºÃö«YºÙ¬°³s½u(Link)¡C
´`§Ç¹Ï(Sequence Diagram)
- ¥H®É¶¡µo¥Í¤§¥ý«á¶¶§Ç¨Óªí¹Fª«¥ó¶¡ªº°T®§¶Ç»¼»P³B²z¤§µ{§Ç¡A¥]§t¤FÃþ§O¤§ª«¥ó¡B°T®§¡B¾Þ§@¡B¥Í©R½u»P±±¨îµJÂIµ¥¤¸¥ó¡C
-
´`§Ç¹Ï¦³2Ó¶H½u
- ««ª½¶H½u¨Ì·Ó°T®§©I¥sµo¥Íªº®É¶¡¶¶§Ç¡A¨Ó´yz°T®§©I¥sªº¥ý«á¦¸§Ç¡C
- ¤ô¥¶H½u´yz¤@Óª«¥ó¹êÅé¶Ç°e°T®§µ¹þ¤@Óª«¥ó¹êÅé¡C
°T®§(Message) =¨ë¿E(Stimuli)
¥Ñ¬Y¤@ª«¥ó¶Ç°e°T®§¦Ü¥t¤@ª«¥ó¥H±Ò°Ê¾Þ§@¡A¥H¤W¤U¦ì¸mªí¥Ü¶¶§Ç¡C
¥Í©R½u(Lifeline)
ªí¹Fª«¥ó¦A¬Y®É¬qªº¦s¦b¡A¥Hª«¥ó¤U»Pª«¥ó««ª½¤§µê½uªí¥Ü¡C
±±¨îµJÂI (Focus of Control) =±Ò°Ê±ø(ActivationBar)
ªí¹Fª«¥ó°õ¦æ¬Y°Ê§@¤§®É¬q¡A»P¥Í©R½u«Å|¥B¥H°ª½Gªº¯x§Îªí¥Ü¡C
¨t²ÎÃä¬É (System Border)
¨t²Î»P¥~¬É·¾³q¤§¤¶±¡A³q±`©ñ¸m¦b´`§Ç¹Ïªº³Ì¥ª°¼¡C
«Øºc´`§Ç¹Ïªº¨BÆJ
- ½T»{ª«¥ó
- ´yz¾Þ§@
- ´yz°T®§
- ø»s´`§Ç¹Ï
¦X§@¹Ï(Collaboration Diagram)
- µÛ«ªí¹Fª«¥ó¶¡¤§³sµ²µ²ºc¡A¨Ã¯à¦P®É®i²{ª«¥ó¶¡ªº°T®§¶Ç»¼»P³B²z¤§µ{§Ç¡A¥]§t¤FÃþ§O¤§ª«¥ó¡B³sµ²¡B°T®§»P¾Þ§@µ¥¤¸¥ó¡C
- Rational Rose¥i±N´`§Ç¹Ïª½±µÂà´«¦¨¦X§@¹Ï¡C
- ¦X§@¹Ï»P´`§Ç¹Ï¬Û¤ñ¸û¡A¤Ö¤Fª«¥ó¥Í©R½u»PµJÂI±±¨î¡A¦h¤F¸ô®|»P§Ç¼Æ
³sµ²(Link)
¥Hª½½u³s±µ¤GÓª«¥ó¤]´N¬Oª«¥ó¶¡ªº¸ô®|(Path)¡C
°T®§(Message)
°T®§µo¥Í¶¶§Ç¥H¦ÛµM¼Æ©Î§ù«Â¼Æµ¥½s¸¹¨Óªí¹F¡C
¬¡°Ê¹Ï(Activity Diagram)
ª¬ºA¹Ï(State Diagram)
¤¸¥ó¹Ï(Component Diagram)
³¡¸p¹Ï(Deployment Diagram)
¼Ë¦¡²z½×(Pattern
Theory)
- ¬ã¨s¤@¦Aµo¥Íªº¨å«¬¨Æ¨Ò¡A¥H«K¬ã¨sªÌ¥i¥H¬ã²ß¦Ü¿Ä·|³e³q¡AÁ|¤@¤Ï¤T¡A±À³¯¥X·sªº²z½×¡A¥s°µ¼Ë¦¡²z½×¡C
- ¼Ë¦¡¤£¬Oµo©ú¡A¦Ó¬Oµo²{
-
²{¥N¼Ë¦¡²z½×¡G«Ø¿v³]p¾Ç®a ¨È¾ú¤s¤j Christopher Alexander´£¥X
- µL¦W¤§
½è
(The Quality Without a Name ; QWAN)
-
ªù
(The Gate)
-
¹D
(The Way)¡G¤SºÙ§@¡u¥Ã«í¤§¹D¡v(The Timeless Way)
- Alexander»{¬° ³z¹L°l´M¡u¹D¡v¡A¥i¥H³q¹L¡uªù¡v¨ì¹F¡u½è¡v¬O¥ô¦ó¤@ºØ¤uµ{³]pªºµo®i¹Lµ{
-
¡u¼Ë¦¡¬O¬Y¥~¦bI´ºÀô¹Ò (Context) ¤U¡M¹ï¯S©w°ÝÃD (Problem) ªººD¥Î¸Ñ¨M¤§¹D (Solution)
¡v
¡C
- ¼Ë¦¡¬O¤£Â_ªº«½Æµo¥Í¡A¦Ó¦³¨ä«½Æ©Ê¡C¦ý«½Æªº¤£¬O°ÝÃDªº¥»¨¡A¦Ó¬O°ÝÃDªº¥»½è¡A©Ò¥Hn§â¤£¦P°ÝÃD¥H¬Û¦Pªº¼Ë¦¡¨Ó³B²z¡A¶Õ¥²nÂ^¨ú¨ä¥»½è¡A¤]´N¬O¡y©â¶H¡z¡C©Ò¥H¬ã¨s¼Ë¦¡¥²¶·«µø°ÝÃD¥»½è¦Ó«D°ÝÃDªºªí¶H¡C¦P¼Ëªº°ÝÃDªºI´ºÀô¹Ò¤Î¸Ñ¨M¤§¹D¤]¬O©â¶Hªº¡C
- ³]p¼Ë¦¡¬O¹ï³nÅé³]p¼Ò«¬¶i¦æ¤£Â_°l¨D§¹µ½ªº¨Ï¥Î¤u¨ã¡A¦ý¼Ë¦¡ªº¨Ï¥ÎµLµ´¹ïªº¤½¦¡¡A»Ýn¸g¹L¤j¶qªºÓ¤H¹ê½î¤~¯à¼ô½m´x´¤¡C
- «ºc(Refacotrying)¬O¹ï¤£º¡·Nªºµ{¦¡½X¶i¦æÀ±¸Éªº®ÉÔ©Ò»Ýnªº§Þ³N¡A¦]¦¹«ºcªº¦s¦bÃÒ©ú¤F¼Ë¦¡¨Ã«D³nÅé³]pªº»È¼u(Silver Bullet)
-
¼Ë¦¡ªºn¯À
- ¦W¦r(Name)
- °ÝÃD(Problem)
- ªì©lÀô¹Ò(Initial Context)
- ¤O(Forces)
- ¸Ñµª(Solution)
- Á|¨Ò(Examples)
- ¥½ºAÀô¹Ò(Resulting Context)
- ±À²z(Rationale)
- ¬ÛÃö¼Ë¦¡(Related Patterns)
- ¤wª¾À³¥Î(Known Uses)
-
¼Ë¦¡ªººØÃþ
-
³]p¼Ë¦¡(Design Patterns)¡GGoF´£¥X
- «Øºc«¬¼Ë¦¡(Creational Pattern)
- µ²ºc«¬¼Ë¦¡(Structural Pattern)
- ¦æ¬°¼Ë¦¡(Behavioral Pattern)
- ¬[ºc¼Ë¦¡(Architecture Patterns)
- ¤ÀªR¼Ë¦¡(Analysis Patterns)¡GMartin Fowler´£¥X
- ¤Ï¼Ë¦¡(Anti-Patterns)
- ª«¥ó¾É¦V¼Ë¦¡ªº¸g¨å¡G¥|¤HÀ°(Gang of Four ; GoF) §YErich Gamma¡BRichard Helm¡BRalph Johnson¡BJohn Vlissidesµ¥¥|¤H¡A©ó1995¦~¥Xª©¤§
Design Patterns
- Elements of Reusable Object-Oriented Software³o¥»¸g¨åµÛ§@¡A¥]§t23ºØ³nÅé³]p¼Ë¦¡¡A¨Ò¦pMVC Pattern¡A±N³nÅé³]p¤À¬°Model¡BView©MControl¤TÓ³¡¤À¡AModel¬OÄÝ©ó¥ø·~Å޿誺³¡¤À¡A¨Ò¦pºô¸ôÁʪ«ªº¥æ©ö¾÷¨î¡FView¬O¨Ï¥ÎªÌ¤¶±ªº³]p¡FControl«h¦ê³sModel»PViewªºµ{¦¡½X¡C
ÃöÁp¦¡¸ê®Æ®wªº¥¿³W¤Æ(normalization)
©w¸q
YÃöÁpªí¤¤¨C¤@Äæ¦ìªºÈ³£¬O°ß¤@¦Ó¤£¥i¤À³Îªº(Atomic)¡A«hºÙ¤§¬°¥¿³W¤Æ
ÃöÁp¦¡¸ê®Æ®wªºÁä(Key)
- Ô¿ïÁä(Candidate key)¡G¯à¦b¸ê®Æªí¤¤±N¦U¦C¤À§O¥X¨ÓªºÄæ¦ì(¤@Ó¸ê®Æªí¥i¥H¦³¦hÓ)
- ¥DÁä(Primary key)¡G±qÔ¿ïÁ䤤¿ï¥X¨Ó§@¬°¥DnÁäªºÄæ¦ì
- ´À¥NÁä(Alternate key)¡G¨ä¥L¥¼³Q¿ï¬°¥DÁ䪺ԿïÁäÄæ¦ì
- ³sµ²Áä(Concatenated key)¡G«üÔ¿ïÁä¬O¥Ñ¦hÓÄæ¦ì©Ò²Õ¦¨
¤@¶¥¥¿³W¤Æ (First Normal Form; 1NF)
¤SºÙ¬°¥©ZÀÉ(Flat File)¡AYÃöÁpªí¤¤ªº¥ô¤@¦æ»P¥ô¤@¦Cªº¥æ¤e®æ(Cell)¤W§¡¥u¦³¤@ÓÈ¡A¦ý·|¦³´¡¤J¡A§R°£¡A§ó§ïµ¥²§±`(Anomalies)
¤G¶¥¥¿³W¤Æ (Second Normal Form; 2NF)
²Å¦X¤@¶¥¥¿³W¤ÆªºÃöÁpªí¡A¦A°£¥h¸ê®Æªº
³¡¤À¥\¯à¬Û¨Ì(Partial Dependency)
(±N1NF¤¤¥Ñ³¡¤À¥DÁä´N¥i¥H¨M©w¨äȪºÄæ¦ì²¾¥X¦¨¬°¥t¤@ÓÃöÁpªí)
¤T¶¥¥¿³W¤Æ (Third Normal Form; 3NF)
²Å¦X¤G¶¥¥¿³W¤ÆªºÃöÁpªí¡A¦A°£¥h¸ê®Æªº
»¼²¾¬Û¨Ì(Transitive Dependency)
(±N2NF¤¤¥Ñ«D¥Ñ¥DÁä¨M©w¨äȪºÄæ¦ì²¾¥X¦¨¬°¥t¤@ÓÃöÁpªí)
Boyce-Codd¥¿³W¤Æ (Boyce-Codd Normal Form; BCNF)
²Å¦X¤T¶¥¥¿³W¤ÆªºÃöÁpªí¡A¦A°£¥h¥ô¦ó¦]¥\¯à¬Û¨Ì©Ò³y¦¨ªº²§±`µ²ªG
¥|¶¥¥¿³W¤Æ (Fourth Normal Form; 4NF)
²Å¦XBCNF¥¿³W¤ÆªºÃöÁpªí¡A¦A°£¥h©Ò¦³ªº¦hȬۨÌ
¤¶¥¥¿³W¤Æ (Fifth Normal Form; 5NF)
²Å¦X¥|¶¥¥¿³W¤ÆªºÃöÁpªí¡A¦A°£¥h³Ñ¾lªº©Ò¦³²§±`±¡ªp
CMMI(Capability Maturity Model Integrated)
CMMIªº¥Ñ¨Ó
¬ü°ê°ê¨¾³¡¹ï©ó³nÅ骺µ¦²¤¬O§Æ±æ¥~¥](outsourcing)ªº¡A¦ý¬°¤F´x´¤³nÅé ²£«~ªº«~½è»P¶i«×¡A§Æ±æ¶}µo¹Lµ{¯à°÷³z©ú¤Æ¡A¦]¦¹©ó1980 ¦~®É¡A´£¥X¹ï³nÅé©Ó¥]°Óªº³nÅé¶}µo¯à¤O¶i¦æµû¦ôªºn¨D¡C©ó¬O¬ü°ê°ê¨¾³¡»P¥d¤º°ò¬ü¶©¤j¾Ç(Carnegie-Melon University ; CMU)¦@¦P³]¥ß¤F³nÅé¤uµ{¬ã¨s©Ò(Software Engineering Institute; SEI)
SEI©ó1988¦~¬ã¨sµo§G¤F³nÅé¶}µoµ{§Ç¦¨¼ô«×®Ø¬[(CMM)¡A´£¨Ñ¤F³nÅé¶}µoµ{§Çµû¦ô©M³nÅé¯à¤Oµû»ù¨âºØµû¦ô¤èªk©M³nÅ馨¼ô«×´£°Ý³æ¡A¨Ó¦Û²£©x¾Çªº§Þ³N©MºÞ²z±M®a³°Äò¶i¾n¸Ó¾÷ºc¡A¶}©l¹ï¤u¡B°Ó¡B¬F©²´£¨Ñ²£«~©MªA°È¡C 1991¦~¡ASEI±N³nÅé¶}µoµ{§Ç¦¨¼ô«×®Ø¬[ ´£¤É¬°³nÅé¯à¤O¦¨¼ô«×¼Ò«¬(Capability Maturity Model For Software¡A²ºÙSW-CMM)¡A¨Ãµo§G¤F³Ì¦ªºSW-CMM 1.0ª©¡C2000¦~©³SEIµoªí¤F
CMMI
¡A
¾ã¦X³nÅé¤uµ{(Software Engineeing ; SW)¡B¨t²Î¤uµ{(Systems Engineering ; SE)¡B
²£«~»P¬yµ{µo®i(Integrated Product and Procss development , IPPD)»P¨ÑÀ³°Ó¨Ó·½ºÞ²z
(Supplier Sourcing ; SS)ªº¾ã¦X¼Ò¦¡¡C±q¦¹¥H«á¡ACMMI´N»PCMM¨Ã¦æ¡C
CMMIªº¦¨¼ôµ¥¯Å
SEI ¸Õ¹Ï¦b³nÅé¬É«Ø¥ß¤@®M¤uµ{¯ëªº¨î«×¡AÅýÓ¤H©M²Õ´¦b³nÅé¶}µo¤W¯à¦³§ï¶iªº¨Ì¾Ú¡CSEI ªº Capability Maturity Model (CMM) for Software ¤w¸g¦¨¬°³\¦h³nÅ餽¥q©Ò±Ä¦æªº¼Ð·Ç¡A¥Î§@¬°§ï¶i¤½¥q¤º³¡³nÅé¤uµ{ªº¨Ì¾Ú¡C
®Ú¾Ú CMM ªº©w¸q¡A³nÅé¤uµ{ªº¦¨¼ô«×¤À¦¨¤Óµ¥¯Å¡A²³æ¤¶²Ð¦p¤U¡G
-
CMM-Level 1¡]initial¡^¡G³nÅéµ{§Çº©µL³¹ªk¡Aµ{§Ç¥¼³Q©w¸q¡C±M®×¬yµ{µL²Î¤@µ{§Ç¡A±M®×p¹ºªº¦¨¥\¥õ¿à©ó¤u§@¤HûÓ§Oªº§V¤O¡C
- °Ñ»P½d³ò¡G
Ó¤H
- CMM-Level 2¡]repeatable¡^¡G¤w«Ø¥ß°ò¥»ªººÞ²z»P¤ÀªRªºµ{§Ç(
Measurement and Analysis ; MA
)¡A¹ï¦¨¥»¡B®Éµ{¡B©M¾°ÈÅv³d¯à¥[¥H°lÂÜ¡B¬d¸ß¡C¤w¦³§@·~µ{§Ç©Ò¶·¨ã¦³ªº¬ö«ß¡A©Ò¥H¦³¯à¤O«ÂШϥάÛÃþ¦üªº±M®×¦¨¥\ªº®×¨Ò»P¸gÅç¡C
- °Ñ»P½d³ò¡G
±M®×©Î¹Î¶¤
- ¬yµ{«ÂI¡G»Ý¨DºÞ²z(Requirements Management)
-
CMM-Level 3¡]defined¡^¡GÄÝ©óºÞ²z©M¤uµ{ªº¬¡°Ê³£¤w³]p¡B©w¸q¦n¡A¨Ã¥B¤å¥ó¤Æ¡A§¹¾ã¦a¾ã¦X¦¨²Õ´¤ºªº¼Ð·Ç§@·~µ{§Ç¡C¦UÓ±M®×p¹º©µ¥Î¼Ð·Çµ{§Ç©Î³Q»{¥iªº¼Ð·Çµ{§Ç×§ïµ{§Ç¡C
- °Ñ»P½d³ò¡G
²Õ´©Î¤½¥q
- ¬yµ{«ÂI¡G»Ý¨Dµo®i(Requirements Development;REQD)¡AÅçÃÒ(Verification;VER)¡A½T»{(Validation;VAL)
-
CMM-Level 4¡]managed¡^¡G²Õ´¥i¦¬¶°¸Ô²Óªº³nÅéµ{§Ç¥H¤Î³nÅé²£«~ªº¶q´ú¸ê®Æ¡C³nÅé§@·~µ{§Ç©M²£«~³£¦³¤@²Õ¶q´úªº¼Æ¾Ú¡A¥iÅý¤uµ{®v©M¸g²z̤F¸Ñµ{§Ç©M²£«~ªºª¬ªp¡C
- °Ñ»P½d³ò¡G
²Õ´©Î¤½¥q
- ¬yµ{«ÂI¡GQuantitative Project Management(QPM)
-
CMM-Level 5¡]optimized¡^¡Gµû¦ô²·s©Êªº·s§Þ³N¡A°µ¤Ï¬Ù»P´£¤É¡A¦³³W«h¦a¨Ì§Ç¾É¤J±Ä¥Î¡A¥H«ùÄò¤£Â_¦a§ï¶iµ{§Ç¡C
- °Ñ»P½d³ò¡G
²Õ´©Î¤½¥q
- ¬yµ{«ÂI¡GCausal Analysis and Resolution(CAR)
CMMI¹ê¬I
CMM¬O¤@ºØ³nÅé¶}µoªº¬yµ{¼Ð·Ç¡A¥i»¡¬OºØ³nÅé¶}µoªº«~½è«O µý¡A´N¹³ISO¬O²Õ´ºÞ²zªº«~½è«Oµý¤@¼Ë¡C²Ó¤À¤§¤U¡ACMM/CMMI¤À¦¨¤¯Å¡A±q²Ä¤@¯Å¡]level 1¡^¨ì²Ä¤¯Å¡]level 5¡^¡A¤À§O¼Ð¥Ü³nÅ餽¥q¬yµ{ºÞ²zªºÄvª§¤Oµ{«×¡A¤@¯Å¥un´£¥X¥Ó½Ð§Y¥i¦C¤J¡A¤£»Ý¸g¹L¼f¬d¡A¦Ó¨ì²Ä¥|¯Å¬°¥i°µ½è¶qºÞ²z¡A²Ä¤¯Å«h¬°³Ì¨Î¤Æ¡A¥i¹w¨¾¯Ê³´¡C
³nÅé¥ý¶i°ê®a³£¤wÅé»{¨ìCMM/CMMIªº«n©Ê¡C¥Ø«e¥þ²y¬ù¦³700¾lÓ¥]¬A¤½¥q¤Î²Õ´ªº³æ¦ì³q¹LCMM»{µý¡C¨ä¤¤³ÌÃøªº¥|¡B¤¨â¯Å¡A¥þ²y¦U¦Û¦³73»P67Ó³æ¦ìÀò±o¡A¦h¼Æ¶°¤¤¦b¬ü°ê¤Î¦L«×¡A¨ä¥L«h¥HÓ¦ì¼Æ¤À§G¦b¿D¬w¡BĬ«X¡B¥H¡Bªk¡B·s¥[©Yµ¥°ê¡C
§Ú°ê¦æ¬F°|©ó91¦~11¤ë°|¹{¤§¡y¦æ¬F°|©ÒÄݦU¾÷Ãö¸ê°T·~°È©e¥~ªA°È§@·~°Ñ¦Òì«h¡z¤¤¡A¥ç©úq³q¹LCMMI µûŲ±o¦C¬°±ÄÁÊ¥[¤À¶µ¥Ø¡C
°Ñ¦Ò®Ñ¥Ø
-
Software Engineering 6th Edition; SOMMERVILLE; addison wesley;ISBN:020139815
- §d¤¯©M¡AªL«H´f;¨t²Î¤ÀªR»P³]p;´¼³Ó¥Xª© ISBN:9577292194
- ªe¦X¬L¨k;¾Ç²ßª«¥ó¾É¦Vªº²Ä1¥»®Ñ;³ÕºÓ¤å¤Æ; ISBN:9575275373
- Fowler¡AScott; UMLºëµØ²Ä¤Gª©; ùÖ®p; ISBN:9575667557
- ÀF§» ; Java»P¼Ë¦¡²z½× ; ùÖ®p ; ISBN:9864214179
- ¶P¤¸¡A¿à©ú©v¡A¼B¿O ; ¥@¬ö¥½³nÅ鲩R/C++,GUI»Pª«¥ó¾É¦V²z½×;¶Ç¼x(ªÑ)¤½¥q;ISBN:9579996504
- ¶P¤¸¡A¿à©ú©v¡A¼B¿O ; ¥@¬ö¥½³nÅ鲩R2;¸ê°T¤H¤å¤Æ¨Æ·~;ISBN:9579964092
ºô¸ô¸ê·½
¥D ºô ¯¸¡Ghttp://peterju.notlong.com
(¥Ø«eÂà§}¦Ü http://irw.ncut.edu.tw/peterju/)