系統架構

系統架構是定義系統結構行為及其他視圖英語view model(view)的概念模型[1]。架構敘述(architecture description)是有關系統的正式描述以及呈現,以有助於瞭解系統結構行為的方式來組織。

系統架構可以包括系統中的組件以及子系統,這些元件以及子系統共同工作來實現整個系統。有許多人設法將描述系統架構的語言形式化,這些語言稱為架構描述語言(ADL)[2][3]

簡介

許多組織用不同的方式在定義系統架構,以下是一些例子:

  • 系統的基本組織,由其組件、組件之間的關係以及組件和環境的關係、主導其設計以及演進的原則所組成[4]
  • 一個系統的呈現,包括從機能到硬體組件和軟體組件的映射、從軟體架構硬體架構的映射,以及這些介面和人的互動[5]
  • 實體元件的分配安排,針對消費產品或是產品生命週期提供其設計方案,目的是要滿足機能架構的需求,以及需求的基線(baseline)[6]
  • 包括最重要、普遍、頂層、策略性發明、決策的架構,以及這些和整體架構之間的基本原理(即其基本要素和關係),以及其相關的特徵以及行為[7]
  • 有關電子計算機設計以及內容的敘述。若有文件,可能會包括目前硬體、軟體以及網路能力的細節清單,有關長期計劃以及後續優先購買項目的敘述,以及昇級或更換過期設備或軟體的計劃[8]
  • 系統的正式敘述,或是在組件層級的系統詳細計劃,目的是為了做為實作的指引[9]
  • 產品設計架構的組成,以及其生命週期過程[10]
  • 組件的結構,組件之間的關係,主導其設計以及演進的定律及指引[9]

系統架構可以視為是一組已有系統(或是未來系統)呈現方式的組合。其呈現一開始會說明一般性,高階的機能組織,漸漸會到更細節,更具體的敘述。

系統架構承載了組成系統元素的資訊、元素之間的關係、主導這些關係的原則。系統架構可能包括硬體、軟體、文件、設備、人工程序或是由組織或是人員所扮演的角色。

系統架構一般會專注在系統組件或是子系統的介面,以及系統和外部環境(特別是用戶)之間的介面。系統和使用者之間的界面會稱為用戶界面人機互動

系統架構可以和系統架構工程(system architecture engineering、SAE)對比,系統架構工程是有效實現系統架構的方法以及原則[11]

  • 系統架構工程是一種方式,因為其中有提到許多步驟,在許多條件的約束下,產生系統架構或是更改系統架構。
  • 系統架構工程是一種原則,因為使用了知識體系來告知實作者,在許多條件的約束下,最有效設計系統的方式是什麼。

和其他領域的關係

系統架構和許多領域中長時間發展的技術和實務緊密相關,其中最重要的領域應該是土木架構。

在數位電腦發明之前,在電子學以及其他領域都已使用「系統」一詞,其意義也和現代的意義相近。不過隨著數位電腦的出現,軟體工程也發展成獨立的學科,因此開始需要區分工程製作的硬體工件、軟體工件,以及合併硬體和軟體的工件。可程式化的硬體工件(電腦的硬體)若沒是沒有軟體,無法發揮其作用,而軟體工件若是沒有可以執行其程序的硬體,也無法發揮作用。而硬體和軟體配合,就可以進行非常多的工作。因此,在電腦及軟體領域(也包括其他工程領域,例如通訊)中,常會用「系統」來表示有所有基本元件(一般來說,會包括硬體和軟體),可以執行特定工作的工件。

在上述的領域中,系統多半是指可程式的硬體以及其中的軟體,系統工程師會關注整體的設備(包括硬體和軟體),特別關注其中各單元之間的介面,也包括軟體和硬體的介面,以及設備和人之間的界面(人機介面)。硬體工程師會負責硬體元件的開發,軟體工程師會負責軟體的開發,而系統工程師的工作是確認軟體可以在硬體上正常執行,以及使用者是否可以正常使用此一設備,執行預期的功能。

系統架構會用到硬體元件和軟體元件,用這些元件來設計整體的系統。好的系統架構可以視為是分割方案,將系統現有(或是預期會有)的功能分割到一組可以清楚劃分的有界子系統中,沒有任何遺漏。分割的主要目的是安排各個子系統中的元件,使元件之間的相互相依性降到最低。不論是軟體或是硬體,好的子系統多半本身就是一個有意義的「物件」。而且,好的系統可以將使用者的需求以及對應的測試相對應。理想上,每一個元件也都會有對應的需求以及測試。

種類

以下是不同種類的系統架構(其基本原則都相同[12][13]

相關條目

參考資料

  1. ^ Hannu Jaakkola and Bernhard Thalheim. (2011) "Architecture-driven modelling methodologies." In: Proceedings of the 2011 conference on Information Modelling and Knowledge Bases XXII. Anneli Heimbürger et al. (eds). IOS Press. p. 98
  2. ^ Paul C. Clements (1996) "A survey of architecture description languages頁面存檔備份,存於網際網路檔案館)." Proceedings of the 8th international workshop on software specification and design. IEEE Computer Society, 1996.
  3. ^ Nenad Medvidovic and Richard N. Taylor (2000). "A classification and comparison framework for software architecture description languages.頁面存檔備份,存於網際網路檔案館)" Software Engineering, IEEE Transactions on 26.1 (2000): 70-93.
  4. ^ 來自美國國家標準協會/電氣電子工程師學會 IEEE 1471英語1471-2000
  5. ^ From the Carnegie Mellon University頁面存檔備份,存於網際網路檔案館)'s Software Engineering Institute頁面存檔備份,存於網際網路檔案館).
  6. ^ From The Human Engineering Home Page's Glossary. 網際網路檔案館存檔,存檔日期2015-02-13.
  7. ^ From OPEN Process Framework (OPF) Repository 網際網路檔案館存檔,存檔日期2006-03-05..
  8. ^ From The National Center for Education Statistics glossary頁面存檔備份,存於網際網路檔案館).
  9. ^ 9.0 9.1 開放組體系結構框架
  10. ^ From 電氣電子工程師學會 1220-1998 as found at their glossary 網際網路檔案館存檔,存檔日期2006-05-17..
  11. ^ The Method Framework for Engineering System Architectures, Donald Firesmith et al., 2008
  12. ^ The fundamental principles of Systems Architecture頁面存檔備份,存於網際網路檔案館), by Boris Golden
  13. ^ The Art of Systems Architecture, Mark Maier and Eberhardt Rechtin, 2nd ed 2002
  14. ^ Choosing A Strategic Systems Architecture, by Brad Day

外部連結