软件基本架构
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
機器語言(Machine Language)
對於電腦來說, 它真正所懂得的語言只有一種, 就是機器語言。所謂的機器語言, 其實是以特定 的數字來表示電腦所能進行的各個動作, 我們稱 這些數字為機器碼 (Machine Code)、或機器語言。 舉例來說, 如果把電腦比喻為一個人, 而 0 代表 向前走一步、1 代表向後退一步、2 代表往左轉 90 度、而 3 代表往右轉 90 度。那麼當我們要 命令這個人往前走三步、再往右走三步時, 就必 須下達 0003000 的指令
Confidential
Page 11
高階語言
為了解決這樣的問題, 因此就有人設計新的語言, 用比較接近人類思考的方式來撰寫程式。這種新的 程式語言就稱為高階語言 (High-Level Language), 例如 C、C++ ...等。使用這種語言, 寫出來的程 式就會像是:
如果(下雨) 就撐傘 不然 就不撐傘
output
控制單元
input
Confidential
Page 3
程式語言分類
程式語言
機器語言
電腦硬體唯一 看的懂的語言 就是一連串的 0、1二進位數 字組合
低階語言
各類組合語言
利用英文縮寫 來取代相對應 之機器語言。
Confidential
Page 4
高階語言
C語言...等
較接近人類思 維方式來設計 程式,但其需 透過編譯器來 翻譯成電腦可 讀取之語言。
Confidential
Page 13
C語言與組合語言比較
組合語言 缺點 •程式碼較不容易理解 •必需對MCU架構很清楚 •寫完後容易忘記 •不具可攜性 優點 •程式碼較小-省錢 •執行速度較快 •讓老板覺得你很厲害
組合語言 缺點 •程式碼較大 •執行速度較慢
優點 •程式碼較容易讀 •僅需對MCU有概念即可 •寫大程式時較簡單 •可攜性較佳
forward forward forward right forward forward forward
Confidential
Page 8
組合語言( Assembly)
像是這樣使用文字符號替代機器碼撰寫程式的語 言, 就稱為組合語言。這種寫法絕對要比原本的 0003000 要容易懂得多, 不過這樣一來, 雖然人 們看得懂, 但是電腦卻看不懂, 而必須透過一個 翻譯的動作, 將這個用組合語言寫成的程式轉換 成電腦看得懂的機器語言, 負責這個翻譯動作的 就是組譯器 (Assembler)。
Confidential
Page 14
一個好的軟體設計有以下優點
1.容易測試 2.容易移植到其他平台 3.容易後續維護 4.容易增加新功能 5.容易重新組織 6.容易了解的程式碼
任何一個人都可以看得出來, 這種以數字表達的 語言並不適合人閱讀。因此大家很快就發現要用 這種方式撰寫程式, 實在太難、太辛苦了, 所以 人們就開始思考如何能以更友善的方式來撰寫程 式。
111010011000111011111110 111010011000111111111110 111010010111101011111110 111010010111101111111110 111010010111011111111110 111010010111111011110110 111010010111011111111110
Confidential
Page 9
組合語言( Assembly)
不管是機器語言或組合語言都有個缺點, 就是每 種電腦的中央處理器 (CPU)或不同廠牌之IC 其機 器語言並不相同。例如Microchip PIC的IC 和 NEC 的MCU 其語法就不相同。以前面的行走例子 來說, 在甲廠牌之MCU上 0 代表的是向前走;但 換了乙廠牌之MCU上 0 可能代表的是向後走, 一 樣下達 0003000, 到達的地方就天差地遠了。
Confidential
Page 5
機器語言(Machine Language)
3 向右轉90度
當電腦看到 這一串數字 後, 就會依 照每個數字 所代表的意 義做出指定 的動作
0
0
0
向
向
向
前
前
Fra Baidu bibliotek
前
走
走
走
一
一
一
步
步
步
0 向前走一步
0 向前走一步
Confidential
0 向前走一步
Page 6
機器語言(Machine Language)
Confidential
Page 12
高階語言
這樣不但更容易閱讀和理解, 也比使用低階語言所 寫出來的程式精簡多了。不過電腦並無法看懂這樣 的程式, 和組合語言一樣需要一個轉譯的動作, 將 使用高階語言所撰寫的程式轉換成電腦所能看懂的 機器語言, 然後才能依此執行。這個轉換的動作是 由各程式語言的編譯器 (Compiler) 來進行。
Confidential
Page 7
組合語言( Assembly)
為了解決機器語言的難題, 有人就想到了用一些 符號來替代數字,以方便人們辨識各個指令。以前 面的例子來說, 如果以 forward 代替原本的 0、 backward 代替 1、left 代替 2、而用 right 替 代 3。那麼同樣要往前走三步、再往右走三步的 程式, 寫起來就變成這樣:
軟體基本架構
Confidential
Page 1
Contents
軟體基本概念
✓ 甚麼是軟體(程式語言) ✓ 程式語言分類 ✓ 甚麼是模組化
軟體基本架構
✓ 需求觀點 ✓ 結構觀點 ✓ 實作觀點
Confidential
Page 2
甚麼是軟體(程式語言)
軟體基本上是告訴硬體在什麼情況下(input)該做什 麼樣的動作(output),而程式設計人員寫程式所用的 語言,就稱為程式語言(Programming Language)。
Confidential
Page 10
高階語言
不論是機器語言還是組合語言, 對於程式的描述都 是以電腦所能進行的最基本動作為步驟, 因此這兩 種語言被稱為低階語言(Low-Level Language)。換 言之, 本來是希望這個人向前走三步, 然後向右走 三步, 但是因為電腦所能進行的基本動作的限制, 使得我們所寫出來的程式必須以向前走一步、向前 走一步、向前走一步、向右轉 90 度、向前走一步、 向前走一步、向前走一步這樣繁瑣的方式一步步描 述實際進行的動作, 寫起程式來其實並不便利。