日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 >

软件工程:结构化软件设计方法 VS 面向对象软件设计方法

發(fā)布時(shí)間:2024/3/24 57 豆豆
生活随笔 收集整理的這篇文章主要介紹了 软件工程:结构化软件设计方法 VS 面向对象软件设计方法 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

一、基本概念

1、結(jié)構(gòu)化方法

結(jié)構(gòu)化方法是一種傳統(tǒng)的軟件開發(fā)方法,它是由結(jié)構(gòu)化分析、結(jié)構(gòu)化設(shè)計(jì)和結(jié)構(gòu)化程序設(shè)計(jì)三部分有機(jī)組合而成的。

基本思想:把一個(gè)復(fù)雜問題的求解過程分階段進(jìn)行,而且這種分解是自頂向下,逐層分解,使得每個(gè)階段處理的問題都控制在人們?nèi)菀桌斫夂吞幚淼姆秶鷥?nèi)。

2、面向?qū)ο蠓椒?/h2>

面向?qū)ο蠓椒ㄊ且环N把面向?qū)ο蟮乃枷霊?yīng)用于軟件開發(fā)過程中,指導(dǎo)開發(fā)活動(dòng)的系統(tǒng)方法,簡(jiǎn)稱OO,是建立在“對(duì)象”概念基礎(chǔ)上的方法學(xué)。對(duì)象是由數(shù)據(jù)和容許的操作組成的封裝體,與客觀實(shí)體有直接對(duì)應(yīng)關(guān)系,一個(gè)對(duì)象類定義了具有相似性質(zhì)的一組對(duì)象。

基本思想:盡可能模擬人類習(xí)慣的思維方式,使開發(fā)軟件的方法與過程盡可能接近人類認(rèn)識(shí)世界、解決問題的方法與過程, 也就是使描述問題的問題空間與實(shí)現(xiàn)解法的求解空間在結(jié)構(gòu)上盡可能一致。

二、兩者對(duì)比

1、基本單位不同

結(jié)構(gòu)化方法的基本單位是模塊。

面向?qū)ο蠓椒ǖ幕締挝皇菍?duì)象。

2、分析方法不同

結(jié)構(gòu)化分析方法是一種面向數(shù)據(jù)流而基于功能分解的分析方法, 在該階段主要通過采用數(shù)據(jù)流程圖、編制數(shù)據(jù)字典等工具, 描述邊界和數(shù)據(jù)處理過程的關(guān)系, 力求尋找功能及功能之間的說明。

面向?qū)ο蠓治鍪前褜?duì)問題域和系統(tǒng)的認(rèn)識(shí)理解, 正確地抽象為規(guī)范的對(duì)象( 包括類、繼承層次) 和消息傳遞聯(lián)系, 最終建立起問題域的簡(jiǎn)潔、精確、可理解的面向?qū)ο竽P? 為后續(xù)的面向?qū)ο笤O(shè)計(jì)和面向?qū)ο缶幊烫峁┲笇?dǎo)。面向?qū)ο蠓治鐾ǔ=⑷N模型: 對(duì)象模型、動(dòng)態(tài)模型、功能模型。其中, 對(duì)象模型描述了系統(tǒng)的靜態(tài)結(jié)構(gòu),確定類的名稱和類間的關(guān)系;動(dòng)態(tài)模型表示瞬時(shí)的、行為化的系統(tǒng)的“ 控制”性質(zhì), 規(guī)定了對(duì)象模型中的對(duì)象的合法變化序列;功能模型表明了系統(tǒng)中數(shù)據(jù)之間的依賴關(guān)系, 以及有關(guān)數(shù)據(jù)的處理功能。

3、各自局限

(1)結(jié)構(gòu)化方法
  i.不能直接反映問題域: 結(jié)構(gòu)化分析方法以數(shù)據(jù)流為中心, 強(qiáng)調(diào)數(shù)據(jù)的流動(dòng)及每一個(gè)處理過程, 不是以問題域中的各事物為基礎(chǔ), 打破了各事物的界限, 分析結(jié)果不能直接反映問題域, 容易隱蔽一些對(duì)問題域的理解偏差。
  ii.數(shù)據(jù)和代碼缺乏保護(hù)機(jī)制: 一個(gè)特定全程數(shù)據(jù)既可以被操作這些數(shù)據(jù)的過程訪問, 也可以被其他過程訪問, 這給程序設(shè)計(jì)帶來了不安定因素, 一個(gè)不正常的數(shù)據(jù)修改或者過程調(diào)用可能會(huì)破壞正常的程序執(zhí)行流程或結(jié)果。
  iii.分析和設(shè)計(jì)體系不一: 結(jié)構(gòu)化分析的結(jié)果是數(shù)據(jù)流圖, 結(jié)構(gòu)化設(shè)計(jì)的結(jié)果是模塊結(jié)構(gòu)圖。 二者的表示體系不一致, 分析文檔很難與設(shè)計(jì)文檔對(duì)應(yīng), 所以從分析到設(shè)計(jì)的“ 轉(zhuǎn)換”過程容易因理解上的錯(cuò)誤而使得設(shè)計(jì)文檔與用戶的原本需求相差甚遠(yuǎn)。
  iv.開發(fā)過程復(fù)雜: 由于結(jié)構(gòu)化方法將過程和數(shù)據(jù)分離為相互獨(dú)立的實(shí)體, 程序員在編程時(shí)必須時(shí)刻考慮到所要處理的數(shù)據(jù)的格式。 對(duì)于不同的數(shù)據(jù)格式做相同的處理或?qū)τ谙嗤臄?shù)據(jù)格式做不同的處理都需要編寫不同的程序, 而且往往不能對(duì)數(shù)據(jù)的安全性進(jìn)行有效的控制。 如果程序進(jìn)行擴(kuò)充或升級(jí), 也需要大量修改函數(shù), 因此結(jié)構(gòu)化程序的可重用性不好。 要使數(shù)據(jù)與程序始終保持兼容, 已成為程序員的一個(gè)沉重的負(fù)擔(dān)。

(2)面向?qū)ο蠓椒?br />   i.開發(fā)過程管理要求高:在面向?qū)ο蠓治鲞^程中,需要多次迭代,開發(fā)過程要經(jīng)過“修改-評(píng)價(jià)-再修改”的多次反復(fù)。

ii.系統(tǒng)復(fù)用性低:面向?qū)ο蠓椒ㄍㄟ^信息隱藏和封裝等手段屏蔽了對(duì)象內(nèi)部的執(zhí)行細(xì)節(jié),控制了錯(cuò)誤的蔓延,但發(fā)生錯(cuò)誤時(shí),定位故障代價(jià)大,對(duì)于需求變化頻繁的系統(tǒng),很難得到一個(gè)高度可復(fù)用的面向?qū)ο筌浖到y(tǒng)設(shè)計(jì)。

iii.開發(fā)人員易將原型取代規(guī)范系統(tǒng)分析:缺乏規(guī)范化的文檔資料,不易于后期維護(hù)。

三、個(gè)人體會(huì)

在用C語言寫時(shí),我需要想的是,我要做什么事情,我需要完成什么功能,自然,完成不同的功能就要用到不同的模塊;而在學(xué)習(xí)JAVA時(shí),我需要思考的是,有幾個(gè)對(duì)象,這個(gè)對(duì)象需要什么屬性,需要完成什么事情,與其他對(duì)象之間又有什么聯(lián)系。

所以在設(shè)計(jì)C語言的結(jié)構(gòu)時(shí),我是這么一層一層,逐漸細(xì)化設(shè)計(jì)的,功能之間是利用數(shù)據(jù)流進(jìn)行聯(lián)系。在真正實(shí)現(xiàn)時(shí),如果發(fā)現(xiàn)哪個(gè)功能還不完善或可以更加細(xì)化時(shí),需要由下往上依次修改子模塊,工作量比較大。

而在設(shè)計(jì)JAVA語言時(shí),我基本是利用UML圖設(shè)計(jì),不存在層次關(guān)系,每個(gè)類就是一個(gè)對(duì)象,類里包括了對(duì)象的屬性和對(duì)象可以做的事情,類之間通過發(fā)送請(qǐng)求來進(jìn)行通信。我感覺實(shí)現(xiàn)起來比C語言更為方便,它的繼承機(jī)制很好地提高了代碼的復(fù)用性,并且在進(jìn)行功能擴(kuò)展時(shí),僅需要設(shè)計(jì)新的對(duì)象,或在對(duì)象原有基礎(chǔ)上進(jìn)行擴(kuò)展。

結(jié)構(gòu)化和面向?qū)ο笫擒浖こ痰某绦蛟O(shè)計(jì)方法中最本質(zhì)的思想方法。結(jié)構(gòu)化編程的基本思想就是把大的程序劃分為若干個(gè)相對(duì)獨(dú)立、功能簡(jiǎn)單的程序模塊,它以過程為中心, 強(qiáng)調(diào)的是過程, 強(qiáng)調(diào)功能和模塊化, 通過一系列過程的調(diào)用和處理完成相應(yīng)的任務(wù)。 面向?qū)ο缶幊桃詫?duì)象為中心, 是對(duì)一系列相關(guān)對(duì)象的操縱, 發(fā)送消息給對(duì)象, 由對(duì)象執(zhí)行相應(yīng)的操作并返回結(jié)果, 強(qiáng)調(diào)的是對(duì)象。 理論上, 面向?qū)ο蟮某绦蛟O(shè)計(jì)方法將產(chǎn)生更好的模塊內(nèi)聚和耦合特性, 使得軟件更易于重用與維護(hù)。在執(zhí)行效率上來說,結(jié)構(gòu)化方法比面向?qū)ο蠓椒óa(chǎn)生的代碼更直接,更高效。從應(yīng)用的范圍看,結(jié)構(gòu)化方法適用于數(shù)據(jù)少而操作多的問題。時(shí)間證明對(duì)于像操作系統(tǒng)這樣的以功能為主的系統(tǒng),結(jié)構(gòu)化方法比較適應(yīng)它。面向?qū)ο蠓椒ㄕ孟喾?#xff0c;對(duì)于數(shù)據(jù)庫,信息管理等以數(shù)據(jù)為主的而操作較少的系統(tǒng),用面向?qū)ο蠓椒枋鲆糜诮Y(jié)構(gòu)化方法。 在實(shí)踐中程序設(shè)計(jì)方法關(guān)注軟件生命周期的各個(gè)環(huán)節(jié), 從需求分析、總體設(shè)計(jì)到編碼、測(cè)試和維護(hù),同時(shí)設(shè)計(jì)方法在各個(gè)階段需要工具和環(huán)境的支撐, 因此在選擇程序設(shè)計(jì)方法時(shí), 需要綜合考慮這些因素。

總結(jié)

以上是生活随笔為你收集整理的软件工程:结构化软件设计方法 VS 面向对象软件设计方法的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。