日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

浅谈《软件工程》常用的几种软件开发方法

發(fā)布時(shí)間:2023/12/10 编程问答 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 浅谈《软件工程》常用的几种软件开发方法 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
  • 軟件工程

在上個(gè)世紀(jì)60年代中期爆發(fā)了眾所周知的軟件危機(jī)。為了克服這一危機(jī),在1968、1969年連續(xù)召開的兩次著名的NATO會議上提出了軟件工程這一術(shù)語,并在以后不斷發(fā)展、完善。與此同時(shí),軟件研究人員也在不斷探索新的軟件開發(fā)方法。

  • 軟件開發(fā)方法

目前常用的開發(fā)方法有四種,分別是結(jié)構(gòu)化方法、原型法和面向?qū)ο蠓椒ā=酉聛砦覀儠灰粩⑹鲞@些軟件開發(fā)方法的實(shí)現(xiàn)過程和其中的特點(diǎn)以及優(yōu)缺點(diǎn)。

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

  • 結(jié)構(gòu)化方法:結(jié)構(gòu)化方法是應(yīng)用最為廣泛的一種開發(fā)方法。按照信息系統(tǒng)生命周期,應(yīng)用結(jié)構(gòu)化系統(tǒng)開發(fā)方法,把整個(gè)系統(tǒng)的開發(fā)過程分為若干階段,然后一步一步她依次進(jìn)行,前一階段是后一階段的工作依據(jù);每個(gè)階段又劃分詳細(xì)的工作步驟,順序作業(yè)。

    每個(gè)階段和主要步驟都有明確詳盡的文檔編制要求,各個(gè)階段和各個(gè)步驟的向下轉(zhuǎn)移都是通過建立各自的軟件文檔和對關(guān)鍵階段、步驟進(jìn)行審核和控制實(shí)現(xiàn)的。它是由結(jié)構(gòu)化分析、結(jié)構(gòu)化設(shè)計(jì)和結(jié)構(gòu)化程序設(shè)計(jì)三部分有機(jī)組合而成的。

    它的基本思想:把一個(gè)復(fù)雜問題的求解過程分階段進(jìn)行,而且這種分解是自頂向下,逐層分解,使得每個(gè)階段處理的問題都控制在人們?nèi)菀桌斫夂吞幚淼姆秶鷥?nèi)。以數(shù)據(jù)流圖,數(shù)據(jù)字典,結(jié)構(gòu)化語言,判定表,判定樹等圖形表達(dá)為主要手段,強(qiáng)調(diào)開發(fā)方法的結(jié)構(gòu)合理性和系統(tǒng)的結(jié)構(gòu)合理性的軟件分析方法。結(jié)構(gòu)化方法具有如下特點(diǎn)。

    (1)遵循用戶至上原則。

    (2)嚴(yán)格區(qū)分工作階段,每個(gè)階段有明確的任務(wù)和取得的成果。???

    (3)強(qiáng)調(diào)系統(tǒng)開發(fā)過程的整體性和全局性。???

    (4)系統(tǒng)開發(fā)過程工程化,文檔資料標(biāo)準(zhǔn)化。?

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

    該方法的優(yōu)點(diǎn)是:理論基礎(chǔ)嚴(yán)密,它的指導(dǎo)思想是用戶需求在系統(tǒng)建立之前就能被充分了解和理解。由此可見,結(jié)構(gòu)化方法注重開發(fā)過程的整體性和全局性。

    該方法的缺點(diǎn)是:開發(fā)周期長;文檔、設(shè)計(jì)說明繁瑣,工作效率低;要求在開發(fā)之初全面認(rèn)識系統(tǒng)的信息需求,充分預(yù)料各種可能發(fā)生的變化,但這并不十分現(xiàn)實(shí);若用戶參與系統(tǒng)開發(fā)的積極性沒有充分調(diào)動,造成系統(tǒng)交接過程不平穩(wěn),系統(tǒng)運(yùn)行與維護(hù)管理難度加大。?

    結(jié)構(gòu)化設(shè)計(jì)方法的局限性:

    i.不能直接反映問題域: 結(jié)構(gòu)化分析方法以數(shù)據(jù)流為中心, 強(qiáng)調(diào)數(shù)據(jù)的流動及每一個(gè)處理過程, 不是以問題域中的各事物為基礎(chǔ), 打破了各事物的界限, 分析結(jié)果不能直接反映問題域, 容易隱蔽一些對問題域的理解偏差。

    ii.數(shù)據(jù)和代碼缺乏保護(hù)機(jī)制: 一個(gè)特定全程數(shù)據(jù)既可以被操作這些數(shù)據(jù)的過程訪問, 也可以被其他過程訪問, 這給程序設(shè)計(jì)帶來了不安定因素, 一個(gè)不正常的數(shù)據(jù)修改或者過程調(diào)用可能會破壞正常的程序執(zhí)行流程或結(jié)果。

    iii.分析和設(shè)計(jì)體系不一: 結(jié)構(gòu)化分析的結(jié)果是數(shù)據(jù)流圖, 結(jié)構(gòu)化設(shè)計(jì)的結(jié)果是模塊結(jié)構(gòu)圖。 二者的表示體系不一致, 分析文檔很難與設(shè)計(jì)文檔對應(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ù)的格式。 對于不同的數(shù)據(jù)格式做相同的處理或?qū)τ谙嗤臄?shù)據(jù)格式做不同的處理都需要編寫不同的程序, 而且往往不能對數(shù)據(jù)的安全性進(jìn)行有效的控制。 如果程序進(jìn)行擴(kuò)充或升級, 也需要大量修改函數(shù), 因此結(jié)構(gòu)化程序的可重用性不好。 要使數(shù)據(jù)與程序始終保持兼容, 已成為程序員的一個(gè)沉重的負(fù)擔(dān)。

  • 面向?qū)ο蠓椒?/strong>

  • 面向?qū)ο蠓椒ㄊ且环N運(yùn)用對象、類、封裝、繼承、多態(tài)和消息等概念來構(gòu)造、測試、重構(gòu)軟件的方法。隨著應(yīng)用系統(tǒng)日益復(fù)雜龐大和面向?qū)ο蟪绦蛟O(shè)計(jì)語言的日益成熟,面向?qū)ο蟮南到y(tǒng)開發(fā)方法以其直觀、方便的優(yōu)點(diǎn)獲得廣泛應(yīng)用。?是以認(rèn)識論為基礎(chǔ),用對象來理解和分析問題空間,并設(shè)計(jì)和開發(fā)出由對象構(gòu)成的軟件系統(tǒng)(解空間)的方法。?

    由于問題空間和解空間都是由對象組成的,這樣可以消除由于問題空間和求解空間結(jié)構(gòu)上的不一致帶來的問題。簡言之,面注重軟件開發(fā)中人的作用。?

    面向?qū)ο笤O(shè)計(jì)基本步驟:

    • 根據(jù)概念層類圖,進(jìn)行實(shí)體類設(shè)計(jì)。

    • 設(shè)計(jì)實(shí)體類的操作入口,如管理器類和容器類。

    • 根據(jù)GRASP九大原則,進(jìn)行業(yè)務(wù)邏輯類的設(shè)計(jì)。涉及到活動圖。

    • 用例實(shí)現(xiàn)。一般會涉及到類圖和協(xié)作圖。

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

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

    面向?qū)ο蠓椒ǖ木窒?#xff1a;

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

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

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

    面向?qū)ο蠓椒▽W(xué)的優(yōu)點(diǎn):

    i.與人類習(xí)慣的思維方法一致。

    ii.穩(wěn)定性好。傳統(tǒng)方法所建立起來的軟件系統(tǒng)的結(jié)構(gòu)緊密依賴于系統(tǒng)要完成的功能。當(dāng)功能需求發(fā)生變化時(shí)將引起軟件結(jié)構(gòu)的整體改變。面向?qū)ο蠓椒ɑ跇?gòu)造問題領(lǐng)域的對象模型,以對象為中心構(gòu)造軟件系統(tǒng)。當(dāng)功能需求發(fā)生變化時(shí),往往僅需要一些局部性的修改。

    iii.可重用性好,重用是提高生產(chǎn)效率的最主要的方法。對象是比較理想的模塊和可重用的軟件成分。類重用的方法,創(chuàng)建該類的實(shí)例,派生。

    iiii.較易開發(fā)大型軟件。

    iiiii.可維護(hù)性好面向?qū)ο蟮能浖€(wěn)定性比較好。面向?qū)ο蟮能浖容^容易修改,面向?qū)ο蟮能浖容^容易理解,易于測試和調(diào)試

  • 原型法

  • 原型法的基本思想與結(jié)構(gòu)化方法不同,原型法認(rèn)為在很難一下子全面準(zhǔn)確地提出用戶需求的情況下,首先不要求一定要對系統(tǒng)做全面、詳細(xì)的調(diào)查、分析,而是本著開發(fā)人員對用戶需求的初步理解,先快速開發(fā)一個(gè)原型系統(tǒng),然后通過反復(fù)修改來實(shí)現(xiàn)用戶的最終系統(tǒng)需求。是在投入大量的人力,物力之前,在限定的時(shí)間內(nèi),用最經(jīng)濟(jì)的方法開發(fā)出一個(gè)可實(shí)際運(yùn)行的系統(tǒng)模型,用戶在運(yùn)行使用整個(gè)原型的基礎(chǔ)上,通過對其評價(jià),提出改進(jìn)意見,對原型進(jìn)行修改,統(tǒng)一使用,評價(jià)過程反復(fù)進(jìn)行,使原型逐步完善,直到完全滿足用戶的需求為止。?

    適用范圍:處理過程明確、簡單系統(tǒng);涉及面窄的小型系統(tǒng)不適合于:大型、復(fù)雜系統(tǒng),難以模擬;存在大量運(yùn)算、邏輯性強(qiáng)的處理系統(tǒng);管理基礎(chǔ)工作不完善、處理過程不規(guī)范;大量批處理系統(tǒng)???

    原型應(yīng)當(dāng)具備的特點(diǎn)如下。???

    (1)實(shí)際可行。???

    (2)具有最終系統(tǒng)的基本特征。???

    (3)構(gòu)造方便、快速,造價(jià)低。???

    原型法的特點(diǎn)在于原型法對用戶的需求是動態(tài)響應(yīng)、逐步納入的,系統(tǒng)分析、設(shè)計(jì)與實(shí)現(xiàn)都是隨著對一個(gè)工作模型的不斷修改而同時(shí)完成的,相互之間并無明顯界限,也沒有明確分工。

    系統(tǒng)開發(fā)計(jì)劃就是一個(gè)反復(fù)修改的過程。適于用戶需求開始時(shí)定義不清的系統(tǒng)開發(fā),開發(fā)方法更宜被用戶接受;但如果用戶配合不好,盲目修改,就會拖延開發(fā)過程。?

    • 總結(jié)

    通過對這幾種方法的實(shí)現(xiàn)簡介和它們的優(yōu)缺點(diǎn)介紹,不同的方法適用于不同的軟件開發(fā)。如果說想要找一個(gè)統(tǒng)一的,合適所有軟甲開發(fā)工程的開發(fā)方法,在目前階段是不合適的,因?yàn)槿绻阌迷头ㄈプ龃笮蛙浖?#xff0c;其中的花費(fèi),會拖垮大部分的公司,而且系統(tǒng)的使用大概率的會出現(xiàn)不能正常使用的狀態(tài),所以,開發(fā)軟件用合適的開發(fā)方法,才是軟件開發(fā)人員的主要作用。

    總結(jié)

    以上是生活随笔為你收集整理的浅谈《软件工程》常用的几种软件开发方法的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

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