第一塊拼圖

談談 iPhone 系統的分層與觀點

Terry Huang
如履薄冰
5 min readMay 14, 2019

--

大多數的人都已經有了手機,或許你正透過它來看這篇文章,但你對手機發送無線通信協議的了解有多少?又或者,對作為移動式通信技術基礎的電磁波有多少掌握呢?

我想大多數的使用者不太了解這些細節,因為這根本不會影響他們觀看 Youtube 或是瀏覽 Instegram,更何況大多數人沒有時間來深入學習這些硬知識。

事實上,當你剛開始接觸手機時,腦海會自動把它分成兩個部分:

  • 需要知道的事情;
  • 可以忽略或是理所當然的事情。

人們處理這類事情的方式當然不只展現在這個例子上,我們會很自然地透過這樣的手段來學習新事物,舉凡使用新買的 Macbook、咖啡機或者除濕機等。然而,這類在腦海裡的「知識劃分」相當的個人化;哪些是重要的,而哪些不是,完全依賴個人的偏好、目的與經驗。

因此,彼此對同一台手機的知識劃分通常是不同的,而當我對你解釋一台手機究竟是什麼的時候便會產生認知落差,需要進行對焦。事先統一系統劃分的方式可以降低溝通門檻。

這一塊拼圖就是要針對接下來的區塊鏈討論設立基礎,我們將會討論如何對一個系統進行劃分。

在接下來的討論裡,我們把軟體系統根據下列兩種方式進行劃分:

  • 應用層 vs. 執行層;
  • 功能性觀點 vs. 非功能性觀點。

透過這樣的方式來介紹區塊鏈。

應用層 vs. 執行層

在軟體設計領域裡,我們通常是這樣定義:

  • 應用層:用戶的具體需求,例如拍照、講電話或者訂房等。
  • 執行層:讓上述功能實現的技術,例如將數位資料轉換成聲音訊號、辨識數位相機裡特定像素的顏色,或者透過網路發送訊息到訂房系統等。

執行層中的部分偏技術性,可以想成是為了達到用戶需求的手段。

功能性觀點 vs. 非功能性觀點

如果我們再從另一個角度來把系統劃分成兩個部分,一部分是「做了什麼」,另一部分是「如何辦到的」,就形成功能性與非功能性觀點的區分。

  • 功能性觀點:系統最終做了什麼,例如透過網路發送資料、播放音樂、拍照,或是操作照片中單個像素。
  • 非功能性觀點:系統如何辦到的,例如美觀的 UI、高效軟體,或儲存用戶資料並保護隱私的功能。

另外,系統的非功能性觀點還包含兩個相當重要的部分 — 安全性與完整性。其中,完整性指的是系統符合預期地運作。

如果用英文文法的類比來理解功能性/非功能性觀點的區別,「A man can walk quickly or slowly.」中,「走路」都是一樣的,不同的是如何「走路」。同樣道理,功能性觀點類似於動詞,而非功能性觀點則類似於副詞的功用。

如果我們將上面的兩種劃分方式套用在智慧型手機的例子,那麼它看起來會像是表格 1–1:

表格 1–1

上面的表格某種程度也反映了用戶對手機上一個功能的可見程度。例如,應用層的功能性觀點是系統中最表層的功能,因為它們正是用戶實際學著使用的東西。對比之下,執行層的非功能性觀點是系統的主要元素,我們通常不會察覺它們的存在,並將它們視為理所當然。

完整性 (Integrity)

完整性是所有軟體系統中相當重要的非功能性觀點,主要分成三個部分:

  • 資料完整性:系統保存並使用的資料是完整的、正確的,且不存在邏輯衝突。
  • 行為完整性:系統執行我們預期的行為,並且不存在邏輯上的錯誤。
  • 安全性:系統能夠限定權限,只有部分的使用者能夠存取資料和使用某些功能。

在大多數時候,與我們互動的軟體都安穩地維持系統的完整性,所以人們經常忽略它的重要性。可是當系統出現差錯時 — 資料不見了、不合邏輯的軟體行為,或發現陌生人可以存取你的個人資料時,你鐵定不那麼好受。

在這些場景中,我們可以意識到軟體的完整性是極為重要的功能,所以當你發現有一群軟體專家花費大量的心血在這個領域時,便不會感到驚訝。

展望

第 1 塊拼圖介紹軟體工程的部分原則,特別是軟體系統的完整性、應用層 vs 執行層、功能觀點 vs 非功能觀點。理解這些概念能夠幫助你領會區塊鏈所處的角色。下一個步驟我們將會運用這裡學到的概念,來描繪一個更大的圖像。

摘要

  1. 我們可以將軟體系統用兩種方式切開來分析:
  • 應用層與執行層
  • 功能性觀點與非功能性觀點

2. 應用層專注在用戶所需,而執行層專注在讓事情發生的部分。

3. 功能觀點專注在做了什麼,而非功能觀點專注在如何把事情完成。

4. 絕大多數用戶在乎的是系統應用層的功能觀點,然而非功能性觀點 — 特別是執行層的部分 — 對於用戶而言是難以看見的。

5. 完整性在任何的軟體系統中都是相當重要的非功能性觀點,它可以拆分成三個元素:

  • 資料完整性
  • 行為完整性
  • 安全性

6. 大多數的軟體錯誤狀態,例如資料的遺失、不合邏輯的行為,或陌生人能夠存取你的個人資料,都起源於系統完整性的破壞。

後話

區塊鏈針對的是系統的完整性,而目前該技術也成為時下顯學。當矇懞懂懂的民眾開始談論起這原本不浮出表面、不被一般民眾注意的執行層面非功能性觀點的一項技術時,便會產生出許多怪現象。

如果這篇文章充實了你,不妨留下記錄,日後才知道是什麼豐富了生命。

--

--