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

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

架构之美-读书笔记之一

發(fā)布時(shí)間:2023/12/14 编程问答 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 架构之美-读书笔记之一 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

每次讀第一章都覺得不是很好懂,這些概念在別的地方都見過,唯一讓我覺得新穎的和流連忘返的就是品質(zhì)關(guān)注點(diǎn)與功能需求的論述,先后關(guān)系。一般寫程序,首先考慮的是功能分解,模塊分解,實(shí)現(xiàn),然后根據(jù)實(shí)際場(chǎng)景,再做出一些隱含的、默認(rèn)的品質(zhì)需求決定,無書面的思考和確認(rèn),而本書明確提出的品質(zhì)關(guān)注點(diǎn),并理順其中的關(guān)系,讓設(shè)計(jì)三思而后行。


架構(gòu)之美 第一章


什么是架構(gòu)?

架構(gòu)應(yīng)該是一組結(jié)構(gòu),來源于一組設(shè)計(jì)規(guī)則,能減少?gòu)?fù)雜性。常見定義是,每種結(jié)構(gòu)由各種類型的組件和關(guān)系組成,它們?nèi)绾谓M合、相互調(diào)用、通信、同步、及其其他交互。

以我的理解,簡(jiǎn)單講:組件及組件間的關(guān)系。


架構(gòu)存在的目的是什么?

確保利益相關(guān)人員的關(guān)注點(diǎn)能夠得到滿足,而在構(gòu)想、計(jì)劃、構(gòu)建和維護(hù)系統(tǒng)時(shí),系統(tǒng)架構(gòu)能夠處理復(fù)雜性。

為了對(duì)付復(fù)雜性,系統(tǒng)被分解為一些交互的組件。

而每種結(jié)構(gòu)都有特定的關(guān)注點(diǎn),如可變性和性能。各種關(guān)注點(diǎn)需要相互妥協(xié)、折中。

而架構(gòu)師的工作就是:

1)滿足客戶需要

2)整個(gè)系統(tǒng)應(yīng)用相同的設(shè)計(jì)原則

3)滿足法規(guī)和安全性需求


架構(gòu)與需求的關(guān)系?

外部行為的描述,展示了產(chǎn)品如何與它的用戶、其他系統(tǒng)和外部設(shè)備之間的交互,這應(yīng)該表現(xiàn)為需求

結(jié)構(gòu)描述,展示了產(chǎn)品如何劃分為多個(gè)部分,以及這些部分的關(guān)系

內(nèi)部行為描述,用于描述組件之間的交互接口


需求一般理解為系統(tǒng)的功能,但其隱含的品質(zhì)性要求,也需要架構(gòu)考慮。


架構(gòu)與設(shè)計(jì)的關(guān)系?

這個(gè)是針對(duì)架構(gòu)師和開發(fā)者的工作區(qū)別而言。

架構(gòu)是系統(tǒng)設(shè)計(jì)的一部分,架構(gòu)忽略了系統(tǒng)的一些細(xì)節(jié),更側(cè)重于系統(tǒng)如何組裝起來。而開發(fā)者更側(cè)重中部分組件的設(shè)計(jì),不用太注意系統(tǒng)組件的裝配問題。


如何創(chuàng)建一個(gè)架構(gòu)?

兩個(gè)優(yōu)秀的實(shí)踐:

1. 讓利益相關(guān)人參與

2. 同時(shí)關(guān)注功能和品質(zhì)


典型的利益相關(guān)人員:

1. 投資人、老板: 項(xiàng)目需要的資源、能否在工期內(nèi)完成

2. 項(xiàng)目經(jīng)理: 團(tuán)隊(duì)、項(xiàng)目計(jì)劃、項(xiàng)目進(jìn)度

3. 架構(gòu)師、開發(fā)、測(cè)試人員: 項(xiàng)目的構(gòu)建、以及維護(hù)和演進(jìn)

4. 市場(chǎng)人員: 品質(zhì)特點(diǎn),超越競(jìng)爭(zhēng)者

5. 用戶(包括最終用戶、安裝、管理等人員): 可用性


架構(gòu)師需要與利益相關(guān)人員協(xié)作,理解他們的品質(zhì)關(guān)注點(diǎn),然后考慮折中,排列優(yōu)先級(jí)

如:

1. 安全性和性能。如對(duì)信息加密將加強(qiáng)安全性,但會(huì)損失性能。

2. 可變性與可用性。如利用配置文件,可以增加可變性,但會(huì)降低可用性。以及如何創(chuàng)建配置文件的格式。


為什么要首先給品質(zhì)關(guān)注點(diǎn)排優(yōu)先級(jí)?而不是從功能需求開始?

因?yàn)橄到y(tǒng)的功能分解通常有很多種方式,如從數(shù)據(jù)模型出發(fā),和從業(yè)務(wù)模型出發(fā)會(huì)得到不同的系統(tǒng)架構(gòu),極端情況下,系統(tǒng)無分解,被開發(fā)成單一的軟件,可能會(huì)滿足所有需求,但不滿足品質(zhì)關(guān)注點(diǎn)。如可變性、可擴(kuò)展性、可維護(hù)性、可伸縮性等。

1. 可變性。將系統(tǒng)內(nèi)的參數(shù),轉(zhuǎn)移到配置文件中,便于修改。

2. 可以伸縮性、性能。將系統(tǒng)從單機(jī)遷移到分布式部署,從單線程轉(zhuǎn)移到多線程。


通用的品質(zhì)關(guān)注點(diǎn):
1)功能性(Functionality)
產(chǎn)品要像他們的用戶提供哪些功能?
2)可變性(Changeability)
軟件將來可能需要哪些改變?哪些改變不太可能發(fā)生,不需要特別容易進(jìn)行這些改變?
3)性能(Performance)
產(chǎn)品將達(dá)到什么樣的性能?
4)容量(Capacity)
多少用戶將并發(fā)使用該系統(tǒng)?該系統(tǒng)將為用戶保存多少數(shù)據(jù)?
5)生態(tài)系統(tǒng)(Ecosystem)
在部署的生態(tài)環(huán)境中,該系統(tǒng)將與其他系統(tǒng)進(jìn)行哪些交互?
6)模塊化(Modularity)
如何將編寫軟件的任務(wù)分解為工作指派(模塊),特別是這些模塊可以獨(dú)立地開發(fā),并能夠準(zhǔn)確而容易地滿足彼此需要?
7)可構(gòu)建性(Buildability)
如何將軟件構(gòu)建為一組組件,并能夠獨(dú)立實(shí)現(xiàn)和驗(yàn)證這些組件?哪些組件應(yīng)該復(fù)用其他的產(chǎn)品,哪些應(yīng)該從外部供應(yīng)商處獲得?
8)產(chǎn)品化(Producibility)
如果產(chǎn)品將以集中變體的形式存在,如何開發(fā)一個(gè)產(chǎn)品線,并利用這些變體的共性?產(chǎn)品線中的產(chǎn)品以怎樣的步驟開發(fā)?在創(chuàng)建一條產(chǎn)品線時(shí),要進(jìn)行哪些投資?開發(fā)產(chǎn)品線中不同的變體的選擇,預(yù)期會(huì)得到怎樣的回報(bào)?
特別是是否可能先開發(fā)最小的有用產(chǎn)品然后再添加(擴(kuò)展)組件,在不改變以前編寫的代碼的情況下,開發(fā)產(chǎn)品線的其他成員?
9)安全性(Security)
產(chǎn)品是否需要用戶認(rèn)證,或者必須限制對(duì)數(shù)據(jù)的訪問?數(shù)據(jù)的安全性如何得到保證?如何抵擋“拒絕服務(wù)”工具或者其他攻擊?


常見的幾種架構(gòu)的結(jié)構(gòu) 1. 信息隱藏結(jié)構(gòu)。 ?包含關(guān)系 2. 使用結(jié)構(gòu)。 層次關(guān)系 3. 進(jìn)程結(jié)構(gòu)。 共享 4. 訪問結(jié)構(gòu)。 ?


文中使用了一個(gè)表格,很簡(jiǎn)潔地表達(dá)了結(jié)構(gòu)、組件、關(guān)系、品質(zhì)關(guān)注點(diǎn)。




本章其他一些要點(diǎn):

1. 架構(gòu)要盡量簡(jiǎn)單,但不要過于簡(jiǎn)單。 盡量簡(jiǎn)單可以便于修改。而過分犧牲簡(jiǎn)單性的修改要抵制。

2. 系統(tǒng)設(shè)計(jì)需要保持概念完整性、一致性。

3. 優(yōu)秀的架構(gòu)示例:

A-7E OFP 艦載飛行處理器

朗訊53SS電話交換機(jī)

萬維網(wǎng)WWW

UNIX系統(tǒng)

總結(jié)

以上是生活随笔為你收集整理的架构之美-读书笔记之一的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。