中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

軟件設計是怎樣煉成的(1)——什么是優秀的設計?

發布時間:2020-06-16 04:47:35 來源:網絡 閱讀:340 作者:fireball1975 欄目:軟件技術

摘要:

某項目的設計文檔評審會上,各路技術大牛進行了“熱烈”的討論,討論的焦點是怎樣的設計才漂亮!大家圍繞著如何OO,如何高內聚低耦合,如何反轉控制等話題進行了“熱烈”的爭論。照這樣開下去,這個評審會豈不是變成了“神仙大會”!怎樣的設計才叫優秀的設計呢?

 

大綱:

1.什么是優秀的設計?
2.優秀的設計能節省項目工作量
3.優秀設計從分析需求開始
4.軟件系統不是木桶型的
5.軟件設計的“大道理”
6.規劃系統骨架——架構設計
7.打造系統的底蘊——數據庫設計
8.細節決定成敗——詳細設計
9.用戶感覺好才是真的好——用戶體驗設計
10.持續提升設計水平

 

1.什么是優秀的設計?

 

某項目的設計文檔評審會上,各路技術大牛進行了“熱烈”的討論,討論的焦點是怎樣的設計才漂亮!大家圍繞著如何OO,如何高內聚低耦合,如何反轉控制等話題進行了“熱烈”的爭論。

你覺得以下標準可以成為“漂亮”設計的標準嗎?

1)高效
2)可靠
3)易用
4)安全
5)可擴展
6)兼容性強
7)移植性強
……

如果每次設計文檔評審,我們都采用上述標準來評審,你覺得這個設計評審會有效果嗎?

當時我參加了這樣的一個設計評審會,覺得氣氛很不對,照這樣開下去,這個評審會豈不是變成了“神仙大會”!

于是我問了兩個問題:

1)誰能說說這個項目的主要需求?
2)這些需求,設計上是如何考慮實現的?

結果沒有人能答上來!

我們從書本上看到的那些”通用“的設計標準,說得難聽一點,就是廢話!對實際的項目工作基本上沒有實質用途!

 

請看下面4個例子,分別思考這4個案例的軟件設計思路,你會發現上述“漂亮設計的標準”,真的是廢話!

案例1:某項目要求在很短時間內完成,而且客戶對系統的當前認識還是比較初步的,你打算怎樣設計這個系統?

案例2:某軟件公司接了一個“網頁+數據庫”類型的項目,這類項目已經做過多個,但這次的業務卻是新的,你怎樣考慮這個項目的設計?

案例3:某軟件公司已經成功為n個醫院做了管理系統,現在需要為一家新的大醫院做類似這個系統,你會怎樣考慮這個系統的設計?

案例4:你接到一個任務,要做一個即時戰略游戲,目標是要在當前游戲市場找中殺出一條血路,你怎樣考慮這個游戲的設計?

 

4個案例各有特點,分別代表了4種“典型”:

案例1:需求很朦朧,工期很緊,技術上基本上沒有積累。

案例2:需求是新的,但可以重用“網頁+數據庫”的技術架構。

案例3:需求是類似的,技術架構也是類似的,相信你會直接重用之前的系統。

案例4:這是一個需要創意和高技術含量的游戲,而游戲軟件的需求和技術都是充滿挑戰的。

上述4種情況,相信你采取的設計策略是不一樣的,你可能會發現所謂的優秀設計沒有固定的標準。

 

如果硬是要來一個優秀設計的標準呢?

我會這樣說:就是做高性價比的設計!

一個優秀的設計應該具備以下特點:

1)優秀的設計都是需求驅動的,不熟悉需求就做出來的設計是不靠譜的;
2)優秀的設計應該是當前團隊能理解能實現的,太超前的設計項目團隊做不出來,這個設計只能是擺設;
3)優秀的設計應充分考慮當前各種限制條件,適當做出平衡,能保證達成項目的目標:
4)優秀的設計能盡量降低項目的整體工作量,讓整個項目更加可控。

 

 

2.優秀的設計能節省項目工作量

 

關于軟件設計的話題,如果脫離一些實際案例討論的話,很容易變成空洞無力的學術討論,所以本文將會列出很多案例供你參考。

 

設計案例:開發某線上社區網站

背景:某社區已經舉辦了多期沙龍活動,為了拓展沙龍的影響力,讓更多朋友受益,樹立良好品牌,將來實現盈利,有必要建立一個線上的社區網站。

該網站應有這樣的功能:

1)發布各種活動信息。
2)發布業界新聞。
3)能開展線上沙龍活動,包括在線視頻沙龍。
4)具備SNS社區,可匯聚人氣。
5)每位會員有自己的博客,能維護自己的個人頁面。
6)支持簡體中文、繁體中文、英文三種語言隨時切換。
7)支持全文搜索。

你打算如何設計上述系統呢?

 

你可能會問,有工期限制嗎?

你說呢?真實項目一定會有工期限制的,這個項目你的工期只有1個月!

你可能會說:你當我是神仙啊,1個月有可能怎樣死都死不出啊!

這個時候能幫助你的就是優秀的設計,優秀的設計有可能能讓你用很少的工作量就做出來,優秀的設計也不一定需要你全部從零開發的,我們可以拿來主義!有不少開源軟件是可以基本滿足上述要求的,我們可以直接拿來用,這樣你需要付出的工作量就少很多了。

 

我曾經用某開源軟件做了這樣的一個網站出來,但發現沒有全文搜索功能,結果我想了一個“投機取巧”的辦法,自己不寫一句代碼,直接利用谷歌的這個搜索功能“site:域名 關鍵字”,讓谷歌幫我搞定全文搜索。當然這樣做出來的效果還不是很完美,但至少我能在很短時間內能做出個大概啊,如果自己開發還不一定能做出這樣的效果呢!

 

小結:

受工期限制、受能力限制等制約因素,十全十美的設計基本上是很難做到的,但如果因為趕工期而在軟件設計上節省時間甚至是直接忽略這步,其實是得不償失的。在軟件設計上“節省”1小時,可能會讓你將來多投入成倍的項目時間;越是工期緊,越需要冷靜思考軟件的設計,合適的設計能大大地降低項目工作量,讓你后期的工作輕松很多。

 

本文僅僅是本系列文章的第一篇,軟件設計沒有這么簡單,這僅僅是開始噢……

如果本文對你有幫助,麻煩點一下“推薦”啦,謝謝!

 

 

作者:張傳波

創新工場創業課堂(敏捷課程)講師

軟件研發管理資深顧問

CMMI首席專家

《火球——UML大戰需求分析》作者

軟件知識原創基地創辦人

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

九龙城区| 盐城市| 句容市| 静乐县| 巴彦淖尔市| 南昌县| 嫩江县| 沧源| 紫阳县| 湖北省| 漾濞| 贵州省| 盐山县| 信宜市| 南开区| 寻乌县| 宜川县| 永新县| 汝州市| 富平县| 平安县| 深州市| 岳西县| 镇平县| 保靖县| 叙永县| 长垣县| 祁门县| 朝阳县| 陇西县| 黄陵县| 石门县| 长海县| 宁强县| 九江县| 大城县| 黄平县| 铜陵市| 丰都县| 东丰县| 嘉禾县|