成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

敏捷開發中的架構設計

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

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

    但敏捷開發后,架構設計(內容和形式上)還是有了一定程度的變化。

    1. 敏捷開發中架構設計的方式

    這里的架構設計方式,指什么時候進行架構設計,并以什么樣的方式進行架構設計,如Iteration中新需求引入時,重構的方式,Code is Design的方式等。

    下圖描述了敏捷開發前和后架構方式:

敏捷開發前和后架構方式

    上圖中,敏捷開發后軟件架構設計的方式產生了變化:敏捷開發把原先軟件過程前期的架構設計,分散到了整個敏捷開發軟件過程中

    看到敏捷開發中分散化的架構設計,想起公司財務中的"馬克威茨資產組合理論",用馬克威茨這個諾貝爾大師的理論來解釋敏捷開發中的分散架構形式,卻也行得通。

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

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

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

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

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

    (3)開發過程中的設計:以前是設計完后開發,現在是邊設計邊開發。

    (4)其他

    所以敏捷開發不是輕架構設計,而是依然注重架構設計。只不過架構的方式變化了,變得更加有效且風險更小。

2. 敏捷開發中架構設計的內容

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

    出于下面兩個方面的考慮,敏捷開發不適合這種架構設計內容:

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

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

    基于這兩種原因,敏捷中將傳統的架構設計分成:架構 + 設計

    (1)敏捷開發的架構保留架構部分

    (2)轉移設計到Code編碼階段、重構階段、Unit Test階段等。

    分離后,敏捷開發中的架構就輕裝上陣,內容可以包括:

    (1)軟件的架構層次,層次化是軟件產品架構中很重要的一部分。

    (2)產品和技術選型

    (3)各個組件的結構,以及的關系

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

    (5)….

    而詳細設計階段,則在Code編碼和UT單元測試階段進行。這個階段重構很重要,重構使你的軟件架構和組件結構自然呈現

    所以在敏捷開發中架構設計的內容發生了變化:敏捷開發中止于架構,輕詳細設計。但詳細設計不是消失不見了,而是轉移到了開發階段,也即是:Code is design。這樣既能擁抱變化,又規避風險,又Don't Repeat Yourself。

    3. 敏捷開發中架構設計的人員

    敏捷開發后,軟件過程變化了,架構形式變化了,隨之相應的人員的責任和需要素質也會變化。

    這里不說整個軟件過程中的人員角色,以及職責和能力,如組長,經理,測試人員,開發人員等。這不是說這些的地方。可以另外的文章再繼續。

    這里強調的是,敏捷開發架構設計變化后,對開發人員提出了更高的要求,要超越Code is Code階段,達到Code is Design的要求。如上面我們分析,敏捷開發中架構設計內容變化后,一部分的設計職責轉移到了開發人員身上。所以開發人員不僅需要是技術專家,不僅能夠寫很好的程序,還需要有架構設計思想和能力,能夠在開發過程中不斷重構出Design。

    總結

    架構描述的是軟件本身的結構,敏捷開發描述的是制造這個軟件的過程,他們二者是軟件科學的兩條脈絡,互相影響。不管敏捷與否,架構設計依然軟件中最重要之一,是軟件開發人員的進階目標。

 

【編輯推薦】

  1. 專題:初探敏捷開發
  2. 敏捷開發環境下的領導問題
  3. 敏捷項目中的資源管理
  4. 敏捷開發中對進度的把握
  5. 對話敏捷專家麥天志:敏捷開發現狀及發展之路
責任編輯:佚名 來源: IT168
相關推薦

2009-06-12 16:07:05

演進式架構設計敏捷開發

2012-07-02 14:47:57

架構敏捷開發

2009-09-15 18:19:13

敏捷開發

2011-04-08 17:03:19

Java架構

2017-05-17 14:51:31

DNS架構負載均衡

2025-04-15 04:00:00

2009-07-30 15:18:11

2013-05-27 10:58:28

Tumblr架構設計雅虎收購

2023-05-12 08:06:46

Kubernetes多云架構

2011-01-14 08:35:03

iPhoneiPad敏捷設計流程

2009-03-18 18:26:32

英特爾Nehalem服務器

2015-08-18 13:58:07

2015-01-27 15:25:53

MVVM

2011-08-12 13:30:27

iPhoneASIFormData架構

2025-01-15 08:10:29

Java架構代碼

2009-06-18 09:01:05

敏捷開發

2009-08-27 09:11:31

敏捷開發成效評估

2025-05-09 08:45:13

2015-06-02 04:17:44

架構設計審架構設計說明書

2021-11-08 06:57:35

Redis架構設計
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 久久久久国产精品一区 | 国产精品久久久亚洲 | 看av电影| 人人射人人插 | 日韩三区在线观看 | 国产精品久久国产精品 | 国产一区二区自拍 | 欧美日韩综合一区 | 九九综合 | 国产成人小视频 | 国产精品毛片一区二区三区 | av天天看| 在线不卡一区 | 99精品久久久久 | 亚洲国产成人精品久久 | 国产在线二区 | 成人二区三区 | 欧美久久久久 | 欧美国产日本一区 | 热re99久久精品国产99热 | 久久伊 | 久久精品aaa | 麻豆hd| 久久精品天堂 | 国产一级淫片免费视频 | 91免费入口 | 一区二区三区在线播放视频 | 韩日一区二区三区 | 日本中文字幕一区 | 色综合久久天天综合网 | 国产一区二区黑人欧美xxxx | 久草在线 | 男女羞羞在线观看 | 欧美另类视频在线 | 国产精品久久 | 九九热在线观看 | 亚洲 欧美 在线 一区 | 久久精品一级 | 国产精品伦一区二区三级视频 | 亚洲精品欧美一区二区三区 | 欧美一区二区在线免费观看 |