軟件工程基礎(chǔ)

1 軟件工程基本概念

計(jì)算機(jī)軟件是包括程序、數(shù)據(jù)相關(guān)文檔的完整集合。

軟件的特點(diǎn)包括:

(1)軟件是一種邏輯實(shí)體,具有抽象性;
(2)軟件的生產(chǎn)與硬件不同,它沒(méi)有明顯的制作過(guò)程;
(3)軟件在運(yùn)行、使用期間不存在磨損、老化問(wèn)題;
(4)軟件的開(kāi)發(fā)、運(yùn)行對(duì)計(jì)算機(jī)系統(tǒng)具有依賴(lài)性,受計(jì)算機(jī)系統(tǒng)的限制,這導(dǎo)致了軟件移植的問(wèn)題;
(5)軟件復(fù)雜性高,成本昂貴;
(6)軟件開(kāi)發(fā)涉及諸多的社會(huì)因素。

軟件按功能分為應(yīng)用軟件、系統(tǒng)軟件、支撐軟件(或工具軟件)。

軟件危機(jī)主要表現(xiàn)在成本、質(zhì)量、生產(chǎn)率等問(wèn)題。

軟件工程是應(yīng)用于計(jì)算機(jī)軟件的定義、開(kāi)發(fā)和維護(hù)的一整套方法、工具、文檔、實(shí)踐標(biāo)準(zhǔn)和工序。簡(jiǎn)單的說(shuō)就是使軟件走向工程化。軟件工程的核心思想是把軟件產(chǎn)品看作是一個(gè)工程產(chǎn)品來(lái)處理。

軟件工程包括3個(gè)要素:方法、工具和過(guò)程。

軟件工程過(guò)程是把軟件轉(zhuǎn)化為輸出的一組彼此相關(guān)的資源活動(dòng),包含4種基本活動(dòng):

(1)P(plan)——軟件規(guī)格說(shuō)明;

(2)D(do)——軟件開(kāi)發(fā);

(3)C(check)——軟件確認(rèn);

(4)A(action)——軟件演進(jìn)。

軟件生命周期:軟件產(chǎn)品從提出、實(shí)現(xiàn)、使用維護(hù)到停止使用退役的過(guò)程。

軟件生命周期分三個(gè)階段:軟件定義、軟件開(kāi)發(fā)、運(yùn)行維護(hù),

主要活動(dòng)階段是:

(1)可行性研究與計(jì)劃制定;
(2)需求分析;
(3)軟件設(shè)計(jì)(概要設(shè)計(jì)和詳細(xì)設(shè)計(jì));
(4)軟件實(shí)現(xiàn);
(5)軟件測(cè)試;
(6)運(yùn)行和維護(hù)。

軟件工程的目標(biāo):在給定成本、進(jìn)度的前提下,開(kāi)發(fā)出具有有效性、可靠性、可理解性、可維護(hù)性、可重用性、可適應(yīng)性、可移植性、可追蹤性和可互操作性且滿(mǎn)足用戶(hù)需求的產(chǎn)品。

基本目標(biāo):付出較低的開(kāi)發(fā)成本;達(dá)到要求的軟件功能;取得較好的軟件性能;開(kāi)發(fā)軟件易于移植;需要較低的費(fèi)用;能按時(shí)完成開(kāi)發(fā),及時(shí)交付使用。

軟件工程的理論和技術(shù)性研究的內(nèi)容主要包括:軟件開(kāi)發(fā)技術(shù)和軟件工程管理。



軟件開(kāi)發(fā)技術(shù)包括:軟件開(kāi)發(fā)方法學(xué)、開(kāi)發(fā)過(guò)程、開(kāi)發(fā)工具和軟件工程環(huán)境。

軟件開(kāi)發(fā)環(huán)境或軟件工程環(huán)境是指全面支持軟件開(kāi)發(fā)全過(guò)程的軟件工具的集合。

軟件工程管理包括:軟件管理學(xué)、軟件工程經(jīng)濟(jì)學(xué)、軟件心理學(xué)等內(nèi)容。

軟件管理學(xué)包括人員組織、進(jìn)度安排、質(zhì)量保證、配置管理、項(xiàng)目計(jì)劃等。

軟件工程基本原則:抽象、信息隱蔽、模塊化、局部化、確定性、一致性、完備性和可驗(yàn)證性。

2 結(jié)構(gòu)化分析方法

結(jié)構(gòu)化方法的核心和基礎(chǔ)是結(jié)構(gòu)化程序設(shè)計(jì)理論。

軟件定義階段中,可行性研究與計(jì)劃的制定是確定待開(kāi)發(fā)目標(biāo)和總的要求,給出它的功能、性能、可靠性以及接口等方面的可能方案,制定完成開(kāi)發(fā)的實(shí)施計(jì)劃。需求分析,對(duì)待開(kāi)發(fā)軟件提出的需求分析并給出詳細(xì)的定義。

需求分析階段的工作:需求獲取,需求分析,編寫(xiě)需求規(guī)格說(shuō)明書(shū),需求評(píng)審。

需求分析方法有:

(1) ? ? ?結(jié)構(gòu)化需求分析方法;

①面向數(shù)據(jù)結(jié)構(gòu)的Jackson方法(ISD);

②面向數(shù)據(jù)流的結(jié)構(gòu)化分析方法(SA);

③面向數(shù)據(jù)結(jié)構(gòu)的結(jié)構(gòu)化數(shù)據(jù)系統(tǒng)開(kāi)發(fā)方法(DSSD);

(2)面向?qū)ο蟮姆治龅姆椒ǎ∣OA)。

從需求分析建立的模型的特性來(lái)分:靜態(tài)分析和動(dòng)態(tài)分析。

結(jié)構(gòu)化分析方法的實(shí)質(zhì):著眼于數(shù)據(jù)流,自頂向下,逐層分解,建立系統(tǒng)的處理流程,以數(shù)據(jù)流圖和數(shù)據(jù)字典為主要工具,建立系統(tǒng)的邏輯模型。

結(jié)構(gòu)化分析的常用工具:數(shù)據(jù)流圖;數(shù)據(jù)字典;判定樹(shù);判定表。

(1)數(shù)據(jù)流圖(DFD圖):描述數(shù)據(jù)處理過(guò)程的工具,是需求理解的邏輯模型的圖形表示,它直接支持系統(tǒng)功能建模。

①加工(轉(zhuǎn)換)——圓框,輸入數(shù)據(jù)經(jīng)加工變換產(chǎn)生的輸出。

②數(shù)據(jù)流——箭頭,沿箭頭方向傳遞數(shù)據(jù)的通道,一般在旁邊標(biāo)注數(shù)據(jù)流名。

③存儲(chǔ)文件(數(shù)據(jù)源)——雙橫線(xiàn),表示處理過(guò)程中存放各種數(shù)據(jù)的文件。

④源、潭——方框,表示系統(tǒng)和環(huán)境的接口,屬系統(tǒng)之外的實(shí)體。

(2)數(shù)據(jù)字典:對(duì)所有與系統(tǒng)相關(guān)的數(shù)據(jù)元素的一個(gè)有組織的列表,以及精確的、嚴(yán)格的定義,使得用戶(hù)和系統(tǒng)分析員對(duì)于輸入、輸出、存儲(chǔ)成分和中間計(jì)算結(jié)果有共同的理解。

數(shù)據(jù)字典是結(jié)構(gòu)化分析的核心。

(3)判定樹(shù):從問(wèn)題定義的文字描述中分清哪些是判定的條件,哪些是判定的結(jié)論,根據(jù)描述材料中的連接詞找出判定條件之間的從屬關(guān)系、并列關(guān)系、選擇關(guān)系,根據(jù)它們構(gòu)造判定樹(shù)。

(4)判定表:與判定樹(shù)相似,當(dāng)數(shù)據(jù)流圖中的加工要依賴(lài)于多個(gè)邏輯條件的取值,即完成該加工的一組動(dòng)作是由于某一組條件取值的組合而引發(fā)的,使用判定表描述比較適宜。

軟件需求規(guī)格說(shuō)明書(shū)的特點(diǎn):①正確性; ②無(wú)岐義性; ③完整性; ④可驗(yàn)證性;

⑤一致性; ⑥可理解性; ⑦可修改性; ⑧可追蹤性。

3 結(jié)構(gòu)化設(shè)計(jì)方法

軟件設(shè)計(jì)是確定系統(tǒng)的物理模型。

軟件設(shè)計(jì)是開(kāi)發(fā)階段最重要的步驟,是將需求準(zhǔn)確地轉(zhuǎn)化為完整的軟件產(chǎn)品或系統(tǒng)的唯一途徑。系統(tǒng)設(shè)計(jì)人員和程序設(shè)計(jì)人員應(yīng)該在反復(fù)理解軟件需求的基礎(chǔ)上,給出軟件結(jié)構(gòu)、模塊的劃分、功能的分配以及處理流程。

軟件設(shè)計(jì)的基本目標(biāo)是用比較抽象概括的方式確定目標(biāo)系統(tǒng)如何完成預(yù)定的任務(wù)。

從技術(shù)觀(guān)點(diǎn)來(lái)看,軟件設(shè)計(jì)包括軟件結(jié)構(gòu)設(shè)計(jì)、數(shù)據(jù)設(shè)計(jì)、接口設(shè)計(jì)、過(guò)程設(shè)計(jì)。

①結(jié)構(gòu)設(shè)計(jì):定義軟件系統(tǒng)各主要部件之間的關(guān)系。

②數(shù)據(jù)設(shè)計(jì):將分析時(shí)創(chuàng)建的模型轉(zhuǎn)化為數(shù)據(jù)結(jié)構(gòu)的定義。

③接口設(shè)計(jì):描述軟件內(nèi)部、軟件和協(xié)作系統(tǒng)之間以及軟件與人之間如何通信。

④過(guò)程設(shè)計(jì):把系統(tǒng)結(jié)構(gòu)部件轉(zhuǎn)換成軟件的過(guò)程描述。

從工程管理角度來(lái)看,軟件設(shè)計(jì)分兩步:概要設(shè)計(jì)和詳細(xì)設(shè)計(jì)。

軟件設(shè)計(jì)的一般過(guò)程:軟件設(shè)計(jì)是一個(gè)迭代的過(guò)程;先進(jìn)行高層次的結(jié)構(gòu)設(shè)計(jì);后進(jìn)行低層次的過(guò)程設(shè)計(jì);穿插進(jìn)行數(shù)據(jù)設(shè)計(jì)和接口設(shè)計(jì)。

軟件設(shè)計(jì)的基本原理是:(1)抽象; (2)模塊化; (3)信息隱蔽; (4)模塊獨(dú)立性。



衡量軟件模塊獨(dú)立性使用耦合性內(nèi)聚性兩個(gè)定性的度量標(biāo)準(zhǔn)。

耦合性是模塊見(jiàn)相互連接的緊密程度的度量。耦合程度取決于各個(gè)模塊之間接口的復(fù)雜程度、調(diào)用方式以及哪些信息通過(guò)接口。

內(nèi)聚性是一個(gè)模塊內(nèi)部各個(gè)元素間彼此結(jié)合的緊密程度的度量。

在程序結(jié)構(gòu)中各模塊的內(nèi)聚性越強(qiáng),則耦合性越弱。優(yōu)秀軟件應(yīng)高內(nèi)聚,低耦合,有利于提高模塊的獨(dú)立性。

軟件概要設(shè)計(jì)的基本任務(wù)是:

(1)設(shè)計(jì)軟件系統(tǒng)結(jié)構(gòu);(2)數(shù)據(jù)結(jié)構(gòu)及數(shù)據(jù)庫(kù)設(shè)計(jì);(3)編寫(xiě)概要設(shè)計(jì)文檔;(4)概要設(shè)計(jì)文檔評(píng)審。

在結(jié)構(gòu)圖中,模塊用一個(gè)矩形表示,箭頭表示模塊間的調(diào)用關(guān)系。

可以用帶注釋的箭頭表示模塊調(diào)用過(guò)程中來(lái)回傳遞的信息。

還可用帶實(shí)心圓的箭頭表示傳遞的是控制信息,空心圓箭心表示傳遞的是數(shù)據(jù)。

結(jié)構(gòu)圖的基本形式:基本形式、順序形式、重復(fù)形式、選擇形式。

結(jié)構(gòu)圖有四種模塊類(lèi)型:傳入模塊、傳出模塊、變換模塊和協(xié)調(diào)模塊。

典型的數(shù)據(jù)流類(lèi)型有兩種:變換型和事務(wù)型。

變換型系統(tǒng)結(jié)構(gòu)圖由輸入、中心變換、輸出三部分組成。

事務(wù)型數(shù)據(jù)流的特點(diǎn)是:接受一項(xiàng)事務(wù),根據(jù)事務(wù)處理的特點(diǎn)和性質(zhì),選擇分派一個(gè)適當(dāng)?shù)奶幚韱卧?,然后給出結(jié)果。

詳細(xì)設(shè)計(jì):是為軟件結(jié)構(gòu)圖中的每一個(gè)模塊確定實(shí)現(xiàn)算法和局部數(shù)據(jù)結(jié)構(gòu),用某種選定的表達(dá)工具表示算法和數(shù)據(jù)結(jié)構(gòu)的細(xì)節(jié)。

常見(jiàn)的過(guò)程設(shè)計(jì)工具有:

圖形工具(程序流程圖(PFD)、N-S圖、 PAD圖、),表格工具(判定表),語(yǔ)言工具(PDL)。

程序流程圖中:箭頭為控制流、方框?yàn)榧庸げ襟E、菱形為邏輯條件。

4 軟件測(cè)試

軟件測(cè)試定義:使用人工或自動(dòng)手段來(lái)運(yùn)行或測(cè)定某個(gè)系統(tǒng)的過(guò)程,其目的在于檢驗(yàn)它是否滿(mǎn)足規(guī)定的需求或是弄清預(yù)期結(jié)果與實(shí)際結(jié)果之間的差別。

軟件測(cè)試的目的:發(fā)現(xiàn)錯(cuò)誤而執(zhí)行程序的過(guò)程。

軟件測(cè)試方法:靜態(tài)測(cè)試和動(dòng)態(tài)測(cè)試。

靜態(tài)測(cè)試包括代碼檢查、靜態(tài)結(jié)構(gòu)分析、代碼質(zhì)量度量。不實(shí)際運(yùn)行軟件,主要通過(guò)人工進(jìn)行。

動(dòng)態(tài)測(cè)試:是基本計(jì)算機(jī)的測(cè)試,主要包括白盒測(cè)試方法和黑盒測(cè)試方法。

白盒測(cè)試:也稱(chēng)結(jié)構(gòu)測(cè)試或邏輯測(cè)試。在程序內(nèi)部進(jìn)行,主要用于完成軟件內(nèi)部操作的驗(yàn)證。白盒測(cè)試主要考慮內(nèi)部的邏輯結(jié)構(gòu)。主要方法有邏輯覆蓋、基本路徑測(cè)試。

黑盒測(cè)試:也稱(chēng)功能測(cè)試或數(shù)據(jù)驅(qū)動(dòng)測(cè)試。是在軟件接口處進(jìn)行,完成功能驗(yàn)證。黑盒測(cè)試完全不考慮程序內(nèi)部的邏輯結(jié)構(gòu)和內(nèi)部特性,只依據(jù)程序的需求和功能規(guī)格說(shuō)明,檢查程序的功能是否符合它的設(shè)計(jì)要求。主要診斷功能不對(duì)或遺漏、界面錯(cuò)誤、數(shù)據(jù)結(jié)構(gòu)或外部數(shù)據(jù)庫(kù)訪(fǎng)問(wèn)錯(cuò)誤、性能錯(cuò)誤、初始化和終止條件錯(cuò),用于軟件確認(rèn)測(cè)試。主要方法有等價(jià)類(lèi)劃分法、邊界值分析法、錯(cuò)誤推測(cè)法、因果圖等。

驅(qū)動(dòng)測(cè)試相當(dāng)于被測(cè)模塊的主程序,它接收測(cè)試數(shù)據(jù),并傳給被測(cè)模塊,輸出實(shí)際測(cè)試結(jié)果。

軟件測(cè)試過(guò)程一般按4個(gè)步驟進(jìn)行:

單元測(cè)試、集成測(cè)試、驗(yàn)收測(cè)試(確認(rèn)測(cè)試)和系統(tǒng)測(cè)試。

單元測(cè)試是對(duì)模塊(程序單元)進(jìn)行,靜態(tài)動(dòng)態(tài)均有,動(dòng)態(tài)時(shí)以白盒為主輔之以黑盒。

集成測(cè)試是測(cè)試、組裝軟件。

確認(rèn)測(cè)試的任務(wù)是驗(yàn)證軟件的功能和性能及其他特性是否滿(mǎn)足了需求規(guī)格說(shuō)明中的各項(xiàng)需求以及軟件配置是否完全正確,先用黑盒。

5 程序的調(diào)試

程序調(diào)試的任務(wù)是診斷和改正程序中的錯(cuò)誤,主要在開(kāi)發(fā)階段進(jìn)行。

程序調(diào)試的基本步驟:

(1)錯(cuò)誤定位;
(2)修改設(shè)計(jì)和代碼,以排除錯(cuò)誤;
(3)進(jìn)行回歸測(cè)試,防止引進(jìn)新的錯(cuò)誤。

軟件調(diào)試可分為靜態(tài)調(diào)試和動(dòng)態(tài)調(diào)試。靜態(tài)調(diào)試主要是指通過(guò)人的思維來(lái)分析源程序代碼和排錯(cuò),是主要的設(shè)計(jì)手段,而動(dòng)態(tài)調(diào)試是輔助靜態(tài)調(diào)試。

主要調(diào)試方法有:

(1)強(qiáng)行排錯(cuò)法; 
(2)回溯法; 
(3)原因排除法。
?
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀(guān)點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 230,106評(píng)論 6 542
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 99,441評(píng)論 3 429
  • 文/潘曉璐 我一進(jìn)店門(mén),熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人,你說(shuō)我怎么就攤上這事。” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 178,211評(píng)論 0 383
  • 文/不壞的土叔 我叫張陵,是天一觀(guān)的道長(zhǎng)。 經(jīng)常有香客問(wèn)我,道長(zhǎng),這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 63,736評(píng)論 1 317
  • 正文 為了忘掉前任,我火速辦了婚禮,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 72,475評(píng)論 6 412
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 55,834評(píng)論 1 328
  • 那天,我揣著相機(jī)與錄音,去河邊找鬼。 笑死,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,829評(píng)論 3 446
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 43,009評(píng)論 0 290
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 49,559評(píng)論 1 335
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 41,306評(píng)論 3 358
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 43,516評(píng)論 1 374
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 39,038評(píng)論 5 363
  • 正文 年R本政府宣布,位于F島的核電站,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 44,728評(píng)論 3 348
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 35,132評(píng)論 0 28
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 36,443評(píng)論 1 295
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 52,249評(píng)論 3 399
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 48,484評(píng)論 2 379

推薦閱讀更多精彩內(nèi)容