官术网_书友最值得收藏!

1.2 軟件工程定義

人們對(duì)軟件工程的內(nèi)涵有一個(gè)廣泛討論、研究和認(rèn)識(shí)的過(guò)程,從而對(duì)軟件工程有了各種各樣的定義,例如:

●P.Wegner和B.Boehm將軟件工程定義為:科學(xué)知識(shí)在設(shè)計(jì)和構(gòu)造計(jì)算機(jī)程序,以及開發(fā)、運(yùn)作和維護(hù)這些程序所要求的有關(guān)文檔編制中的實(shí)際應(yīng)用。

●F.L.Bauer認(rèn)為軟件工程可定義為:為了經(jīng)濟(jì)地獲得軟件,這個(gè)軟件是可靠的并且能在實(shí)在的計(jì)算機(jī)上工作,所需要的健全的工程原理(方法)的確立和使用。

●1983年IEEE(國(guó)際電氣與電子工程師協(xié)會(huì))的《軟件工程術(shù)語(yǔ)匯編》中,將軟件工程定義為:對(duì)軟件開發(fā)、運(yùn)作、維護(hù)和退役的系統(tǒng)研究方法。1990年又將定義修改為:對(duì)軟件開發(fā)、運(yùn)作、維護(hù)的系統(tǒng)化的、有紀(jì)律的、可定量的方法的應(yīng)用,即是對(duì)軟件的工程化應(yīng)用。

●《信息技術(shù) 軟件工程術(shù)語(yǔ)》(GB/T 11457—2006)則把軟件工程定義為:應(yīng)用計(jì)算機(jī)科學(xué)理論和技術(shù),以及工程管理原則和方法,按預(yù)算和進(jìn)度,實(shí)現(xiàn)滿足用戶要求的軟件產(chǎn)品的定義、開發(fā)、發(fā)布和維護(hù)的工程或進(jìn)行研究的學(xué)科。

IEEE給出了一個(gè)更全面的軟件工程的定義:軟件工程是:①將系統(tǒng)化的、規(guī)范的、可量化的方法應(yīng)用于軟件的開發(fā)、運(yùn)行和維護(hù),即將工程化方法應(yīng)用于軟件;②對(duì)上面所述方法的研究。

對(duì)于某個(gè)軟件開發(fā)隊(duì)伍來(lái)說(shuō)可能是“系統(tǒng)化的、規(guī)范的、可量化的”方法,對(duì)于另外一個(gè)團(tuán)隊(duì)卻可能是負(fù)擔(dān)。因此,軟件開發(fā)既需要規(guī)范,也需要可適應(yīng)性和靈活性。

1.2.1 軟件工程的內(nèi)容

從以上對(duì)軟件工程的不同定義中可以看到,對(duì)其內(nèi)容的理解是逐步深入的。發(fā)展到今天,軟件工程已是一門交叉性學(xué)科,它是解決軟件問(wèn)題的工程,對(duì)它的理解不應(yīng)是靜止的和孤立的。軟件工程是應(yīng)用計(jì)算機(jī)科學(xué)、數(shù)學(xué)及管理科學(xué)等原理,借鑒傳統(tǒng)工程的原則和方法來(lái)創(chuàng)建軟件,從而達(dá)到提高質(zhì)量、降低成本的目的。其中,計(jì)算機(jī)科學(xué)和數(shù)學(xué)用于構(gòu)造模型、分析算法,工程科學(xué)用于制定規(guī)范、明確風(fēng)格、評(píng)估成本、確定權(quán)衡,管理科學(xué)用于進(jìn)度、資源、質(zhì)量及成本等的管理。

軟件工程是一種層次化的技術(shù)(見圖1-7)。任何工程方法(包括軟件工程)必須構(gòu)建在質(zhì)量承諾的基礎(chǔ)之上。全面質(zhì)量管理、六西格瑪?shù)阮愃频睦砟?,促進(jìn)了不斷的過(guò)程改進(jìn)文化,正是這種文化,最終引導(dǎo)人們開發(fā)更有效的軟件工程方法。支持軟件工程的根基在于質(zhì)量關(guān)注點(diǎn)。

978-7-111-52634-6-Chapter01-7.jpg

圖1-7 軟件工程層次圖

軟件工程的基礎(chǔ)是軟件過(guò)程。軟件過(guò)程將各個(gè)技術(shù)層次結(jié)合在一起,使得合理、及時(shí)地開發(fā)計(jì)算機(jī)軟件成為可能。軟件過(guò)程定義了一個(gè)框架,構(gòu)建該框架是有效實(shí)施軟件工程技術(shù)必不可少的。軟件過(guò)程構(gòu)成了軟件項(xiàng)目管理控制的基礎(chǔ),建立了工作環(huán)境以便應(yīng)用技術(shù)方法、提交工作產(chǎn)品(如模型、文檔、數(shù)據(jù)、報(bào)告和表格等)、建立里程碑、保證質(zhì)量及正確管理變更。

軟件工程方法為構(gòu)建軟件提供技術(shù)上的解決方法(“如何做”)。方法的覆蓋面很廣,包括溝通、需求分析、設(shè)計(jì)建模、編程、測(cè)試和技術(shù)支持。軟件工程工具為過(guò)程和方法提供自動(dòng)化或半自動(dòng)化的支持。這些工具可以集成起來(lái),使得一個(gè)工具產(chǎn)生的信息可被另外一個(gè)工具使用。這樣就建立了軟件開發(fā)的支撐系統(tǒng),稱為計(jì)算機(jī)輔助軟件工程。

1.2.2 軟件工程的基本目標(biāo)和原則

軟件工程的目標(biāo)是明確的,就是研制開發(fā)與生產(chǎn)出具有良好的軟件質(zhì)量和費(fèi)用合算的產(chǎn)品。費(fèi)用合算是指軟件開發(fā)運(yùn)行的整個(gè)開銷能滿足用戶要求的程度,軟件質(zhì)量是指該軟件能滿足明確的和隱含的需求能力的有關(guān)特征和特性的總和。

具體來(lái)說(shuō),軟件工程研究的基本目標(biāo)如下。

1)一種定義良好的方法學(xué),該方法學(xué)是面向包括計(jì)劃、開發(fā)和維護(hù)等階段的軟件生存周期的。

2)一組確定的軟件成分,它對(duì)軟件生存周期的每一步記錄軟件文件資料,并且具有按步顯示軌跡的能力。

3)一組可以預(yù)測(cè)的里程碑,在整個(gè)軟件生存周期中,每隔一段時(shí)間可以對(duì)它們進(jìn)行復(fù)審。

軟件工程方法依賴于一組基本的指導(dǎo)性原則,這些原則涵蓋了軟件工程的所有技術(shù)領(lǐng)域,包括建模和其他描述性技術(shù)等。列舉如下。

●必須認(rèn)識(shí)軟件需求的變動(dòng)性,并采取適當(dāng)措施來(lái)保證結(jié)果產(chǎn)品能忠實(shí)地滿足用戶要求。在軟件設(shè)計(jì)中,通常要考慮模塊化、抽象與信息隱蔽、局部化、一致性等原則。

●穩(wěn)妥的設(shè)計(jì)方法大大地方便了軟件開發(fā),為達(dá)到軟件工程的目標(biāo),軟件工具與環(huán)境對(duì)軟件設(shè)計(jì)的支持來(lái)說(shuō)頗為重要。

●軟件工程項(xiàng)目的質(zhì)量與經(jīng)濟(jì)開銷直接取決于對(duì)它所提供的支撐的質(zhì)量與效用。

●有效的軟件工程只有在對(duì)軟件過(guò)程進(jìn)行有效管理的情況下才能實(shí)現(xiàn)。

為了達(dá)到“以較少的投資獲得易維護(hù)、可靠、高效率和易理解的軟件產(chǎn)品”這個(gè)最終目的,各種軟件工程技術(shù)所遵循的基本原則如下。

1)分解。分解是分析解決復(fù)雜問(wèn)題的重要手段,它的基本思想是將一個(gè)復(fù)雜的問(wèn)題分成若干個(gè)較小的、相對(duì)獨(dú)立的、較易解決的子問(wèn)題,然后分別加以解決。將軟件開發(fā)過(guò)程劃分成幾個(gè)階段、結(jié)構(gòu)化分析方法的分解、結(jié)構(gòu)化設(shè)計(jì)方法和Jackson方法的模塊化等都體現(xiàn)了“分解”的原則。

2)抽象和信息隱蔽。抽象和信息隱蔽也是解決復(fù)雜問(wèn)題的重要手段,它的基本思想是在將復(fù)雜問(wèn)題逐層分解時(shí),將“怎么做”等大量細(xì)節(jié)隱蔽在下一層,從而使上一層突出“做什么”而得到簡(jiǎn)化。這里稱上一層為下一層的抽象。

軟件設(shè)計(jì)中常用的“模塊化”和“局部性”方法就體現(xiàn)了這種抽象和信息隱蔽的原則。

3)一致性。一致性強(qiáng)調(diào)軟件開發(fā)過(guò)程的標(biāo)準(zhǔn)化和統(tǒng)一化,包括軟件文件格式的一致、工作流程的一致等。研究軟件方法的目的之一,就是使開發(fā)過(guò)程走上標(biāo)準(zhǔn)化的軌道。

4)確定性。確定性要求軟件開發(fā)過(guò)程中用確定的形式將一些較含糊的概念表達(dá)出來(lái)。如用數(shù)據(jù)流程圖來(lái)精確地表達(dá)用戶需求,用易維護(hù)性、可靠性、易理解性和高效率等指標(biāo)來(lái)具體度量軟件的質(zhì)量等。確定性也是保證軟件質(zhì)量的前提。

但是,在具體項(xiàng)目的實(shí)際開發(fā)中,讓幾個(gè)目標(biāo)都達(dá)到理想的程度往往是非常困難的,而且有些目標(biāo)很可能還是互相沖突的。例如,若只顧降低開發(fā)成本,很可能同時(shí)也降低了軟件的可靠性;另一方面,如果過(guò)于追求提高軟件的性能,可能造成所開發(fā)軟件對(duì)硬件有較大的依賴,從而直接影響到軟件的可移植性等。

圖1-8表明了軟件工程目標(biāo)之間存在的相互關(guān)系,其中有些目標(biāo)之間是互補(bǔ)關(guān)系,如易于維護(hù)和高可靠性之間、低開發(fā)成本與按時(shí)交付之間,還有一些目標(biāo)則是彼此相斥的。

978-7-111-52634-6-Chapter01-8.jpg

圖1-8 軟件工程目標(biāo)之間的關(guān)系

1.2.3 軟件工程與一般工程的差異

軟件工程是一門交叉性學(xué)科,又是工程學(xué)科家族中的新成員,在幾十年的發(fā)展過(guò)程中,已經(jīng)形成了其特有的形態(tài)。雖然軟件產(chǎn)品在某些方面類似于其他工程中的有形產(chǎn)品,如橋梁、建筑物、機(jī)床和計(jì)算機(jī)等,但是它們之間也確有一些重要的差別,不能簡(jiǎn)單地把一般工程方面的知識(shí)、方法和技術(shù)直接應(yīng)用到軟件工程上來(lái)。

軟件工程與一般工程的差別主要表現(xiàn)在以下幾個(gè)方面。

1)軟件是邏輯產(chǎn)品而不是實(shí)物產(chǎn)品,磁盤和集成電路只是軟件的載體,這就意味著費(fèi)用集中在研制開發(fā)上而不是生產(chǎn)上。當(dāng)然,由于是邏輯產(chǎn)品,軟件就不會(huì)用壞、磨損和老化,而且可以不斷地改進(jìn)、優(yōu)化,其可靠性由邏輯性確定。開發(fā)軟件在許多方面更像進(jìn)行數(shù)學(xué)證明,但是,軟件產(chǎn)品的評(píng)價(jià)卻主要取決于它們?cè)趩?wèn)題求解中是否有用,而不是取決于抽象的正確性判定標(biāo)準(zhǔn)。換句話說(shuō),開發(fā)軟件產(chǎn)品時(shí)主要使用的是工程標(biāo)準(zhǔn),而不是數(shù)學(xué)標(biāo)準(zhǔn)。

2)由于軟件是邏輯產(chǎn)品,使得它的功能只能依賴于硬件和軟件的運(yùn)行環(huán)境以及人們對(duì)它的操作才能得以體現(xiàn)。沒(méi)有計(jì)算機(jī)及其相關(guān)硬件的支持,軟件難以實(shí)現(xiàn)其實(shí)用價(jià)值。同樣,沒(méi)有軟件支持的計(jì)算機(jī)硬件,也只是毫無(wú)使用價(jià)值的機(jī)器。軟件與硬件的密切相關(guān)的程度是一般工程所沒(méi)有的。

3)對(duì)軟件產(chǎn)品的要求比一般有形產(chǎn)品要復(fù)雜。其一,軟件產(chǎn)品要完成的多種多樣功能,用戶難以清晰、準(zhǔn)確地表達(dá)。僅此一項(xiàng),軟件系統(tǒng)的復(fù)雜性可以比得上任何一個(gè)工程項(xiàng)目。其二,對(duì)軟件產(chǎn)品的要求,如可靠性、易移植性和易使用性等是隱含的,也是難以表達(dá)的,而且也缺少度量的具體標(biāo)準(zhǔn),與有形產(chǎn)品的質(zhì)量檢驗(yàn)的精度相距甚遠(yuǎn)。其三,軟件設(shè)計(jì)不僅涉及技術(shù)復(fù)雜性,還涉及管理復(fù)雜性。即使在今天軟件工程已有很大進(jìn)展的情況下,領(lǐng)導(dǎo)一個(gè)龐大的項(xiàng)目組,能像其他工程項(xiàng)目那樣進(jìn)行規(guī)?;a(chǎn)也絕非易事。

4)軟件工程是智力密集型產(chǎn)業(yè),因此,它的知識(shí)產(chǎn)權(quán)保護(hù)就顯得極為重要。

主站蜘蛛池模板: 巨野县| 平塘县| 隆子县| 元阳县| 烟台市| 澄江县| 镇宁| 嵊州市| 顺平县| 江安县| 蒙阴县| 饶阳县| 栾城县| 襄汾县| 方城县| 清新县| 东山县| 田阳县| 凤城市| 怀柔区| 保山市| 临猗县| 澎湖县| 桐城市| 鄂州市| 黄石市| 金川县| 陇西县| 晋中市| 沛县| 阿克苏市| 英超| 青浦区| 建始县| 巧家县| 会宁县| 芒康县| 安新县| 镇坪县| 大厂| 白水县|