導航:首頁 > 程序命令 > 程序員必讀之軟體架構

程序員必讀之軟體架構

發布時間:2022-01-23 00:49:05

A. 尋求一本電子書 《軟體架構設計》 程序員先架構師轉型必備 作者:溫昱 謝謝了

可以將PDF轉換為TXT的吧,找一下工具

B. 《程序員必讀之軟體架構》epub下載在線閱讀,求百度網盤雲資源

《程序員必讀之軟體架構》([英] Simon Brown)電子書網盤下載免費在線閱讀

資源鏈接:

鏈接:

提取碼:1j4k

書名:程序員必讀之軟體架構

作者:[英] Simon Brown

譯者:鄧鋼

豆瓣評分:7.0

出版社:人民郵電出版社

出版年份:2014-12

頁數:228

內容簡介:通常,人們對軟體架構師持兩種錯誤的看法。有人認為軟體架構師是一種高高在上的職位;有人認為軟體架構師完全不懂開發,只是會畫條條框框的指揮家。本書將打破這些傳統的認知,模糊軟體開發和架構在流程中的界限,進而為軟體架構正名。本書是一本強調實踐、注重實效、輕量級、面向開發者的軟體架構指南。

作者簡介:作者簡介:

Simon Brown

全球知名軟體架構獨立咨詢師、講師,創辦了專門討論軟體架構問題的網站「編碼架構」(codingthearchitecture.com)。他自稱是寫代碼的軟體架構師和明白架構的軟體開發者。自2008年以來的7年時間里,Simon在全球28個國家做過有關軟體架構、技術領導力及其與敏捷的平衡等主題的百餘場演講,並於2012年8月在中國舉辦的ArchSummit全球架構師峰會上以「郁悶的架構師」和「如何設計安全的架構」為主題發表演講,深受與會者好評。Simon已為全球20多個國家的軟體團隊提供咨詢和培訓,他的客戶既有小型技術初創企業,也不乏全球家喻戶曉的品牌公司。

譯者簡介:

鄧鋼

誤打誤撞進入IT行業的80後程序員,愛好Web技術,對前端技術尤其偏愛。曾在盛大創新院擔任前端工程師,現在是IBM上海的一名軟體用戶界面工程師。除了具體的技術,對軟體架構、軟體工程也很感興趣,希望把自己在IBM所見所聞分享出來,為前端領域如火如荼的工程化浪潮貢獻力量。

C. java程序員必讀的書籍

建議你看看《java程序員,上班那點事》,很多泥都會明白了!

D. 如何成為「架構師」(程序員必讀之軟體架構)書評

這本書的結構大概是這樣的:
1.
架構師和程序員是不同的啊!架構師很厲害的啊!架構師也要寫代碼的啊!
2.
架構文檔要這么寫啊朋友!會了沒有啊朋友!
3.
來來來,叔叔手把手教你寫架構文檔,好好學啊朋友!
然後,實在沒什麼意思。
所謂架構師,更多的應該算是成熟期的程序員,硬要搞一些名頭出來實在無聊。

E. 軟體架構設計程序員向架構師轉型必備怎麼樣

您好,很高興為您解答。

看下這個:http://vdisk.weibo.com/s/dydLbx3bEK2It

如若滿意,請點擊右側【採納答案】,如若還有問題,請點擊【追問】

希望我的回答對您有所幫助,望採納!

~ O(∩_∩)O~

F. 有什麼比較好的軟體架構和軟體工程的書

1.軟體架構設計
作者: 溫昱
內容簡介:本書緊緊圍繞「軟體架構設計」這一主題,立足實踐解析了軟體架構的概念、闡述了切實可行的軟體架構設計方法、提供了可操作性極強的完整的架構設計過程。另外,本書從思維方式的突破、面向對象設計、UML建模、過程與管理等關鍵過渡環節,為廣大程序員的成長提供了切中肯綮的指導。本書可作為計算機軟體專業本科生、研究生和軟體工程碩士的軟體架構設計教材,也可作為軟體開發高級培訓、軟體開發管理培訓的培訓教材,更是第一線高級開發人員和開發管理人員的必備參考書。
作譯者介紹
溫昱,資深咨詢顧問,CSAI特聘高級顧問,軟體架構專家,軟體架構思想的傳播者和積極推動者。十年系統規劃、架構設計和研發管理經驗,在金融、航空、多媒體、網路管理、中間件平台等領域負責和參與多個大型系統的規劃、設計、開發與管理。在《程序員》雜志、IBM DeveloperWorks等媒體發表了《圖論思想與UML應用》、《敏捷設計從理論到實踐》、《隨需而變的RUP》等文章數十篇。譯著有《應用框架的設計與實現——NET平台》等。
作者: 溫昱
溫昱 資深咨詢顧問,CSAI特聘高級顧問,軟體架構專家。軟體架構思想的傳播者和積極推動者,中國軟體技術大會傑出貢獻專家。千年系統規劃、架構設計和研發管理經驗,在金融、航空、多媒體、電信、中間件平台等領域負責和參與多個大型系統的規劃、設計、開發與管理。作為資深咨詢顧問,已為眾多知名企業提供了卓有成效的架構培訓與咨詢服務。
同作者作品
軟體架構設計(09年度暢銷榜TOP50)
SQL語言藝術 (china-pub首發) (08年度暢銷榜TOP50)
一線架構師實踐指南(中大型系統架構設計指南)
2. 架構實戰—軟體架構設計的過程
原書名: The Process of Software Architecting
作者: (英)Peter EelesPeter Peter Cripps
譯者: 蔡黃輝 馬文濤
內容簡介:本書從基本原理入手,介紹軟體架構設計過程中涉及的一些概念、流程、方法、用到的工作產品及可重用的資源,從第6章開始,通過介紹一個具體的案例來闡述如何定義需求、創建邏輯架構、創建物理架構。在第10章「進階」中,作者補充說明了架構師和軟體開發項目其他方面的關系,後面又說明了各種軟體開發項目可能存在的困難及相應的處理方法。
本書理論結合實踐,介紹了一些可以應用到整個或部分的架構設計流程中的最佳方法。不管你是一位資深的架構師還是一位有志於成為架構師的初級使用者,通過閱讀本書都能從中獲益。
作譯者介紹
Peter Eeles 是IBM的高級IT架構師,他就職於IBM的Rational品牌軟體組。在這個職位上,他幫助組織提高軟體開發能力,尤其關注和致力於改進架構流程。Peter從1985年開始從事軟體行業,其主要工作是進行架構設計和實現大規模、分布式的系統。Peter是《Building J2EE Applications with the Rational Unified Process》(Addison?Wesley,2002)和《Building business Objects》(John Wiley & Sons,1998)的合著者。他還是英國計算機協會高級會員(FBCS)、工程技術協會(FIET)會員、IBM技術人員、Open Group
3. 面向模式的軟體架構.第4卷,分布式計算的模式語言(經典POSA系列的第4卷)
原書名: Pattern-Oriented Software Architecture Volume 4: A Pattern Language for Distributed Computing
作者: (德)Frank Buschmann (英) Kevlin Henney (美)Douglas C. Schmidt
譯者: 肖鵬 陳立
內容簡介:本書關注分布式計算系統軟體的設計和實現。書中首先介紹理解本書內容所需的核心的模式概念,分布式計算的好處和挑戰;然後描述如何使用分布式計算模式語言,設計真實世界中倉庫管理流程式控制制系統;最後重點講述分布式計算模式語言,該語言陳述了創建分布式系統相關的技術主題。
作譯者介紹
Fralk Buschmann是德國慕尼黑西門子技術公司的高級總工程師。他的研究領域包括對象技術、軟體架構、產品線、模型驅動軟體開發和模式。他在該領域著作甚多,其中最引人注目的便是POSA系列的前兩卷[POSA1][POSA2]和最近的兩卷:本書和[POSA5]。Frank在1992年至1996年曾是ANSIC++標准化委員會X3J16的成員,於1996年發起了首屆EuroPLoP會議,與人合作匯編了數本模式方面的書籍[PLoPD3][SFHBS06],現任Wiley軟體設計模式叢書的主編。
譯者: 肖鵬
肖鵬,ThoughtWorks高級咨詢師,敏捷過程教練,面向對象分析和面向對象設計專家。擁有6年以上軟體開發實踐經驗,多次擔任國內大中型企業敏捷流程改進、面向對象分析和面向對象設計咨詢和培訓。他長期關注於設計模式、架構模式、敏捷軟體開發等領域,並致力於軟體開發最佳實踐的推廣和應用。
同作者作品
Visual Studio 2005技術大全(使.NET程序員事半功倍的利器)
Visual Studio 技術大全(微軟技術大師力作)
面向模式的軟體架構.第4卷,分布式計算的模式語言(經典POSA系列的第4卷)

G. 軟體架構看什麼書

這本書就不需要多說什麼了,它的經典程度和GOF不相上下,每個程序員都應該去讀一下。Martin Fowler同時也是我最喜歡的作者之一,也是軟體開發領域的一位導師。他將40多種經常出現的解決方案轉化成模式,最終寫成這本能夠應用於任何一種企業應用平台的、關於解決方案的、不可或缺的手冊。

這本書獲得了2003年度美國軟體開發雜志圖書類的生產效率獎和讀者選擇獎。相信看完這本書,對於分層思想和分層中具體模式的運用都會有大幅提高。

2. 《軟體構架實踐》

這本書作為入門學習了解軟體架構背後的基本概念來說是個不錯的選擇,但是內容相對有點抽象,很多程序員可能不會喜歡。你可以將本書用作教科書來了解軟體架構。

作者圍繞著軟體構架影響周期展開。每個周期都表明了軟體構架是如何產生影響的,同時它又受哪些因素的影響。軟體構架在特定的背景下發揮著關鍵性的作用。這些背景包括技術環境、項目的生命周期、組織的業務概況和架構師的專業實踐。作者還進一步延展了質量屬性,仍然以構架理念為中心(用單獨一章內容來專門介紹每個屬性),進一步拓寬了軟體構架模式。

3. 《Clean Architecture》

來自傳奇人物Robert C. Martin(「Bob大叔」)的實用軟體架構解決方案,Bob大叔同時也是代碼整潔之道的作者,這本書已然成為專業程序員必讀的書籍之一,而且它是2017年9月才出版,你完全不需要擔心它過時。

干凈的架構對於每一個軟體架構師、系統分析師、系統設計師和軟體管理人員來說都是必不可少的,因此,假如你想要成為頂尖的軟體架構師這本書一定是必不可少的

4. 《微服務設計》

H. 程序員進階:怎麼成為一個軟體架構師

軟體架構師是軟體行業中一種新興職業,工作職責是在一個軟體項目開發過程中,將客戶的需求轉換為規范的開發計劃及文本,並制定這個項目的總體架構,指導整個開發團隊完成這個計劃。主導系統全局分析設計和實施、負責軟體構架和關鍵技術決策的人員。
⑴確定軟體架構師在軟體組織中的職責和充當的角色,確定其相應的必須具備的知識體系,確定軟體架構師的職業及其相關制度,制定軟體架構師的培養目標和培養方案。
⑵堅持以大學教育為主(特別是各軟體學院在這方面可以大施身手),以項目實踐為輔的教育方針。大學可以聘請現有的軟體架構師擔任核心課程的講師,通過學校教育,系統學習軟體架構師所必需的知識體系;通過項目實踐使其具有初步的軟體開發和設計經驗,逐步成長為一名合格的軟體架構師。
⑶作位第2條的補充,聘請現有的軟體架構師,個人認為適合以講座的形式在學校開展。
⑷對國外一些大公司的軟體架構師的培訓和認證予以支持,但是在認證的過程中必須堅持符合中國實際情況的原則。例如,在認證考試之前對考生的知識體系進行系統的測試和評估,在通過認證後的適當時間內進行重新認證和繼續教育。
⑸建立完善的軟體架構師教育和認證制度,使得通過認證的人員能夠在實際的軟體開發中成為稱職的和優秀的軟體架構師。並通過此制度能夠為國家培養出更多、更優秀的軟體架構師,解決當前軟體架構師急缺問題。。

I. 軟體行業里常說的 「架構」,究竟是什麼東西

通常所說的MVC和MVVM都是軟體架構,這只是軟體開發的架構,這些都是一種抽象模式,是人為想像出來的一種開發規范,是軟體開發中的一門藝術。
簡介
定義
軟體架構是一個系統的草圖。軟體架構描述的對象是直接構成系統的抽象組件。各個組件之間的連接則明確和相對細致地描述組件之間的通訊。在實現階段,這些抽象組件被細化為實際的組件,比如具體某個類或者對象。在面向對象領域中,組件之間的連接通常用介面來實現。
軟體體系結構是構建計算機軟體實踐的基礎。與建築師設定建築項目的設計原則和目標,作為繪圖員畫圖的基礎一樣,一個軟體架構師或者系統架構師陳述軟體構架以作為滿足不同客戶需求的實際系統設計方案的基礎。

目標
正如同軟體本身有其要達到的目標一樣,架構設計要達到的目標是什麼呢?一般而言,軟體架構設計要達到如下的目標:
可靠性(Reliable)。軟體系統對於用戶的商業經營和管理來說極為重要,因此軟體系統必須非常可靠。
安全性(Secure)。軟體系統所承擔的交易的商業價值極高,系統的安全性非常重要。
可伸縮性(SCAlable)。軟體必須能夠在用戶的使用率、用戶的數目增加很快的情況下,保持合理的性能。只有這樣,才能適應用戶的市場擴展得可能性。
可定製化(CuSTomizable)。同樣的一套軟體,可以根據客戶群的不同和市場需求的變化進行調整。
可擴展性(Extensible)。在新技術出現的時候,一個軟體系統應當允許導入新技術,從而對現有系統進行功能和性能的擴展。
可維護性(MAIntainable)。軟體系統的維護包括兩方面,一是排除現有的錯誤,二是將新的軟體需求反映到現有系統中去。一個易於維護的系統可以有效地降低技術支持的花費。
客戶體驗(Customer Experience)。軟體系統必須易於使用。
市場時機(Time to Market)。軟體用戶要面臨同業競爭,軟體提供商也要面臨同業競爭。以最快的速度爭奪市場先機非常重要。

歷史
編輯
早在1960年代,諸如E·W·戴克斯特拉就已經涉及軟體架構這個概念了。自1990年代以來,部分由於在 Rational Software Corporation 和Microsoft內部的相關活動,軟體架構這個概念開始越來越流行起來。
卡內基梅隆大學和加州大學埃爾文分校在這個領域作了很多研究。卡內基·梅隆大學的Mary Shaw和David Garlan於1996年寫了一本叫做 Software Architecture perspective on an emerging DIscipline的書,提出了軟體架構中的很多概念,例如軟體組件、連接器、風格等等。加州大學埃爾文分校的軟體研究院所做的工作則主要集中於架構風格、架構描述語言以及動態架構。
計算機軟體的歷史開始於五十年代,歷史非常短暫,而相比之下建築工程則從石器時代就開始了,人類在幾千年的建築設計實踐中積累了大量的經驗和教訓。建築設計基本上包含兩點,一是建築風格,二是建築模式。獨特的建築風格和恰當選擇的建築模式,可以使得一個建築獨一無二。
軟體與人類的關系是架構師必須面對的核心問題,也是自從軟體進入歷史舞台之後就出現的問題。與此類似地,自從有了建築以來,建築與人類的關系就一直是建築設計師必須面對的核心問題。英國首相丘吉爾說,我們構造建築物,然後建築物構造我們(We shape our buildings, and afterwards our buildings shape us)。英國下議院的會議廳較狹窄,無法使所有的下議院議員面向同一個方向入座,而必須分成兩側入座。丘吉爾認為,議員們入座的時候自然會選擇與自己政見相同的人同時入座,而這就是英國政黨制的起源。Party這個詞的原意就是"方"、"面"。政黨起源的關鍵就是建築物對人的影響。
在軟體設計界曾經有很多人認為功能是最為重要的,形式必須服從功能。與此類似地,在建築學界,現代主義建築流派的開創人之一Louis Sullivan也認為形式應當服從於功能(FORMs follows function)。
幾乎所有的軟體設計理念都可以在浩如煙海的建築學歷史中找到更為遙遠的歷史回響。最為著名的,當然就是模式理論和XP理論。

相互關系
編輯
軟體構架是一個容易理解的概念,多數工程師(尤其是經驗不多的工程師)會從直覺上來認識它,但要給出精確的定義很困難。特別是,很難明確地區分設計和構架:構架屬於設計的一方面,它集中於某些具體的特徵。
軟體架構是指在一定的設計原則基礎上,從不同角度對組成系統的各部分進行搭配和安排,形成系統的多個結構而組成架構,它包括該系統的各個組件,組件的外部可見屬性及組件之間的相互關系。組件的外部可見屬性是指其他組件對該組件所做的假設。
從和目的、主題、材料和結構的聯繫上來說,軟體架構可以和建築物的架構相比擬。一個軟體架構師需要有廣泛的軟體理論知識和相應的經驗來實施和管理軟體產品的高級設計。軟體架構師定義和設計軟體的模塊化,模塊之間的交互,用戶界面風格,對外介面方法,創新的設計特性,以及高層事物的對象操作、邏輯和流程。
是一般而言,軟體系統的架構(ArchitECture)有兩個要素:
它是一個軟體系統從整體到部分的最高層次的劃分。
一個系統通常是由元件組成的,而這些元件如何形成、相互之間如何發生作用,則是關於這個系統本身結構的重要信息。
詳細地說,就是要包括架構元件(Architecture Component)、聯結器(Connector)、任務流(TASk-flow)。所謂架構元素,也就是組成系統的核心"磚瓦",而聯結器則描述這些元件之間通訊的路徑、通訊的機制、通訊的預期結果,任務流則描述系統如何使用這些元件和聯結器完成某一項需求。
·建造一個系統所作出的最高層次的、以後難以更改的,商業的和技術的決定。
在建造一個系統之前會有很多的重要決定需要事先作出,而一旦系統開始進行詳細設計甚至建造,這些決定就很難更改甚至無法更改。顯然,這樣的決定必定是有關系統設計成敗的最重要決定,必須經過非常慎重的研究和考察。

種類
編輯
根據我們關注的角度不同,可以將架構分成三種:

邏輯架構
軟體系統中元件之間的關系,比如用戶界面,資料庫,外部系統介面,商業邏輯元件,等等。
比如下面就是筆者親身經歷過的一個軟體系統的邏輯架構圖
圖2、一個邏輯架構的例子
從上面這張圖中可以看出,此系統被劃分成三個邏輯層次,即表象層次,商業層次和數據持久層次。每一個層次都含有多個邏輯元件。比如WEB伺服器層次中有HTML服務元件、Session服務元件、安全服務元件、系統管理元件等。

物理架構
軟體元件是怎樣放到硬體上的。
比如下面這張物理架構圖描述了一個分布於北京和上海的分布式系統的物理架構,圖中所有的元件都是物理設備,包括網路分流器、代理伺服器、WEB伺服器、應用伺服器、報表伺服器、整合伺服器、存儲伺服器、主機等等。

系統架構
系統的非功能性特徵,如可擴展性、可靠性、強壯性、靈活性、性能等。
系統架構的設計要求架構師具備軟體和硬體的功能和性能的過硬知識,這一工作無疑是架構設計工作中最為困難的工作。
此外,從每一個角度上看,都可以看到架構的兩要素:元件劃分和設計決定。
首先,一個軟體系統中的元件首先是邏輯元件。這些邏輯元件如何放到硬體上,以及這些元件如何為整個系統的可擴展性、可靠性、強壯性、靈活性、性能等做出貢獻,是非常重要的信息。
其次,進行軟體設計需要做出的決定中,必然會包括邏輯結構、物理結構,以及它們如何影響到系統的所有非功能性特徵。這些決定中會有很多是一旦作出,就很難更改的。
根據作者的經驗,一個基於資料庫的系統架構,有多少個數據表,就會有多少頁的架構設計文檔。比如一個中等的資料庫應用系統通常含有一百個左右的數據表,這樣的一個系統設計通常需要有一百頁左右的架構設計文檔。

視圖
編輯
我們決定以多種構架視圖來表示軟體構架。每種構架視圖針對於開發流程中的涉眾(例如最終用戶、設計人員、管理人員、系統工程師、維護人員等)所關注的特定方面。
構架視圖顯示了軟體構架如何分解為構件,以及構件如何由連接器連接來產生有用的形式 [PW92],由此記錄主要的結構設計決策。這些設計決策必須基於需求以及功能、補充和其他方面的約束。而這些決策又會在較低層次上為需求和將來的設計決策施加進一步的約束。
構架由許多不同的構架視圖來表示,這些視圖本質上是以圖形方式來摘要說明「在構架方面具有重要意義」的模型元素。在 Rational Unified Process 中,您將從一個典型的視圖集開始,該視圖集稱為「4+1 視圖模型」[KRU95]。它包括:
用例視圖:包括用例和場景,這些用例和場景包括在構架方面具有重要意義的行為、類或技術風險。它是用例模型的子集。
邏輯視圖:包括最重要的設計類、從這些設計類到包和子系統的組織形式,以及從這些包和子系統到層的組織形式。它還包括一些用例實現。它是設計模型的子集。
實施視圖:包括實施模型及其從模塊到包和層的組織形式的概覽。 同時還描述了將邏輯視圖中的包和類向實施視圖中的包和模塊分配的情況。它是實施模型的子集。
進程視圖:包括所涉及任務(進程和線程)的描述,它們的交互和配置,以及將設計對象和類向任務的分配情況。只有在系統具有很高程度的並行時,才需要該視圖。在 Rational Unified Process 中,它是設計模型的子集。
配置視圖:包括對最典型的平台配置的各種物理節點的描述以及將任務(來自進程視圖)向物理節點分配的情況。只有在分布式系統中才需要該視圖。它是部署模型的一個子集。構架視圖記錄在軟體構架文檔中。
您可以構建其他視圖來表達需要特別關注的不同方面:用戶界面視圖、安全視圖、數據視圖等等。對於簡單系統,可以省略 4+1 視圖模型中的一些視圖。

重點
編輯
雖然以上視圖可以表示系統的整體設計,但構架只同以下幾個具體方面相關:
模型的結構,即組織模式,例如分層。基本元素,即關鍵用例、主類、常用機制等,它們與模型中的各元素相對。幾個關鍵場景,它們表示了整個系統的主要控制流程。記錄模塊度、可選特徵、產品線狀況的服務。
構架視圖在本質上是整體設計的抽象或簡化,它們通過舍棄具體細節來突出重要的特徵。在考慮以下方面時,這些特徵非常重要。
系統演進,即進入下一個開發周期。在產品線環境下復用構架或構架的一部分。評估補充質量,例如性能、可用性、可移植性和安全性。向團隊或分包商分配開發工作。決定是否包括市售構件。插入范圍更廣的系統。

形式
編輯

構架模式
構架模式是解決復雜構架問題的現成形式。構架框架或構架基礎設施(中間件)是可以在其上構建某種構架的構件集。許多主要的構架困難應在框架或基礎設施中進行解決,而且通常針對於特定的領域:命令和控制、MIS、控制系統等等。

模式示例
[BUS96] 根據構架模式最適用的系統的特徵將其分類,其中一個類別處理更普遍的結構問題。下表顯示了 [BUS96] 中所提供的類別和這些類別所包含的模式。
類別 模式結構 層管道和過濾器黑板分布式系統代理交互系統 模型-視圖-控制器表示-抽象-控制自適應系統反射微核
在「軟體構架簡介」中,David Garlan 和 Mary Shaw 認為軟體構架是有關如下問題的設計層次:「在計算的演算法和數據結構之外,設計並確定系統整體結構成為了新的問題。結構問題包括總體組織結構和全局控制結構;通信、同步和數據訪問的協議;設計元素的功能分配;物理分布;設計元素的組成;定標與性能;備選設計的選擇。」[GS93]
但構架不僅是結構;IEEE Working Group on Architecture 把其定義為「系統在其環境中的最高層概念」[IEEE98]。構架還包括「符合」系統完整性、經濟約束條件、審美需求和樣式。它並不僅注重對內部的考慮,而且還在系統的用戶環境和開發環境中對系統進行整體考慮,即同時注重對外部的考慮。
在 Rational Unified Process 中,軟體系統的構架(在某一給定點)是指系統重要構件的組織或結構,這些重要構件通過介面與不斷減小的構件與介面所組成的構件進行交互。
為闡明其含義,下面將詳述其中的兩個;完整說明請參見。模式以下列廣泛使用的形式來表示:
模式名環境問題影響,描述應考慮的不同問題方面解決方案基本原理結果環境示例模式名層
環境需要進行結構分解的大系統。
問題必須處理不同抽象層次的問題的系統。例如:硬體控制問題、常見服務問題和針對於不同領域的問題。最好不要編寫垂直構件來處理所有抽象層次的問題。否則要在不同的構件中多次處理相同的問題(可能會不一致)。
影響
系統的某些部分應當是可替換的構件中的變化不應波動相似的責任應歸為一組構件大小 -- 復雜構件可能要進行分解解決辦法將系統分成構件組,並使構件組形成層疊結構。使上層只使用下層(決不使用上層)提供的服務。盡量不使用非緊鄰下層提供的服務(不跳層使用服務,除非中間層只添加通過構件)。
示例:
1. 通用層
嚴格的分層構架規定設計元素(類、構件、包、子系統)只能使用下層提供的服務, 服務可以包括事件處理、錯誤處理、資料庫訪問等等。 相對於記錄在底層的原始操作系統級調用,它包括更明顯的機制。
2. 業務系統層
上圖顯示了另一個分層示例,其中有垂直特定應用層、水平層和基礎設施層。注意:此處的目標是採用非常短的業務「煙囪」並實現各種應用程序間的通用性。 否則,就可能有多個人解決同一問題,從而導致潛在的分歧。
有關該模式的深入討論,請參見指南:分層。
模式名黑板
環境沒有解決問題的確定方法(演算法)或方法不可行的領域。例如 AI 系統、語音識別和監視系統。
問題多個問題解決顧問(知識顧問)必須通過協作來解決他們無法單獨解決的問題。各顧問的工作結果必須可以供所有其他顧問訪問,使他們可以評估自己是否可以參與解決方案的查找並發布其工作結果。
影響
知識顧問參與解決問題的順序不是確定的,這可能取決於問題解決策略
不同顧問的輸入(結果或部分解決方案)可能有不同的表示方式
各顧問並不直接知道對方的存在,但可以評估對方發布的工作
解決辦法多名知識顧問都可訪問一個稱為「黑板」的共享資料庫。黑板提供監測和更新其內容的介面。控制模塊/對象激活遵循某種策略的顧問。激活後,顧問查看黑板,以確定它是否能參與解決問題。如果顧問決定它可以參與,控制對象就可以允許顧問將其部分(或最終)解決方案放置於黑板上。
示例:
以上顯示了使用 UML 建模的結構或靜態視圖。 它將成為參數化協作的一部分,然後會綁定到實參上對模式進行實例化。
構架風格軟體構架(或僅是構架視圖)可以具有名為構架風格的屬性,該屬性減少了可選的形式,並使構架具有一定程度的一致性。樣式可以通過一組模式或通過選擇特定構件或連接器作為基本構件來定義。對給定系統,某些樣式可作為構架描述的一部分記錄在構架風格指南(Rational Unified Process 中設計指南文檔的一部分)中。樣式在構架的可理解性與完整性方面起著主要的作用。
邏輯視圖:類圖、狀態機和對象圖。進程視圖:類圖與對象圖(包括任務 - 進程與線程)。實施視圖:構件圖。部署視圖:配置圖。

設計
編輯

描述語言
為了討論和分析軟體構架,必須首先定義構架表示方式,即描述構架重要方面的方式。在 Rational Unified Process 中,軟體構架文檔記錄有這種描述。
架構描述語言(ADL)用於描述軟體的體系架構。已有多種架構描述語言,如Wright (由卡內基梅隆大學開發),Acme (由卡內基梅隆大學開發),C2 (由UCI開發), Darwin (由倫敦帝國學院開發)。ADL的基本構成包括組件、連接器和配置。

視圖
構架
構架視圖的圖形描述稱為構架設計圖。對於以上描述的各種視圖,設計圖由以下統一建模語言圖組成 [UML99]:
邏輯視圖:類圖、狀態圖和對象圖。
進程視圖:類圖與對象圖(包括任務 - 進程與線程)。
實施視圖:構件圖。
部署視圖:配置圖。
用例視圖:用例圖描述用例、主角和普通設計類;順序圖描述設計對象及其協作關系。

流程
在 Rational Unified Process 中,構架主要是分析設計工作流程的結果。當項目再次進行此工作流程時,構架將在一次又一次迭代中不斷演化、改進、精煉。由於每次迭代都包括集成和測試,所以在交付產品時,構架就相當強壯了。構架是精化階段各次迭代的重點,構架的基線通常會在此階段結束時確定。

架構師
軟體設計師中有一些技術水平較高、經驗較為豐富的人,他們需要承擔軟體系統的架構設計,也就是需要設計系統的元件如何劃分、元件之間如何發生相互作用,以及系統中邏輯的、物理的、系統的重要決定的作出。
這樣的人就是所謂的架構師(Architect)。在很多公司中,架構師不是一個專門的和正式的職務。通常在一個開發小組中,最有經驗的程序員會負責一些架構方面的工作。在一個部門中,最有經驗的項目經理會負責一些架構方面的工作。
但是,越來越多的公司體會到架構工作的重要性,並且在不同的組織層次上設置專門的架構師位置,由他們負責不同層次上的邏輯架構、物理架構、系統架構的設計、配置、維護等工作。
[1]

實踐
編輯
實踐中的理解
軟體架構是對軟體系統運行時元素的抽象,軟體系統可能有很多層抽象,或由多重業務流程所組成,每層抽象或每個業務流程都有自己的軟體架構。
軟體架構是平衡的藝術。

閱讀全文

與程序員必讀之軟體架構相關的資料

熱點內容
田英章楷書pdf 瀏覽:200
為什麼zar找不到解壓文件 瀏覽:119
mud手機app源碼 瀏覽:180
app怎麼查看自己的主域名 瀏覽:639
歐洲銀行加密幣市場 瀏覽:859
linuxc編程高級 瀏覽:733
python解碼vip視頻 瀏覽:594
醜陋的中國人pdf 瀏覽:718
我的世界如何在伺服器裡面裝模組 瀏覽:624
javaweb進銷存源碼下載 瀏覽:557
單片機遙控門鈴設計圖解 瀏覽:324
閃送app怎麼更改照片 瀏覽:160
公司的程序員開始忙了 瀏覽:507
統信系統命令行如何輸漢字 瀏覽:281
java隨機取數組 瀏覽:478
伺服器匆忙什麼意思 瀏覽:780
windows下載文件命令 瀏覽:101
紹興加密防偽技術 瀏覽:54
linux清除緩存的命令 瀏覽:779
樑柱連接處梁的加密箍筋 瀏覽:103