本書的英文書名「Exploring Requirements: Quality Before Design」,讓我聯想到:需求是什麼、為什麼要探索需求、哪時候需要探索需求、誰需要探索需求,需求的對象是誰、又該如何探索……;再由副標顯然可以知道,探索需求是在設計之前必要的階段,需求的品質,會影響到設計的好壞,它甚至是決定最終產品成敗最重要的關鍵,畢竟,需求是直接貼近使用者端,是站在客戶的角度來看待產品的好用與否。

我讀過本書兩位作者:Gause(高斯)、Weinberg(溫伯格)所著的《你想通了嗎?(You’re your Lights On)》一書,這本書是探索表面浮現出的問題,其背後所蘊含的問題本質,再從根本進而找到解決方案(Solution),寫得可真好。我發現到,溫伯格早期雖然是從事電腦軟體系統的技術性開發,但他也了解技術所不能涵蓋的層面,所以進而研究與探索人文領域,他後期的著作,已經是被歸類為企管與專案管理書籍了。

我個人非常欣賞溫伯格的寫作風格,更是讚嘆他在書中所展現的智慧。他利用一些淺顯易懂的案例來探討,釐清主題的本質,然後找出一些方法與手段來解決問題。不像坊間一般專案管理的書籍,是偏向功法,尚未釐清問題的本質,就直接往工具與方法面來尋找,這會造成見樹不見林;看不見根本,就會形成整體性的複雜;而本書則是兼具了心法與功法,先從需求的根本談起,然後利用一些簡單的對話案例,來探索各種技巧與方法,淺顯好懂,又能釐清需求的本質。

找不到真正需求,設計得再好亦枉然

本書前言即引用馮紐曼的名言:「如果你不了解自己所說的事物,即使你遣詞用字精確,也毫無意義。」如果產品設計者沒有試圖了解使用者真正的需求與期望,或引導發掘顧客潛在的需求,無論你設計得多好,多麼有效率,仍然無法切中要點(顧客想要的),一切都是枉然。需求就是一種目標導向的工作,若是設錯了靶,即使是神射手也是徒然,這也就是我們為何要進行需求分析作業的目的──不至於設計出人們不想要的系統。

「不值得做的事情,就不值得把它最好。」我非常喜歡溫伯格的這句話。這一句話可以延伸出太多的意義,如本書提到在探索需求的程序上:「產品不重要,重要的是過程。」「文件不重要,重要的是建立文件這件事。」我更想延伸為:「專案不重要,重要的是專案開發的過程。」這句話帶出了本書的目的:「發現什麼並不重要,重要的是發現(探索)的過程。」這本書要討論的就是,在需求作業的程序,也就是開發過程中,人們試圖發掘什麼是他人想要(people attempt to discover what is desired)的過程。

本書第一部分:「先有一點共識」,重點在於「溝通」的議題,不只是設計團隊成員們之間的溝通,更是需要懂得如何與顧客溝通,以了解顧客真正的需求。光有工具與方法是不夠的,你真的需要釐清需求的本質為何。書中舉了一個有趣的例子──有人登廣告銷售一種號稱操作簡單的蟑螂必殺器,說明指南說:把蟑螂放在A鐵板,用B鐵板打蟑螂,再清除屍體。重點是,從來沒有人會用到最後一項步驟,因為照此程序,你得先讓蟑螂在A鐵板上乖乖不動,才能用B鐵板來打蟑螂。這代表了,需求可不是固定不變,你不可能直接抓得到它,讓它們靜止不動。需求的探索作業是動態、持續不斷的過程,在這過程中,我們是透過一次次的釐清需求要件,將範圍逐步收斂,使結果接近我們想要的──也只包括我們想要的。同時我們也需要去除語意曖昧(ambiguity)的問題,因為如此會造成同一需求有不同的解讀。

而在需求溝通的會議上,客戶的參與是必要的,但可不要過分表現專業,高高在上,使得客戶有恐懼或防衛的心態;如果能營造出分享專業知識的氣氛,客戶將樂於參與設計工作。溝通的文件部分,除了文字的表達,「一圖勝過千言萬語。」利用圖形的表達,一直是人們擅長溝通的利器,只是要注意的是,圖形的表達最好能有標準化的語法(notation),例如在軟體界通用的UML(Unified Modeling Lanaguage),即是國際標準的圖形語法。

本部分最後一段即提及,如果你希望成為一個能力高強的需求分析設計者,最好嫻熟直接詢問法,以及直接觀察法,以及一般的問答技巧。設計者的重大錯誤之一,即是試圖給予客戶需要的東西,而不是給予客戶想要的東西。如果你覺得自己比客戶更了解客戶的需要,不可覺得自己比客戶聰明。相反地,你應該說服客戶,他們需要你認為他們需要的東西。

本書第二個部分談怎麼「起步」。所有的釐清需求作業進行之前,都會先有某種初始程序:某人興起一個概念(idea),想要設計或建構某個東西。無論這個概念由何而來,這個概念即是需要作業程序的起點。如果參與者在開始思考時無法協調一致,那麼在你還沒有獲得他們真正參與之前,你就會失去他們。所以對於客戶,你必須「因材施教」,如何對概念能有一致性的見解。顯然,提出開放式的問題、找對的人參與、舉辦有效率的會議,以及減少語意上的曖昧,都是好的開始。但要注意的是:我們最常見的起點或許是:還沒有陳述該解決的問題(也就是某人所感受到的和所期望的),就開始思考解決方案。請注意這一點,在需求分析階段,該重視「What」,而不是「How-to」;專注在使用者想要什麼,而不是急著找出如何解決的方案,不然既容易誤解問題的本質,亦將耗費白工。

探索需求的各種可能性

本書第三部分討論探索的各種可能性。為取得一致性共通的概念,溫伯格提出了「探索螺旋(Spiralof Exploration)」的方式。這太棒了!這與我個人在軟體專案的開發流程上,完全是相同的本質觀念,也就是,抵達終點並非是直線的前進,而是以目標為中心的螺旋路徑。走一點,遇到障礙,修正,再往前走……,這才會是最佳的實務,來逐步接近目標。這一部分也提到了工具的使用,不過,工具並不一定是指實體的工具,如瑞士刀,人類的大腦也是工具,例如,我們可以運用右腦創意、直覺與聯想的天賦,利用腦力激盪(brain-storm),來找出更多的概念。我就會利用心智圖(mind map)的方式,運用大量關連的方法,來建構與整理以概念為中心的記憶樹;甚而,也可以多人腦力激盪,以遊戲的氣氛與心態,共同來完成需求主題的建構。還有,在「調和衝突」這章,溫伯格提出了人與人之間互動合作必然會引起的衝突,而衝突發生後,該如何調和。他提出了一個有趣的建議方案:若專案不可或缺的兩人呈現對立態勢,兩個都開除!(道理很簡單,避免專案被這些自以為是關鍵人物的拿翹與勒索)。

本書第四部分提到了客戶的期望。首先說明了關於功能的定義與該如何界定,如何掌握所有的功能需求,如何分辨顯著(Evident)功能、隱藏(Hidden)功能、附帶(Frill)功能等,然後又以每一章節來說明特性、限制與偏好等與功能相關連的因素。功能要完善,又要能凸顯功能的特性,但是又不可能無限延伸;如何來限制功能需求是在合理的解決方案空間內(solution space);如何了解客戶的偏好,而不是設計者自己的偏好;然後,偏好與限制,有時又好像蠻模糊的,例如,完成系統設計的最後期限,對團隊而言,是項限制;對老闆而言,卻只是一項偏好,而且是溫和的偏好。

本書最後討論「大幅提升成功機率」,其中提到關於測試的部分,是我非常感興趣的。我自身擔任軟體架構師,一直在推動「測試案例」與「功能測試」,發現我所做的竟與本書的觀點是一致的,這可真開心。我覺得,若是「以人為本」的系統開發,其本質道理是一致的,這絕對不可能會是主要以工具或程序就能達成的。測試案例(test case),就是由使用者提出測試的劇本與數據,針對可量化的功能,以黑箱(black box)的手法來測試,黑箱的概念只重視「輸入」與「輸出」,這其實就是針對功能性的測試。界定需求要件時,可以運用黑箱概念:因為設計案在這個階段,解決方案確實是個黑箱。而設計工作即是將黑箱轉變為白箱,我們能清楚看見這個箱子如何運作。黑箱測試作業不可以延緩,應該在界定問題階段,就進行黑箱測試;而不是提出解決方案階段,才進行黑箱測試。也就是在你不必承諾可以達成什麼的時候,盡力先了解客戶想要的是什麼。還有特別要注意的是,測試案例的結果必須要請客戶簽名,否則未經簽名的文件只是沒有價值的紙頭,簽名能增加價值。

最後一個章節,溫伯格總算提到了,這也讓我確認了需求的本質,也就是:任何一個真實世界中的專案,不論規劃如何完善,管理如何優良,都包含若干灌木枝芽;因為真實世界總是和我們的假設作對,憎惡灌木叢法的人,可能會想去創造完美的需求要件作業,他們正是創造「植物人」式需求要件作業的人v。甚麼是灌木叢法?需求不明確,試行、修正,然後再試做……直到認為滿意了,就停止。溫伯格認為,這種方法相當務實卻沒有主幹(主軸),而是有一堆枝芽、許多葉片。在軟體開發的程序上,其實這種方法就是應用在「反覆與漸增(I&I, Iteration and Incremental)」的開發實務,只是以我個人在帶領團隊成員開發時,必然會先建立一個整體觀:以架構為中心。這也同時解決了灌木叢法缺乏了主幹的缺陷。本書最後談到「繼續溝通」。因為,了解需求本質的人都知道,凍結需求的觀念其實是一種妄想,用來抵制對於需求要件作業結束的恐懼。除非確知有再溝通的可能,我們無法放心地結束需求要件作業。所以,需求要件作業的最後一個步驟就是:雙方同意繼續溝通!

本書給我最後一個感想就是:客戶端與設計團隊不應該是衝突、對抗的(現實經常如此),應該是要能和解共生;同時,專業設計團隊要學會能不卑不亢!不是對客戶卑躬屈膝,但也不需要表現得高高在上,保護自己。

 

從需求到設計──如何設計出客戶想要的產品(Exploring Requirements: Quality Before Design)

唐納德.高斯(Donald C. Gause)、

傑拉爾德.溫伯格(Gerald M. Weinberg )/著

褚耐安/譯

經濟新潮社

售價:550元

 

《作者簡介》

王克明

信仁軟體設計顧問中心軟體架構師,曾擔任機械化師文書官、系統工程師、Oracle DBA、IT部門副理、講師、顧問等。

熱門新聞

Advertisement