系統架構
系統架構是定義系統的結構、行為及其他視圖(view)的概念模型[1]。架構敘述(architecture description)是有關系統的正式描述以及呈現,以有助於瞭解系統結構和行為的方式來組織。
系統架構可以包括系統中的組件以及子系統,這些元件以及子系統共同工作來實現整個系統。有許多人設法將描述系統架構的語言形式化,這些語言稱為架構描述語言(ADL)[2][3]。
簡介
許多組織用不同的方式在定義系統架構,以下是一些例子:
- 系統的基本組織,由其組件、組件之間的關係以及組件和環境的關係、主導其設計以及演進的原則所組成[4]。
- 一個系統的呈現,包括從機能到硬件組件和軟件組件的映射、從軟件架構到硬件架構的映射,以及這些介面和人的互動[5]。
- 實體元件的分配安排,針對消費產品或是產品生命週期提供其設計方案,目的是要滿足機能架構的需求,以及需求的基線(baseline)[6]。
- 包括最重要、普遍、頂層、策略性發明、決策的架構,以及這些和整體架構之間的基本原理(即其基本要素和關係),以及其相關的特徵以及行為[7]。
- 有關電子計算機設計以及內容的敘述。若有文件,可能會包括目前硬件、軟件以及網絡能力的細節清單,有關長期計劃以及後續優先購買項目的敘述,以及昇級或更換過期設備或軟件的計劃[8]
- 系統的正式敘述,或是在組件層級的系統詳細計劃,目的是為了做為實作的指引[9]。
- 產品設計架構的組成,以及其生命週期過程[10]
- 組件的結構,組件之間的關係,主導其設計以及演進的定律及指引[9]。
系統架構可以視為是一組已有系統(或是未來系統)呈現方式的組合。其呈現一開始會說明一般性,高階的機能組織,漸漸會到更細節,更具體的敘述。
系統架構承載了組成系統元素的資訊、元素之間的關係、主導這些關係的原則。系統架構可能包括硬件、軟件、文件、設備、人工程序或是由組織或是人員所扮演的角色。
系統架構一般會專注在系統組件或是子系統的介面,以及系統和外部環境(特別是用戶)之間的介面。系統和使用者之間的界面會稱為用戶界面或人機交互。
系統架構可以和系統架構工程(system architecture engineering、SAE)對比,系統架構工程是有效實現系統架構的方法以及原則[11]:
- 系統架構工程是一種方式,因為其中有提到許多步驟,在許多條件的約束下,產生系統架構或是更改系統架構。
- 系統架構工程是一種原則,因為使用了知識體系來告知實作者,在許多條件的約束下,最有效設計系統的方式是什麼。
和其他領域的關係
系統架構和許多領域中長時間發展的技術和實務緊密相關,其中最重要的領域應該是土木架構。
在數位電腦發明之前,在電子學以及其他領域都已使用「系統」一詞,其意義也和現代的意義相近。不過隨着數位電腦的出現,軟件工程也發展成獨立的學科,因此開始需要區分工程製作的硬件工件、軟件工件,以及合併硬件和軟件的工件。可程式化的硬件工件(電腦的硬件)若沒是沒有軟件,無法發揮其作用,而軟件工件若是沒有可以執行其程序的硬件,也無法發揮作用。而硬件和軟件配合,就可以進行非常多的工作。因此,在電腦及軟件領域(也包括其他工程領域,例如通訊)中,常會用「系統」來表示有所有基本元件(一般來說,會包括硬件和軟件),可以執行特定工作的工件。
在上述的領域中,系統多半是指可程式的硬件以及其中的軟件,系統工程師會關注整體的設備(包括硬件和軟件),特別關注其中各單元之間的介面,也包括軟件和硬件的介面,以及設備和人之間的界面(人機介面)。硬件工程師會負責硬件元件的開發,軟件工程師會負責軟件的開發,而系統工程師的工作是確認軟件可以在硬件上正常執行,以及使用者是否可以正常使用此一設備,執行預期的功能。
系統架構會用到硬件元件和軟件元件,用這些元件來設計整體的系統。好的系統架構可以視為是分割方案,將系統現有(或是預期會有)的功能分割到一組可以清楚劃分的有界子系統中,沒有任何遺漏。分割的主要目的是安排各個子系統中的元件,使元件之間的相互相依性降到最低。不論是軟件或是硬件,好的子系統多半本身就是一個有意義的「物件」。而且,好的系統可以將使用者的需求以及對應的測試相對應。理想上,每一個元件也都會有對應的需求以及測試。
種類
此章節需要擴充。 (2022年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
- ^ 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.
- ^ 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.
- ^ 來自美國國家標準協會/電氣電子工程師學會 IEEE 1471
- ^ From the Carnegie Mellon University (頁面存檔備份,存於互聯網檔案館)'s Software Engineering Institute (頁面存檔備份,存於互聯網檔案館).
- ^ From The Human Engineering Home Page's Glossary. 互聯網檔案館的存檔,存檔日期2015-02-13.
- ^ From OPEN Process Framework (OPF) Repository 互聯網檔案館的存檔,存檔日期2006-03-05..
- ^ From The National Center for Education Statistics glossary (頁面存檔備份,存於互聯網檔案館).
- ^ 9.0 9.1 開放組體系結構框架
- ^ From 電氣電子工程師學會 1220-1998 as found at their glossary 互聯網檔案館的存檔,存檔日期2006-05-17..
- ^ The Method Framework for Engineering System Architectures, Donald Firesmith et al., 2008
- ^ The fundamental principles of Systems Architecture (頁面存檔備份,存於互聯網檔案館), by Boris Golden
- ^ The Art of Systems Architecture, Mark Maier and Eberhardt Rechtin, 2nd ed 2002
- ^ Choosing A Strategic Systems Architecture, by Brad Day