2009-01-13 128 views
2

我有一個非常籠統的設計問題,但我會用一個例子來具體描述它。邏輯與物理設計

假設您正在爲數字打印機開發嵌入式軟件。該機器有4個打印頭(每種C,M,Y,K顏色)。每個打印頭執行相同的任務:取出墨粉並將其放在頁面上。

在運行時,我們可以用兩種不同的方式組織我們的API。我們要麼遵循邏輯(又稱「功能」或「過程」)設計,以便客戶端軟件可以控制所有打印頭的打印過程(例如,一次更改所有顏色的亮度)。或者我們遵循物理設計,以便客戶端軟件可以單獨控制每個打印頭(例如,僅更改品紅色的亮度)。

這是軟件設計中的一個典型困境:我們或者按照活動或者按照架構進行組織。按功能或按形式。我的問題是:是否有任何可靠的選擇標準?不同的項目會有不同的選擇,可以根據自己的情況選擇合適的項目;所以我不是問哪個最好,只是如何選擇。例如。我會對你關於鬆散耦合,可維護性,分層,面向角色設計,建築設計模式等方面的想法感興趣。

回答

4

編寫遵循物理設計的接口。最重要的是,你可以分層邏輯接口,使用物理接口。所以不要選擇什麼時候可以兼得。

0

我想這取決於你的客戶想要什麼 - 從客戶的角度來看系統的要求。

我個人傾向於將問題分解成兩個較小的部分/問題:

低級別的代碼訪問和控制物理組件 - 物理API。 (這將始終需要在您選擇的任何設計場景中完成,以便它可以集中並完成)。

使用API​​之上提供更函數/進程結構API(如有必要)

HTH 萊恩

0

做符合項目要求的最簡單的事情。

如果邏輯設計符合項目的要求,對邏輯和物理設計進行編碼可能會引入不必要的開發工作(並因此導致成本)。