-- 會員 / 註冊 --  
 帳號:
 密碼:
  | 註冊 | 忘記密碼
3/26 新書到! 3/19 新書到! 3/14 新書到! 12/12 新書到!
購書流程Q & A站務留言版客服信箱
3ds MaxMayaRhinoAfter EffectsSketchUpZBrushPainterUnity
PhotoShopAutoCadMasterCamSolidWorksCreoUGRevitNuke
C#CC++Java遊戲程式Linux嵌入式PLCFPGAMatlab
駭客資料庫搜索引擎影像處理FluentVR+ARANSYS深度學習
單晶片AVROpenGLArduinoRaspberry Pi電路設計CadenceProtel
HadoopPythonStm32CortexLabview手機程式AndroidiPhone
可查書名,作者,ISBN,3dwoo書號
詳細書籍分類

軟件架構:Python語言實現

( 簡體 字)
作者:〔印度〕 阿南德·巴拉錢德拉·皮萊(Anand Balachandran Pillai) 著類別:1. -> 程式設計 -> Python
譯者:
出版社:機械工業出版社軟件架構:Python語言實現 3dWoo書號: 48582
詢問書籍請說出此書號!

缺書
NT售價: 395

出版日:3/1/2018
頁數:372
光碟數:0
站長推薦:
印刷:黑白印刷語系: ( 簡體 版 )
加入購物車 加到我的最愛
(請先登入會員)
ISBN:9787111590941
作者序 | 譯者序 | 前言 | 內容簡介 | 目錄 | 
(簡體書上所述之下載連結耗時費功, 恕不適用在台灣, 若讀者需要請自行嘗試, 恕不保證)
作者序:

譯者序:

前言:

軟件架構,可以說是為特定的應用軟件創建一個藍圖設計。軟件架構中存在兩大挑戰:首先,軟件架構與需求必須保持一致,對尚未發現的需求或者發生演化的需求都是如此;其次,盡管常常發生架構實現的變更,但軟件架構與其對應的架構實現必須保持一致。

本書包含很多示例和用例,通過這種直觀的方法來幫助你獲取成為一名成功的軟件架構師所需的一切。本書將幫助你了解Python的來龍去脈,以便可以用Python來構建和設計高度可擴展的、健壯的、簡潔的、性能強大的應用程序。

主要內容

第1章介紹了軟件架構的核心思想,簡要介紹了架構質量屬性和一些隱含的原理。這將使你能夠在軟件架構原理和基本屬性方面擁有良好的知識基礎。

第2章包括開發中軟件架構的可修改性和可讀性。它將幫助你深入理解架構的可維護性等質量屬性,并獲得用Python編寫代碼來測試應用程序的各種技巧和策略。

第3章幫助你理解軟件架構的可測試性,以及如何為Python應用程序構建架構以滿足可測試性。你還將了解可測試性和軟件測試的各個方面,以及Python中可用的各種庫和模塊,以便編寫各種可測試的應用程序。

第4章討論了在編寫Python代碼過程中關于性能的方方面面。你不僅可以學習架構性能的基本知識,還可以掌握在何時何地需要進行性能優化。例如,你會學習到何時進行SDLC的性能優化。

第5章不僅闡述了編寫可擴展應用程序的重要性,還討論了實現應用程序可擴展性的各種不同方法,并論述了如何利用Python來實現各種可擴展性技術。你不僅能學到可擴展性的理論方面的知識,還能學到業界的最佳實踐。

第6章討論了架構安全性的方方面面,并使你掌握一些最佳實踐和技巧來編寫安全性高的應用程序。你會了解在Python架構應用程序中可能出現的各種不同的安全問題,以及Python是如何從頭開始保障安全性的。

第7章從程序員實用性的角度,簡要論述了Python中出現的各種設計模式以及每個模式的理論背景。這些設計模式對程序員來說是非常實用的。

第8章從較高抽象層次角度介紹Python中現有的架構模式,同時給出了幾個示例,用來說明如何利用Python庫和框架來實現基于這些模式的高層次架構問題的解決方法。

第9章討論如何正確地在遠程環境中或云上使用Python輕松部署代碼的方方面面。

第10章討論了一些Python代碼調試技術,包括最簡單實用的打印語句、日志記錄和系統調用跟蹤機制等,這些對程序員來說都是非常容易獲得的,也有助于系統架構師指導他的團隊。

閱讀本書需要準備什么

為運行本書中展示的大部分代碼示例,需要在系統中安裝Python 3。其他的預備知識會在相應的實例中提到。

本書的讀者對象

本書適用于有經驗的Python開發人員,他們渴望成為企業級應用程序的架構師;本書也適用于軟件架構師,他們希望利用Python的特長來創建更有效的應用程序藍圖。

約定

書中的代碼塊設置如下:

當希望重點關注代碼塊的某個特定部分時,會將相關的行(line)或項(item)設置成粗體:

任何命令行輸入或輸出寫成如下形式:

新術語和重要詞匯以粗體形式表示。
內容簡介:

本書首先解釋如何利用Python語言實現應用軟件架構,讓你逐步理解什么是架構級的需求以及如何確定這些需求。然后,你可以獲得對軟件架構不同質量屬性的完整理解,這些質量屬性包括可修改性、可測試性、可擴展性、可部署性和安全性等,從而幫助架構師構建滿足業務需求的軟件架構產品。

通過本書,你會學到利用DevOps、持續集成等技術,使得應用程序更加健壯,也會深入理解在應用程序開發過程中何時使用或者不使用面向對象技術,還會學到在業務需求增長的情況下如何設計好的應用程序。

此外,本書還幫助你理解Python語言應用的細節,以便你可以做出關鍵性的設計決策,實現超出客戶預期的設計效果。

本書內容:

如何編寫具有正確架構屬性的程序。

如何使用企業架構模式解決Web應用程序的可擴展性問題。

如何從Python的架構理解設計模式。

如何優化Python中大的性能測試工具。

如何使用Python在遠程環境中或云端部署代碼。

如何使用Python實現安全的架構應用。
目錄:

譯者序

關于作者

關于評審人

前言

第1章 軟件架構原理 …… 1

1.1 軟件架構定義 …… 2

1.1.1 軟件架構與設計 …… 2

1.1.2 軟件架構相關的幾個方面 …… 3

1.2 軟件架構的特征 …… 3

1.2.1 用架構來定義一種結構 …… 3

1.2.2 由架構來挑選一組核心元素 …… 4

1.2.3 由架構來捕獲早期的設計決策 …… 4

1.2.4 由架構來管理利益相關者的需求 …… 5

1.2.5 架構影響著組織結構 …… 5

1.2.6 架構受到環境的影響 …… 6

1.2.7 架構是對系統的文檔化 …… 6

1.2.8 架構通常會遵循某個模式 …… 7

1.3 軟件架構的重要性 …… 7

1.4 系統架構與企業架構 …… 8

1.5 架構的質量屬性 …… 10

1.5.1 可修改性 …… 11

1.5.2 可測試性 …… 13

1.5.3 可擴展性 …… 14

1.5.4 性能 …… 15

1.5.5 可用性 …… 16

1.5.6 安全性 …… 17

1.5.7 可部署性 …… 18

1.6 本章小結 …… 19

第2章 編寫可修改可讀的代碼 …… 20

2.1 什么是可修改性 …… 20

2.2 與可修改性相關的幾個方面 …… 20

2.3 理解可讀性 …… 21

2.3.1 Python和可讀性 …… 21

2.3.2 可讀性–反模式 …… 22

2.4 增強可讀性的各種技術 …… 24

2.4.1 文檔化代碼 …… 24

2.4.2 遵守編碼和風格規范 …… 30

2.4.3 審查和重構代碼 …… 31

2.4.4 注釋代碼 …… 31

2.5 可修改性的基礎——內聚和耦合 …… 32

2.5.1 測量內聚性和耦合性 …… 33

2.5.2 字符串和文本處理 …… 35

2.6 探索提高可修改性的策略 …… 37

2.6.1 提供顯式接口 …… 37

2.6.2 減少雙向依賴 …… 37

2.6.3 抽象出公共服務 …… 38

2.6.4 使用繼承技術 …… 38

2.6.5 使用延遲綁定技術 …… 42

2.7 度量——靜態分析工具 …… 43

2.7.1 什么是代碼壞味道 …… 43

2.7.2 圈復雜度——McCabe度量 …… 44

2.7.3 度量結果測試 …… 45

2.7.4 運行靜態檢查器 …… 47

2.8 重構代碼 …… 53

2.8.1 降低復雜度 …… 53

2.8.2 改善代碼壞味道 …… 55

2.8.3 改善風格上和編碼上的問題 …… 57

2.9 本章小結 …… 57

第3章 可測試性——編寫可測試的代碼 …… 58

3.1 理解可測試性 …… 58

3.1.1 軟件可測試性及相關屬性 …… 58

3.1.2 架構級的方方面面 …… 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進行測試 …… 70

3.2.5 代碼覆蓋 …… 72

3.2.6 仿制一些東西 …… 74

3.2.7 文檔中的內聯測試——doctest …… 78

3.2.8 集成測試 …… 81

3.2.9 測試自動化 …… 83

3.3 測試驅動開發 …… 84

3.4 有回文的TDD …… 85

3.5 本章小結 …… 90

第4章 好的性能就是回報 …… 92

4.1 什么是性能 …… 93

4.2 軟件性能工程 …… 93

4.3 性能測試和度量工具 …… 94

4.4 性能復雜度 …… 95

4.5 度量性能 …… 96

4.5.1 使用上下文管理器度量時間 …… 97

4.5.2 使用timeit模塊來計時代碼 …… 99

4.5.3 使用timeit度量代碼的性能 …… 100

4.5.4 揭示時間復雜度——各種圖 …… 102

4.5.5 使用timeit度量CPU時間 …… 106

4.6 剖析 …… 107

4.6.1 確定性剖析 …… 107

4.6.2 使用cProfile和profile進行剖析 …… 108

4.6.3 收集和報告統計數據 …… 111

4.6.4 第三方剖析器 …… 113

4.7 其他工具 …… 119

4.7.1 objgraph …… 120

4.7.2 pympler …… 121

4.8 程序設計性能——數據結構 …… 123

4.8.1 可變容器——鏈表、字典和集合 …… 123

4.8.2 不可變容器——元組 …… 124

4.8.3 高性能容器——集合模塊 …… 125

4.8.4 概率數據結構——布隆過濾器 …… 131

4.9 本章小結 …… 134

第5章 開發可擴展的應用 …… 136

5.1 可擴展性和性能 …… 137

5.2 并發性 …… 139

5.2.1 并發性與并行性 …… 140

5.2.2 Python中的并發性——多線程機制 …… 141

5.3 縮略圖產生器 …… 141

5.3.1 縮略圖產生器——生產者/消費者架構 …… 143

5.3.2 縮略圖產生器——使用鎖的資源約束 …… 147

5.3.3 縮略圖產生器——使用信號量的資源約束 …… 150

5.3.4 資源約束——信號量和鎖比較 …… 153

5.3.5 縮略圖產生器——使用條件的URL速率控制器 …… 153

5.4 多線程機制——Python和GIL …… 160

5.4.1 Python中的并發性——多進程機制 …… 160

5.4.2 質數檢查器 …… 161

5.4.3 排序磁盤文件 …… 163

5.5 多線程與多進程比較 …… 168

5.6 先入為主的與合作的多任務處理 …… 170

5.7 Python中的asyncio模塊 …… 173

5.8 等待future對象——async和await …… 175

5.9 concurrent.future——高級并發處理 …… 178

5.9.1 磁盤縮略圖產生器 …… 179

5.9.2 并發選項——如何選擇? …… 181

5.10 并行處理庫 …… 182

5.10.1 joblib …… 182

5.10.2 PyMP …… 183

5.10.3 fractals —— Mandelbrot集 …… 184

5.11 Web擴展 …… 189

5.11.1 擴展工作流——消息隊列和任務隊列 …… 189

5.11.2 Celery —— 一種分布式任務隊列 …… 190

5.11.3 在Web上使用Python服務——WSGI …… 194

5.12 可擴展架構 …… 197

5.12.1 垂直可擴展架構 …… 197

5.12.2 水平擴展架構 …… 198

5.13 本章小結 …… 201

第6章 安全性——編寫安全代碼 …… 202

6.1 信息安全架構 …… 202

6.2 安全編碼 …… 203

6.3 常見的安全漏洞 …… 204

6.4 Python安全嗎? …… 208

6.4.1 讀取輸入 …… 209

6.4.2 任意輸入求值 …… 211

6.4.3 溢出錯誤 …… 214

6.4.4 序列化對象 …… 216

6.5 Web應用的安全問題 …… 219

6.5.1 服務器端模板注入 …… 220

6.5.2 服務器端模板注入——回避 …… 222

6.5.3 服務拒絕 …… 223

6.5.4 跨站腳本攻擊 …… 226

6.5.5 回避——DoS和XSS …… 227

6.6 Python中的安全策略 …… 228

6.7 安全編碼策略 …… 234

6.8 本章小結 …… 234

第7章 Python設計模式 …… 236

7.1 設計模式——元素 …… 237

7.2 設計模式分類 …… 237

7.2.1 可插拔的散列算法 …… 238

7.2.2 可插拔的散列算法總結 …… 242

7.3 Python模式——創建模式 …… 242

7.3.1 單例模式 …… 242

7.3.2 工廠模式 …… 248

7.3.3 原型模式 …… 250

7.3.4 建造者模式 …… 256

7.4 Python模式——結構化模式 …… 261

7.4.1 適配器模式 …… 261

7.4.2 外觀模式 …… 269

7.4.3 代理模式 …… 275

7.5 Python模式——行為模式 …… 279

7.5.1 迭代器模式 …… 279

7.5.2 觀察者模式 …… 282

7.5.3 狀態模式 …… 288

7.6 本章小結 …… 293

第8章 Python架構模式 …… 295

8.1 MVC概述 …… 296

8.1.1 模型模板視圖——Django …… 297

8.1.2 Django管理——自動的以模型為中心的視圖 …… 297

8.1.3 靈活的微框架——Flask …… 299

8.2 事件驅動編程 …… 300

8.2.1 采用I/O多路復用select模塊的聊天服務器和客戶端 …… 300

8.2.2 事件驅動與并發編程 …… 306

8.2.3 Twisted …… 306

8.2.4 Eventlet …… 313

8.2.5 Greenlet和Gevent …… 314

8.3 微服務架構 …… 316

8.3.1 Python中的微服務框架 …… 317

8.3.2 微服務實例——餐館預訂 …… 317

8.3.3 微服務的優點 …… 320

8.4 管道和過濾器架構 …… 320

8.5 本章小結 …… 325

第9章 部署Python應用程序 …… 326

9.1 可部署性 …… 327

9.1.1 影響可部署性的因素 …… 327

9.1.2 軟件部署架構的層次 …… 328

9.2 Python軟件部署 …… 329

9.2.1 給Python代碼打包 …… 329

9.2.2 使用Fabric進行遠程部署 …… 340

9.2.3 使用Ansible進行遠程部署 …… 341

9.2.4 使用Supervisor管理遠程守護進程 …… 342

9.3 部署——模式和最佳實踐 …… 343

9.4 本章小結 …… 344

第10章 各種用于調試的技術 …… 346

10.1 最大子陣列問題 …… 347

10.1.1 “print”的力量 …… 348

10.1.2 分析和重寫 …… 349

10.1.3 代碼計時和代碼優化 …… 351

10.2 簡單的調試技巧和技術 …… 353

10.2.1 詞搜索器程序 …… 353

10.2.2 詞搜索器程序——調試步驟1 …… 354

10.2.3 詞搜索器程序——調試步驟2 …… 355

10.2.4 詞搜索器程序——最終代碼 …… 356

10.2.5 跳過代碼塊 …… 357

10.2.6 停止執行 …… 357

10.2.7 使用wrapper來控制外部依賴 …… 358

10.2.8 用函數的返回值或數據來替換函數(模擬) …… 359

10.3 作為一種調試技術的日志記錄 …… 367

10.3.1 簡單的應用程序日志記錄 …… 368

10.3.2 高級日志記錄——日志記錄器對象 …… 369

10.4 調試工具——使用各種調試器 …… 374

10.4.1 一個使用pdb的調試會話 …… 375

10.4.2 pdb——兩個相似的工具 …… 377

10.5 高級調試——跟蹤 …… 379

10.5.1 trace模塊 …… 379

10.5.2 lptrace程序 …… 379

10.5.3 使用strace的系統調用跟蹤 …… 380

10.6 本章小結 …… 381
序: