房超
摘要:設計是軟件開發中的重要一環,決定著軟件產品的生命。現代的軟件開發許多是增量式開發,如何才能提高增量式開發的效率以及質量,這對軟件的設計提出了很高的要求。本文從設計的原則說起,之后用一個開發實例闡述了通用接口方法在增量式開發中的運用,希望能幫開發人員拓寬思路,設計出更高質量的產品。
關鍵詞:軟件設計原則;增量式開發;通用接口現代的軟件開發已經具有規模化,產業化的特點,一個軟件產品往往凝結了成百上千開發人員的心血。軟件產品的功能日益增多,開發人員的開發手法,開發風格的不一致,往往導致了在后期增量式開發中由于對原代碼理解不完全而產生各種副作用,而在實際的開發中,由于沒有設計文檔,或者代碼與設計文檔已有偏差,或者代碼量巨大等各種原因,要完全理解原始代碼基本上是不現實的。基于這種背景,我們希望在增量式開發中能夠通過一種良好的設計來盡量回避深入理解以及修改原始代碼,這樣無論在副作用的消減以及后期的測試甚至于再將來的擴展開發中都能起到積極作用。
1軟件設計的原則
一個軟件產品是否成功在很大程度上取決于該軟件的設計。軟件設計與開發平臺無關,與開發的生命周期模型無關。一般來說,軟件的設計需要遵循下面的幾個原則。
功能性:設計的軟件需要實現既定的功能。這是最基本的要求,在實際的操作中,軟件產品基本都能做到實現想要的功能,但容易出現的問題是,對異常的處理不足,在得到異常的輸入時,由于不能正常攔截而導致產品癱瘓從而使得功能無法實現。
易用性:設計出的產品方便易用。如果一項產品在操作上復雜難懂,需要設置的步驟很多,那么即使是它功能強大,也不會吸引到很多的客戶。所以盡量要設計簡單清晰的界面和方面的操作。
效率性:產品要高效運行。在軟件設計中,效率的高低往往與算法優劣,內存消耗量多少密不可分。設計人員要綜合考慮這幾方面的因素,在這幾項的平衡中盡量提高效率。
可維護性:盡量采用通用的設計模式,通用的建模語言來提高代碼的可讀性與可維護性。
可擴展性:設計柔軟,易于擴展,可以快速的對應用戶需求的改變以及功能等的追加。
可移植性:軟件的平臺依賴性低,易于從一個平臺移植到另外一個平臺。一般來說,這需要在設計時就將對平臺有依賴的內容單獨打包,這樣在移植時,平臺無關的內容可以直接平移,平臺相關的內容重新定義即可。
2通用接口應用例
下面將通過本人開發過的一個大規模集成電路中的增量開發項目來說明通用接口設計在增量式開發中的應用。
2.1 功能原型
本項目的功能原型如下圖所示:
在既存的功能模塊中,接收兩種中斷類型,根據中斷的不同,做出不同的中斷處理。在該項目中,筆者需要對應的是,新追加一種中斷方式并對應該種方式的中斷處理操作。
2.2 對應方式
①一種簡單的對應方式:
如果借助于既存代碼的設計,最簡單的對應方法就是在原始的通用功能模塊中將新追加的中斷方式直接嵌入,并在中斷發生時調用該種中斷方式的處理操作,即在操作上采用與Pulse/Level中斷相平行的處理方法。
采用該種處理方式,在理解上比較簡單,但是由于需要改動之前的代碼,所以需要理解修改原始代碼,在測試時為防止副作用的帶入還需要對原始的代碼操作進行驗證。可以說雖不經過復雜的設計,但是卻帶來了巨大的工作量。所以從追求效率以及品質的角度來說,這種做法并不可取。
② 基于通用接口的對應方式
從功能原型中可以看到,各種中斷方式的入口對應共通的通用功能模塊,根據中斷方式的不同,中斷的處理各不相同。因此,我們可以將通用功能模塊抽出,并為中斷的接收做一個獨立的事件通知模塊,在此事件通知模塊中,不對中斷類型加以細分,只是作為一個媒介,接收中斷類型并將該類型傳出。如此以后不論追加或者修改何種類型的中斷,都可以不改動通用功能模塊而直接流用。對中斷的事件處理,我們采用通用接口技術,將中斷處理作成一個通用的接口,以后如果需要追加新的中斷處理方式,只需要繼承該接口并獨立實現,這樣既不會影響其它的中斷操作,又能保證該處理的單純性。改造后的對應方法如下圖所示:
從圖中可以看到,當有事件發生時,通用功能模塊中的事件通知部分將發生中斷的類型傳遞給事件處理器,事件處理器根據此類型從配置表中調用使用了通用接口技術的中斷處理者,此后由相應的中斷處理者來執行相應的操作。
2.3 對應方式比較
在上面所介紹的兩種方式中,如果只是一次追加,則方式①要簡單一些,但如果之后還有類似的需求,我們可以通過下表來對應兩種方式的優劣:
從上表可以看出,當采用方式②來對應該問題后,由于通用接口的使用,使得每種中斷可以獨立的只負責執行自己的操作而不影響到其他種類,這樣不僅可以大大提高需求對應的效率,而且還可以保證產品的質量,達到保質保量快速對應的效果。
3結束語
通過本文的例子可以看出,優秀的設計會使得后續開發變得高質高效。但設計能力的培養不是一蹴而就的,需要經過書本知識的學習以及大量的實習演練來獲得。希望本文能拋磚引玉,能提醒大家在設計時多花一點心思,采用最合適的模式,設計出高質量的產品。