您好,登錄后才能下訂單哦!
摘要:
某項目的設(shè)計文檔評審會上,各路技術(shù)大牛進行了“熱烈”的討論,討論的焦點是怎樣的設(shè)計才漂亮!大家圍繞著如何OO,如何高內(nèi)聚低耦合,如何反轉(zhuǎn)控制等話題進行了“熱烈”的爭論。照這樣開下去,這個評審會豈不是變成了“神仙大會”!怎樣的設(shè)計才叫優(yōu)秀的設(shè)計呢?
大綱:
1.什么是優(yōu)秀的設(shè)計?
2.優(yōu)秀的設(shè)計能節(jié)省項目工作量
3.優(yōu)秀設(shè)計從分析需求開始
4.軟件系統(tǒng)不是木桶型的
5.軟件設(shè)計的“大道理”
6.規(guī)劃系統(tǒng)骨架——架構(gòu)設(shè)計
7.打造系統(tǒng)的底蘊——數(shù)據(jù)庫設(shè)計
8.細節(jié)決定成敗——詳細設(shè)計
9.用戶感覺好才是真的好——用戶體驗設(shè)計
10.持續(xù)提升設(shè)計水平
1.什么是優(yōu)秀的設(shè)計?
某項目的設(shè)計文檔評審會上,各路技術(shù)大牛進行了“熱烈”的討論,討論的焦點是怎樣的設(shè)計才漂亮!大家圍繞著如何OO,如何高內(nèi)聚低耦合,如何反轉(zhuǎn)控制等話題進行了“熱烈”的爭論。
你覺得以下標準可以成為“漂亮”設(shè)計的標準嗎?
1)高效
2)可靠
3)易用
4)安全
5)可擴展
6)兼容性強
7)移植性強
……
如果每次設(shè)計文檔評審,我們都采用上述標準來評審,你覺得這個設(shè)計評審會有效果嗎?
當(dāng)時我參加了這樣的一個設(shè)計評審會,覺得氣氛很不對,照這樣開下去,這個評審會豈不是變成了“神仙大會”!
于是我問了兩個問題:
1)誰能說說這個項目的主要需求?
2)這些需求,設(shè)計上是如何考慮實現(xiàn)的?
結(jié)果沒有人能答上來!
我們從書本上看到的那些”通用“的設(shè)計標準,說得難聽一點,就是廢話!對實際的項目工作基本上沒有實質(zhì)用途!
請看下面4個例子,分別思考這4個案例的軟件設(shè)計思路,你會發(fā)現(xiàn)上述“漂亮設(shè)計的標準”,真的是廢話!
案例1:某項目要求在很短時間內(nèi)完成,而且客戶對系統(tǒng)的當(dāng)前認識還是比較初步的,你打算怎樣設(shè)計這個系統(tǒng)?
案例2:某軟件公司接了一個“網(wǎng)頁+數(shù)據(jù)庫”類型的項目,這類項目已經(jīng)做過多個,但這次的業(yè)務(wù)卻是新的,你怎樣考慮這個項目的設(shè)計?
案例3:某軟件公司已經(jīng)成功為n個醫(yī)院做了管理系統(tǒng),現(xiàn)在需要為一家新的大醫(yī)院做類似這個系統(tǒng),你會怎樣考慮這個系統(tǒng)的設(shè)計?
案例4:你接到一個任務(wù),要做一個即時戰(zhàn)略游戲,目標是要在當(dāng)前游戲市場找中殺出一條血路,你怎樣考慮這個游戲的設(shè)計?
4個案例各有特點,分別代表了4種“典型”:
案例1:需求很朦朧,工期很緊,技術(shù)上基本上沒有積累。
案例2:需求是新的,但可以重用“網(wǎng)頁+數(shù)據(jù)庫”的技術(shù)架構(gòu)。
案例3:需求是類似的,技術(shù)架構(gòu)也是類似的,相信你會直接重用之前的系統(tǒng)。
案例4:這是一個需要創(chuàng)意和高技術(shù)含量的游戲,而游戲軟件的需求和技術(shù)都是充滿挑戰(zhàn)的。
上述4種情況,相信你采取的設(shè)計策略是不一樣的,你可能會發(fā)現(xiàn)所謂的優(yōu)秀設(shè)計沒有固定的標準。
如果硬是要來一個優(yōu)秀設(shè)計的標準呢?
我會這樣說:就是做高性價比的設(shè)計!
一個優(yōu)秀的設(shè)計應(yīng)該具備以下特點:
1)優(yōu)秀的設(shè)計都是需求驅(qū)動的,不熟悉需求就做出來的設(shè)計是不靠譜的;
2)優(yōu)秀的設(shè)計應(yīng)該是當(dāng)前團隊能理解能實現(xiàn)的,太超前的設(shè)計項目團隊做不出來,這個設(shè)計只能是擺設(shè);
3)優(yōu)秀的設(shè)計應(yīng)充分考慮當(dāng)前各種限制條件,適當(dāng)做出平衡,能保證達成項目的目標:
4)優(yōu)秀的設(shè)計能盡量降低項目的整體工作量,讓整個項目更加可控。
2.優(yōu)秀的設(shè)計能節(jié)省項目工作量
關(guān)于軟件設(shè)計的話題,如果脫離一些實際案例討論的話,很容易變成空洞無力的學(xué)術(shù)討論,所以本文將會列出很多案例供你參考。
設(shè)計案例:開發(fā)某線上社區(qū)網(wǎng)站
背景:某社區(qū)已經(jīng)舉辦了多期沙龍活動,為了拓展沙龍的影響力,讓更多朋友受益,樹立良好品牌,將來實現(xiàn)盈利,有必要建立一個線上的社區(qū)網(wǎng)站。
該網(wǎng)站應(yīng)有這樣的功能:
1)發(fā)布各種活動信息。
2)發(fā)布業(yè)界新聞。
3)能開展線上沙龍活動,包括在線視頻沙龍。
4)具備SNS社區(qū),可匯聚人氣。
5)每位會員有自己的博客,能維護自己的個人頁面。
6)支持簡體中文、繁體中文、英文三種語言隨時切換。
7)支持全文搜索。
你打算如何設(shè)計上述系統(tǒng)呢?
你可能會問,有工期限制嗎?
你說呢?真實項目一定會有工期限制的,這個項目你的工期只有1個月!
你可能會說:你當(dāng)我是神仙啊,1個月有可能怎樣死都死不出啊!
這個時候能幫助你的就是優(yōu)秀的設(shè)計,優(yōu)秀的設(shè)計有可能能讓你用很少的工作量就做出來,優(yōu)秀的設(shè)計也不一定需要你全部從零開發(fā)的,我們可以拿來主義!有不少開源軟件是可以基本滿足上述要求的,我們可以直接拿來用,這樣你需要付出的工作量就少很多了。
我曾經(jīng)用某開源軟件做了這樣的一個網(wǎng)站出來,但發(fā)現(xiàn)沒有全文搜索功能,結(jié)果我想了一個“投機取巧”的辦法,自己不寫一句代碼,直接利用谷歌的這個搜索功能“site:域名 關(guān)鍵字”,讓谷歌幫我搞定全文搜索。當(dāng)然這樣做出來的效果還不是很完美,但至少我能在很短時間內(nèi)能做出個大概啊,如果自己開發(fā)還不一定能做出這樣的效果呢!
小結(jié):
受工期限制、受能力限制等制約因素,十全十美的設(shè)計基本上是很難做到的,但如果因為趕工期而在軟件設(shè)計上節(jié)省時間甚至是直接忽略這步,其實是得不償失的。在軟件設(shè)計上“節(jié)省”1小時,可能會讓你將來多投入成倍的項目時間;越是工期緊,越需要冷靜思考軟件的設(shè)計,合適的設(shè)計能大大地降低項目工作量,讓你后期的工作輕松很多。
本文僅僅是本系列文章的第一篇,軟件設(shè)計沒有這么簡單,這僅僅是開始噢……
如果本文對你有幫助,麻煩點一下“推薦”啦,謝謝!
作者:張傳波
創(chuàng)新工場創(chuàng)業(yè)課堂(敏捷課程)講師
軟件研發(fā)管理資深顧問
CMMI首席專家
《火球——UML大戰(zhàn)需求分析》作者
軟件知識原創(chuàng)基地創(chuàng)辦人
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。