軟件架構(gòu):Python語言實(shí)現(xiàn)
定 價(jià):79 元
叢書名:架構(gòu)師書庫
- 作者:[印度] 阿南德·巴拉錢德拉·皮萊
- 出版時(shí)間:2018/3/1
- ISBN:9787111590941
- 出 版 社:機(jī)械工業(yè)出版社
- 中圖法分類:TP311.561
- 頁碼:
- 紙張:膠版紙
- 版次:1
- 開本:16開
本書首先解釋如何利用Python語言實(shí)現(xiàn)應(yīng)用軟件架構(gòu),讓你逐步理解什么是架構(gòu)級(jí)的需求以及如何確定這些需求;然后,你可以獲得對(duì)架構(gòu)不同質(zhì)量屬性的完整理解,這些質(zhì)量屬性包括可修改性、可測試性、可擴(kuò)展性、可部署性和安全性等,從而幫助架構(gòu)師構(gòu)建滿足業(yè)務(wù)需求的軟件架構(gòu)產(chǎn)品。
前言
軟件架構(gòu),可以說是為特定的應(yīng)用軟件創(chuàng)建一個(gè)藍(lán)圖設(shè)計(jì)。軟件架構(gòu)中存在兩大挑戰(zhàn):首先,軟件架構(gòu)與需求必須保持一致,對(duì)尚未發(fā)現(xiàn)的需求或者發(fā)生演化的需求都是如此;其次,盡管常常發(fā)生架構(gòu)實(shí)現(xiàn)的變更,但軟件架構(gòu)與其對(duì)應(yīng)的架構(gòu)實(shí)現(xiàn)必須保持一致。
本書包含很多示例和用例,通過這種直觀的方法來幫助你獲取成為一名成功的軟件架構(gòu)師所需的一切。本書將幫助你了解Python的來龍去脈,以便可以用Python來構(gòu)建和設(shè)計(jì)高度可擴(kuò)展的、健壯的、簡潔的、性能強(qiáng)大的應(yīng)用程序。
主要內(nèi)容
第1章介紹了軟件架構(gòu)的核心思想,簡要介紹了架構(gòu)質(zhì)量屬性和一些隱含的原理。這將使你能夠在軟件架構(gòu)原理和基本屬性方面擁有良好的知識(shí)基礎(chǔ)。
第2章包括開發(fā)中軟件架構(gòu)的可修改性和可讀性。它將幫助你深入理解架構(gòu)的可維護(hù)性等質(zhì)量屬性,并獲得用Python編寫代碼來測試應(yīng)用程序的各種技巧和策略。
第3章幫助你理解軟件架構(gòu)的可測試性,以及如何為Python應(yīng)用程序構(gòu)建架構(gòu)以滿足可測試性。你還將了解可測試性和軟件測試的各個(gè)方面,以及Python中可用的各種庫和模塊,以便編寫各種可測試的應(yīng)用程序。
第4章討論了在編寫Python代碼過程中關(guān)于性能的方方面面。你不僅可以學(xué)習(xí)架構(gòu)性能的基本知識(shí),還可以掌握在何時(shí)何地需要進(jìn)行性能優(yōu)化。例如,你會(huì)學(xué)習(xí)到何時(shí)進(jìn)行SDLC的性能優(yōu)化。
第5章不僅闡述了編寫可擴(kuò)展應(yīng)用程序的重要性,還討論了實(shí)現(xiàn)應(yīng)用程序可擴(kuò)展性的各種不同方法,并論述了如何利用Python來實(shí)現(xiàn)各種可擴(kuò)展性技術(shù)。你不僅能學(xué)到可擴(kuò)展性的理論方面的知識(shí),還能學(xué)到業(yè)界的最佳實(shí)踐。
第6章討論了架構(gòu)安全性的方方面面,并使你掌握一些最佳實(shí)踐和技巧來編寫安全性高的應(yīng)用程序。你會(huì)了解在Python架構(gòu)應(yīng)用程序中可能出現(xiàn)的各種不同的安全問題,以及Python是如何從頭開始保障安全性的。
第7章從程序員實(shí)用性的角度,簡要論述了Python中出現(xiàn)的各種設(shè)計(jì)模式以及每個(gè)模式的理論背景。這些設(shè)計(jì)模式對(duì)程序員來說是非常實(shí)用的。
第8章從較高抽象層次角度介紹Python中現(xiàn)有的架構(gòu)模式,同時(shí)給出了幾個(gè)示例,用來說明如何利用Python庫和框架來實(shí)現(xiàn)基于這些模式的高層次架構(gòu)問題的解決方法。
第9章討論如何正確地在遠(yuǎn)程環(huán)境中或云上使用Python輕松部署代碼的方方面面。
第10章討論了一些Python代碼調(diào)試技術(shù),包括最簡單實(shí)用的打印語句、日志記錄和系統(tǒng)調(diào)用跟蹤機(jī)制等,這些對(duì)程序員來說都是非常容易獲得的,也有助于系統(tǒng)架構(gòu)師指導(dǎo)他的團(tuán)隊(duì)。
閱讀本書需要準(zhǔn)備什么
為運(yùn)行本書中展示的大部分代碼示例,需要在系統(tǒng)中安裝Python 3。其他的預(yù)備知識(shí)會(huì)在相應(yīng)的實(shí)例中提到。
本書的讀者對(duì)象
本書適用于有經(jīng)驗(yàn)的Python開發(fā)人員,他們渴望成為企業(yè)級(jí)應(yīng)用程序的架構(gòu)師;本書也適用于軟件架構(gòu)師,他們希望利用Python的特長來創(chuàng)建更有效的應(yīng)用程序藍(lán)圖。
約定
書中的代碼塊設(shè)置如下:
當(dāng)希望重點(diǎn)關(guān)注代碼塊的某個(gè)特定部分時(shí),會(huì)將相關(guān)的行(line)或項(xiàng)(item)設(shè)置成粗體:
任何命令行輸入或輸出寫成如下形式:
新術(shù)語和重要詞匯以粗體形式表示。
示例代碼下載
可以從http://www.packtpub.com下載本書的示例代碼文件(需要Packt賬戶)。也可以訪問http://www.packtpub.com/support并注冊(cè)賬戶,Packt將通過email把文件直接發(fā)送給你。
可以按照以下步驟下載代碼文件:
(1)使用你的電子郵件地址和密碼注冊(cè)或登錄到我們的網(wǎng)站。
(2)將鼠標(biāo)指針懸停在頂部的SUPPORT選項(xiàng)卡上。
(3)單擊Code Downloads & Errata選項(xiàng)。
(4)在Search框中輸入圖書的名稱。
(5)選擇要下載代碼文件的書。
(6)從下拉菜單中選擇本書的購買渠道。
(7)單擊Code Download下載。
你還可以單擊Packt Publishing網(wǎng)站中圖書頁面上的Code Files按鈕下載代碼文件,也可以通過在Search框中輸入圖書的名稱來訪問此頁面。請(qǐng)注意,你需要首先登錄Packt賬戶。
下載文件后,請(qǐng)確保使用這些最新版軟件來解壓縮文件或文件夾:
WinRAR / 7-Zip for Windows
Zipeg / iZip / UnRarX for Mac
7-Zip / PeaZip for Linux
該書的代碼包也由GitHub托管在https://github.com/PacktPublishing/Software-Architecture-with-Python。你還可從Packt提供的圖書和視頻目錄中獲取其他代碼包,網(wǎng)址為https://github.com/PacktPublishing/。
關(guān)于作者
Anand Balachandran Pillai是一名工程技術(shù)專家,在軟件企業(yè)有18年以上的工作經(jīng)歷,在產(chǎn)品工程、軟件設(shè)計(jì)、架構(gòu)設(shè)計(jì)和相關(guān)研究方面具有非常豐富的經(jīng)驗(yàn)。
他曾獲得印度理工學(xué)院機(jī)械工程專業(yè)的學(xué)士學(xué)位。曾在Yahoo!、McAfee和Infosys等公司任職,擔(dān)任產(chǎn)品開發(fā)團(tuán)隊(duì)的首席工程師。
他的主要興趣在于軟件性能工程、高可擴(kuò)展性架構(gòu)、安全和開源社區(qū)等方面。他也經(jīng)常在Startups工作,擔(dān)任首席技術(shù)專家或顧問。
他還是班加羅爾Python用戶聯(lián)盟的奠基人和Python軟件協(xié)會(huì)(PSF)的會(huì)士。Anand現(xiàn)在是Yegii公司的首席架構(gòu)師。
目錄
譯者序
關(guān)于作者
關(guān)于評(píng)審人
前言
第1章 軟件架構(gòu)原理 1
1.1 軟件架構(gòu)定義 2
1.1.1 軟件架構(gòu)與設(shè)計(jì) 2
1.1.2 軟件架構(gòu)相關(guān)的幾個(gè)方面 3
1.2 軟件架構(gòu)的特征 3
1.2.1 用架構(gòu)來定義一種結(jié)構(gòu) 3
1.2.2 由架構(gòu)來挑選一組核心元素 4
1.2.3 由架構(gòu)來捕獲早期的設(shè)計(jì)決策 4
1.2.4 由架構(gòu)來管理利益相關(guān)者的需求 5
1.2.5 架構(gòu)影響著組織結(jié)構(gòu) 5
1.2.6 架構(gòu)受到環(huán)境的影響 6
1.2.7 架構(gòu)是對(duì)系統(tǒng)的文檔化 6
1.2.8 架構(gòu)通常會(huì)遵循某個(gè)模式 7
1.3 軟件架構(gòu)的重要性 7
1.4 系統(tǒng)架構(gòu)與企業(yè)架構(gòu) 8
1.5 架構(gòu)的質(zhì)量屬性 10
1.5.1 可修改性 11
1.5.2 可測試性 13
1.5.3 可擴(kuò)展性 14
1.5.4 性能 15
1.5.5 可用性 16
1.5.6 安全性 17
1.5.7 可部署性 18
1.6 本章小結(jié) 19
第2章 編寫可修改可讀的代碼 20
2.1 什么是可修改性 20
2.2 與可修改性相關(guān)的幾個(gè)方面 20
2.3 理解可讀性 21
2.3.1 Python和可讀性 21
2.3.2 可讀性–反模式 22
2.4 增強(qiáng)可讀性的各種技術(shù) 24
2.4.1 文檔化代碼 24
2.4.2 遵守編碼和風(fēng)格規(guī)范 30
2.4.3 審查和重構(gòu)代碼 31
2.4.4 注釋代碼 31
2.5 可修改性的基礎(chǔ)——內(nèi)聚和耦合 32
2.5.1 測量內(nèi)聚性和耦合性 33
2.5.2 字符串和文本處理 35
2.6 探索提高可修改性的策略 37
2.6.1 提供顯式接口 37
2.6.2 減少雙向依賴 37
2.6.3 抽象出公共服務(wù) 38
2.6.4 使用繼承技術(shù) 38
2.6.5 使用延遲綁定技術(shù) 42
2.7 度量——靜態(tài)分析工具 43
2.7.1 什么是代碼壞味道 43
2.7.2 圈復(fù)雜度——McCabe度量 44
2.7.3 度量結(jié)果測試 45
2.7.4 運(yùn)行靜態(tài)檢查器 47
2.8 重構(gòu)代碼 53
2.8.1 降低復(fù)雜度 53
2.8.2 改善代碼壞味道 55
2.8.3 改善風(fēng)格上和編碼上的問題 57
2.9 本章小結(jié) 57
第3章 可測試性——編寫可測試的代碼 58
3.1 理解可測試性 58
3.1.1 軟件可測試性及相關(guān)屬性 58
3.1.2 架構(gòu)級(jí)的方方面面 59
3.1.3 策略 60
3.2 白盒測試原理 65
3.2.1 單元測試 65
3.2.2 操作中的單元測試 66
3.2.3 單元測試模塊nose2 69
3.2.4 用py.test進(jìn)行測試 70
3.2.5 代碼覆蓋 72
3.2.6 仿制一些東西 74
3.2.7 文檔中的內(nèi)聯(lián)測試——doctest 78
3.2.8 集成測試 81
3.2.9 測試自動(dòng)化 83
3.3 測試驅(qū)動(dòng)開發(fā) 84
3.4 有回文的TDD 85
3.5 本章小結(jié) 90
第4章 好的性能就是回報(bào) 92
4.1 什么是性能 93
4.2 軟件性能工程 93
4.3 性能測試和度量工具 94
4.4 性能復(fù)雜度 95
4.5 度量性能 96
4.5.1 使用上下文管理器度量時(shí)間 97
4.5.2 使用timeit模塊來計(jì)時(shí)代碼 99
4.5.3 使用timeit度量代碼的性能 100
4.5.4 揭示時(shí)間復(fù)雜度——各種圖 102
4.5.5 使用timeit度量CPU時(shí)間 106
4.6 剖析 107
4.6.1 確定性剖析 107
4.6.2 使用cProfile和profile進(jìn)行剖析 108
4.6.3 收集和報(bào)告統(tǒng)計(jì)數(shù)據(jù) 111
4.6.4 第三方剖析器 113
4.7 其他工具 119
4.7.1 objgraph 120
4.7.2 pympler 121
4.8 程序設(shè)計(jì)性能——數(shù)據(jù)結(jié)構(gòu) 123
4.8.1 可變?nèi)萜鳌湵怼⒆值浜图? 123
4.8.2 不可變?nèi)萜鳌M 124
4.8.3 高性能容器——集合模塊 125
4.8.4 概率數(shù)據(jù)結(jié)構(gòu)——布隆過濾器 131
4.9 本章小結(jié) 134
第5章 開發(fā)可擴(kuò)展的應(yīng)用 136
5.1 可擴(kuò)展性和性能 137
5.2 并發(fā)性 139
5.2.1 并發(fā)性與并行性 140
5.2.2 Python中的并發(fā)性——多線程機(jī)制 141
5.3 縮略圖產(chǎn)生器 141
5.3.1 縮略圖產(chǎn)生器——生產(chǎn)者/消費(fèi)者架構(gòu) 143
5.3.2 縮略圖產(chǎn)生器——使用鎖的資源約束 147
5.3.3 縮略圖產(chǎn)生器——使用信號(hào)量的資源約束 150
5.3.4 資源約束——信號(hào)量和鎖比較 153
5.3.5 縮略圖產(chǎn)生器——使用條件的URL速率控制器 153
5.4 多線程機(jī)制——Python和GIL 160
5.4.1 Python中的并發(fā)性——多進(jìn)程機(jī)制 160
5.4.2 質(zhì)數(shù)檢查器 161
5.4.3 排序磁盤文件 163
5.5 多線程與多進(jìn)程比較 168
5.6 先入為主的與合作的多任務(wù)處理 170
5.7 Python中的asyncio模塊 173
5.8 等待future對(duì)象——async和await 175
5.9 concurrent.future——高級(jí)并發(fā)處理 178
5.9.1 磁盤縮略圖產(chǎn)生器 179
5.9.2 并發(fā)選項(xiàng)——如何選擇? 181
5.10 并行處理庫 182
5.10.1 joblib 182
5.10.2 PyMP 183
5.10.3 fractals —— Mandelbrot集 184
5.11 Web擴(kuò)展 189
5.11.1 擴(kuò)展工作流——消息隊(duì)列和任務(wù)隊(duì)列 189
5.11.2 Celery —— 一種分布式任務(wù)隊(duì)列 190
5.11.3 在Web上使用Python服務(wù)——WSGI 194
5.12 可擴(kuò)展架構(gòu) 197
5.12.1 垂直可擴(kuò)展架構(gòu) 197
5.12.2 水平擴(kuò)展架構(gòu) 198
5.13 本章小結(jié) 201
第6章 安全性——編寫安全代碼 202
6.1 信息安全架構(gòu) 202
6.2 安全編碼 203