作者簡(jiǎn)介
Gavin羽德,程序員几莽、軟件架構(gòu)師、企業(yè)架構(gòu)師宅静,關(guān)注智能制造章蚣。
本文是專欄《智能制造系統(tǒng)架構(gòu)》中的文章,其它文章請(qǐng)參閱入坑智能制造系統(tǒng)架構(gòu)姨夹。
原文鏈接:https://blog.csdn.net/gavinchen1985/article/details/113801942
什么是系統(tǒng)架構(gòu)纤垂?
所謂系統(tǒng)架構(gòu),其主要任務(wù)就是通過(guò)分析系統(tǒng)屬性來(lái)設(shè)計(jì)系統(tǒng)結(jié)構(gòu)匀伏。
ISO/IEC 42010: 2011中洒忧,架構(gòu)的定義為:一個(gè)系統(tǒng)在其所處環(huán)境中所具備的各種基本概念和屬性,具體體現(xiàn)為其所包含的各個(gè)元素够颠、他們之間的關(guān)系以及架構(gòu)的設(shè)計(jì)和演進(jìn)原則之中
其中架構(gòu)的對(duì)象是“系統(tǒng)”熙侍,泛指一群有關(guān)聯(lián)的個(gè)體,系統(tǒng)可以一個(gè)企業(yè),部門(mén)蛉抓,也可以是個(gè)應(yīng)用或者服務(wù)庆尘。關(guān)于系統(tǒng)架構(gòu)定義,應(yīng)注意:
每個(gè)系統(tǒng)都有一個(gè)架構(gòu)
架構(gòu)由架構(gòu)元素以及相互之間的關(guān)系構(gòu)成
系統(tǒng)是為了滿足利益相關(guān)者(stakeholder)的需求要構(gòu)建的
利益相關(guān)者都有自己的關(guān)注點(diǎn)(concerns)
架構(gòu)由架構(gòu)文檔描述
架構(gòu)文檔描述了一系列的架構(gòu)視角(architectural perspective)
每個(gè)視角都解決并且對(duì)應(yīng)到利益相關(guān)者的關(guān)注點(diǎn)巷送。
系統(tǒng)架構(gòu)中核心概念的關(guān)系如下圖所示:
系統(tǒng)架構(gòu)的對(duì)象可能是一個(gè)服務(wù)驶忌、一個(gè)應(yīng)用、一個(gè)部門(mén)笑跛、一個(gè)工廠付魔、一個(gè)集團(tuán)、甚至一個(gè)行業(yè)飞蹂。而系統(tǒng)架構(gòu)的復(fù)雜性因系統(tǒng)規(guī)模而異几苍,系統(tǒng)規(guī)模越大,系統(tǒng)架構(gòu)越復(fù)雜陈哑。因此妻坝,在系統(tǒng)架構(gòu)設(shè)計(jì)時(shí),首先要明確架構(gòu)設(shè)計(jì)的對(duì)象惊窖。對(duì)象不同刽宪,架構(gòu)設(shè)計(jì)的粒度、方法和側(cè)重點(diǎn)也就不同界酒。在IT領(lǐng)域圣拄,常將系統(tǒng)架構(gòu)分為三個(gè)層級(jí),分別是企業(yè)架構(gòu)盾计、解決方案架構(gòu)和應(yīng)用架構(gòu)售担。三者的區(qū)別在于:
企業(yè)架構(gòu)(公司級(jí)):通過(guò)架構(gòu)治理和指導(dǎo)規(guī)范保證IT技術(shù)策略和執(zhí)行計(jì)劃與公司愿景及業(yè)務(wù)目標(biāo)一致。企業(yè)架構(gòu)也會(huì)推動(dòng)在公司范圍內(nèi)跨IT項(xiàng)目的技術(shù)整合署辉、復(fù)用和綜合效益族铆。
解決方案架構(gòu)(業(yè)務(wù)單元級(jí)):對(duì)特定的業(yè)務(wù)單元定義IT系統(tǒng),業(yè)務(wù)流程和可復(fù)用的服務(wù)哭尝,橫跨業(yè)務(wù)架構(gòu)和技術(shù)架構(gòu)哥攘。
軟件架構(gòu)(軟件系統(tǒng)級(jí)):定義信息系統(tǒng)結(jié)構(gòu),包括定義子系統(tǒng)組件及其內(nèi)部關(guān)系材鹦,以及與外部系統(tǒng)的關(guān)聯(lián)關(guān)系逝淹。
三個(gè)層級(jí),層級(jí)越高桶唐,內(nèi)容越抽象栅葡,工作的內(nèi)容偏治理;層級(jí)越低尤泽,內(nèi)容越具體欣簇,工作內(nèi)容偏實(shí)現(xiàn)规脸。但在實(shí)際操作中,這三種架構(gòu)并非界限分明熊咽,也并非所有的企業(yè)都有相應(yīng)的崗位對(duì)應(yīng)這三級(jí)架構(gòu)莫鸭。如果公司規(guī)模不大,或者IT管理復(fù)雜度不高横殴,可能會(huì)由一人同時(shí)兼任企業(yè)架構(gòu)和解決方案架構(gòu)的角色被因,甚至三級(jí)架構(gòu)都由一人承擔(dān)。這都取決于公司的規(guī)模和管理的重點(diǎn)衫仑。
但從方法論上講梨与,企業(yè)架構(gòu)和應(yīng)用系統(tǒng)架構(gòu)各自都由相對(duì)成熟的框架和方法。
企業(yè)架構(gòu)
企業(yè)架構(gòu)對(duì)企業(yè)構(gòu)成要素的結(jié)構(gòu)和關(guān)系進(jìn)行模型化描述惑畴,用途是指導(dǎo)企業(yè)經(jīng)營(yíng)管理活動(dòng)的策劃蛋欣、分析和信息系統(tǒng)開(kāi)發(fā)。
一個(gè)企業(yè)架構(gòu)(EA, Enterprise Architecture)具有三個(gè)方面的含義:
EA是一個(gè)描述工具:EA為組織中的所有干系人提供了一種描述手段(模板)如贷,使其可以對(duì)組織中的業(yè)務(wù)、信息系統(tǒng)及其之間關(guān)系按照各自的視角進(jìn)行描述到踏。而且由于使用統(tǒng)一的語(yǔ)言進(jìn)行描述杠袱,所有干系人之間也有了無(wú)障礙溝通的基礎(chǔ),而這也正是EA最重要的用處窝稿。
EA是一個(gè)知識(shí)庫(kù):EA為組織中所有參與者所提供的針對(duì)企業(yè)架構(gòu)各方面的描述提供了一個(gè)分類管理楣富、便于訪問(wèn)的知識(shí)庫(kù)和信息資源庫(kù)。
EA是一個(gè)系統(tǒng)過(guò)程:為了使組織內(nèi)信息技術(shù)與業(yè)務(wù)的需求伴榔、變化相適應(yīng)纹蝴,EA提供了一套實(shí)施準(zhǔn)則和管理策略。
企業(yè)架構(gòu)最早由IBM的John Zachman提出踪少,通過(guò)信息塘安、流程、網(wǎng)絡(luò)援奢、人員兼犯、時(shí)間、基本原理6個(gè)視角構(gòu)建用于分析企業(yè)的模型集漾,稱為Zachman框架切黔。此外還有TOGAF、NAF具篇、DoDAF纬霞、MoDAF。其中最著名的是The Open Group發(fā)表的TOGAF架構(gòu)框架驱显。TOGAF將架構(gòu)定義為一個(gè)系統(tǒng)的正式描述诗芜,或指導(dǎo)系統(tǒng)實(shí)施的組件層級(jí)詳細(xì)計(jì)劃瞳抓。包含組件結(jié)構(gòu)、組件之間相互關(guān)系绢陌,以及對(duì)這些組件的設(shè)計(jì)和隨時(shí)間演進(jìn)的治理原則和指南挨下。?
企業(yè)架構(gòu)包括業(yè)務(wù)架構(gòu)和IT架構(gòu)。業(yè)務(wù)架構(gòu)描述企業(yè)是如何組織結(jié)構(gòu)的脐湾,以及交付業(yè)務(wù)愿景所需的功能性能力臭笆。從企業(yè)業(yè)務(wù)和管理的不同維度構(gòu)建模型,包括戰(zhàn)略績(jī)效秤掌、運(yùn)營(yíng)模式愁铺、流程體系、組織架構(gòu)闻鉴、資源匹配茵乱、空間布局等。IT架構(gòu)從從企業(yè)信息化實(shí)現(xiàn)的維度構(gòu)建模型孟岛,目的是描繪信息系統(tǒng)的藍(lán)圖瓶竭。IT架構(gòu)又分為數(shù)據(jù)架構(gòu)、應(yīng)用架構(gòu)和技術(shù)架構(gòu)渠羞。
軟件架構(gòu)
軟件架構(gòu)的目的是設(shè)計(jì)軟件系統(tǒng)的頂層結(jié)構(gòu)斤贰。在軟件架構(gòu)設(shè)計(jì)中,架構(gòu)師把系統(tǒng)設(shè)計(jì)的需求次询、約束和架構(gòu)方面關(guān)心的問(wèn)題轉(zhuǎn)化為結(jié)構(gòu)荧恍。然后用這些結(jié)構(gòu)來(lái)指導(dǎo)項(xiàng)目開(kāi)發(fā)運(yùn)維。軟件架構(gòu)設(shè)計(jì)主要考慮三方面因素:
系統(tǒng)功能:在設(shè)計(jì)一個(gè)軟件架構(gòu)時(shí)屯吊,至少需要考慮主要功能送巡。主要功能通常被定義為實(shí)現(xiàn)業(yè)務(wù)目標(biāo),促進(jìn)系統(tǒng)開(kāi)發(fā)的關(guān)鍵功能盒卸。其他主要功能的標(biāo)準(zhǔn)也可以是意味著技術(shù)難度更高或者需要許多架構(gòu)元素的互相作用骗爆。
質(zhì)量屬性:質(zhì)量屬性是系統(tǒng)外部可見(jiàn)的、非功能性的屬性世落,例如性能淮腾、安全性或者可伸縮性等。
外部約束:指約束架構(gòu)設(shè)計(jì)的來(lái)自方方面面的約束性需求屉佳。包括業(yè)務(wù)環(huán)境因素谷朝、使用環(huán)境因素、構(gòu)建環(huán)境因素和技術(shù)環(huán)境因素武花。
一般情況下為了實(shí)現(xiàn)一個(gè)質(zhì)量屬性或者外部約束而在某些結(jié)構(gòu)上所做的變化將對(duì)其他的質(zhì)量屬性產(chǎn)生負(fù)面影響圆凰。這些取舍是每個(gè)領(lǐng)域里每一個(gè)架構(gòu)師無(wú)法改變的事實(shí)。因此体箕,軟件架構(gòu)師的工作不是找一個(gè)最佳的解決方案专钉,而是找到一個(gè)令人滿意的方案——通過(guò)搜索一個(gè)也許很大的設(shè)計(jì)方案和決策的空間來(lái)找到一個(gè)可以接受的解決方案挑童。
應(yīng)用架構(gòu)設(shè)計(jì)的管理本身是內(nèi)嵌于項(xiàng)目管理流程里的,不管是采用瀑布模型抑或是敏捷模型跃须,都需要考慮架構(gòu)設(shè)計(jì)的環(huán)節(jié)站叼。同時(shí)業(yè)界也定義了一些架構(gòu)文檔規(guī)范來(lái)定義架構(gòu)設(shè)計(jì)在各個(gè)階段應(yīng)該產(chǎn)出什么樣的交付物。常用的架構(gòu)視圖模板有IBM的RUP定義的4+1視圖菇民,或者C4視圖尽楔,還有側(cè)重業(yè)務(wù)流程分析的BPMN和側(cè)重模型設(shè)計(jì)的UML,都是業(yè)界常用的設(shè)計(jì)模板規(guī)范第练。同時(shí)也可以參考arc42阔馋,作為架構(gòu)文檔模板。
但在不同的項(xiàng)目管理流程中娇掏,架構(gòu)設(shè)計(jì)的內(nèi)容和要求也有所不同呕寝。比如在瀑布模型中,架構(gòu)設(shè)計(jì)是設(shè)計(jì)階段重要的交付物婴梧,所以架構(gòu)設(shè)計(jì)文檔會(huì)寫(xiě)的比較全面細(xì)致下梢。目前常用的架構(gòu)模板也都是在瀑布模型的管理流程中定義出來(lái)的。而在敏捷模型中塞蹭,迭代開(kāi)發(fā)意味著前期開(kāi)發(fā)目標(biāo)和關(guān)注點(diǎn)會(huì)不完整怔球,所以也不會(huì)在前期作全面完整的設(shè)計(jì)。同時(shí)“注重可用的軟件浮还,勝于詳盡的文檔”這個(gè)原則往往會(huì)給開(kāi)發(fā)人員一個(gè)錯(cuò)覺(jué),就是我不必編寫(xiě)設(shè)計(jì)文檔闽巩,我要優(yōu)先編寫(xiě)代碼钧舌。
但需要說(shuō)明的是,“注重可用的軟件”并不意味著沒(méi)有文檔(包括架構(gòu)相關(guān)的文檔)涎跨,這僅僅意味著只有滿足當(dāng)前迭代目標(biāo)的文檔洼冻。這意味著創(chuàng)建的工作產(chǎn)品應(yīng)該盡可能少,但要充分隅很。當(dāng)編寫(xiě)一個(gè)軟件架構(gòu)的文檔時(shí)撞牢,通過(guò)充分考慮利益相關(guān)者的需求來(lái)決定您想要表達(dá)的東西。倘若架構(gòu)的利益相關(guān)者是團(tuán)隊(duì)成員或者維護(hù)人員叔营,您還必須適當(dāng)?shù)刈⒁饽鶆?chuàng)建的任何工作軟件的維護(hù)屋彪,要確保在適當(dāng)?shù)牡胤奖3炙鼈冏钚虑蚁嗷ヒ恢隆?/p>
參考資料
https://www.cnblogs.com/zscyun/archive/2013/04/25/3042144.html
Software Systems Architecture, 2nd. 中文版 《軟件系統(tǒng)架構(gòu)》