軟件設計
From Wikipedia, the free encyclopedia
Remove ads
軟件設計係軟件工程上嘅其中一個工序,講緊仲未郁手寫源碼實施或者修改隻軟件,先行對隻軟件嘅運作方式做計劃。軟件設計呢個工序,要產生一套有關隻軟件內部點運作嘅概念結構,通常仲會寫低一啲設計文件,團隊其後想睇返嗰陣就可以參考。[1]

要做軟件設計,要處理軟件架構、用家介面設計等嘅問題,要達致抽象化同埋模塊化,目標係設計出能夠正確運行得嚟又易用嘅軟件。呢個工序牽涉到跨層次嘅抽象化同埋用家體驗方面嘅思考。
基本概念
睇埋:複雜系統
設計本身可以定義為一種計劃同構思嘅過程,界定系統或者產品要有咩特性,從而達到使用者想要嘅目的。由工程學角度睇,設計唔淨只係畫圖咁簡單,而係成套方法,用嚟將需求轉化為可以攞去實行嘅方案,具體噉描述個系統或者件產品(最後出嘅 artifact [註 1])要有邊啲結構同埋組件,過程中會產生流程圖、虛擬碼、用統一製模語言描述嘅模型... 等等,而且呢啲嘢冚唪唥都會紀錄在案。响呢個過程中,設計者需要平衡效能、成本同埋可用度等嘅多方考量,設計出最啱用嘅軟件系統[2]。
做軟件設計,不時要處理一啲棘手問題[註 2],意思係指問題嘅一類,特徵係因為啲需求唔完整、互相矛盾、或者經常改變等... 而難以解決,甚至根本冇可能徹底噉解決,唔會有唯一嘅解決方案。棘手問題之所以難搞,好多時係由於啲嘢之間存在複雜嘅相互依存關係,而且一路解仲可以會揭露出其他之前未諗到嘅問題。對於棘手問題,做設計嘅人往往要靠經驗同埋權衡取捨,唔會有咩簡單方法可以「推理」或者「計」個答案出嚟[3]。
Remove ads
軟件架構
内文:軟件架構
睇埋:軟件設計模式
軟件架構係指系統最高層次嘅結構設計,包括元件同埋元件之間有咩關係。喺呢個階段,設計者要界定一啲大體嘅方向。
設計模式[註 3]係指緊針對反覆出現嘅設計問題而諗出嚟嘅通用解法,唔係現成嘅源碼,而係一套可重用嘅設計結構同協作關係。例如原型模式就係一種常用嘅設計模式,重重點係:採用物件導向編程,想建構物件嗰陣唔會由零開始,而係攞某件物件嚟做「板」,透過「複製」噉嘅方法產生新嘅實例。呢種做法喺遊戲程式入便就成日用到,好多時要高速生成相似(但可能稍有差異)嘅物件,諸如係遊戲入便嘅敵人、子彈、或者道具呀噉。原型模式可以避開昂貴嘅初始化,而且容易配合物件導向編程嚟用[4]。原型模式係一種設計模式,而非某一套特定嘅源碼,好多唔同樣嘅源碼都可以係體現緊原型模式,原型模式嘅一個可能嘅虛擬碼例子,可以想像用噉嘅方法產生遊戲入便嘅虛擬敵人:
# 原型介面 介面 原型 { 複製(): 原型 } # 建立「敵人」呢種物件嘅原型 類 敵人 implements 原型 { 血量, 速度, 模型, ... 複製(): 敵人 { 新敵人 = new 敵人(); 新敵人.血量 = 呢個.血量; ...; return 新敵人 } } # 原型登記冊,記住啲「敵人」物件 類 原型庫 { 儲存; 登記(名, 原型); 產生(名): 原型 = 儲存[名].複製() } # 初始化樣板 原型庫.登記("普通敵人", new 敵人(血量=100, 速度=3, 模型=獸人, ...)) # 遊戲中生成 快敵 = 原型庫.產生("普通敵人"); 快敵.速度 = 5; 世界.加入(快敵)
Remove ads
用家介面

内文:用家介面設計
用家介面(簡稱 UI)係指用家同電腦系統、軟件互動嘅渠道同方式。用家介面負責將系統功能以人類易明同操作嘅形式呈現出嚟,同時亦接收用家俾嘅輸入。用家介面可以包括好多唔同形式,諸如係命令行介面全靠打字同出字嚟同用家互動、圖像用家介面用圖像同 click 等嘅方式嚟同部機互動,而自從二十一世紀起,人工智能愈嚟愈識處理自然語言,自然語言用家介面亦應運而生。[5]
用家介面設計有幾個主要挑戰。做用家介面設計,設計師往往會想達致高易用度,但係要做到易用並唔簡單。設計師需要估計用家喺本能上會點樣操作,例如佢哋直覺上會撳咩掣、用咩姿勢,而呢啲資訊好多時都要經過測試先可以確認[6]:Ch 4。設計師又要引導用家,介面要清楚俾提示,畫面唔好太花,等用家能夠一睇就知跟住要撳邊度,嚴防用家迷失或者出錯。要為用家提供即時嘅回饋。然後設計師仲要處理用家多樣性嘅問題:唔同用家喺年齡、文化、語言、經驗水平以至身體能力... 等方面都有差異,所以設計要兼顧可及度,例如假如介面用到唔同顏色嘅掣,就可能要提供幾款唔同嘅色可以揀,方便色盲嘅用家使用。
設計用家介面嗰陣,可以用到紙本原型。
質量評估
做軟件設計,需要進行質量分析同評估,常見嘅評估準則有:
關鍵議題
根據 SWEBOK,軟件設計上嘅重要議題仲有以下呢啲:[7]
等等。
睇埋
註釋
引咗
資源
Wikiwand - on
Seamless Wikipedia browsing. On steroids.
Remove ads