日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

软考高级软件架构师论文——论软件架构风格

發布時間:2023/11/30 编程问答 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 软考高级软件架构师论文——论软件架构风格 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

論軟件架構風格

軟件體系結構風格是描述某一特定應用領域中系統組織方式的慣用模式。體系結構風格定義一個系統家族,即一個體系結構定義一個詞匯表和一組約束。詞匯表中包含一些構件和連接類型,而這組約束指出系統是如何將這些構件和連接件組合起來的。體系結構風格反應了領域中眾多系統所共有的結構和語義特性,并指導如何將各個模塊和子系統有效地組織成一個完整的系統。

請圍繞“論軟件架構風格”論題,依次從以下三個方面進行論述。

1、概要敘述你參與分析和設計的軟件系統開發項目以及你所擔任的主要工作。

2、軟件系統開發中常用的軟件架構風格有哪些?詳細闡述每種風格的具體含義。

3、詳細說明你參與分析和設計的軟件系統是采用什么軟件架構風格的,并分析采用該架構風格設計的原因。

摘要:

本人于2019年11月參與廣東省某在線教育平臺“外教一對一在線教育”項目,該項目為客戶提供了一對一歐美外教視頻教學,社交圈,公眾直播等功能,提供全方位的軟件支撐,在該項目組中我擔任系統架構師崗位,主要負責整體架構設計與中間件選型。本文以該教育平臺為例,主要討論了軟件架構風格在該項目中的具體應用。整個系統采用具有三層的層次式軟件架構的設計思想,分別是應用層,服務層,數據層。在應用層中的業務邏輯層的設計中,將整個業務系統劃分為十余個子系統。服務層以SpringCloud Alibaba 服務框架為核心,數據層采用了Mybatis框架。整個系統開發工作歷時18個月。目前,該系統已經穩定運行近一年半時間。實踐證明,這種架構設計有效地降低了維護成本,提高了系統地開放性,可拓展性,可復用性和可移植性。

正文:

隨著國家對教育越來越重視,英語教育地市場份額逐步上升,其中用戶口語提升地需求越來越大。為此,一些公司開始提供與外國人聊天地平臺。我公司決定從國際通訊領域進軍口語教育領域。為了這項戰略轉變,公司于2019年11月設計在線教育平臺系統(以下簡稱為“系統”)。該系統幫助人們與歐美外教進行面對面地口語交流與教學。其中隨意聊提供了一個類似QQ視頻通話,而正式課程還提供了H5互動課件以提高教學質量。與此同時,還有公眾直播用于拉新,AI測試用于評測學員能力,降低成本。我參與了該項目地開發工作,擔任系統架構設計師職務,主要負責設計系統架構。本項目組全體成員共9人,我主要負責項目計劃制定,需求分析,整體架構設計與技術選型,以及底層設計。該項目地架構工作于次年2月完成,整個項目耗時18個月,于2021年5月完成。

在架構工作地開始階段,我們便意識到,架構風格定義了用于描述系統地術語表和一組指導構建系統地規則,是系統組織方式地慣用模式,可以為我們地項目提供架構級地通用解決方案。這種架構級地軟件重用可以極大提高我們地系統建設進程。

軟件系統開發中常用地軟件架構風格有:數據流風格,調用/返回風格,獨立構件風格,虛擬機風格,倉庫風格。數據流風格包括批處理序列與管道-過濾器,其每一步處理都是獨立,順序執行地,適用于簡單地線性流程。調用/返回風格包括主程序/子程序風格,面向對象風格,層次結構風格,其進一步降低系統耦合度,明確系統層次。獨立構件風格包括進程通信,事件驅動(隱式調用),其構件特點為軟件重用提供了支持。虛擬機風格包括解釋器風格,基于規則地系統風格,其具有良好地靈活性,可自定義規則。倉庫風格包括數據庫系統風格,超文本系統風格,黑板系統風格,其以數據為中心。除此之外,還有dssa,soa等架構風格。

在了解需求后,我們決定在公司技術顧問地建議下,采用層次架構風格。為了解決公司原通訊系統代碼冗余問題,我們進行了系統服務化,中間層不同地服務中心提供不同地業務服務。最終,我們將系統分為應用層,服務層,數據層。應用層負責具體業務和視圖展示,如網站首頁,app內搜索輸入與結果展示等,其又分為視圖層與業務邏輯層。服務層負責為應用層提供通用服務支持,如賬戶管理服務,session管理服務等,其又細分為邏輯處理層與數據接口層。而數據層負責提供數據存儲訪問服務,如數據庫服務,緩存服務,文件服務,搜索服務等。下面,我將分層次詳細介紹三層層次體系結構地設計過程。

首先是應用層。在應用層中,我們將系統根據應用進行水平劃分,這有助于代碼管理與維護。我們將系統分為課件管理系統,公眾直播系統,學員測試系統,課程管理系統等十余個子系統,這里以課件管理系統為例。課件管理系統負責學員上課所用地課件,有課件編輯,課件預覽,課件交互,課件展示等多個功能模塊。功能模塊調用服務層地服務支撐,如課件交互需要調用服務層由RabbitMQ實現地AMQP通信服務,通過該通信服務,實現教師端與學生端地課件地同步,從而使得課件交互變得有趣,生動,具有互動性。另一方面為了區別教師端與學生端地交互權限,課件模塊還需要調用服務層地賬戶服務,確定用戶身份,從而明確用戶在課件交互中地交互權限。與此同時,為了提高課件地可修改性,可互動性等,課件采用H5編寫。應用層主要采用vue這一套用于構建用戶界面的MVVM框架。其核心是提供對view和viewModel的雙向數據綁定,view和model之間并沒有直接的聯系,而是通過viewModel進行交互,view的變動,自動反應在viewModel上,反之亦然,這樣就保證視圖和數據的一致性。此外還有動靜分離,動態資源靜態化等,這里不再贅述。

其次是服務層,服務層采用了SpringCloud Alibba服務框架等技術實現。隨著服務器規模的擴大,開發人員增多,每個應用都變得復雜,臃腫,存在大量代碼重復。為解決這個問題,提出了兩個方案。一個是將應用拆分得更小,確保每個應用都保持在一個合適得大小。好處是設計能夠較快地完成,代碼也比較容易實現。這個方案存在一些問題,一方面數據庫的連接數壓力依舊存在,另一方面,代碼的冗余依舊存在。所以我們采用了第二個方案——服務化方案。服務化方案,即應用層和數據層中增加一個服務層。首先從結構上來看,系統結構更為清晰明了,更為立體。穩定性上來看,許多散落的代碼成為了通用服務,并交付專門的團隊負責維護。處于對成本與技術成熟度的考慮,我們采用了阿里研發的SpringCloud Alibaba服務框架。SpringCloud Alibaba提供了微服務開發的一站式解決方案,其包含了開發分布式應用微服務的必需組件,如:注冊中心組件Nacos,負載均衡組件Ribbon,遠程調用組件OpenFeign,網關組件Gateway,服務保護組件Sentinel,服務配置管理組件SpringCloudConfig,方便開發者通過SpringCloud編程模型輕松的開發分布式應用服務。

最后是數據層,數據層涉及緩存,文件系統,數據庫,數據通知服務,搜索系統等模塊。由于用戶對數據的訪問具有集中性,所以我們基于SpringCache與Redis實現了緩存機制。由于系統的業務特性,數據庫往往是讀操作遠多于寫操作,所以我們對數據庫進行了讀寫分離。數據訪問方面,Java已經有很多成熟技術,大致分為三種。第一種是為用戶提供專有API,這種方法便于實現功能,但是通用性較差。第二種是通過JDBC方式訪問數據庫,數據層本身作為一個JDBC的實現,也就是暴露出JDBC的接口給服務層。該方法成本很低,遷移成本也非常低,但是開發成本相對高一些。第三種方式是基于ORM或類ORM接口的方式。我們采用的就是這種方式,使用數據庫時使用ORM框架-Mybatis框架,再將框架包裝一層,用于實現數據層功能,對外暴露的仍然是Mybatis的接口。該方法開發高效,敏捷,成本較低,而且兼容性不錯。此外,我們采用ElasticSearch作為數據層搜索引擎,數據訪問層物理部署采用Proxy方式等。限于篇幅,不再贅述。

最終項目成功上線,正常運行了近一年半,收到了各方好評。尤其是H5課件的良好互動性,使得大量業界同行爭相模仿,改用H5制作課件。還有我們的服務化方案架構被作為許多傳統互聯網企業系統重構的經典方案。在系統的架構設計中,我們引入了層次架構的設計思想,有效地降低了維護成本,提高了系統地開放性,可擴展性,可重用性以及可移植性。當然還是存在一些問題的。如H5課件采用Http協議,易被非法劫持,嵌入廣告,可以將協議修改為Https來解決。還有我們采用的負載均衡算法是加權輪詢算法,過于簡單,常常出現資源分配不合理的現象,可以將算法改為加權最小連接數算法來解決。這些都是我在今后的系統設計和開發中需要注意和改進的地方,也是日后我應該努力的方向。

總結

以上是生活随笔為你收集整理的软考高级软件架构师论文——论软件架构风格的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。