劉珂 韓瑤 高嵩
摘 要:軟件工程中的結構化設計方法是當前軟件工程最成熟,使用最廣泛的一種設計方法,將復雜系統分解為若干個子功能模塊,模塊化軟件構件,同時將這些構件進行簡單的連接組織,最終實現軟件系統控制功能。近年來,軟件工程中的結構化設計已邁入新階段,設計中不僅需要考慮滿足系統的功能,還需對系統性能進行優化,領域工程是典型的代表,能極大的提高可設計構件的復制性,減少開發工作量。
關鍵詞:軟件工程 結構化設計
中圖分類號:TP311 文獻標識碼:A 文章編號:1003-9082(2017)06-0008-01
在最初的軟件開發過程中,用戶需求調查、設計時間耗費的時間占整個軟件開發的時間比重較高,約70%的軟件錯誤是發生在這個階段。面向過程的分析與設計,只考慮功能函數的編寫,系統由算法以及數據結構、子程序組成,封裝對象是函數,一定程度提升了軟件的靈活性。但隨著構件的出現,系統開始成為構件以及連接件組成,極大的縮短了軟件開發過程中,結構設計開始成為軟件工程中軟件開發的主要方法。
一、軟件結構化設計方法概述
結構化設計方法是當前軟件工程最成熟,使用最廣泛的一種設計方法,基本指導思想是從頂向下進行功能的抽象、分解,逐步求精。軟件設計開發的過程中,實際上也是一種需求滿足的工程,特別是當前軟件與市場需求、機械工程的聯系越來越緊密,軟件系統功能的結構化趨向也越來越明顯,為結構化設計推廣創造了條件。結構化設計將復雜系統共分解為若干個子功能模塊,模塊化軟件構件,同時將這些構件進行簡單的連接組織,最終實現軟件系統控制功能。結構化的方法最簡單的實現過程中是樹狀結構圖表述,頂端是程序的主模塊,第一層為模塊1,2,……,n子模塊,以此類推。程序運行時,主模塊調動從屬模塊,直至最低層。接口實現各個模塊之間的數據輸入輸出,實現程序運行過程中的信息交換,從而實現連續、完整的控制功能。結構化的設計方法已基本成熟,主要包括面向數據流圖的數據流方法,盒子與箭頭為模型元素的IDEF0方法,LCP方法,Jackson方法等。結構方法適合功能比較明顯的軟件系統,以實現功能需求為立足點,功能明顯也是當前許多中小型軟件系統的重要特征,這也是結構化設計得到廣泛應用的原因。結構化設計實際上將功能相互聯系的一種策略,通過描述軟件的功能以及功能模塊之間的調用關系,將復雜的問題簡單化,降低設計的難度。但需注意的是,結構化軟件設計難以應對靈活性、可移植性、可擴展性的要求。
二、軟件結構化設計方法發展
軟件系統結構提供了多連接件、組件、配置的抽象,從宏觀角度來看,可分為不同類型的構件,構件能夠實現一組功能,是一種可以獨立的單元,通過設計這些構件功能,工程人員設計不同構件的連接件,最后制定統一的設計原則。軟件結構設計當前已邁入新的結構設計階段,新的結構設計方法不僅需要考慮滿足系統的功能,還需對系統性能進行優化,全面提升系統的安全性、可靠性、造價、穩定性,制定約束條件。軟件體系結構設計仍在不斷發展之中,產生了新的設計思想,領域工程是典型的代表,其是實現系統化軟件復用的關鍵,一定程度上彌補了傳統結構設計復用性較差的問題。領域工程是指對特定領域的可復用軟件資產進行生產的過程,對一組相似或相近系統建立基本的能力、必備基礎。領域工程極大的減輕了軟件開發的工作負擔,對于在某一領域的軟件開發公司而言,許多軟件資產功能非常的相似,領域功能通過分析、設計一組相似或相近需求的軟件系統覆蓋的區域,實現領域復制,將領域作為結構化設計的重要組成部分,縮短結構化設計后軟件開發的時間、進行結構優化。需注意的是,領域設計下的軟件結構化設計,不同于一般的軟件設計,其設計多個系統的共同特征分析,識別抽象領域內系統的共性問題,該階段需要領域專家、工程師進行領域抽象,如定義解空間訪問、分析模型可追蹤性等,從更宏觀的角度進行結構設計[2]。
三、軟件結構化設計方法應用案例
軟件工程中的結構化設計方法當前在建筑工程、機械工程的智能化領域應用相對較廣,依托于這些領域的原原有的功能結構設計,能夠較方便的分析信息化改造所需要的功能,縮短結構設計的流程。以防護工程智能化軟件為例,智能信息系統由軟件、硬件、人和組織等要素組成人機共治平臺,系統的主要功能包括對各個設備、工程進行信息采集、傳輸、處理與應用,對人等要素進行調度管理,必要時提供智能化分析決策支持,最終實現工程信息與資源的共享,通過人機交互,實現對人、工程資源的全面控制,快速反應。一個基本的防護工程智能信息功能包括功能應用集成、數據與算法集成、子系統集成、現代設備集成四個部分。功能應用集成包括設備運行、安全防范、專家輔助、信息查詢、基礎設施管理等,通過以上應用以及上級平臺實現人機交互,數據與算法集成需要具有協同與運行管理、自適應運行保障功能,能夠實現開房數據訪問、信息接入與傳輸,子系統包括設備智能控制、安全防范、智能視頻、信息發布等,需要集成的設備包括水泵等設備、變頻設備等,需注意的是這些設備需要進行智能化改造[3]。
四、小結
軟件工程中的結構化設計有許多優點,特別是在功能比較明確的系統智能化改造軟件系統設計中,能夠明顯縮短設計的時間,軟件系統設計可復制性明顯增強。當結構化設計方法應對那些靈活性、可移植性、可擴展性的要求較高的大型軟件系統,可能力不從心。在進行結構設計時,若發現模塊有相似之處,可進行功能的完善,進行結構優化。
參考文獻
[1]周子涵.影響軟件可靠性的因素[J].信息與電腦(理論版),2016(05):94-95.
[2] P Kruchten, H Obbink, J Stafford, The past, present, and future for software architecture[J]. Software, IEEE, 2006,14(3):289~301.
[3]張耀民.軟件工程中的結構化設計方法[J].現代電子技術,2012,35(16):39-41.
作者簡介:劉珂(1999.02.05);男,山東省臨沂市人,學歷:本科,就讀于:哈爾濱理工大學(榮成);現有職稱:中級工程師;研究方向:工程造價;