創(chuàng)建軟件架構(gòu)時(shí)應(yīng)該關(guān)注什么?
隨著互聯(lián)網(wǎng)的發(fā)展,軟件的體量越來越大,這就要求每一個(gè)產(chǎn)品在設(shè)計(jì)之初就需要設(shè)計(jì)相應(yīng)的架構(gòu)以適應(yīng)產(chǎn)品長(zhǎng)期的發(fā)展以及升級(jí)。作為產(chǎn)品經(jīng)理——一個(gè)產(chǎn)品最主要的負(fù)責(zé)人,也應(yīng)該知道一點(diǎn)軟件架構(gòu)的知識(shí)。
軟件架構(gòu)師的首要關(guān)注點(diǎn)不是系統(tǒng)的功能,而是軟件的品質(zhì),軟件品質(zhì)關(guān)注點(diǎn)指明了功能呢必須以何種方式交付,才能被系統(tǒng)的利益相關(guān)人所接受。作為一個(gè)架構(gòu)師,你應(yīng)該了解軟件產(chǎn)品利益人以及他們的關(guān)注點(diǎn):
- 投資人,他們想知道項(xiàng)目是否能夠在給定的資源和進(jìn)度約束下完成。
- 架構(gòu)師、開發(fā)人員、測(cè)試人員,他們首先考慮的是最初的構(gòu)建和以后的維護(hù)與演進(jìn)。
- 項(xiàng)目經(jīng)理,他們需要組織團(tuán)隊(duì),制定迭代計(jì)劃。
- 市場(chǎng)人員,他們想通過軟件產(chǎn)品的品質(zhì)特點(diǎn)實(shí)現(xiàn)與競(jìng)爭(zhēng)者的差異化。
- 用戶,包括最終用戶、系統(tǒng)管理員,以及安裝、部署、準(zhǔn)備、配置人員。
技術(shù)支持人員,他們關(guān)注幫助平臺(tái)電話呼入的數(shù)目和復(fù)雜性。
架構(gòu)師第一項(xiàng)任務(wù),就是與利益相關(guān)人員協(xié)作,理解這些品質(zhì)關(guān)注點(diǎn)和約束,并為它們排列優(yōu)先級(jí)。為什么不從功能需求開始呢?因?yàn)橥ǔS性S多可能的系統(tǒng)分解方式。例如,從數(shù)據(jù)模型開始可能得到一種架構(gòu),而從業(yè)務(wù)處理模型開始則可能的得到不同的架構(gòu)。在極端的情況下,系統(tǒng)沒有分解,被開發(fā)成單一的軟件。這可能會(huì)滿足所有功能需求,但是可能不會(huì)滿足品質(zhì)需求。
一個(gè)項(xiàng)目通常情況下會(huì)有以下關(guān)注點(diǎn):
功能性
產(chǎn)品向它的用戶提供哪些功能?
可變性
軟件將來可能需要哪些改變?哪些改變不太可能發(fā)生,不需要特別容易進(jìn)行這些改變?
性能
產(chǎn)品將達(dá)到怎樣的性能?
容量
多少用戶將并發(fā)使用該系統(tǒng)?該系統(tǒng)將為用戶保存多少數(shù)據(jù)?
生態(tài)系統(tǒng)
在部署的生態(tài)環(huán)境中,該系統(tǒng)將與其他系統(tǒng)進(jìn)行哪些交互?
模塊化
如何將編寫軟件的任務(wù)分解為工作指派(模塊),特別是這些模塊可以獨(dú)立地開發(fā),并能夠準(zhǔn)確而容易地滿足彼此需要?
可構(gòu)建性
如何將軟件構(gòu)建為一組組建,并能夠獨(dú)立實(shí)現(xiàn)和驗(yàn)證這些組建?哪些組建應(yīng)該復(fù)用其他的產(chǎn)品,哪些應(yīng)該從外部供應(yīng)商出獲得?
產(chǎn)品化
如果產(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)品線的其他成員?
安全性
產(chǎn)品是否需要用戶認(rèn)證,或者必須限制對(duì)數(shù)據(jù)的訪問?數(shù)據(jù)的安全性如何得到保證?如何抵擋“拒絕服務(wù)”攻擊或其他攻擊?
到這里是不是有點(diǎn)熟悉啊,這其實(shí)就是產(chǎn)品經(jīng)理寫的PRD文檔中的一份,PRD文檔中有關(guān)于產(chǎn)品性能指標(biāo),安全的指標(biāo)等等,而架構(gòu)師很大部分工作就是在拿到PRD的時(shí)候把項(xiàng)目進(jìn)行分解,讓其在架構(gòu)上符合產(chǎn)品設(shè)計(jì)基本要求。