軟件工程的目標(biāo)是:在給定成本、進(jìn)度的前提下,開發(fā)出具有適用性、有效性、可修改性、可靠性、可理解性、可維護(hù)性、可重用性、可移植性、可追蹤性、可互操作性和滿足用戶需求的軟件產(chǎn)品。追求這些目標(biāo)有助于提高軟件產(chǎn)品的質(zhì)量和開發(fā)效率,減少維護(hù)的困難。
一、軟件開發(fā)方法
????????1、結(jié)構(gòu)化法
? ??????????????即面向過程的開發(fā)方法。其基本思想是“自上而下,逐步求精”,把一個(gè)復(fù)雜的系統(tǒng)拆分,化繁為簡,形成一個(gè)個(gè)的構(gòu)件。其講究的是用戶至上,系統(tǒng)開發(fā)過程工程化、文檔化、以及標(biāo)準(zhǔn)化。嚴(yán)格的區(qū)分來工作階段,每個(gè)階段都有明確的任務(wù)和應(yīng)得額成果。
????????2、面向?qū)ο蠓椒?/p>
? ??????????????面向?qū)ο蟮拈_發(fā)方法是自底而上的,主要表現(xiàn)為和現(xiàn)實(shí)事物結(jié)合起來,把世間萬物抽象出來,形成一個(gè)個(gè)的抽象對象。相比結(jié)構(gòu)化法有更好的復(fù)用性,分析、設(shè)計(jì)、實(shí)現(xiàn)三個(gè)階段界限不明確,其關(guān)鍵點(diǎn)在于建立一個(gè)全面的、合理的、統(tǒng)一的模型。
????????3、面向服務(wù)方法
? ??????????????面向服務(wù)方法是面向?qū)ο蠓ǚǖ难由臁F浞?wù)建模又分為服務(wù)發(fā)現(xiàn)(分析)、服務(wù)規(guī)約(約定規(guī)范)、和服務(wù)實(shí)現(xiàn)(具體實(shí)現(xiàn))三個(gè)階段。
????????????????SO方法主要有三個(gè)級別(操作、服務(wù)、業(yè)務(wù)流程);
????????????????SOAD分為三個(gè)層次:基礎(chǔ)設(shè)計(jì)層(底層的構(gòu)建)、應(yīng)用服務(wù)層(服務(wù)之間的接口和服務(wù)級的協(xié)調(diào))、業(yè)務(wù)組織層(業(yè)務(wù)流程的建模和服務(wù)流程的編排)
????????4、原型法
? ? ? ? ? ? ? ? 4.1、拋棄型原型
? ??????????????????????業(yè)務(wù)做完之后原型就已經(jīng)沒有用處了
? ? ? ? ? ? ? ? 4.2、演變型原型
? ??????????????????????在原來的模型基礎(chǔ)之上逐步修改并一直沿用
二、軟件開發(fā)模型
????????1、瀑布模型
? ??????????????瀑布模型也稱之為生命周期法,是結(jié)構(gòu)方法中最常用的開發(fā)模型,其講究的是從需求獲取到開發(fā)到測試像瀑布樣順流而下。缺點(diǎn)是不靈活比較死板,其適用于需求明確、或二次開發(fā)的場景下使用。
????????2、增量與螺旋模型
? ??????????????增量模型采用隨時(shí)間的線性序列,每一個(gè)線性序列產(chǎn)生一個(gè)可交付的產(chǎn)品,慢慢的迭代以達(dá)到最終的要求。
????????????????螺旋模型分為四個(gè)階段即:制定計(jì)劃、風(fēng)險(xiǎn)分析、實(shí)施工程以及客戶評估。以原型為基礎(chǔ),加上瀑布模型重復(fù)沿著以上幾個(gè)步驟進(jìn)行開發(fā)。
????????3、V模型
? ??????????????V模型是以測試驅(qū)動(dòng)的模型,測試貫穿的整個(gè)始終。
????????4、噴泉模型
? ??????????????噴泉模型主要支持面向?qū)ο蟮拈_發(fā)方法,系統(tǒng)某部分常常重復(fù)工作多次,相關(guān)功能在每次迭代中完善,其主要體現(xiàn)了迭代和無間隙性特征。所謂無間隙指的是在開發(fā)活動(dòng)中,分析、設(shè)計(jì)、和編碼沒有明確的界限。
????????5、快速應(yīng)用開發(fā)(RAD)
? ??????????????RAD是一個(gè)增量型的軟件開發(fā)模型,其強(qiáng)調(diào)的是極短的開發(fā)周期。是瀑布模型的一個(gè)高速變種,通過使用大量的可復(fù)用的構(gòu)件,采用基于構(gòu)件的方法贏得快速開發(fā)
????????6:構(gòu)件組裝模型
? ??????????????構(gòu)件組裝模型指的是在整個(gè)應(yīng)用開發(fā)的過程中,把各個(gè)功能模塊抽取出來組成一個(gè)個(gè)可復(fù)用的構(gòu)件,以便于重復(fù)使用。類似于積木一樣,把整個(gè)構(gòu)件整合起來,形成一個(gè)個(gè)的應(yīng)用系統(tǒng)。
三、統(tǒng)一過程(UP/RUP)
? ??????統(tǒng)一過程又稱為UP、或RUP,是基于構(gòu)件的。統(tǒng)一過程是一個(gè)通用的過程框架,可以用于各種各樣的軟件項(xiàng)目。
????????特點(diǎn):用例驅(qū)動(dòng)、以基本架構(gòu)為中心、迭代和增量。
????????基于UP的軟件過程是一個(gè)迭代的過程,他有四個(gè)階段,分別是:
????????????????a、初始階段:為系統(tǒng)建立業(yè)務(wù)模型并確定項(xiàng)目的邊界;
????????????????b、細(xì)化階段:分析問題領(lǐng)域,建立健全的架構(gòu)基礎(chǔ) 。主要是要完成系統(tǒng)的架構(gòu)。
????????????????c、構(gòu)件階段:開發(fā)剩余的構(gòu)件和應(yīng)用程序功能,形成產(chǎn)品并且進(jìn)行詳細(xì)的測試
????????????????d、交互階段:主要任務(wù)是進(jìn)行β測試(用戶環(huán)境,用戶做的測試)
四、敏捷開發(fā)
? ??????適用于中小型項(xiàng)目,理論上是不適用大型項(xiàng)目。但是在實(shí)際開發(fā)中,往往我們會把大型項(xiàng)目拆分為多個(gè)小型項(xiàng)目,然后使用敏捷開發(fā)方法。
五、逆項(xiàng)工程
? ??????逆向工程講的是把整個(gè)過程逆轉(zhuǎn)過來,一般的用在已有系統(tǒng)的大版本迭代以及重做場景中
六、凈室工程
????????凈室工程是軟件開發(fā)一種形式化方法,可以生成高質(zhì)量的軟件,主要強(qiáng)調(diào)模型的重要性,其目標(biāo)和結(jié)果是非常高低的出錯(cuò)率,這是使用非形式化方法難以實(shí)現(xiàn)或者不能達(dá)到的。