?

結構化方法學與面向對象方法學在軟件開發中的比較

2008-07-14 10:05欒詠紅
電腦知識與技術 2008年18期
關鍵詞:軟件開發軟件工程程序設計

摘要:結構化方法與面向對象方法在軟件開發過程中的比較,從系統分析、系統設計和編程技術等方面的分析,指出沒有絕對一種軟件開發方法稱得上是“最好”的,開發人員應該根據所要開發的軟件的特點,選擇最適宜的開發方法。

關鍵詞:軟件工程;結構化方法;面向對象方法;軟件開發;程序設計

中圖分類號:TP311文獻標識碼:A文章編號:1009-3044(2008)18-2pppp-0c

Comparison of Structurized Methodology and Object-oriented Methodology in Software Development

LUAN Yong-hong

(Information of Engineering Department,Suzhou Institute of Industrial Technology,Suzhou 215104,China)

Abstract:The structure method and the object-oriented method develop comparison in process in the software,from the aspect analysis such as systems analysis, system design and programming technology, pointed out not absolutely one software method of exploitation called on " best", the personnel who develops ought to choose the most proper exploitation method according to what be wanted the development software characteristic.

Key words:Software Engineering;Structured Methods;Object-Oriented Methods;Software Development;Program Design

1 引言

隨著信息技術的發展,軟件作為一種信息技術的主要載體日益滲透到社會政治、軍事、經濟、文化乃至生活的各個方面和各個層次。軟件無所不在,其需求愈來愈多,復雜度愈來愈高,可用性要求愈來愈強。如何高效地開發和生產可靠、可信的軟件,是軟件領域一直必須面對的問題。軟件技術跟不上硬件技術發展而造成的諸多問題被稱作“軟件危機”(Software Crisis)。為了解決軟件危機,1968年北大西洋公約組織(NATO)的計算機科學家在德國召開的國際學術會議上第一次提出了“軟件工程”的概念,希望通過系統化、規范化、數量化等工程原則和方法來實現復雜軟件系統的開發和維護。[1]當前主要采用的軟件工程方法有結構化方法學和面向對象方法學。

2 結構化方法學與面向對象方法學的含義

結構化方法學(Structurized Methodology)是一種圍繞功能來組織軟件系統的軟件開發方法。它采用自頂向下的設計方法,將問題模型反映為過程結構模型,實際上就是通過建立功能模型,將復雜的過程簡單地按功能分層從而達到解決問題的目的。

面向對象方法學(Object-Oriented Methodology)是一種圍繞真實世界中的事物來組織軟件系統的全新方法。它的出發點和基本原則,是盡可能模擬人類習慣的思維方式,也就是描述問題的問題域與實現解法的求解域在結構上盡可能一致。

3 結構化軟件開發方法與面向對象的軟件開發方法的比較

軟件開發方法(Software Development Method)是指軟件開發過程所遵循的辦法和步驟。軟件開發活動的目的就是得到一個運行的軟件系統及其支持的軟件文檔,并且能滿足有關的軟件質量要求。目前最常采用的軟件開發方法有結構化方法和面向對象方法。

軟件開發是按需求規格說明的要求,由抽象到具體,逐步生成軟件的過程。因而要求系統設計方法、編程方法及選用的程序設計語言應該盡可能匹配。如采用結構化的分析方法(StructuredAnalysis,簡稱SA)就應該采用結構化的系統設計(Structured Design,簡稱SD)和結構化的編程技術(Structured Programming,簡稱SP),選用支持結構化編程的Pascal語言、C語言等。若采用面向對象的分析方法(Object-Oriented Analysis ,簡稱OOA)、面向對象的設計方法(Object-Oriented Design, 簡稱OOD),就應該選用面向對象的編程技術(Object-Oriented Programming,簡稱OOP)和支持面向對象的編程語言,如Smalltalk,C++、Java等。

3.1 結構化軟件開發方法

結構化軟件方法是結構化方法和信息建模方法,這兩種方法分別從功能和信息(數據)的角度對系統進行分析和設計。結構化軟件開發方法的基本思想是:首先確定輸入、輸出數據結構,使用自頂向下的設計方法,列出需要解決的最主要的子問題,然后通過解決每一個子問題來解決初始的問題。結構化軟件開發方法的本質是功能的分解,將系統按功能分解為若干模塊,每個模塊是實現系統某一功能的程序單元,每一個模塊都具有輸入、輸出和過程等基本特性。輸入和輸出分別是模塊需要的和產生的數據,過程則是對模塊具體處理細節的描述和表示。數據則在功能模塊間流動。[5] 功能是一種主動的行為,數據是受功能影響的信息載體。因而它的編程模型被理解為作用于數據的代碼。

從編程技術和程序設計的角度來說,結構化分析方法在進行程序設計時,描述任何實體的操作序列只需采用“順序、選擇、重復”三種基本控制結構,整個程序劃分為若干個模塊。每個模塊要具有一種以上的特定功能,并且每個模塊只能有一個入口和一個出口。這種程序設計采用自頂向下,逐步細分的方法展開,在一定的數據結構之下來設計對應的算法,然后分別實現數據結構設計和算法設計,因此,N.Wirth總結出:程序=算法+數據結構的形式。 [3][4]結構化程序設計中,問題被看作一系列需要完成的任務,函數(function)是用于完成這些任務的。所以說,最終解決問題的焦點集中于函數,而數據則在功能模塊間流動。

如圖1所示。

圖1 結構化方法的應用

3.2 面向對象的建模技術

OMT(Object-Oriented Modeling Technique)是由James Rumbaugh等人提出的。OMT是一種面向對象的軟件開發方法,以對象建模為基礎,從對象的角度對系統進行分析和設計。 面向對象的軟件開發方法基本思想是:采用了自底向上的歸納、自頂向下的分解的方法,第一步是從問題的陳述入手,構造系統模型。系統模型建立后的工作就是按服務(Service)來分解。第二步是將對問題的描述建立成三種模型,這三種模型分別是:對象模型、動態模型和功能模型。對象模型是通過描述系統中的對象、對象間的關系和每個對象類的屬性和操作來表示系統的靜態數據結構。動態模型描述了系統中與時間和變化有關的內容,它說明何時發生。功能模型描述系統的數據轉換。三種模型都是必須的[2][5]。但是,對象模型都是最重要、最基本、最核心的。每個對象類由數據結構(屬性)和操作(行為)組成,有關的數據結構(包括輸入、輸出數據結構)都成了軟件開發的依據。

從編程技術和程序設計的角度來說,采用面向對象的分析方法,是將問題分解為一系列實體——這些實體被稱為對象(object),然后圍繞這些實體建立數據(對象)和針對該對象而定義的接口(interface)來組織描述程序。正是由于這種方法是從對象的角度對系統進行分析和設計。對象就是對現實世界實體的正確抽象,而具有相同或相似性質的對象的抽象就是類。對象包含了數據和操作,實現了數據和操作的結合,使數據和操作封裝于對象的統一體中。每個類由屬性和操作組成。對象彼此之間僅能通過發送消息互相聯系。類中操作的實現過程叫做方法,一個方法有方法名、參數、方法體[2],如圖2所示。

圖2 對象、類和信息傳遞

面向對象方法的編程技術重點是說明類,而不是定義函數。利用類(class)來描述對象的特性,每個類都有描述對象屬性的數據和操作數據的一組方法。[5]面向對象程序設計主要是類的設計,程序代碼主要是類的描述,而構成系統核心的對象在程序運行時才創建。對象之間的相互作用稱為一個對象向另一個對象發送消息。

3.3 兩種軟件開發方法的比較

面向對象的軟件開發方法與結構化軟件開發方法的最基本的區別:表現在它們對功能和數據的不同處理上。

結構化軟件開發方法是圍繞實現處理功能的“過程”來構造系統的。它幾乎都是將功能和數據分開考慮的。它遵循面向過程的問題求解方法,是用計算機能夠理解的邏輯來描述和表達待解決的問題及其具體的解決流程。數據結構和算法是它的核心所在。用戶需求的變化大部分是針對功能的,在開發需求模糊或需求動態變化的系統時,所開發出的軟件系統往往不能真正滿足用戶的需要,可能會引起軟件成本增長失控、軟件質量得不到保證等一系列嚴重問題。因此,用結構化方法開發的軟件,其穩定性、可修改性和可重用性都比較差。

面向對象軟件開發方法則是在解空間引入了“對象”的概念,逼真地描述解空間的客觀實體,從而使客觀描述符合人類的思維習慣。通過識別問題域的對象,分析它們之間的關系,建立對象模型、動態模型和功能模型,利用面向對象觀點建立求解域模型的過程。它的核心概念主要是對象、類、繼承和消息。面向對象編程技術的特點是數據控制代碼的訪問,其中類的繼承和多態性是處理復雜軟件的有效技術。運用這種方法開發出來的系統穩定性、可重用性及可維護性好。

4 結束語

面向對象方法在軟件開發方面符合人們習慣的思維方式,系統的穩定性比較好,軟件的可維護性與可重用性比較好。但面向對象方法的基本概念都很抽象,可供軟件開發人員使用的類種類繁多,結構復雜。如果沒有結構化程序設計的編程思想,對于直接學習面向對象程序設計的初學者,在代碼編程部分涉及結構化編程思想時,反而困難會很大。事實上,這兩種方法在并不是相互排斥的,相反,它們是相互促進相互補充的。不論采用何種技術方法開發軟件,都必須完成一系列性質各異的任務,這些必須完成的任務要素是:確定“做什么”,確定“怎樣做”,如何“實現和完善”。 因此,沒有絕對的一種軟件開發方法稱得上是“最好”的,軟件開發人員應該根據所要開發的軟件的特點,選擇最適宜的開發方法。

參考文獻:

[1]張海藩.軟件工程導論[M].3版.清華大學出版社,1998.

[2]施霞萍,王瑾德.2版.Java程序設計教程[M].機械工業出版社,2006.

[3]錢能.C++程序設計教程[M].2版.清華大學出版社,2005.

[4]Jeri R Hanly,Elliot B Koffman.問題求解與程序設計 C語言版.朱劍平,譯.4版.北京:清華大學出版社,2007.

[5]文斌,劉長青.田原軟件工程與軟件文檔寫作[M].清華大學出版社,北京交通大學出版社,2005.

收稿日期:2008-04-02

作者簡介:欒詠紅(1971-),女,山東青島人,講師,研究方向:計算機軟件。

猜你喜歡
軟件開發軟件工程程序設計
基于Visual Studio Code的C語言程序設計實踐教學探索
從細節入手,談PLC程序設計技巧
高職高專院校C語言程序設計教學改革探索
關于如何創新和完善計算機軟件工程管理的探討
PLC梯形圖程序設計技巧及應用
91香蕉高清国产线观看免费-97夜夜澡人人爽人人喊a-99久久久无码国产精品9-国产亚洲日韩欧美综合