物件導向分析設計與應用 第三版   第  1  章:複雜性 製作:蔡煥麟 http://huan-lin.blogspot.com
系統越複雜,完全崩潰的可能性就越高。 The more complex the system, the more open it is to total breakdown.
建築師通常不會在一棟已經蓋好一百層樓的建築物底下再加一間地下室,但 .... Rarely would a builder think about adding a new sub-basement to an existing 100-sto...
<ul><li>軟體系統的使用者對類似的需求變動卻很少審慎考量 </li></ul><ul><li>Users of software systems rarely think twice about asking for equivalent...
<ul><li>他們還會說,那只是簡單改一下程式而已。 </li></ul><ul><li>Besides, they argue, it is only a simple matter of programming. </li></ul>
 
軟體何以生來複雜? <ul><li>軟體的複雜性為其本質,而非附屬的特性  (Brooks.  No Silver Bullet ) 。 </li></ul><ul><li>軟體固有之複雜性是從四種因素衍生而來: </li></ul><ul><...
軟體開發團隊的任務就是要以簡馭繁
複雜系統的五個特徵  <ul><li>階層式結構( hierarchic structure ) </li></ul><ul><li>相對基礎( relative primitives ) </li></ul><ul><li>責任分離( sep...
複雜系統的架構是由其元件以及元件之間的階層關係所構成
複雜系統的兩種主要階層
<ul><li>亂中求序 </li></ul><ul><li>演算法分解  vs. 物件導向分解 </li></ul>
演算法分解的例子
物件導向分解的例子
<ul><li>複雜系統的設計 </li></ul><ul><li>科學?還是藝術? </li></ul>
設計的目的是要建立一個精簡的內部結構,有時也稱為架構 …… 整個設計過程的最終成果就是一份設計。 The purpose of design is to create a clean and relatively simple internal...
<ul><li>設計時應考量各種相互衝突的需求,並做出適當取捨。 </li></ul>
<ul><li>設計的產出是模型,這些模型不僅可以讓我們了解系統的結構、在需求彼此衝突時提供權衡取捨的依據,而且──就一般情況而言──提供了實作的藍圖。 </li></ul>
軟體設計方法論的要素 <ul><li>複雜軟體系統的設計不能像煮菜那樣照著食譜做。 </li></ul><ul><li>基本上,它是一種反覆漸進的程序。 </li></ul><ul><li>軟體開發方法論的共通要素: </li></ul><ul...
下一步? <ul><li>在學習模型表示法、流程、與工具之前,必須先掌握  OO  的基本概念。 </li></ul><ul><li>第 2 、 3 章將介紹下列基本概念: </li></ul><ul><ul><li>抽象( abstracti...
Upcoming SlideShare
Loading in …5
×

OOAD with Applications - Chapter 1

1,906 views

Published on

Object-Oriented Analysis and Design with Application 3rd Edition 中文版,第一章

Published in: Education
0 Comments
2 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
1,906
On SlideShare
0
From Embeds
0
Number of Embeds
745
Actions
Shares
0
Downloads
0
Comments
0
Likes
2
Embeds 0
No embeds

No notes for slide
  • 06/10/09 01:23
  • OOAD with Applications - Chapter 1

    1. 1. 物件導向分析設計與應用 第三版 第 1 章:複雜性 製作:蔡煥麟 http://huan-lin.blogspot.com
    2. 2. 系統越複雜,完全崩潰的可能性就越高。 The more complex the system, the more open it is to total breakdown.
    3. 3. 建築師通常不會在一棟已經蓋好一百層樓的建築物底下再加一間地下室,但 .... Rarely would a builder think about adding a new sub-basement to an existing 100-story building.
    4. 4. <ul><li>軟體系統的使用者對類似的需求變動卻很少審慎考量 </li></ul><ul><li>Users of software systems rarely think twice about asking for equivalent changes. </li></ul>
    5. 5. <ul><li>他們還會說,那只是簡單改一下程式而已。 </li></ul><ul><li>Besides, they argue, it is only a simple matter of programming. </li></ul>
    6. 7. 軟體何以生來複雜? <ul><li>軟體的複雜性為其本質,而非附屬的特性 (Brooks. No Silver Bullet ) 。 </li></ul><ul><li>軟體固有之複雜性是從四種因素衍生而來: </li></ul><ul><ul><li>問題領域的複雜性 </li></ul></ul><ul><ul><li>管理開發流程的困難 </li></ul></ul><ul><ul><li>軟體的彈性 </li></ul></ul><ul><ul><li>表現離散系統行為時所遭遇的問題 </li></ul></ul>
    7. 8. 軟體開發團隊的任務就是要以簡馭繁
    8. 9. 複雜系統的五個特徵 <ul><li>階層式結構( hierarchic structure ) </li></ul><ul><li>相對基礎( relative primitives ) </li></ul><ul><li>責任分離( separation of concerns ) </li></ul><ul><li>共通模式( common patterns ) </li></ul><ul><li>穩定的中介形式( stable intermediate forms ) </li></ul>
    9. 10. 複雜系統的架構是由其元件以及元件之間的階層關係所構成
    10. 11. 複雜系統的兩種主要階層
    11. 12. <ul><li>亂中求序 </li></ul><ul><li>演算法分解 vs. 物件導向分解 </li></ul>
    12. 13. 演算法分解的例子
    13. 14. 物件導向分解的例子
    14. 15. <ul><li>複雜系統的設計 </li></ul><ul><li>科學?還是藝術? </li></ul>
    15. 16. 設計的目的是要建立一個精簡的內部結構,有時也稱為架構 …… 整個設計過程的最終成果就是一份設計。 The purpose of design is to create a clean and relatively simple internal structure, sometimes also called an architecture. . . . A design is the end product of the design process. - Bjarne Stroustrup (C++ 之父 )
    16. 17. <ul><li>設計時應考量各種相互衝突的需求,並做出適當取捨。 </li></ul>
    17. 18. <ul><li>設計的產出是模型,這些模型不僅可以讓我們了解系統的結構、在需求彼此衝突時提供權衡取捨的依據,而且──就一般情況而言──提供了實作的藍圖。 </li></ul>
    18. 19. 軟體設計方法論的要素 <ul><li>複雜軟體系統的設計不能像煮菜那樣照著食譜做。 </li></ul><ul><li>基本上,它是一種反覆漸進的程序。 </li></ul><ul><li>軟體開發方法論的共通要素: </li></ul><ul><ul><li>表示法( notation ) </li></ul></ul><ul><ul><li>流程( process ) </li></ul></ul><ul><ul><li>工具( tools ) </li></ul></ul>
    19. 20. 下一步? <ul><li>在學習模型表示法、流程、與工具之前,必須先掌握 OO 的基本概念。 </li></ul><ul><li>第 2 、 3 章將介紹下列基本概念: </li></ul><ul><ul><li>抽象( abstraction ) </li></ul></ul><ul><ul><li>封裝( encapsulation ) </li></ul></ul><ul><ul><li>模組化( modularity ) </li></ul></ul><ul><ul><li>階層( hierarchy ) </li></ul></ul><ul><ul><li>定型( typing ) </li></ul></ul><ul><ul><li>並行性( concurrency ) </li></ul></ul><ul><ul><li>續存性( persistence ) </li></ul></ul>

    ×