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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

软件工程基础知识

發(fā)布時間:2023/12/14 编程问答 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 软件工程基础知识 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

一.軟件危機?
(1)概念:軟件危機是指在計算機軟件開發(fā)、使用與維護過程中遇到的一系列嚴重問題和難題。?
(2)產(chǎn)生軟件危機的原因主要有:?
①軟件的規(guī)模越來越大,結構越來越復雜?
②軟件開發(fā)管理困難而復雜?
③軟件開發(fā)費用不斷增加?
④軟件開發(fā)技術落后?
⑤生產(chǎn)方式落后?
⑥開發(fā)工具落后,生產(chǎn)率提高緩慢?
(3)軟件危機的表現(xiàn)有:?
①經(jīng)費預算經(jīng)常突破,完成時間一再拖延?
②開發(fā)的軟件不能滿足用戶需求?
③開發(fā)的軟件可靠性差?
④開發(fā)的軟件可維護性差?
二.軟件工程?
(1)概念?
軟件工程是指用工程、科學和數(shù)學的原則與方法開發(fā)、維護計算機軟件的有關技術和管理方法。?
(2)軟件工程的三要素?
方法、過程、工具?
三.常見的軟件開發(fā)模型?
(1)原型模型?
a.適用場合?
原型模型適合于那些不能預先確切定義需求的軟件系統(tǒng)的開發(fā),更適合于那些項目組成員(包括分析員、設計員、程序員和用戶)不能很好交流或通信有困難的情況。?
b.特點?
及早提供工作軟件?
(2)瀑布模型?
a.定義?
將軟件生存周期各個活動規(guī)定為依線性順序連接的若干階段的模型,又稱為生存周期模型。?
b.適用場合?
瀑布模型一般適用于功能、性能明確、完整、無重大變化的軟件系統(tǒng)的開發(fā)。例如操作系統(tǒng)、編譯系統(tǒng)、數(shù)據(jù)庫管理系統(tǒng)等系統(tǒng)軟件的開發(fā)。?
c.特點?
文檔驅動、線性?
d.缺點?
1)在軟件開發(fā)的初期階段就要求做出正確、全面、完整的需求分析,這對許多應用軟件來說是極其困難的?
2)在需求分析階段,當需求確定后,無法及時驗證需求是否正確、完整?
3)不支持產(chǎn)品的演化,缺乏靈活性,使軟件產(chǎn)品難以維護?
(3)螺旋模型?
a.定義?
是一種將瀑布模型和快速原型模型結合起來的軟件開發(fā)模型?
b.適用場合?
螺旋模型支持需求不明確、特別是大型軟件系統(tǒng)的開發(fā),并支持面向規(guī)格說明、面向過程、面向對象等多種軟件開發(fā)方法,是一種具有廣闊前景的模型?
c.特點?
支持用戶需求的動態(tài)變化、風險分析?
(4)增量模型?
a.定義?
分成多個子系統(tǒng)進行開發(fā),最后集成起來?
(5)噴泉模型?
a.定義?
噴泉模型是一種以面向對象的軟件開發(fā)方法為基礎,以用戶的需求為動力,以對象來驅動的模型?
四.結構化分析方法(SA)?
(1)概念?
結構化分析方法是面向數(shù)據(jù)流進行需求分析的方法。結構化分析方法使用數(shù)據(jù)流圖DFD與數(shù)據(jù)字典DD來描述,面向數(shù)據(jù)流問題的需求分析適合于數(shù)據(jù)處理類型軟件的需求描述。其核心思想是自頂向下、逐層分解。?
(2)常見的工具?
2.1 數(shù)據(jù)字典【DD】?
a.包括的條目?
數(shù)據(jù)流+數(shù)據(jù)存儲+加工說明+數(shù)據(jù)項(一般不包含源點與終點)?
b.定義?
數(shù)據(jù)字典是系統(tǒng)描述工具中的數(shù)據(jù)的工具,是對數(shù)據(jù)定義信息的集合,其所定義的對象都包含于數(shù)據(jù)流圖。?
2.2 數(shù)據(jù)流圖【DFD】?
a.定義?
數(shù)據(jù)流圖是SA方法中用于表示系統(tǒng)邏輯模型的一種工具,以圖形的方式描繪數(shù)據(jù)在系統(tǒng)中流動和處理的過程,反映系統(tǒng)必須完成的邏輯功能,是一種功能模型。?
b.四種符號元素

符號含義
方框源點與終點
箭頭數(shù)據(jù)流
圓/橢圓加工
雙杠數(shù)據(jù)存儲

(3)數(shù)據(jù)字典+數(shù)據(jù)流圖=系統(tǒng)的邏輯模型?
五.結構化設計方法(SD)?
(1)定義?
結構化設計要解決的任務,就是在需求分析的基礎上,將DFD圖映射為軟件系統(tǒng)的結構。換句話說,這類設計方法允許把用DFD圖表示的系統(tǒng)邏輯模型方便地轉換成對于軟件結構的初始設計描述。?
從結構化分析到結構化設計工具的轉變:

結構化分析結果結構化設計結果
數(shù)據(jù)流圖的信息程序結構的設計描述

(2)一般分為兩個階段?
總體設計(概要設計)+詳細設計?
(3)基本要點?
(1)采用自頂向下,逐步求精的程序設計方法。?
(2)使用三種基本控制結構構造程序,分別是順序,選擇和循環(huán)?
(3)采用主程序員制的組織形式。?
(4)采用單入口單出口的模塊形式。?
六.軟件生存周期?
①軟件定義過程:可行性研究+需求分析?
②軟件開發(fā)過程:設計(概要設計、詳細設計)+實施(編碼+單元測試)+測試(集成測試+確認測試)?
③軟件使用與維護過程:使用與維護+退役?
七.概要設計 VS 詳細設計

概要設計詳細設計
又稱結構設計(總體設計)又稱過程設計(模塊設計)
軟件需求——>軟件表示模塊功能——>精確的、結構化的過程描述
數(shù)據(jù)庫的”邏輯設計”數(shù)據(jù)庫的”物理設計”
任務是確定每個模塊的功能和接口,數(shù)據(jù)結構和數(shù)據(jù)庫設計,編寫概要設計文檔,以及評審任務是確定每個模塊的內部特性(具體執(zhí)行過程),即模塊的算法和數(shù)據(jù)庫的物理設計
采用的工具:圖形(程序流程圖、盒圖,即N-S圖、PAD圖)、表格(判定表)、語言(過程設計語言,即PDL)

八.軟件測試?
(1)概念?
軟件測試指為了發(fā)現(xiàn)軟件中的錯誤而執(zhí)行軟件的過程。它的目標是盡可能多地發(fā)現(xiàn)軟件中存在的錯誤,將測試結果作為糾錯的依據(jù)。?
(2)目的?
① 軟件測試是為了發(fā)現(xiàn)錯誤而執(zhí)行程序的過程。?
② 一個好的測試用例能夠發(fā)現(xiàn)至今尚未發(fā)現(xiàn)的錯誤。?
③ 一個成功的測試是發(fā)現(xiàn)了至今尚未發(fā)現(xiàn)的錯誤。?
(注:軟件調試的目的則是改正錯誤。)?
(3)階段?
【注:由于系統(tǒng)測試實際上超出了軟件工程的范疇,故這里沒有詳細說明。】

階段順序單元測試集成測試確認測試系統(tǒng)測試
測試方法白盒測試漸增式測試(包括:自頂向下結合法,自底向上結合法)+非漸增式測試黑盒測試?
發(fā)現(xiàn)錯誤的階段編碼階段設計階段需求分析階段?
涉及的文檔編碼和詳細設計文檔詳細設計文檔和概要設計文檔需求規(guī)格說明書和用戶手冊?

(4)方法?
a.黑盒測試——把測試對象看成一個黑盒子,只在軟件的接口處進行測試,依據(jù)需求規(guī)格說明書,檢查程序是否滿足功能要求,又稱為功能測試或數(shù)據(jù)驅動測試。?
測試手段:等價類劃分、邊界值分析、錯誤推測法、因果圖?
b.白盒測試——把測試對象看成一個透明的盒子,對程序中的邏輯路徑進行測試,檢查內部控制結構和數(shù)據(jù)結構是否有錯,實際的運行狀態(tài)與預期的狀態(tài)是否一致。?
測試手段:邏輯覆蓋(語句覆蓋,判定覆蓋,條件覆蓋,判定條件覆蓋,條件組合覆蓋,路徑覆蓋)、基本路徑測試、循環(huán)覆蓋?
九.模塊獨立性?
模塊獨立性是軟件設計的基本原則之一,其他的幾個分別是:模塊化,抽象,信息隱藏。模塊獨立指每個模塊只完成系統(tǒng)要求的獨立的子功能,并且與其他模塊的聯(lián)系最少且接口簡單。衡量模塊獨立性有兩個標準——耦合性和內聚性,模塊劃分時應做到高內聚,低耦合,從而提高模塊的獨立性。?
①內聚?
模塊之間聯(lián)系越緊密,其內聚性越強。?
②耦合?
模塊的耦合性由低到高依次是:?
非直接耦合(不傳遞任何信息),數(shù)據(jù)耦合(傳遞數(shù)據(jù)值),標記耦合(傳遞數(shù)據(jù)結構),控制耦合(傳遞控制變量),外部耦合,公共耦合,內容耦合。?
一般來說,在傳遞信息類型上盡量使用數(shù)據(jù)耦合,避免控制耦合,慎用或有控制地使用公共耦合。?
十.其他知識點?
【N-S圖】?
START?
a?
IF x1 THEN?
REPEAT UNTIL x2?
b?
END REPEAT?
ELSE?
BLOCK?
C?
D?
END BLOCK?
END IF?
STOP?

偽碼?
START?
S1?
if(x>5);?
else S2;?
i:=1;?
DO S3,i:=i+i;?
while i<3?
if(y<0) S4;?
else S5;?
END?
?
【PAD圖】?
畫出下面用PDL寫出的程序的PAD圖。?
WHILE P DO?
IF A >O THEN A1 ELSE A2 ENDIF;?
S1;?
IF B>0 THEN B1;?
WHILE C DO S2;S3 ENDWHILE;?
ELSE B2?
ENDIF;?
B3?
ENDWHILE;?

【數(shù)據(jù)流圖】?
用SA方法畫出下列問題的頂層和0層數(shù)據(jù)流圖。?
某運動會管理系統(tǒng)接受來自運動員的報名單、裁判的比賽項目及項目成績,產(chǎn)生運動員號碼單發(fā)送給運動員,項目參加者發(fā)送給裁判,單項名次、團體名次發(fā)送給發(fā)布臺。該系統(tǒng)有兩部分功能:?
(1)登記報名單:接受報名單、比賽項目,產(chǎn)生運動員號碼單、項目參加者,形成運動員名單及團體成績表兩種數(shù)據(jù)存儲。?
(2)統(tǒng)計成績:接受項目成績,查詢運動員名單,產(chǎn)生單項名次,填寫團體成績,最后產(chǎn)生團體名次。?

【面向對象方法較之結構化方法的優(yōu)越性】?
(1)面向對象方法更符合人的思維方式,更容易抓住問題的主干;?
(2)所開發(fā)出的軟件更符合“高內聚,低耦合”的軟件設計原則,因此其模塊的獨立性更強;?
(3)更適合于開發(fā)大型的軟件,更適合于快速原型法開發(fā)方法,使軟件生產(chǎn)率大大提高;?
(4)使用面向對象技術開發(fā)出的軟件,其可測試性和可維護性都較強;?
(5)面向對象方法和技術能夠貫徹軟件開發(fā)的全過程,從分析、設計、編碼到測試維護,采用面向對象的方法不存在語義斷層,使人的思維保持連貫,減少各階段之間的不相融性;?
(6)使得軟件的可重用性大幅度提高。

總結

以上是生活随笔為你收集整理的软件工程基础知识的全部內容,希望文章能夠幫你解決所遇到的問題。

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