天天看點

子系統劃分的誤區

子系統劃分的誤區

對于習慣結構化程式設計的朋友來說,分析設計一個軟體的起點是從子系統的劃分開始的。而劃分的依據一般都是以使用者部門或業務進行劃分。比如财務子系統、人力資源管理子系統等。但是上面的這些劃分均是按使用者業務劃分的。計算機軟體是為了解決現實問題而設計的,現實世界和計算機系統之間并不是相等的關系。是以這種按使用者業務劃分的方法,對計算機系統來說并沒有什麼意義。不僅無法有效指導設計和開發,還容易導緻系統依賴關系的混亂。

我們現在做的是計算機系統,子系統是針對計算機而言的。劃分出來的子系統一定要有利于軟體的設計和開發,而不是一味的迎合業務或使用者習慣。

業務子系統和計算機子系統是兩回事。計算機子系統用來描述一個軟體的内部構成,對象依賴問題是主要的劃分依據。而業務子系統隻是軟體的展現形式。使用者看到的子系統隻是由ui展現出來的樣子,軟體内部不一定是按照這個劃分的。使用者所謂的子系統隻是軟體展現出來的樣子。從面向對象的觀點來看,軟體内部應當維持最佳的對象結構,然後通過接口向外部展現外部所需要的樣子。

按使用者業務劃分子系統最容易導緻的問題是資料依賴問題。強制按使用者業務或部門、組織劃分子系統,可能會導緻多個子系統之間的對象依賴。更合理的方式是在劃分時将耦合度或聚合度較高的類組織成子系統,沿着弱耦合的邊界将類分開,使得每個子系統具有内聚度更高的職責。面向對象要解決的問題是複用、擴充和抽象。這些問題的解決都要建立在高内聚、低耦合的對象基礎之上,而隻有保持了子系統間的低耦合性才能保證我們擁有獨立開發子系統、獨立修改和擴充以及獨立部署子系統的能力。

繼續閱讀