軟件設計之模塊劃分

在一些小型的項目當中,由於項目的關係簡單,規模較小,所以有時候負責完成項目的往往是一個人或者幾個人。這個時候對於模塊的概念和應用顯得很少,因爲項目規模較小的原因,模塊劃分的重要性難以體現。但是,在一些大型項目中,就必須充分考慮到模塊劃分,因爲參與項目的人數往往有很多人,同時人員變動很大。如果不充分進行模塊劃分的話,那麼就會造成很嚴重的問題。這就相當於在鄉下蓋房子,可以自己幾個人承包下來,也不需要設計圖紙,只要有石匠、木匠就可以搞定。但是在城市中建設一棟高層大樓的話,就必須要有設計師來進行設計,還得有各個部門來配合才行。如果還是和鄉下蓋房子一樣的話,那麼就會引起很嚴重的後果。

  • 模塊劃分的重要性

所謂軟件的模塊劃分是指在軟件設計過程中,爲了能夠對系統開發流程進行管理,保證系統的穩定性以及後期的可維護性,從而對軟件開發按照一定的準則進行模塊的劃分。根據模塊來進行系統開發,可提高系統的開發進度,明確系統的需求,保證系統的穩定性。

在系統設計的過程中,由於每個系統實現的功能不同,所以每個系統的需求也將會不同。也就導致了系統的設計方案不同。在系統的開發過程中,有些需求在屬性上往往會有一定的關聯性,而有些需求之間的聯繫很少。如果在設計的時候,不對需求進行歸類劃分的話,在後期的過程中往往會造成混亂。

軟件設計過程中通過對軟件進行模塊劃分可以達到一下的好處:

(1)     使程序實現的邏輯更加清晰,可讀性強。

(2)     使多人合作開發的分工更加明確,容易控制。

(3)     能充分利用可以重用的代碼。

(4)     抽象出可公用的模塊,可維護性強,以避免同一處修改在多個地方出現。

(5)     系統運行可方便地選擇不同的流程。

(6)     可基於模塊化設計優秀的遺留系統,方便的組裝開發新的相似系統,甚至一個全新的系統。

  • 模塊劃分的方法

很多人都參與過一些項目的設計,在很多項目設計過程中對於模塊劃分大多都是基於功能進行劃分。這樣劃分有一個好處,由於在一個項目的設計過程中,有着諸多的需求。而很多需求都可以進行歸類,根據功能需求分類的方法進行模塊的劃分。可以讓需求在歸類上得到明確的劃分,而且通過功能需求進行軟件的模塊劃分使得功能分解,任務分配等方面都有較好的分解。

按照任務需求進行模塊劃分是一種基於面向過程的劃分方法,利用面向過程的思想進行系統設計的好處是能夠清晰的瞭解系統的開發流程。對於任務的分工、管理,系統功能接口的制定在面向過程的思想中都能夠得到良好的體現。

按任務需求進行模塊劃分的主要步驟如下:

(1)     分析系統的需求,得出需求列表;

(2)     對需求進行歸類,並劃分出優先級;

(3)     根據需求對系統進行模塊分析,抽取出核心模塊;

(4)     將核心模塊進行細化擴展,逐層得到各個子模塊,完成模塊劃分。

在很多情況下,在劃分任務需求的時候,有些需求和很多個模塊均有聯繫,這個時候,通過需求來確定模塊的劃分就不能夠降低模塊之間的耦合了。而且有些模塊劃分出來裏面涉及的數據類型多種多樣,顯然這個時候根據系統所抽象出來的數據模型來進行模塊劃分更加有利。

在系統進行模塊劃分之前,往往都會有一個數據模型的抽象過程,根據系統的特性抽象出能夠代表系統的數據模型。根據數據模型來進行模塊劃分,可以充分降低系統之間的數據耦合度。按照數據模型進行模塊的劃分,降低每個模塊所包含的數據複雜程度,簡化數據接口設計。同時,對於數據的封裝可以起到良好的作用,提高了系統的封閉性。

抽象數據模型的模塊劃分方案是一種基於面向對象的思想進行的。這種思想的特點就是不以系統的需求作爲模塊的劃分方法,而是以抽象出系統的數據對象模型的思想對模塊進行劃分。而利用這種思想進行模塊劃分的主要好處能夠接近人的思維方式對問題進行劃分,提高系統的可理解性,可以從較高層次上對系統進行把握!

按照數據模型進行模塊劃分的主要步驟如下:

(1)     根據系統框架抽象出系統的核心數據模型;

(2)     根據核心數據模型將系統功能細化,並將數據模型與視圖等剝離,細化數據的流向;

(3)     依據數據的流向制定模塊和接口,完成模塊劃分。


  • 模塊劃分的準則

當系統被劃分成若干個模塊之後,模塊之間的關係稱之爲塊間關係,而模塊內部的實現邏輯都屬於模塊內部子系統。對於軟件的模塊劃分要遵循一些基本原則,遵循基本原則進行模塊劃分所設計出來的系統具有可靠性強,系統穩定,利於維護和升級。


設計模塊往往要注意很多的問題,好的模塊劃分方案可以對系統開發帶來很多的便利,提高整個系統的開發效率,而且對於系統後期的維護難度也會降低不少。反之,如果模塊劃分的不恰當,不僅不能帶來便利,往往還會影響程序的開發。

在進行軟件模塊劃分的時候,首先要遵從的一個準則就是確保每個模塊的獨立性,所謂模塊獨立性,即:不同模塊相互之間的聯繫儘可能少,儘可能的減少公共的變量和數據結構。每個模塊儘可能的在邏輯上獨立,功能上完整單一,數據上與其他模塊無太多的耦合。

模塊獨立性保證了每個模塊實現功能的單一性,接口的統一性,可以將模塊之間的耦合度充分降低。在進行軟件模塊劃分的時候,如果各個模塊之間的聯繫過多,模塊獨立性差容易引起系統結構混亂,層次劃分不清晰。導致有的需求和多個模塊均有關聯,嚴重影響系統設計。

對於模塊獨立性的好處主要可以歸納爲以下幾點:

(1)     模塊功能完整獨立;

(2)     數據接口簡單;

(3)     程序易於實現;

(4)     易於理解和系統維護;

(5)     利於限制錯誤範圍;

(6)     提高軟件開發速度,同時軟件質量高。


在軟件設計的過程中,往往需要對系統的結構層次進行分析,從中抽取出系統的設計框架,通過框架來指導整個軟件設計的流程。而一個良好的系統框架也是決定整個系統的穩定性、封閉性、可維護性的重要條件之一。

因此,在對軟件進行模塊劃分的過程中,要充分遵照當前系統的框架結構。模塊的劃分要和系統的結構層次相結合,根據系統的層次對各個模塊也進行層次劃分。如果系統的模塊劃分和框架結構相違背的話,則會導致類似數據混亂,接口複雜,模塊耦合性過高等等的問題出現。

如果模塊劃分的方法主要是依據任務需求而進行劃分的話,那麼可以先將任務需求根據系統框架劃分出系統等級。通過對任務需求的等級劃分對模塊劃分起到引導作用,同時,依照系統結構層次來對模塊劃分。


在進行模塊劃分的時候,有很多情況下不能夠清晰的把握每個模塊的具體內容。往往會出於對需求歸類或者數據統一的角度上對模塊進行設計。這種設計理念是對的,但是如果只是單純的從這幾個方面來進行模塊設計的話,那麼也會導致在模塊劃分上出現另外一些情況。比如說設計的某一個模塊,雖然數據接口統一,但是內部實現的功能非常多,單一模塊的規模過大,包含的內容過多。這樣設計模塊會導致什麼問題出現呢?

如果一個模塊包含的內容過多,會導致程序實現難度增加,數據處理流程變得複雜,程序維護性降低,出錯範圍不易確定等情況的出現。同時,由於模塊實現的功能豐富,則必然會導致接口也變得繁多,那麼與其他模塊之間的獨立性就得不到保證。而且,一個模塊包含太多的內容也會給人一種一團亂糟糟的感覺,嚴重影響對程序的理解。

在設計模塊的時候,需要遵循每個模塊功能單一、接口簡單、結構精簡的原則。對每個模塊的設計確保該模塊的規模不要太大,接口儘量的單一簡化。這樣的話,雖然可能會導致模塊的數量上比較多,但是能夠確保模塊的獨立性,而且不會影響系統的整體的框架結構。關於模塊內部的具體實現和接口設計將在下一部分進行講解。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章