偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

敏捷開發(fā)中的架構(gòu)設(shè)計

開發(fā) 項目管理 架構(gòu)
軟件架構(gòu)設(shè)計描述的是事物本身,而敏捷開發(fā)描述的是創(chuàng)建這個事物的過程。所以敏捷開發(fā)和架構(gòu)是沒有直接替代關(guān)系的兩個范疇。
敏捷開發(fā)對軟件架構(gòu)設(shè)計產(chǎn)生了一定的影響,讓人產(chǎn)生敏捷開發(fā)中“輕架構(gòu)設(shè)計”的印象。文章就筆者經(jīng)驗,和大家一起討論一下敏捷中的架構(gòu)設(shè)計這個話題。

    首先,筆者認(rèn)為敏捷開發(fā)是一種軟件過程方法和工具,敏捷開發(fā)本身并不能代表架構(gòu)設(shè)計。這就好比建筑架構(gòu)設(shè)計和建筑工程管理之間的差別一樣,兩者是建筑的兩個方面。相同的軟件行業(yè)也是類似的情況,軟件架構(gòu)設(shè)計描述的是事物本身,而敏捷開發(fā)描述的是創(chuàng)建這個事物的過程。所以敏捷開發(fā)和架構(gòu)是沒有直接替代關(guān)系的兩個范疇。

    但敏捷開發(fā)后,架構(gòu)設(shè)計(內(nèi)容和形式上)還是有了一定程度的變化。

    1. 敏捷開發(fā)中架構(gòu)設(shè)計的方式

    這里的架構(gòu)設(shè)計方式,指什么時候進(jìn)行架構(gòu)設(shè)計,并以什么樣的方式進(jìn)行架構(gòu)設(shè)計,如Iteration中新需求引入時,重構(gòu)的方式,Code is Design的方式等。

    下圖描述了敏捷開發(fā)前和后架構(gòu)方式:

敏捷開發(fā)前和后架構(gòu)方式

    上圖中,敏捷開發(fā)后軟件架構(gòu)設(shè)計的方式產(chǎn)生了變化:敏捷開發(fā)把原先軟件過程前期的架構(gòu)設(shè)計,分散到了整個敏捷開發(fā)軟件過程中。

    看到敏捷開發(fā)中分散化的架構(gòu)設(shè)計,想起公司財務(wù)中的"馬克威茨資產(chǎn)組合理論",用馬克威茨這個諾貝爾大師的理論來解釋敏捷開發(fā)中的分散架構(gòu)形式,卻也行得通。

    “馬克威茨資產(chǎn)組合理論”中說道:可以通過分散投資使收益率不變而方差(風(fēng)險)減少。通俗一點講也就是不要把雞蛋放在一個籃子里。資產(chǎn)組合分散化后,可以做到收益率不變的情況下,風(fēng)險減少。

    這里的風(fēng)險指的是波動,也就是方差。這和軟件工程中的風(fēng)險有異曲同工之意,即軟件工程中的風(fēng)險指:需求的波動,數(shù)學(xué)化后就是需求的方差。然后可以按照統(tǒng)計定理推論出,把架構(gòu)設(shè)計組合化,并分散化,有益于收益率不變的情況下,減少軟件風(fēng)險。(中間的推導(dǎo)過程省略,有興趣的朋友參考相應(yīng)文獻(xiàn))。

    如果按照資產(chǎn)組合理論,下面這些就是軟件架構(gòu)設(shè)計中的組合,把一次性軟件過程前期30%(甚至更多)的架構(gòu)設(shè)計,換成如下的軟件架構(gòu)組合:

    (1)引入新需求后的架構(gòu)。每個Iteration中,新需求引入前,都可以進(jìn)行構(gòu)思和架構(gòu)。

    (2)重構(gòu)產(chǎn)生架構(gòu)。先讓軟件運(yùn)行,再重構(gòu)其代碼。那么軟件的架構(gòu)隨著重構(gòu)自然而然的在軟件過程中產(chǎn)生

    (3)開發(fā)過程中的設(shè)計:以前是設(shè)計完后開發(fā),現(xiàn)在是邊設(shè)計邊開發(fā)。

    (4)其他

    所以敏捷開發(fā)不是輕架構(gòu)設(shè)計,而是依然注重架構(gòu)設(shè)計。只不過架構(gòu)的方式變化了,變得更加有效且風(fēng)險更小。

2. 敏捷開發(fā)中架構(gòu)設(shè)計的內(nèi)容

    傳統(tǒng)的架構(gòu)設(shè)計,包括架構(gòu)和設(shè)計兩個方面、其中設(shè)計可以包含詳細(xì)設(shè)計,如詳細(xì)的UML圖(詳細(xì)的類圖,順序圖等),詳細(xì)的API設(shè)計以及接口描述,存儲層數(shù)據(jù)庫表字段設(shè)計等等。

    出于下面兩個方面的考慮,敏捷開發(fā)不適合這種架構(gòu)設(shè)計內(nèi)容:

    (1)在當(dāng)今的快速變化的社會中,業(yè)務(wù)需求和技術(shù)也都快速變化著,在軟件過程前期花費(fèi)30%(甚至更多)的時間進(jìn)行架構(gòu)設(shè)計,要么開發(fā)出來的軟件不符合市場需求,要么就是一旦需求變動,造成較大的改動成本。如,作者了解的一個電子商務(wù)產(chǎn)品,當(dāng)前所做的功能都是兩年前規(guī)劃設(shè)計的,而且如有新需求發(fā)生,需要下個版本才會采納,導(dǎo)致整個產(chǎn)品脫離市場和客戶的需求。

    (2)架構(gòu)設(shè)計包含兩個方面,一是:架構(gòu),二是:設(shè)計。其中設(shè)計中的詳細(xì)設(shè)計需要大量的時間,包含詳細(xì)的流程,API,數(shù)據(jù)結(jié)構(gòu)等設(shè)計。但軟件開發(fā)階段的Code編碼階段,同樣蘊(yùn)含了很多詳細(xì)設(shè)計的內(nèi)容,所以二者之間存在著Repeat Yourself的情況。換句話說,現(xiàn)在敏捷開發(fā)提倡Code is design,而以前是Design is code。但問題是,軟件開發(fā)人員維護(hù)一套Design,外加一套Code,不堪重負(fù),效率低。所以,現(xiàn)在是Code is Design盛行,敏捷盛行。

    基于這兩種原因,敏捷中將傳統(tǒng)的架構(gòu)設(shè)計分成:架構(gòu) + 設(shè)計

    (1)敏捷開發(fā)的架構(gòu)保留架構(gòu)部分

    (2)轉(zhuǎn)移設(shè)計到Code編碼階段、重構(gòu)階段、Unit Test階段等。

    分離后,敏捷開發(fā)中的架構(gòu)就輕裝上陣,內(nèi)容可以包括:

    (1)軟件的架構(gòu)層次,層次化是軟件產(chǎn)品架構(gòu)中很重要的一部分。

    (2)產(chǎn)品和技術(shù)選型

    (3)各個組件的結(jié)構(gòu),以及的關(guān)系

    (4)重要模塊,和重要類的說明。但無需設(shè)計全部的類,和類的方法。

    (5)….

    而詳細(xì)設(shè)計階段,則在Code編碼和UT單元測試階段進(jìn)行。這個階段重構(gòu)很重要,重構(gòu)使你的軟件架構(gòu)和組件結(jié)構(gòu)自然呈現(xiàn)。

    所以在敏捷開發(fā)中架構(gòu)設(shè)計的內(nèi)容發(fā)生了變化:敏捷開發(fā)中止于架構(gòu),輕詳細(xì)設(shè)計。但詳細(xì)設(shè)計不是消失不見了,而是轉(zhuǎn)移到了開發(fā)階段,也即是:Code is design。這樣既能擁抱變化,又規(guī)避風(fēng)險,又Don't Repeat Yourself。

    3. 敏捷開發(fā)中架構(gòu)設(shè)計的人員

    敏捷開發(fā)后,軟件過程變化了,架構(gòu)形式變化了,隨之相應(yīng)的人員的責(zé)任和需要素質(zhì)也會變化。

    這里不說整個軟件過程中的人員角色,以及職責(zé)和能力,如組長,經(jīng)理,測試人員,開發(fā)人員等。這不是說這些的地方??梢粤硗獾奈恼略倮^續(xù)。

    這里強(qiáng)調(diào)的是,敏捷開發(fā)架構(gòu)設(shè)計變化后,對開發(fā)人員提出了更高的要求,要超越Code is Code階段,達(dá)到Code is Design的要求。如上面我們分析,敏捷開發(fā)中架構(gòu)設(shè)計內(nèi)容變化后,一部分的設(shè)計職責(zé)轉(zhuǎn)移到了開發(fā)人員身上。所以開發(fā)人員不僅需要是技術(shù)專家,不僅能夠?qū)懞芎玫某绦颍€需要有架構(gòu)設(shè)計思想和能力,能夠在開發(fā)過程中不斷重構(gòu)出Design。

    總結(jié)

    架構(gòu)描述的是軟件本身的結(jié)構(gòu),敏捷開發(fā)描述的是制造這個軟件的過程,他們二者是軟件科學(xué)的兩條脈絡(luò),互相影響。不管敏捷與否,架構(gòu)設(shè)計依然軟件中最重要之一,是軟件開發(fā)人員的進(jìn)階目標(biāo)。

 

【編輯推薦】

  1. 專題:初探敏捷開發(fā)
  2. 敏捷開發(fā)環(huán)境下的領(lǐng)導(dǎo)問題
  3. 敏捷項目中的資源管理
  4. 敏捷開發(fā)中對進(jìn)度的把握
  5. 對話敏捷專家麥天志:敏捷開發(fā)現(xiàn)狀及發(fā)展之路
責(zé)任編輯:佚名 來源: IT168
相關(guān)推薦

2012-07-02 14:47:57

架構(gòu)敏捷開發(fā)

2009-06-12 16:07:05

演進(jìn)式架構(gòu)設(shè)計敏捷開發(fā)

2009-09-15 18:19:13

敏捷開發(fā)

2011-04-08 17:03:19

Java架構(gòu)

2017-05-17 14:51:31

DNS架構(gòu)負(fù)載均衡

2025-04-15 04:00:00

2009-07-30 15:18:11

2013-05-27 10:58:28

Tumblr架構(gòu)設(shè)計雅虎收購

2023-05-12 08:06:46

Kubernetes多云架構(gòu)

2011-08-12 13:30:27

iPhoneASIFormData架構(gòu)

2025-01-15 08:10:29

Java架構(gòu)代碼

2011-01-14 08:35:03

iPhoneiPad敏捷設(shè)計流程

2009-03-18 18:26:32

英特爾Nehalem服務(wù)器

2015-01-27 15:25:53

MVVM

2015-08-18 13:58:07

2009-08-27 09:11:31

敏捷開發(fā)成效評估

2023-07-05 08:00:52

MetrAuto系統(tǒng)架構(gòu)

2009-06-18 09:01:05

敏捷開發(fā)

2009-01-15 09:43:51

Web架構(gòu)設(shè)計緩存

2012-05-11 10:38:15

Cloud Found
點贊
收藏

51CTO技術(shù)棧公眾號