在我們平時做設計的過程中载迄,經常遇到需求不完整或者不明確的時候讯柔,這個時候如果繼續(xù)用平時的工作流程,極有可能在后期因為需求增加和變更增加很多額外的工作量护昧。今天介紹一種叫螺旋模型的迭代模型魂迄,這個模型在軟件工程領域已經應用很久,經過了時間的考驗惋耙。我之前在做一個項目的時候捣炬,也遇到上述問題,考慮如何避免绽榛,在設計過程中應用了該模型湿酸,效果良好。
首先說下灭美,一般情況下我們使用的迭代流程推溃,是從拿到產品文檔開始進行需求分析,然后出交互稿届腐,再到視覺铁坎、開發(fā)蜂奸、測試、發(fā)布這些步驟硬萍,一般這個流程因為是逐步向前扩所,軟件工程上的定義叫瀑布模型。
可以看得出襟铭,這種模型的每一步都依賴于上一步是否完成碌奉,如果某個環(huán)節(jié)出了問題,可能會造成整個過程返工寒砖。
那對于今天要講的螺旋模型是什么樣子的呢赐劣?首先我們看下軟件工程理論對螺旋模型的定義;
1988年哩都,巴利·玻姆(Barry Boehm)正式發(fā)表了軟件系統(tǒng)開發(fā)的“螺旋模型”魁兼,它將瀑布模型和快速原型模型結合起來,強調了其他模型所忽視的風險分析漠嵌,特別適合于大型復雜的系統(tǒng)咐汞。
“螺旋模型”剛開始規(guī)模很小,當項目被定義得更好儒鹿、更穩(wěn)定時化撕,逐漸展開。
“螺旋模型”的核心就在于您不需要在剛開始的時候就把所有事情都定義的清清楚楚约炎。您輕松上陣植阴,定義最重要的功能,實現它圾浅,然后聽取客戶的意見掠手,之后再進入到下一個階段。如此不斷輪回重復狸捕,直到得到您滿意的最終產品喷鸽。
(1)制定計劃:確定軟件目標,選定實施方案灸拍,弄清項目開發(fā)的限制條件做祝;
(2)風險分析:分析評估所選方案,考慮如何識別和消除風險鸡岗;
(3)實施工程:實施軟件開發(fā)和驗證剖淀;
(4)客戶評估:評價開發(fā)工作,提出修正建議纤房,制定下一步計劃纵隔。
螺旋模型很大程度上是一種風險驅動的方法體系,因為在每個階段之前及經常發(fā)生的循環(huán)之前,都必須首先進行風險評估捌刮。
那對應到我們的設計過程中碰煌,可以用一張圖來概括:
可以看得出,我們的步驟也是分為4步:
1绅作、制定計劃:這塊主要是需求分析以及計劃我們需要做什么芦圾,對應到設計的幾個層,是在戰(zhàn)略層以及范圍層[1]上俄认。這塊因為之前講了个少,主要是針對我們遇到的需求不太明確的項目,所以一開始需求不完整也是可以開始的眯杏。在有個大概的分析之后夜焦,可以選擇我們要做的方案思路或者對應方法。
2岂贩、風險分析:這塊主要是針對制定了計劃之后茫经,對于每種方案的風險評估,因為前期對需求定義不完整的情況下萎津,很多設計是建立在數據分析卸伞、猜測、簡單的用戶調查等基礎之上的锉屈,可以對當前選擇的單個或者多個方案進行一個風險分析荤傲,以便于后期測試用戶的時候進行有關分析。
3颈渊、設計實施:這部分主要是設計過程弃酌,中間的設計過程可以考慮使用模塊化設計(方便后期需求變更的時候最小工作量迭代設計)、敏捷設計儡炼、并行設計等多種設計過程和方法。一般前期需求不明確的時候查蓉,我們更傾向于做最小產品模型(MVP [2])乌询,這種更方便去修改和完善我們的整體需求。
4豌研、用戶評估:這部分主要是做用戶測試妹田,可以使用快速用戶測試的方法,這部分注意前期需求不完整鹃共,在做測試的時候鬼佣,可以考慮使用區(qū)分變量的測試方法。一般來說我們快速用戶測試8個用戶的樣子就可以很大程度上說明我們比較嚴重的問題所在霜浴。關于置信度的問題有興趣的同學可以去專門了解下不同樣本下的置信度定義晶衷。
那在做完以上幾個步驟之后,我們得出了很多對于最終項目很有用的結論,可以進入第二輪迭代過程晌纫,這么好幾輪下來税迷,需求逐步完善,設計方案逐步完善锹漱,需求就像滾雪球一樣越來越大箭养,整個過程看起來是一個螺旋過程「珉梗可能有一些同學已經在使用類似的流程毕泌,我這里是借鑒軟件工程的定義將這部分嘗試用理論方法描述一遍。
對于一些做項目管理(project manage)的同學來說嗅辣,比較關心的是使用了這個流程之后撼泛,效率上的提升是怎么樣子的呢。直觀的來說辩诞,可以用兩張圖來表明:
可以看出坎弯,兩個模型對應需求總量一定的情況下,一般我們使用傳統(tǒng)流程經常會造成一定程度的延期或者后期嚴重加班译暂。使用螺旋模型因為在中間做了風險分析抠忘,并且需求和設計是同步逐步完善的,在需求燃盡的斜率上明顯要優(yōu)于瀑布模型外永。
兩種模型對應的風險降低趨勢如下:
通過一般項目經驗分析崎脉,使用瀑布模型迭代前期沒有評估風險,后期需求逐漸清楚之后伯顶,風險點增多囚灼,需求穩(wěn)定之后,隨著項目進展祭衩,風險開始下降灶体。
使用螺旋模型前期評估了風險并預估了相應解決方案,整體項目過程中掐暮,風險一直是逐漸減少的蝎抽。
對比之下,有人可能會問那是不是一定就是螺旋模型更好路克,我覺得不一定樟结。在需求非常清晰的情況下,個人經驗反而瀑布模型是最有效率的過程精算。螺旋模型在軟件工程領域也是為了解決需求不明確的情況下定義出來的瓢宦。所以各位也是要看情況而定。
軟件工程中有很多提高工作效率的理論是不曾引入設計領域的灰羽,設計給人一直的概念都比較虛驮履,大家覺得是非常感性的鱼辙,但是我們也可以考慮使用一些方法提高我們的工作效率,以上是我個人在項目中的實踐疲吸,拋磚引玉座每,希望一定程度上可以幫助到各位。
延伸閱讀:
[1] 《用戶體驗的要素》
[2] MVP產品到底該怎樣做