第一篇:軟件工程考核知識點-第8章-軟件維護
軟件工程考核知識點-第8章-軟件維護
第8章 軟件維護
軟件投入使用后就進入軟件維護階段。維護階段是軟件生存周期中時間最長的一個階段,所花費的精力和費用也是最多的一個階段。8.1軟件維護的內(nèi)容
軟件維護內(nèi)容有四種:校正性維護,適應(yīng)性維護,完善性維護和預防性維護。
1.校正性維護
在軟件交付使用后,由于在軟件開發(fā)過程中產(chǎn)生的錯誤并沒有完全徹底的在測試中發(fā)現(xiàn),因此必然有一部分隱含的錯誤被帶到維護階段來。這些隱含的錯誤在某些特定的使用環(huán)境下會暴露出來。為了識別和糾正錯誤,修改軟件性能上的缺陷,應(yīng)進行確定和修改錯誤的過程,這個過程就稱為校正性維護。校正性維護占整個維護工作的20%左右。
2.適應(yīng)性維護
隨著計算機的飛速發(fā)展,計算機硬件和軟件環(huán)境也在不斷發(fā)生變化,數(shù)據(jù)環(huán)境也在不斷發(fā)生變化。為了使應(yīng)用軟件適應(yīng)這種而修改軟件的過程稱為適應(yīng)性維護。這種維護活動占整個維護活動的25%。
3.完善性維護
在軟件漫長的運行時期中,用戶往往會對軟件提出新的功能要求與性能要求。這是因為用戶的業(yè)務(wù)會發(fā)生變化,組織機構(gòu)也會發(fā)生變化。為了適應(yīng)這些變化,應(yīng)用軟件原來的功能和性能需要擴充和增強,為達到這個目的而進行的維護活動稱為完善性維護,占整個維護活動的50%。
4.預防性維護
為了提高軟件的可維護性和可靠性而對軟件進行的修改稱為預防性維護。這是為以后進一步的運行和維護打好基礎(chǔ),占整個維護工作的4%。8.2 維護的特點
8.2.1非結(jié)構(gòu)化維護和結(jié)構(gòu)化維護
軟件的開發(fā)過程對軟件的維護過程有較大的影響。若不采用軟件過程的方法開發(fā)軟件,則軟件只有程序而無文檔,維護工作非常難,這就是一種非結(jié)構(gòu)化的維護。若采用軟件工程的方法開發(fā)軟件,則各階段都有相應(yīng)的文檔,這容易進行維護工作,這是一種結(jié)構(gòu)化的維護。1.非結(jié)構(gòu)化維護
因為只有源程序,而文檔很少或沒有文檔,維護活動只能從閱讀、理解、分析源程序開始。這是軟件工程時代以前進行維護的情況。2.結(jié)構(gòu)化維護
用軟件工程思想開發(fā)的軟件具有各階段的文檔,這對于理解和掌握軟件功能、性能、系統(tǒng)結(jié)構(gòu)、數(shù)據(jù)結(jié)構(gòu)、系統(tǒng)接口和設(shè)計約束有很大作用。這種維護對減少精力、減少花費、提高軟件維護效率有很大的作用。8.2.2維護的困難性
軟件維護的困難性是由于軟件需求分析和開發(fā)方法的缺陷。軟件生存周期中的開發(fā)階段沒有嚴格而又科學的管理和規(guī)劃,就會引起軟件運行時的維護困難。表現(xiàn)在以下幾個方面: 1.讀懂別人的程序是困難的。2.文檔的不一致性。
由于開發(fā)過程中文檔管理不嚴所造成的,在開發(fā)過程中經(jīng)常會出現(xiàn)修改程序卻遺忘了修改與其相關(guān)的文檔,使得文檔前后不一致。3.軟件開發(fā)和軟件維護在人員和時間上的差異
由于維護階段持續(xù)時間很長,正在運行的軟件可能是十幾、二十年前開發(fā)的,開發(fā)工具、方法、技術(shù)與當前的工具、方法、技術(shù)差異很大,這又是維護困難的另一因素。4.軟件維護不是一項吸引人的事
由于維護工作的困難性,維護工作經(jīng)常遭受挫折,而且很難出成果,不像軟件開發(fā)工作那樣吸引人。
8.2.3軟件維護的費用
軟件維護的費用在總費用中的比重是不斷增加的。七十年代占35%~40%,八十年代上升到40%~60%,九十年代上升到70%~80%。軟件維護費用不斷上升,這只是軟件維護有形的代價,無形的代價是要占用更多的資源,并在維護時對軟件的改動,引入了潛在的故障,從而降低了軟件的質(zhì)量。用于軟件維護工作的活動可分為生產(chǎn)性活動和非生產(chǎn)性活動兩種。生產(chǎn)性活動包括分析評價、修改設(shè)計和編寫程序代碼等。非生產(chǎn)性活動包括理解程序代碼功能、解釋數(shù)據(jù)結(jié)構(gòu)接口特點和設(shè)計約束。
維護活動總的工作兩由下式表示:M=P+K×exp(C-D)
其中:M表示維護工作的總工作量;
P表示生產(chǎn)性活動工作量;
K表示經(jīng)驗常數(shù);
C表示復雜性程度;
D表示維護人員對軟件的熟悉程度;
上式表明,若C越大,D越小,那么維護工作量將成指數(shù)增加;C增加表示軟件因未用軟件工程方法開發(fā),從而使得軟件為非結(jié)構(gòu)化設(shè)計,文檔缺少,程序復雜性高。D表示維護人員不是原來的開發(fā)人員,對軟件熟悉程度低,重新理解軟件花費很多時間。8.3維護任務(wù)的實施 8.3.1維護的組織
為了有效地進行軟件維護,應(yīng)事先開始組織工作,建立維護機構(gòu)。這種維護機構(gòu)通常以維護小組形式出現(xiàn)。維護小組分為臨時維護小組和長期維護小組。8.3.2維護的流程
軟件維護的流程如下:
(1)制定維護申請報告。
(2)審查申請報告并批準。
(3)進行維護并做詳細記錄。
(4)復審。1.制定維護申請報告
所有軟件維護申請報告應(yīng)按照規(guī)定的方式提出。該報告也稱為軟件問題報告。它是維護階段的一種文檔,由申請維護的用戶填寫。維護申請報告是一種由用戶產(chǎn)生的文檔,在軟件維護組織內(nèi)部還要制定一份軟件修改報告,該報告是維護階段的另一種文檔。
提出維護申請報告之后,由維護機構(gòu)來評審維護請求。評審工作很重要,通過評審回答要不要維護,從而可以避免盲目的維護。2.維護過程
一個維護申請?zhí)岢鲋?,?jīng)評審需要維護則按下列過程實施維護:
(1)首先確定要進行維護的類型。
(2)對校正性維護從評價錯誤的嚴重性開始。
(3)對適應(yīng)性維護和完善性維護。
(4)實施維護任務(wù)。不管維護類型如何,大體上要開展相同的技術(shù)工作。這些工作包括修改軟件設(shè)計、必要的代碼修改、單元測試、集成測試、確認測試以及復審。每種維護類型的側(cè)重點不一樣。
(5)“救火”維護。在發(fā)生重大問題時,需要立即解決的問題。
3.維護的復審
在維護任務(wù)完成后,要對維護任務(wù)進行復審。8.3.3維護技術(shù)
有兩類維護技術(shù),它們是面向維護的技術(shù)和維護支援技術(shù)。
1.面向維護的技術(shù)
面向維護的技術(shù)涉及軟件開發(fā)的所有階段。
2.維護支援技術(shù)
維護支援技術(shù)包括下列方面的技術(shù):
.信息收集;
.錯誤原因分析;
.維護方案評價;
.軟件分析與理解;
.代碼與文檔修改;
.修改后的確認;
.遠距離的維護; 8.3.4維護的副作用 維護的目的是為了延長軟件的壽命并讓創(chuàng)造更多的價值,經(jīng)過一段時間的維護,軟件中的錯誤減少了,功能增強了。但修改軟件會造成軟件的錯誤,這種因修改軟件而造成的錯誤或其他不希望出現(xiàn)的情況稱為維護的副作用。
維護的副作用有編碼副作用、數(shù)據(jù)副作用、文檔副作用三種。
1.編碼副作用
在使用程序設(shè)計語言修改源代碼時可能引入錯誤。
2.數(shù)據(jù)副作用
在修改數(shù)據(jù)結(jié)構(gòu)時,有可能造成軟件設(shè)計與數(shù)據(jù)結(jié)構(gòu)不匹配,因而導致軟件錯誤。
3.文檔副作用
對數(shù)據(jù)流、軟件結(jié)構(gòu)、模塊邏輯或任何其他有關(guān)特性進行修改時,必須對相關(guān)技術(shù)文檔進行相應(yīng)修改,否則會導致文檔與程序功能不匹配、缺省條件改變、新錯誤信息不正確等錯誤,使文檔不能反映軟件當前的狀態(tài)。
【大 中
8.4 軟件可維護性
軟件的維護是十分困難的,為了使軟件能易于維護,必須考慮使軟件具有可維護性。8.4.1可維護性定義
軟件可維護性的定義:軟件能夠被理解、校正、適應(yīng)及增強功能的容易程度。
軟件的可維護性、可使用性、可靠性是衡量軟件質(zhì)量的幾個主要特性,也是用戶十分關(guān)心的幾個問題。
軟件的可維護性是軟件開發(fā)階段的關(guān)鍵目標。影響軟件可維護性的因素較多,設(shè)計、編碼及測試中的疏忽和低劣的軟件配置,缺少文檔等都對軟件的可維護性產(chǎn)生不良影響。軟件可維護性可用下面七個質(zhì)量特性來衡量,即可理解性、可測試性、可修改性、可靠性、可移植性、可使用性和效率。對于不同類型的維護,這七種特性的側(cè)重點也是不相同。8.4.2可維護性的度量
目前有若干對軟件可維護性進行綜合度量的方法,但要對可維護性作出定量度量還是困難的。還沒有一種方法能夠使用計算機對軟件的可維護性進行綜合性的定量評價。
下面是度量一個可維護的軟件的七種特性時常采用的方法,即質(zhì)量檢查表、質(zhì)量測試、質(zhì)量標準。
質(zhì)量檢查表是用于測試程序中某些質(zhì)量特性是否存在的一個問題清單。
質(zhì)量測試與質(zhì)量標準則用于定量分析和評價程序的質(zhì)量。由于許多質(zhì)量特性是相互抵觸的,要考慮幾種不同的度量標準去度量不同的質(zhì)量特性。8.4.3提高可維護性的方法
從下面五個方面來闡述如何提高軟件的可維護性:
1.建立明確的軟件質(zhì)量目標
如果要程序滿足可維護性七個特性的全部要求,那么要付出很大的代價,甚至是不現(xiàn)實的,但有些可維護性是相互促進的,因此要明確軟件所追求的質(zhì)量目標。
2.使用先進的軟件開發(fā)技術(shù)和工具 利用先進的軟件開發(fā)技術(shù)能大大提高軟件質(zhì)量和減少軟件費用。面向?qū)ο蟮能浖_發(fā)方法就是一個非常實用而強有力的軟件開發(fā)方法,用面向?qū)ο蠓椒ㄩ_發(fā)出來的軟件系統(tǒng),穩(wěn)定性好,比較容易修改,比較容易理解,易于測試和調(diào)試,因此,可維護性好。
3.建立明確的質(zhì)量保證
質(zhì)量保證是指為提高軟件質(zhì)量所做的各種檢查工作。質(zhì)量保證檢查是非常有效的方法,不僅在軟件開發(fā)的各階段中得到了廣泛應(yīng)用,而且在軟件維護中也是一個非常主要的工具。為了保證可維護性,以下四類檢查是非常有用的:
(1)在檢查點進行檢查。
(2)驗收檢查。
(3)周期性的維護檢查。(4)對軟件包的檢查。
4.選擇可維護的語言
程序設(shè)計語言的選擇對維護影響很大。低級語言很難掌握,很難理解,因而很難維護。一般來說,高級語言比低級語言更容易理解,第四代語言更容易理解,容易編程,程序容易修改,改進了可維護性。
5.改進程序的文檔
程序文檔是對程序功能、程序各組成部分之間的關(guān)系、程序設(shè)計策略、程序?qū)崿F(xiàn)過程的歷史數(shù)據(jù)等的說明和補充。程序文檔對提高程序的可閱讀性有重要作用。為了維護程序,人們必須閱讀和理解程序文檔。
一、名詞解釋
1.校正性維護
2.適應(yīng)性維護 3.完善性維護
4.預防性維護
5.軟件可維護性 6.軟件維護的副作用
二、填空題
1.維護階段是軟件生存周期中時間最長的階段,也是花費精力和費用________的階段。2.在軟件交付使用后,由于在軟件開發(fā)過程中產(chǎn)生的錯誤沒有完全徹底在開發(fā)階段發(fā)現(xiàn),必然有一部分隱含錯誤帶到_________階段。
3.采用手工方法開發(fā)軟件只有程序而無文檔,維護困難,這是一種___________維護。4.軟件維護費用增加的主要原因是維護的_________非常低。5.軟件維護工作的活動分為生產(chǎn)性活動和__________活動。
6.所有軟件維護申請報告要按規(guī)定方式提出,該報告也稱_________報告。
7.有兩類維護技術(shù):在開發(fā)階段使用來減少錯誤,提高軟件可維護性的面向維護技術(shù);在維護階段用來提高維護的效率和質(zhì)量的_______技術(shù)。
三、選擇題
1.在生存周期中,時間長、費用高、困難大的階段是()。A.需求分析 B.編碼 C.測試 D.維護 2.為適應(yīng)軟硬件環(huán)境變化而修改軟件的過程是()。
A.校正性維護 B.適應(yīng)性維護 C.完善性維護 D.預防性維護 3.軟件維護困難的主要原因是()。
A.費用低 B.人員少 C.開發(fā)方法的缺陷 D.維護難 4.軟件維護費用高的主要原因是()。
A.生產(chǎn)率高 B.生產(chǎn)率低 C.人員多 D.人員少 5.維護階段的文檔是()。
A.軟件需求說明 B.操作手冊 C.軟件問題報告 D.測試分析報告 6.產(chǎn)生軟件維護的副作用,是指()。
A.開發(fā)時的錯誤 B.隱含的錯誤 C.因修改軟件而造成的錯誤 D.運行時誤操作 7.維護中,因誤刪除一個標識符而引起的錯誤是()副作用。A.文檔 B.數(shù)據(jù) C.編碼 D.設(shè)計 8.可維護性的特性中相互促進的是()。
A.可理解性和可測試性 B.效率和可移植性 C.效率和可修改性 D.效率和結(jié)構(gòu)好 9.可維護性的特性中,相互矛盾的是()。
A.可修改性和可理解性
B.可測試性和可理解性 C.效率和可修改性 D.可理解性和可讀性
四、簡答題
1.軟件維護有哪些類型? 2.軟件維護的特點是什么? 3.軟件維護的流程是什么? 4.軟維護的副作用有哪些?
5.可維護性度量的質(zhì)量特性有哪些? 6.提高可維護性有哪些方法? 參考答案
二、填空題
1.最多 2.維護 3.非結(jié)構(gòu)化 4.生產(chǎn)率 5.非生產(chǎn)性 6.軟件問題 7.維護支援
三、選擇題
1.D 2.B 3.C 4.B 5.C 6.C 7.C 8.A 9.C
第二篇:軟件工程知識點
第一章
軟件工程概述
一、軟件的定義和特性
(P2—P3)定義:軟件=程序+數(shù)據(jù)+文檔
程序:按照事先設(shè)計的功能和性能要求執(zhí)行的指令或語句序列
數(shù)據(jù):程序能正常操縱信息的數(shù)據(jù)結(jié)構(gòu)
文檔:描述程序操作和使用的文檔 特性:
(1)軟件是一種邏輯實體,具有抽象性,不是一般的物理實體;
(2)軟件的成產(chǎn)與硬件存在某些相同點,但有根本上的不同,軟件開發(fā)是人的智力的高度發(fā)揮,而不是傳統(tǒng)意義上的制造,它更依賴于開發(fā)人員的素質(zhì),智力,人員和組合,合作和管理;
(3)軟件維護與硬件維修有著本質(zhì)的差別,軟件維護沒有硬件維護那樣有可替換的標準零件;(4)軟件在運行和使用期間沒有硬件那樣的機械磨損,老化問題,但存在退化問題;
(5)基于構(gòu)件的開發(fā)方法由于其自身的特點越來越受到人們的重視,這些技術(shù)可以減少開發(fā)時間、提高質(zhì)量,并提高復用水平。
* 掌握P4圖1-2(b)軟件失效率曲線
二、計算機軟件的發(fā)展經(jīng)歷了幾個階段?各有何特征?(P1—P2)
共經(jīng)歷了四個階段
特征:第一階段——程序規(guī)模小且主要采用個體工作方式,開發(fā)的系統(tǒng)大多采用批處理技術(shù)
第二階段——引入人機交互的概念,實時系統(tǒng)出現(xiàn),產(chǎn)生了第一代數(shù)據(jù)庫管理系統(tǒng),程序編制采用了合作的工作方式,出現(xiàn)了早期的軟件危機
第三階段——分布式系統(tǒng)出現(xiàn),嵌入式系統(tǒng)得到廣泛應(yīng)用,低成本硬件
第四階段——強大的桌面系統(tǒng)和計算機網(wǎng)絡(luò)迅速發(fā)展時期,面向?qū)ο蠹夹g(shù)得到廣泛應(yīng)用,人工智能技術(shù)和專家系統(tǒng)開始應(yīng)用于軟件。
三、什么是軟件危機?其產(chǎn)生的原因是什么?
定義:軟件危機是指由于落后的軟件生產(chǎn)方式無法滿足迅速增長的計算機軟件應(yīng)用需求,從而導致軟件開發(fā)與維護過程中出現(xiàn)一系列嚴重問題的現(xiàn)象。(P4)原因:(P5)
(1)用戶對軟件需求的描述不準確、不全面,甚至有錯誤,以及在開發(fā)過程中,不斷提出或者修改需求;(2)用戶和開發(fā)人員對軟件需求的理解存在差異,導致所開發(fā)的軟件產(chǎn)品和用戶需求不一致;
(3)大型軟件項目需要組織一定的人力共同完成,各類人員的信息交流不及時、不準確,有時還可能產(chǎn)生誤解,軟件開發(fā)人員對大型軟件缺少開發(fā)經(jīng)驗,管理人員缺少相應(yīng)的管理經(jīng)驗;
(4)軟件開發(fā)人員不能有、獨立自主的處理大型軟件的全部關(guān)系和各個分支,因此容易產(chǎn)生疏漏和錯誤;
(5)開發(fā)技術(shù)落后,缺乏有效的方法學和工具方面的支持,過分依賴程序設(shè)計人員在軟件開發(fā)過程中的技巧和創(chuàng)造性,加劇軟件產(chǎn)品的個性化
(6)軟件產(chǎn)品的特殊性和人類智力的局限性,導致人們無法處理“復雜問題”,因為軟件是邏輯產(chǎn)品,軟件開發(fā)進展情況較難衡量、軟件開發(fā)質(zhì)量難以評價、管理和控制軟件開發(fā)過程相當困難。
四、什么是軟件工程?它的目標和內(nèi)容是什么?
定義:將系統(tǒng)化的、規(guī)范的、可度量的方法應(yīng)用于軟件的開發(fā)、運行和維護的過程,即將工程化應(yīng)用于軟件中,并對方法的研究。(P6)
目標:在給定的成本和進度前提下,開發(fā)出具有可修改性、可理解性、可維護性、有效性、可靠性、可適用性、可重用性、可移植性、可跟蹤性和互操作性并且滿足用戶需求的軟件產(chǎn)品。(P7)
內(nèi)容:主要內(nèi)容包括軟件開發(fā)技術(shù)和軟件工程管理兩方面。(P6)
要素:方法,工具,過程
五、什么是軟件生存周期?它有哪幾個活動?
定義:(software life cycle)把軟件產(chǎn)品從形成概念開始,經(jīng)過定義、開發(fā)、使用和維護直到最后退役的全過程。
活動:軟件定義、軟件開發(fā)、軟件使用維護和退役(P9)
六、什么是軟件生存周期模型?它有哪些主要模型?
定義:又稱為軟件開發(fā)模型,軟件過程模型,它清晰直觀地反映了軟件開發(fā)的全部過程、所涉及的活動和任務(wù)結(jié)構(gòu)框架,并指出了開發(fā)了開發(fā)各階段的關(guān)系、開發(fā)活動的銜接情況。
主要模型:瀑布模型(waterfall model),原型(prototype)模型,螺旋(the spiral)模型,增量(incremental)模型,噴泉(fountain)模型,迭代(iterative)模型
七、簡述有哪些主要的軟件開發(fā)方法?(P22)
結(jié)構(gòu)化方法:也稱為生命周期方法或傳統(tǒng)方法,由結(jié)構(gòu)化分析(structured analysis)、結(jié)構(gòu)化設(shè)計(SD)、結(jié)構(gòu)化編程(SP)三部分有機組合而成。其基本思想是自頂向下,逐步求精,基本原則是抽象和分解。
面向?qū)ο蠓椒ǎ∣bject—Oriented Method):把面向?qū)ο蟮乃枷霊?yīng)用于軟件開發(fā)過程中,指導開發(fā)活動的系統(tǒng)方法,簡稱OO。包括面相對象分析(OOA)、面向?qū)ο笤O(shè)計(OOD)、面向?qū)ο蟮某绦蛟O(shè)計(OOP)等過程。
八、軟件生命期各階段的任務(wù)是什么?(P10)
軟件定義:問題定義,系統(tǒng)的可行性研究,需求分析
軟件開發(fā):概要設(shè)計,詳細設(shè)計,編碼實踐,軟件測試
軟件使用維護和退役:軟件發(fā)布與實施,軟件維護,版本更新或退役
九、簡述瀑布模型(P12)、原型模型特點。
瀑布模型:軟件開發(fā)的各項活動嚴格按照線性方式進行,各階段之間具有順序性和依賴性,且為了保證軟件的開發(fā)質(zhì)量進行階段性評審。缺點是逆轉(zhuǎn)性差,若在評審中發(fā)現(xiàn)缺陷或錯誤往回追溯修正時要付出一定的代價。適合在軟件需求明確且很少發(fā)生變化、開發(fā)技術(shù)比較成熟、工程管理比較嚴格地場合使用。
原型模型:有助于用戶和軟件分析員雙方相互學習對方領(lǐng)域知識,使得用戶和開發(fā)人員統(tǒng)一對軟件需求的認識,理解,有助于需求的定義評審,從而有助于提高開發(fā)速度。缺點是用戶對原型沒有正確認識,會催促開發(fā)人員盡早交付軟件,同時也在一定程度上限制了軟件開發(fā)人員的創(chuàng)新。(P14)
第二章
軟件需求基礎(chǔ)
一、試述軟件需求、需求分析、需求建模概念的含義及區(qū)別。
軟件需求:指用戶對目標軟件系統(tǒng)在功能、性能、行為、涉及約束等方面的期望,這種期望可能是原始的、籠統(tǒng)的,也可能是抽象的太細節(jié)化的。(P26)
需求分析:通過對應(yīng)用問題及其環(huán)境的分析與理解,采用一系列的分析方法和技術(shù),將用戶的需求逐步精確化、完全化、一致化,最終形成需求規(guī)格說明文檔的過程。(P26)
需求建模:需求建模是為了更好的理解用戶所描述的需求所作出的一種抽象,是用符號語言對事務(wù)無歧義的書面描述。模型主要包括數(shù)據(jù)模型,功能模型和行為模型。(P38)
二、可行性研究的任務(wù)是什么?(P31)
用最小的代價在盡可能短的時間內(nèi)確定該軟件項目是否能夠開發(fā),是否值得去開發(fā)。
三、成本—效益分析可用哪些指標進行度量?(P32)
成本效益分析是衡量經(jīng)濟可行性的。
指標:(1)貨幣的時間價值。(2)投資回收期(3)純收入
四、需求分析階段的基本任務(wù)是什么?(P27)
任務(wù):深入描述軟件的功能和性能,確定軟件設(shè)計的限制和軟件同其他系統(tǒng)元素的接口細節(jié),定義軟件的其他有效性需求。
五、簡述需求分析階段的過程。(P36)
1.問題識別
2.分析與綜合3.編制需求分析階段的文檔
4.需求驗證
六、常用的初步軟件需求獲取的方法有哪些?為什么要用這些方法來進行需求獲?。浚≒33)
方法: 1.訪談與會議
2.觀察用戶工作流程
3.建立聯(lián)合小組
4.其他獲取方法:快速原型法,基于本體的需求獲取方法
原因:分析人員和用戶的共同知識領(lǐng)域可能不多,致使分析人員對問題往往知之不多,而用戶對目標軟件的要求及對要求的描述常常是零亂而模糊地,從而會造成相互交流和互相理解上的困難。
七、在軟件需求分析時,應(yīng)首先建立當前系統(tǒng)的物理模型,在根據(jù)物理模型盡力當前系統(tǒng)的邏輯模型。試問:什么是當前系統(tǒng)?當前系統(tǒng)的物理模型與邏輯模型有什么差別?(P28)
當前系統(tǒng):可能是需要改進的某個已在計算機運行的數(shù)據(jù)處理系統(tǒng),也可能是一個人工的數(shù)據(jù)處理過程。
物理模型是確定待開發(fā)軟件系統(tǒng)的系統(tǒng)元素,并將功能和數(shù)據(jù)結(jié)構(gòu)分配到這些系統(tǒng)元素中,它是軟件實現(xiàn)的基礎(chǔ)。邏輯模型忽視實現(xiàn)機制與細節(jié),只描述系統(tǒng)要完成的功能和要處理的數(shù)據(jù)。
邏輯模型是在物理模型的基礎(chǔ)上去掉一些非本質(zhì)因素形成的,它反應(yīng)的是系統(tǒng)的本質(zhì)。
第三章
軟件設(shè)計基礎(chǔ)
一、什么是軟件概要設(shè)計?該階段的基本任務(wù)是什么?
定義:設(shè)計人員依據(jù)軟件需求規(guī)格說明文檔,確定軟件的體系結(jié)構(gòu),建立軟件模塊間的關(guān)系,定義個功能模塊的接口,設(shè)計全局數(shù)據(jù)庫或數(shù)據(jù)結(jié)構(gòu),規(guī)定設(shè)計約束,指定組裝測試計劃。
任務(wù):將軟件需求轉(zhuǎn)化為軟件的系統(tǒng)結(jié)構(gòu)和數(shù)據(jù)結(jié)構(gòu)(P49)
*力爭做到功能模塊之間有比較低的耦合度而功能模塊內(nèi)部有較高的內(nèi)聚度。
二、詳細設(shè)計的基本任務(wù)是什么?有哪幾種描述方法?
任務(wù):通過對軟件結(jié)構(gòu)細化,得到軟件的詳細的算法和數(shù)據(jù)結(jié)構(gòu)。(P49)
描述方法:(過程設(shè)計)程序流程圖
盒圖(N-S圖)
問題分析圖(PAD圖)
判定表和判定樹
過程設(shè)計語言(PDL)(P77)
三、軟件設(shè)計的基本原理包括哪些內(nèi)容?(P51)
抽象與逐步求精、模塊化、信息隱蔽、模塊獨立
四、衡量模塊獨立性的兩個標準時什么?各表示什么含義?
標準:內(nèi)聚和耦合
含義:內(nèi)聚(cohesion)——衡量一個模塊內(nèi)部各個元素彼此結(jié)合的緊密程度
耦合(coupling)——衡量不同模塊之間的相對獨立性(互相連接的緊密程度)
五、模塊的耦合性有哪幾種?各表示什么含義?
種類:非直接耦合——兩個模塊之間沒有直接關(guān)系,他們中任何一個都不依賴于另一個而能獨立工作
數(shù)據(jù)耦合——一模塊訪問另一模塊,相互傳遞的信息已參數(shù)形式給出,并且傳遞的參數(shù)完全是簡單數(shù)據(jù)元素,而不是控制元素、公共數(shù)據(jù)結(jié)構(gòu)和外部變量。
標記耦合——兩模塊之間都要使用同一數(shù)據(jù)結(jié)構(gòu)的一部分,不是采用全程公共數(shù)據(jù)區(qū)共享,而是通過模塊接口界面?zhèn)鬟f數(shù)據(jù)結(jié)構(gòu)的一部分。
控制耦合——一模塊傳遞給另一模塊的參數(shù)中包含了控制信息(開關(guān),標記,名字等),該控制信息勇于控制接收模塊中的執(zhí)行邏輯。
外部耦合——一組模塊都訪問同一全局簡單變量而不是同一全局數(shù)據(jù)結(jié)構(gòu),而且不是通過參數(shù)表傳遞該全局變量信息。
公共耦合——一組模塊都訪問同一個公共數(shù)據(jù)環(huán)境
內(nèi)容耦合——一模塊直接訪問另一模塊的內(nèi)部數(shù)據(jù);一個模塊不通過正常入口轉(zhuǎn)到另一模塊內(nèi)部;兩個模塊有一部分程序代碼重迭(只出現(xiàn)在匯編程序中);一個模塊有多個入口。
*從上到下耦合性從低到高,獨立性從高到底
六、模塊的內(nèi)聚有哪幾種?各表示什么含義?
種類:巧合內(nèi)聚(偶然內(nèi)聚)——將幾個模塊中沒有明確表現(xiàn)出獨立功能的相同程序代碼段獨立出來建立的模塊
邏輯內(nèi)聚——完成一組在邏輯上相關(guān)的任務(wù)的模塊間具有邏輯內(nèi)聚
時間內(nèi)聚(經(jīng)典內(nèi)聚)——完成幾個必須在同一時間內(nèi)進行的任務(wù)的模塊間具有時間內(nèi)聚
過程內(nèi)聚——一個模塊完成多個任務(wù),這些任務(wù)必須按指定的過程執(zhí)行。把流程圖中的某一部分劃出組成模塊就得到過程內(nèi)聚模塊
通信內(nèi)聚——一個模塊內(nèi)所有成分都使用同一輸入數(shù)據(jù)或產(chǎn)生同一輸出數(shù)據(jù),即一個模塊內(nèi)所有處理元素都集中在某個數(shù)據(jù)結(jié)構(gòu)的一塊區(qū)域中的模塊具有通信內(nèi)聚
信息內(nèi)聚——一個模塊內(nèi)完成多個功能,各個功能都在同一數(shù)據(jù)結(jié)構(gòu)上操作,每一項功能有一個唯一的入口點
七、結(jié)構(gòu)化程序設(shè)計的基本要點是什么?
結(jié)構(gòu)化程序設(shè)計是盡可能少用GOTO語句的程序設(shè)計方法。最好僅在檢測出錯誤時才使用GOTO語句,而且應(yīng)該總是使用前句GOTO語句。
第四章 結(jié)構(gòu)化分析與設(shè)計
一、什么是結(jié)構(gòu)化分析方法?該方法使用什么描述工具?(P85—P86)
定義:結(jié)構(gòu)化分析方法是一種利用自頂向下逐層分解、由粗到細、由復雜到簡單技術(shù)的求解方法。
工具:數(shù)據(jù)流圖(DFD 實體—關(guān)系圖(E-R)數(shù)據(jù)字典(DD)描述基本加工小說明(Process SPECification)
二、什么是數(shù)據(jù)流圖?其作用是什么?其中的基本符號各表示什么含義?(P87)
定義:數(shù)據(jù)流圖是描述數(shù)據(jù)加工處理過程的有效工具。它標識了一個系統(tǒng)的邏輯輸入和邏輯輸出,以及把邏輯輸入轉(zhuǎn)換邏輯輸出所需的加工處理。
作用:主要描述系統(tǒng)的功能,即當前系統(tǒng)主要完成哪些功能。
基本符號:箭頭——數(shù)據(jù)流
圓或橢圓——加工(變換)
雙杠或單杠——數(shù)據(jù)
矩形框——外部實體
三、什么是數(shù)據(jù)字典?其作用是什么?共有哪些條目?(P94)
定義:數(shù)據(jù)字典是對所有與系統(tǒng)相關(guān)的數(shù)據(jù)元素的一個有組織的列表,以及精確地、嚴格地定義了每一個與系統(tǒng)相關(guān)的數(shù)據(jù)元素,并以字典式順序?qū)⑺鼈兘M織起來,使得用戶和分析員對所有的輸入、輸出、存儲成分和中間計算有共同的理解。
作用:對系統(tǒng)所有的數(shù)據(jù)進行描述和解釋并進行管理。條目:數(shù)據(jù)項條目、數(shù)據(jù)流條目、數(shù)據(jù)庫文件條目(P96)
四、簡述如何畫分層數(shù)據(jù)流圖,對分層數(shù)據(jù)流圖的審查由哪些審查要點?(P88 P92)
畫法:首先,把整個系統(tǒng)看成一個加工作為頂層數(shù)據(jù)流圖(0層);然后,逐層對大的加工進行分解,分解為更小的自加工;最后,直到所有的加工都成為基本加工(不需要再分解,足夠簡單可以直接解決的加工)為止。
審查:
1、數(shù)據(jù)流圖和程序流程圖的混淆
2、父圖和子圖的平衡問題
3、局部文件問題
4、分解的深度與層次
五、什么樣是“事物流”?什么事“變換流”?試將相應(yīng)形式的數(shù)據(jù)流圖轉(zhuǎn)換為軟件結(jié)構(gòu)圖。(P104)
事物流——數(shù)據(jù)沿傳入路徑到系統(tǒng),由外部形式變換為內(nèi)部形式后到達事務(wù)中心(完成分派任務(wù)),事務(wù)中心根據(jù)數(shù)據(jù)項計值結(jié)果從若干動作路徑中選定一條繼續(xù)執(zhí)行。(事務(wù)中心)
變換流——信息以“外部世界”所具有的形式進入系統(tǒng),經(jīng)處理后又以這種形式離開系統(tǒng)。包括傳入路徑,變換中心,傳出路徑三部分。(變換中心)步驟:(1)對結(jié)構(gòu)化分析階段產(chǎn)生的DFD圖進行復審;
(2)確定數(shù)據(jù)流圖的類型
(3)按照SD方法所規(guī)定的一組映射規(guī)則,把DFD圖轉(zhuǎn)換為初始SC圖
六、試述“變換分析”、“事務(wù)分析”設(shè)計步驟。(P106—P108)
變換分析:第一步——劃分DFD圖的邊界,也就是將DFD圖劃分為三個基本的組成部分,不同的設(shè)計人員可能產(chǎn)生不同的劃分結(jié)果;
第二步——完成第一級分解,建立初始SC圖的框架;
第三步——完成第二級分解,細化SC圖的每個分支,得到初始SC圖。
事務(wù)分析:首先確定事務(wù)中心,即幾條動作路徑的公共源頭;其次劃定接收路徑和發(fā)送路徑;然后分解和細化每個接收分支和發(fā)送分支,完成初始的SC圖。
七、簡述有哪些啟發(fā)式設(shè)計策略可以幫助軟件設(shè)計人員改善軟件質(zhì)量,優(yōu)化軟件結(jié)構(gòu)。(P108—P110)
(1)模塊的高獨立性和規(guī)模適中
(2)保持高扇入和低扇出
(3)模塊的作用域應(yīng)在控制域之內(nèi)
(4)降低模塊接口的復雜度
第五章
面向?qū)ο蟮姆治雠c設(shè)計
一、說明對象、類、類結(jié)構(gòu)、消息的基本概念(P113)
對象:是封裝了數(shù)據(jù)結(jié)構(gòu)及可以施加在這些數(shù)據(jù)結(jié)構(gòu)上的操作的封裝體。
類:對具有相同屬性和操作的一組對象的抽象性描述,它描述了屬于該對象類型的所有對象的性質(zhì),包括外部特性和內(nèi)部實現(xiàn)兩個方面。類結(jié)構(gòu):(實例)
消息:是用來請求對象執(zhí)行某一處理或回答某一要求的信息。
二、試述面向?qū)ο蠓椒▽W的優(yōu)點。(P112)
1、開發(fā)的軟件比較容易理解
2、穩(wěn)定性好
3、可重用性好
4、較易開發(fā)大型軟件產(chǎn)品
5、可維護性好
三、什么是UML?為什么使用UML?(P118)
定義:UML(Unified Modeling Language)是一個通用的、可視化標準建模語言。
使用原因:統(tǒng)一的標準
面向?qū)ο?/p>
可視化、表示能力強
獨立于過程
易掌握、易用
四、在UML中用例圖的作用是什么?其包括哪些符號?簡述各符號的含義。(P122)
作用:捕獲系統(tǒng)中用戶的需求
符號:人形(stickman)——活動者
橢圓——用例
實線——關(guān)系
五、簡述用例建模的步驟。
步驟:識別參與者——識別用例——識別關(guān)系——建?!美?guī)約
六、什么是用例規(guī)約?其包括哪些基本內(nèi)容?什么是基本流和備選流?
定義:用例的補充說明,包括簡要說明,事件流,用例場景,特殊需求,前置條件,后置條件 基本流: 備選流:
七、在UML中的狀態(tài)圖,活動圖,時序圖在系統(tǒng)分析中各起到了什么作用?
狀態(tài)圖——描述對象在生命周期內(nèi)處于哪些狀態(tài),每一種狀態(tài)的行為以及什么樣的事件引起對象狀態(tài)發(fā)生改變,展示了系統(tǒng)的動態(tài)視圖。P144 活動圖——描述動作及對象狀態(tài)改變的結(jié)果,描述采取何種動作似的對象的狀態(tài)改變,動作的序列是什么及在何處發(fā)生。P148 時序圖——詳細表示對象之間以及對象與系統(tǒng)外部的參與者之間動態(tài)聯(lián)系的圖形文檔,它詳細而直觀地表現(xiàn)了一組相互協(xié)作的對象在執(zhí)行一個(或少量幾個)用例時的行為依賴關(guān)系,以及操作和消息的時序關(guān)系。P139
八、簡述類圖中關(guān)聯(lián)和依賴關(guān)系的區(qū)別。
關(guān)聯(lián)表示兩個類的對象之間存在某種語義上的聯(lián)系。(組合/聚合關(guān)聯(lián))如:學生選課,學生與課程間
依賴是類與類之間最弱的關(guān)系,它是兩個模型元素(類、用例等)之間的語義連接關(guān)系,其中一個模型元素是獨立,另一模型元素依賴于獨立的模型元素,如果獨立的模型元素改變了,將影響依賴于它的模型元素。如教師與粉筆。
九、類圖中類與類之間的關(guān)系有哪幾種?
類與類之間的靜態(tài)關(guān)系:關(guān)聯(lián),泛化,依賴,細化
第六章
人機界面設(shè)計
一、簡述人機界面的設(shè)計過程。(P168)
1、確定任務(wù)的目標和含義;
2、將每個目標或含義映射為一系列特定的動作;
3、說明這些動作將來在界面上執(zhí)行的順序;
4、指明系統(tǒng)狀態(tài),及上述各動作序列中每個動作在界面上執(zhí)行時界面呈現(xiàn)的形式;
5、定義控制機制,即用戶可用的改變系統(tǒng)狀態(tài)的設(shè)備和動作;
6、說明控制機制怎樣作用于系統(tǒng)狀態(tài);
7、指明用戶如何根據(jù)界面上反映出的信息,解釋系統(tǒng)的狀態(tài)。
二、簡述人機界面設(shè)計過程中應(yīng)考慮哪些一般問題?(P168)
系統(tǒng)響應(yīng)時間
用戶幫助設(shè)施
出錯信息處理
命令交互
三、如何理解界面設(shè)計中“人的因素”(P162)
人對感知過程的認識
用戶的技能和用戶間的差異
第八章
軟件測試
一、什么是白盒測試法?有哪些覆蓋標準?P205
定義:(結(jié)構(gòu)測試或邏輯驅(qū)動測試)測試時,把程序看做一個打開的盒子,它是知道產(chǎn)品內(nèi)部工作過程,而不顧他的功能。
覆蓋標準:語句覆蓋
判定覆蓋
條件覆蓋
判定/條件覆蓋
條件組合覆蓋
路徑覆蓋
二、什么是黑盒測試法?采用黑盒技術(shù)測試用例有哪幾種方法?(P199)
定義:(功能測試或數(shù)據(jù)驅(qū)動測試)它是在已知產(chǎn)品所應(yīng)具有功能的基礎(chǔ)上,通過測試來檢測每個功能是否都能正常使用。
方法:等價類劃分
邊界值分析
錯誤推測
因果圖
比較測試
三、軟件測試要經(jīng)過哪些步驟?這些測試與軟件開發(fā)各階段之間有什么關(guān)系?
步驟:單元測試——集成測試——確認測試——系統(tǒng)測試
關(guān)系:單元測試(模塊測試)——是最小單位的測試,其依據(jù)是詳細設(shè)計說明書。測試者(程序員)根據(jù)詳細設(shè)計說明書和源程序清單了解模塊的I/O條件和模塊的邏輯結(jié)構(gòu)。
集成測試(組裝測試、聯(lián)合測試、子系統(tǒng)測試、部件測試)——是在單元測試的基礎(chǔ)上,將所有模塊按照概要設(shè)計要求組裝成為子系統(tǒng)或系統(tǒng)進行測試。
確認測試(有效性測試)——檢查軟件能否按合同要求進行工作,即是否滿足軟件需求說明書中的確認標準(用戶參與)。
系統(tǒng)測試——針對整個產(chǎn)品系統(tǒng)進行的測試,驗證系統(tǒng)是否滿足了需求規(guī)格的定義,找出與需求規(guī)格不相復合或與之矛盾的地方。
四、單元測試有哪些內(nèi)容?
模塊接口
局部數(shù)據(jù)結(jié)構(gòu)測試
路徑測試
錯誤處理測試
邊界測試
五、什么是集成測試?非漸增式測試與漸增式測試有什么區(qū)別?漸增式測試如何組裝模塊?
定義:集成測試(組裝測試、聯(lián)合測試、子系統(tǒng)測試、部件測試)是在單元測試的基礎(chǔ)上,將所有模塊按照概要設(shè)計要求組裝成為子系統(tǒng)或系統(tǒng)進行測試。
區(qū)別:P216自己看
組裝:
六、什么是回歸測試?(P218)
發(fā)生修改之后重新測試先前的測試以保證修改的正確性。目的在于檢驗以前出現(xiàn)過的但已修復好的缺陷不再出現(xiàn)。
七、什么是測試用例?(P194)
測試用例由測試輸入數(shù)據(jù)和預期輸出結(jié)果組成。
八、軟件測試和軟件調(diào)試有何區(qū)別?
第九章
軟件維護
一、軟件維護有哪些內(nèi)容?(P229)
改正性維護
適應(yīng)性維護
完善性維護
預防性維護
二、何為非結(jié)構(gòu)化維護和結(jié)構(gòu)化維護?(P231)
結(jié)構(gòu)化維護——采用軟件工程的方法進行軟件的開發(fā),則每一個階段都有相應(yīng)的文檔,且文檔與程序代碼互相匹配,因此維護容易進行。
非結(jié)構(gòu)化維護——沒有采用軟件工程的方法進行軟件的開發(fā),開發(fā)出的軟件只有程序沒有文檔,或者僅有一些片段的說明性文檔。給維護工作帶來很大的困難,耗時耗力且代價高。
三、軟件維護的流程是什么?(P233)
提交維護申請報告——生成軟件修改報告——軟件修改——主要流程
四、軟件維護的副作用有哪些?(P240)
修改編碼的副作用 修改數(shù)據(jù)結(jié)構(gòu)的副作用 修改文檔的副作用
第三篇:軟件工程知識點
1.什么是軟件危機,它有哪些典型表現(xiàn)?答:軟件危機是指在計算機軟件的開發(fā)和維護過程中所遇到的一系列嚴重問題。概括地說,軟件危機包含下述兩方面的問題:如何開發(fā)軟件,以滿足對軟件日益增長的需求;如何維護數(shù)量不斷膨脹的已有軟件。
軟件危機典型表現(xiàn):對軟件開發(fā)成本和進度的估計常常很不準確。用戶對“已完成的”軟件系統(tǒng)不滿意的現(xiàn)象經(jīng)常發(fā)生。軟件產(chǎn)品的質(zhì)量往往靠不住。軟件常常是不可維護的。軟件通常沒有適當?shù)奈臋n資料。軟件成本在計算機系統(tǒng)總成本中所占的比例逐年上升。軟件開發(fā)生產(chǎn)率提高的速度,遠遠跟不上計算機應(yīng)用迅速普及深入的趨勢.產(chǎn)生軟件危機的原因:一方面與軟件本身的特點有關(guān),另一方面也和軟件開發(fā)與維護的方法不正確有關(guān)。軟件不同于硬件,它是計算機系統(tǒng)中的邏輯部件而不是物理部件。管理和控制軟件開發(fā)過程相當困難。軟件是規(guī)模龐大,而且程序復雜性將隨著程序規(guī)模的增加而呈指數(shù)上升。目前相當多的軟件專業(yè)人員對軟件開發(fā)和維護還有不省糊涂觀念,在實踐過程中或多或少地采用了錯誤的方法和技術(shù),這是使軟件問題發(fā)展成軟件危機的主要原因.2.簡述產(chǎn)生軟件危機的原因和解決的思路:答:軟件危機產(chǎn)生的原因一方面與軟件本身的特點有關(guān),另一方面,是與已有軟件開發(fā)、維護的方法不正確有密切關(guān)系.解決軟件危機,既要有技術(shù)措施(方法和工具),又要有必要的組織管理措施。即采用工程化的原則和方法組織軟件開發(fā)是擺脫軟件危機的一個主要出路.3.什么是軟件工程?它有哪些本質(zhì)特性?答:軟件工程是指導計算機軟件開發(fā)和維護的一門工程學科。采用工程的概念、原理、技術(shù)和方法來開發(fā)與維護軟件,把經(jīng)過時間考驗而證明正確的管理技術(shù)和當前能夠得到的最好的技術(shù)方法結(jié)合起來,以經(jīng)濟地開發(fā)出高質(zhì)量的軟件并有效地維護它.軟件工程本質(zhì)特性:
1、軟件工程關(guān)注于大型程序的構(gòu)造;
2、軟件工程的中心課題是控制復雜性;
3、軟件經(jīng)常變化;
4、開發(fā)軟件的效率非常重要;
5、和諧地合作是開發(fā)軟件的關(guān)鍵;
6、軟件必須有效地支持它的用戶;
7、在軟件工程領(lǐng)域中是由具有一種文化背景的人替具有另一種文化背景的人創(chuàng)造產(chǎn)品.4.軟件工程是如何用來消除軟件危機的?軟件工程是從技術(shù)和管理兩個方面來研究如何更好地開發(fā)和維護計算機軟件,從源頭上消除軟件危機.5.軟件工程的目的是什么?為高質(zhì)量的軟件開發(fā)提供一個科學的體系框架.6.什么是軟件工程方法學?軟件工程是一種什么樣的技術(shù)?包括哪三大要素?分為哪三個分支?軟件工程方法學就是指在軟件生命周期全過程中使用的一整套管理和開發(fā)技術(shù)方法的集合。目前,使用最廣泛的軟件工程方法學分別是傳統(tǒng)方法學和面向?qū)ο蠓椒▽W.軟件工程作為一種層次化的技術(shù),有方法、工具和過程三大要素,并由于其涉及學科內(nèi)容的極為廣泛,而分為三個分支:軟件開發(fā)技術(shù)、軟件項目管理技術(shù)、軟件質(zhì)量管理技術(shù).7.什么是軟件生命周期?什么是軟件生命周期模型?軟件如同自然界任何事物一樣,都有其孕育、誕生、成長、成熟、衰亡的生存過程。軟件的這一過程,稱為軟件生命周期.軟件生命周期模型也稱軟件開發(fā)過程模型,是為了解決產(chǎn)業(yè)環(huán)境中的實際問題,而提出的開發(fā)策略。是反映整個軟件生命期中,系統(tǒng)開發(fā)、運行、維護等實施活動的一種結(jié)構(gòu)框架.8.試比較瀑布模型、快速原型模型、增量模型和螺旋模型的優(yōu)缺點,說明它們各自的適用范圍.1.瀑布模型:瀑布模型廣為人知和歷史悠久,其優(yōu)勢是規(guī)范及文檔驅(qū)動的方法。但問題是,往往不能夠真正滿足用戶的需求..適用于傳統(tǒng)軟件工程領(lǐng)域的結(jié)構(gòu)化開發(fā)..2.原型模型:是為了克服瀑布模型的缺點而提出來的。通過快速構(gòu)建一個在機器上可運行的原型系統(tǒng),讓用戶試用原型,并收集反饋意見的辦法,來獲取用戶真實的需求..3.螺旋模型:螺旋模型適用于大型軟件項目,比起之前的其它模型而言,有其一定的優(yōu)越性,但這些優(yōu)越性并不是絕對的。主要體現(xiàn)在對開發(fā)人員的風險評估經(jīng)驗和專門知識的要求較高。如果項目風險較大,而開發(fā)人員的水平較低,不能準確的識別和分析風險,則勢必造成重大損失..4.增量模型:具有在軟件開發(fā)早期階段使投資獲得明顯回報和交易維護的優(yōu)點,但是要求軟件具有開放的結(jié)構(gòu).9.軟件過程(Software Procedure)是指軟件生存周期所涉及的一系列相關(guān)過程.10.軟件測試用例就是指導你對軟件執(zhí)行操作,幫助你證明軟件功能或發(fā)現(xiàn)軟件缺陷的一種說明.11.單元測試——是最小粒度的測試,以測試某個功能或代碼塊.單元測試的對象是軟件設(shè)計的最小單位——模塊。單元測試的依據(jù)是詳細設(shè)描述,單元測試應(yīng)對模塊內(nèi)所有重要的控制路徑設(shè)計測試用例,以便發(fā)現(xiàn)模塊內(nèi)部的錯誤。單元測試多采用白盒測試技術(shù),系統(tǒng)內(nèi)多個模塊可以并行地進行測試.12.人機界面設(shè)計的三條“黃金規(guī)則”:1.置用戶于控制之下.2.減少用戶記憶負擔.3.保持界面一致.13.jackson圖:jackson結(jié)構(gòu)化程序設(shè)計使用的圖。什么是HIPO圖:它是表示軟件系統(tǒng)結(jié)構(gòu)的工具。HIPO圖以模塊分解的層次性以及模塊內(nèi)部輸入、處理、輸出三大基本部分為基礎(chǔ)建立的.它既可以描述軟件總的模塊層次結(jié)構(gòu)--H圖(層次圖),又可以描述每個模塊輸入/輸出數(shù)據(jù)、處理功能及模塊調(diào)用的詳細情況--IPO圖.14.試說明Jackson方法是一種怎么樣的程序設(shè)計方法。它有哪些工作步驟:Jackson方法是以數(shù)據(jù)結(jié)構(gòu)(data structure)為基礎(chǔ)設(shè)計每個模塊的處理過程,將數(shù)據(jù)結(jié)構(gòu)轉(zhuǎn)化成程序結(jié)構(gòu)。具體工作步驟有:第1步:用Jackson圖描述 IO 的數(shù)據(jù)結(jié)構(gòu);第2步:在兩個圖中指出有直接因果關(guān)系、可以同時處理的單元;第3步:將數(shù)據(jù)結(jié)構(gòu)映射到程序結(jié)構(gòu);第4步:列出所有操作條件,并分配到上幅程序結(jié)構(gòu)圖中;第5步:用Pseudocode 表示程序.15.簡述結(jié)構(gòu)化設(shè)計的特點:1.自頂向下、逐步求精.2.具有單入、單出的控制結(jié)構(gòu).
第四篇:軟件工程考核知識點-第2章-軟件可行性研究與項目開發(fā)計劃
軟件工程考核知識點-第2章-軟件可行性研究與項目開發(fā)計
劃
2.1可行性研究
目的就是用最小的代價在盡可能短的時間內(nèi)確定該軟件項目是否能夠開發(fā),是否值得去開發(fā)。2.1.1可行性研究的任務(wù)
1.技術(shù)可行性
對要開發(fā)的項目的功能、性能、限制條件進行分析,確定在現(xiàn)有的資源條件下,技術(shù)風險有多大,項目是否能實現(xiàn)。
2.經(jīng)濟可行性 3.社會可行性
要開發(fā)的項目是否存在任何侵犯、妨礙等責任問題,要開發(fā)項目的運行方式在用戶組織內(nèi)是否行得通,現(xiàn)有管理制度、人員素質(zhì)、操作方式是否可行。2.1.2 可行性研究的具體步驟
典型性的可行性研究有下列步驟:
1.確定項目規(guī)模和目標
2.研究正在運行的系統(tǒng)
3.建立新系統(tǒng)的高層邏輯模型
根據(jù)對現(xiàn)有系統(tǒng)的分析研究,逐步明確了新系統(tǒng)的功能、處理流程以及所受的約束,然后使用建立邏輯模型的工具——數(shù)據(jù)流圖和數(shù)據(jù)字典來描述數(shù)據(jù)在系統(tǒng)中的流動和處理情況。現(xiàn)在還不是軟件需求分析階段,不是完整、詳細地描述,只是概括地描述高層的數(shù)據(jù)處理和流動。
4.導出和評價各種方案
5.推薦可行的方案
6.編寫可行性研究報告
2.2 系統(tǒng)流程圖
1.系統(tǒng)流程圖的作用
系統(tǒng)流程圖是描繪物理系統(tǒng)的傳統(tǒng)工具,它用圖形符號來表示系統(tǒng)中的各個元素,例如人工處理、數(shù)據(jù)處理、數(shù)據(jù)庫、文件、設(shè)備等。它表達了系統(tǒng)中各個元素之間的信息流動的情況。
2.系統(tǒng)流程圖的符號
系統(tǒng)流程圖的符號如表2-1所示。
2.3成本——效益分析
成本——效益分析的目的是從經(jīng)濟角度評價開發(fā)一個新的軟件項目是否可行。1.貨幣的時間價值
項目開發(fā)后,應(yīng)取得相應(yīng)得效益,有多少效益才合算?這就要考慮貨幣的時間價值。通常用利率表示貨幣的時間價值。
設(shè)年利率為i,現(xiàn)存入P元,n年后可得錢數(shù)為F,若不計復利則
F=P×(1+n×i)F就是P元在n年后得價值。反之,若n年能收入F元,那么這些錢現(xiàn)在得價值是: P =F/(1+n×i)第2章例題分析與解答
一、填空題
1.可行性研究實質(zhì)上是進行一次簡化、壓縮了的________。2.可行性研究的三個方面是技術(shù)可行性、社會可行性和_________。
3.可行性研究的第一個具體步驟是__________。
4.若年利率為i,不計復利,P元在n年后的價值F是_________。5.可行性研究中描述系統(tǒng)高層物理模型的工具是_______。
二、選擇題 1.可行性研究的目的是決定()。
A.開發(fā)項目 B.項目值得開發(fā)否 C.規(guī)劃項目 D.維護項目 2.技術(shù)可行性要研究的問題之一是()。
A.存在侵權(quán)否 B.成本效益問題 C.運行方式可行否 D.技術(shù)風險問題
3.純收入是累計效益現(xiàn)在值與投資之()。A.和 B.差 C.積 D.商 4.項目開發(fā)計劃這類文檔是一種()。
A.技術(shù)性文檔 B.管理性文檔 C.需求分析文檔 D.設(shè)計文檔
答案
一、填空題
1.[答案]需求分析和設(shè)計 2.[答案]經(jīng)濟可行性
3.[答案]確定項目的規(guī)模和目標 4.[答案]p×(1+n×i)5.[答案]系統(tǒng)流程圖
二、選擇題 1.B 2.D 3.B 4.B
第五篇:軟件工程知識點總結(jié)
7.1軟件的定義及特點
軟件(Software)是計算機系統(tǒng)中與硬件相互依存的另一部分,它是包括程序(Program),數(shù)據(jù)(Data)及其相關(guān)文檔(Document)的完整集合。
三個特點:
(1)軟件是一種邏輯實體,而不是具體的物理實體,因而它具有抽象性;(2)軟件的生產(chǎn)與硬件不同,在它的開發(fā)過程中沒有明顯的制造過程;(3)在軟件的運行和使用期間,沒有硬件那樣的機械磨損,老化問題。
7.2軟件危機及其表現(xiàn)
軟件危機(softward crisis)是指在計算機軟件的開發(fā)和維護中所遇到的一系列嚴重問題。這些問題絕不僅僅是“不能正常運行的”軟件才具有,實際上幾乎所有軟件都不同程度地存在這些問題。
具體地說,軟件危機主要有下述一些表現(xiàn)。
(1)對軟件開發(fā)成本和進度的估計常常很不準確。
(2)用戶對“已完成的”軟件系統(tǒng)不滿意的現(xiàn)象經(jīng)常發(fā)生。
(3)軟件產(chǎn)品的質(zhì)量往往靠不住。
(4)軟件常常是不可維護的。
(5)軟件通常沒有適當?shù)奈臋n資料。
(6)軟件成本在計算機系統(tǒng)總成本中所占的比例逐年上升。
7.3軟件工程及三要素
軟件工程:軟件工程是采用工程的概念、原理、技術(shù)和方法來指導軟件開發(fā)和維護的工程學科,以工程化的原理和方法來解決軟件問題。
軟件工程的特性:
(1)軟件工程關(guān)注于大型程序的構(gòu)造(2)軟件工程的中心課題是控制復雜性(3)軟件經(jīng)常變化
(4)開發(fā)軟件的效率非常重要(5)和諧地合作是開發(fā)軟件的關(guān)鍵(6)軟件必須有效地支持它的用戶
(7)在軟件工程領(lǐng)域中是由具有一種文化背景的人替具有另一種文化背景的人
軟件工程方法學包含3個要素:方法、工具和過程。
7.4軟件生命周期
軟件生命周期又稱為軟件生存周期或系統(tǒng)開發(fā)生命周期,是軟件的產(chǎn)生直到報廢的生命周期,周期內(nèi)有問題定義、可行性分析、總體描述、系統(tǒng)設(shè)計、編碼、調(diào)試和 測試、驗收與運行、維護升級到廢棄等階段,這種按時間分程的思想方法是軟件工程中的一種思想原則,即按部就班、逐步推進,每個階段都要有定義、工作、審 查、形成文檔以供交流或備查,以提高軟件的質(zhì)量。
每個階段的任務(wù)如下
問題定義階段:該階段的關(guān)鍵任務(wù)是要明確:要解決的問題是什么? 可性行研究階段:該階段的關(guān)鍵任務(wù)是要明確:做不做? 需求分析階段:該階段的關(guān)鍵任務(wù)是要明確:做什么?
概要設(shè)計(總體設(shè)計)階段:該階段的關(guān)鍵任務(wù)是要明確:怎么做? 詳細設(shè)計階段:該階段的關(guān)鍵任務(wù)是要明確:具體做法。
編碼和單元測試階段:該階段的關(guān)鍵任務(wù)是:編碼和單元測試。
綜合測試階段:該階段的關(guān)鍵任務(wù)是通過各種類型的測試(及調(diào)試)使軟件達到預定的要求。軟件維護階段:該階段的關(guān)鍵任務(wù)是通過各種必要的維護活動使系統(tǒng)持久地滿足用戶的要求。
7.4.1瀑布模型
瀑布模型有以下優(yōu)點
1)為項目提供了按階段劃分的檢查點。
2)當前一階段完成后,您只需要去關(guān)注后續(xù)階段。3)可在迭代模型中應(yīng)用瀑布模型。
4)它提供了一個模板,這個模板使得分析、設(shè)計、編碼、測試和支持的方法可以在該模板下有一個共同的指導。
瀑布模型適合于用戶需求明確、完整、無重大變化的軟件項目開發(fā)。瀑布模型的成功在很大程度上是由于它基本上是一種文檔驅(qū)動的模型。
瀑布模型有以下缺點
1)各個階段的劃分完全固定,階段之間產(chǎn)生大量的文檔,極大地增加了工作量。
2)由于開發(fā)模型是線性的,用戶只有等到整個過程的末期才能見到開發(fā)成果,從而增加了開發(fā)風險。
3)通過過多的強制完成日期和里程碑來跟蹤各個項目階段。4)瀑布模型的突出缺點是不適應(yīng)用戶需求的變化。
“瀑布模型是由文檔驅(qū)動的”這個事實也是它的一個主要缺點。實際項目很少按照該模型給出的順序進行,用戶常常難以清楚地給出所有需求,用戶必須有耐心,等到系統(tǒng)開發(fā)完成。
7.4.2 原型模型—快速原型模型
在用戶不能給出完整、準確的需求說明,或者開發(fā)者不能確定算法的有效性、操作系統(tǒng)的適應(yīng)性或人機交互的形式等許多情況下,可以根據(jù)用戶的一組基本需求,快速建造一個原型(可運行的軟件),然后進行評估,進一步精化、調(diào)整原型,使其滿足用戶的要求,也使開發(fā)者對將要做的事情有更好的理解。優(yōu)點:
(1)開發(fā)人員和用戶在“原型”上達成一致。這樣一來,可以減少設(shè)計中的錯誤和開發(fā)中的風險,也減少了對用戶培訓的時間,而提高了系統(tǒng)的實用、正確性以及用戶的滿意程度。(2)縮短了開發(fā)周期,加快了工程進度。(3)降低成本。
盡早發(fā)現(xiàn)需求,揭示風險 缺點:
⑴為了使原型盡快的工作,沒有考慮軟件的總體質(zhì)量和長期的可維護性。
⑵為了演示,可能采用不合適的操作系統(tǒng)、編程語言、效率低的算法,這些不理想的選擇成了系統(tǒng)的組成部分。
⑶開發(fā)過程不便于管理。
7.4.3螺旋模型
螺旋模型的優(yōu)點:(1)對可選方案和約束條件的強調(diào)有利于已有軟件的重用,也有助于把軟件質(zhì)量作為軟件開發(fā)的一個重要目標
(2)減少了過多測試或測試不足(3)維護和開發(fā)之間并沒有本質(zhì)區(qū)別 螺旋模型的缺點:
(1)風險驅(qū)動,需要相當豐富的風險評估經(jīng)驗和專門知識,否則風險更大
(2)主要適用于內(nèi)部開發(fā)的大規(guī)模軟件項目,隨著過程的進展演化,開發(fā)者和用戶能夠更好的識別和對待每一個演化級別上的風險
(3)隨著迭代次數(shù)的增加,工作量加大,軟件開發(fā)成本增加
7.4.4增量模型
增量模型優(yōu)點:
(1)在較短時間內(nèi)向用戶提交可完成部分工作的產(chǎn)品,并分批、逐步地向用戶提交產(chǎn)品。從第一個構(gòu)件交付之日起,用戶就能做一些有用的工作。
(2)整個軟件產(chǎn)品被分解成許多個增量構(gòu)件,開發(fā)人員可以一個構(gòu)件一個構(gòu)件地逐步開發(fā)。(3)逐步增加產(chǎn)品功能可以使用戶有較充裕的時間學習和適應(yīng)新產(chǎn)品,從而減少一個全新的軟件可能給客戶組織帶來的沖擊。(4)采用增量模型比采用瀑布模型和快速原型模型需要更精心的設(shè)計,但在設(shè)計階段多付出的勞動將在維護階段獲得回報。增量模型的缺點:
(1)在把每個新的增量構(gòu)件集成到現(xiàn)有軟件體系結(jié)構(gòu)中時,必須不破壞原來已經(jīng)開發(fā)出的產(chǎn)品。此外,必須把軟件的體系結(jié)構(gòu)設(shè)計得便于按這種方式進行擴充,向現(xiàn)有產(chǎn)品中加入新構(gòu)件的過程必須簡單、方便,也就是說,軟件體系結(jié)構(gòu)必須是開放的。
(2)開發(fā)人員既要把軟件系統(tǒng)看作整體。又要看成可獨立的構(gòu)件,相互矛盾。(3)多個構(gòu)件并行開發(fā),具有無法集成的風險。
7.4.5噴泉模型
主要用于支持面向?qū)ο箝_發(fā)過程體現(xiàn)了軟件創(chuàng)建所固有的迭代和無間隙的特征。噴泉模型的優(yōu)點
噴泉模型不像瀑布模型那樣,需要分析活動結(jié)束后才開始設(shè)計活動,設(shè)計活動結(jié)束后才開始編碼活動。該模型的各個階段沒有明顯的界限,開發(fā)人員可以同步進行開發(fā)。其優(yōu)點是可以提高軟件項目開發(fā)效率,節(jié)省開發(fā)時間,適應(yīng)于面向?qū)ο蟮能浖_發(fā)過程。
噴泉模型的缺點
由于噴泉模型在各個開發(fā)階段是重疊的,因此在開發(fā)過程中需要大量的開發(fā)人員,因此不利于項目的管理。此外這種模型要求嚴格管理文檔,使得審核的難度加大,尤其是面對可能隨時加入各種信息、需求與資料的情況。
其特點如下:
(1)開發(fā)過程有分析、系統(tǒng)設(shè)計、軟件設(shè)計和實現(xiàn)4個階段。(2)各階段相互重疊,它反映了軟件過程并行性的特點。(3)以分析為基礎(chǔ),資源消耗成塔型。
(4)反映了軟件過程迭代性的自然特性,從高層返回低層無資源消耗。(5)強調(diào)增量開發(fā),整個過程是一個迭代的逐步提煉的過程。
7.4.6構(gòu)件組裝模型
構(gòu)件組裝模型導致軟件復用,而可復用性給軟件工程師提供了大量的可見的益處。軟件開發(fā)不
用一切從零開始,開發(fā)過程就是一個組裝構(gòu)件的過程,維護的過程就是對構(gòu)件升級、替換和擴充的過程,大大提高了軟件的開發(fā)效率。構(gòu)件模型允許多個項目同時開發(fā),降低了費用,提高了可維護性。
構(gòu)件模型也存在一些缺點,如:由于存在多種構(gòu)件標準,缺乏通用的構(gòu)件組裝結(jié)構(gòu)標準,如果自行定義會引入較大的風險;構(gòu)件可重用性和軟件系統(tǒng)高效性之間不易協(xié)調(diào);如果過分依賴構(gòu)件,構(gòu)件質(zhì)量會影響最終的產(chǎn)品質(zhì)量。
7.4.7 RUP RUP是由Rational公司的Booch、Jacobson、Rumbaugh提出的軟件過程模型,也稱RUP(Rational Unified Process)。RUP重復一系列周期,每個周期由一個交付給用戶的產(chǎn)品結(jié)束。
每個周期劃分為初始、細化、構(gòu)造和移交四個階段,每個階段圍繞著五個核心工作流(需求、分析、設(shè)計、實現(xiàn)、測試)分別迭代。模型見下圖:
1.4個階段
初始階段:進行問題定義,確定目標,評估其可行性,降低關(guān)鍵風險。細化階段:制定項目計劃、配置各類資源、建立系統(tǒng)架構(gòu)(包括各類視圖)。構(gòu)造階段:開發(fā)整個產(chǎn)品,并確保產(chǎn)品可移交給用戶。移交階段:產(chǎn)品發(fā)布、安裝、用戶培訓。
在每個階段的每次迭代的最后,用例模型、分析模型、設(shè)計模型、實現(xiàn)模型都會增量,每個階段結(jié)束的里程碑處,管理層做出是否繼續(xù)、進度、預算、是否給下一階段提供資助等決定。
不同階段工作流的側(cè)重點不同,前兩階段大部分工作集中在需求、分析和架構(gòu)設(shè)計上;在構(gòu)造階段,重點轉(zhuǎn)移到詳細設(shè)計、實現(xiàn)和測試上。
2.9個工作流
RUP中有9個核心工作流,分為6個核心過程工作流(Core Process Workflows)和3個核心支持工作流(Core Supporting Workflows)。
商業(yè)建模:深入了解使用目標系統(tǒng)的機構(gòu)及其商業(yè)運作,評估目標系統(tǒng)對使用它的機構(gòu)的影響。需求:捕獲客戶的需求,并且使開發(fā)人員和用戶達成對需求描述的共識。分析和設(shè)計:把需求分析的結(jié)果轉(zhuǎn)化成分析模型與設(shè)計模型。實現(xiàn):把設(shè)計模型轉(zhuǎn)換成實現(xiàn)成果。
測試:檢查個子系統(tǒng)的交互與集成,驗證所有需求是否都被正確地實現(xiàn)了,識別,確認缺陷并確保在軟件部署之前消除缺陷。
部署:成功地生成目標系統(tǒng)的可運行版本,并把軟件移交給最終用戶。
配置和變更管理:跟蹤并維護在軟件開發(fā)過程中產(chǎn)生的所有制品的完整性和一致性。
軟件項目管理:提供項目管理框架,為軟件開發(fā)項目制定計劃,人員配備,執(zhí)行和監(jiān)控等方面的實用準則,并為風險管理提供框架。
環(huán)境:向軟件開發(fā)機構(gòu)提供軟件開發(fā)環(huán)境,包括過程管理和工具支持。
7.5 UML UML適用于各種軟件開發(fā)方法、軟件生命周期的各個階段、各種應(yīng)用領(lǐng)域以及各種開發(fā)工具。UML由以下5類圖來定義: 第1類:用例圖
第2類:靜態(tài)圖(包括類圖、對象圖和包圖)第3類:行為圖(包括狀態(tài)圖和活動圖)第4類:交互圖(包括時序圖和協(xié)作圖)第5類:實現(xiàn)圖(包括組件圖和配置圖)
第一類是用例圖:從用戶角度描述系統(tǒng)功能,并指出各功能的操作者。
第二類是靜態(tài)圖:包括類圖,對象圖,包圖。類圖描述系統(tǒng)中類的靜態(tài)結(jié)構(gòu),不僅定義系統(tǒng)中的類,表示類之間的聯(lián)系如關(guān)聯(lián)、依賴、聚合等也包括類的內(nèi)部結(jié)構(gòu)(類的屬性和動作)。
第三類是行為圖:描述系統(tǒng)的動態(tài)模型和組成對象之間的交互關(guān)系,其中狀態(tài)圖描述類的對象所有可能的狀態(tài),以及事件發(fā)生時的狀態(tài)的轉(zhuǎn)移條件,通常,狀態(tài)圖為類圖的補充,在實用上并不需要為所有的類畫狀態(tài)圖,僅為那些有多個狀態(tài)其行為受外界環(huán)境的影響并且狀態(tài)發(fā)生改變的類畫狀態(tài)圖,活動圖描述滿足用例要求所要進行的活動以及活動的約束關(guān)系,有利于識別并行的活動。
第四類是交互圖:描述對象間的交互關(guān)系。其中順序圖顯示對象之間的動態(tài)合作關(guān)系,他強調(diào)對象之間消息發(fā)送的順序。
第五類是實現(xiàn)圖:其中構(gòu)建圖描述代碼部件的物理結(jié)構(gòu)和各部件之間的依賴關(guān)系,一個部件可能是一個資源代碼部件,一個二進制部件或者一個可執(zhí)行部件。它包含邏輯類和實際類的有關(guān)信息。部件圖有利于分析和理解部件間的相互影響程度。
下面分別描述9個圖。
7.5.1 類圖
類圖展示了一組類、接口和協(xié)作及它們間的關(guān)系,在建模中所建立的最常見的圖就是類圖。用類圖說明系統(tǒng)的靜態(tài)設(shè)計視圖,包含主動類的類圖——專注于系統(tǒng)的靜態(tài)進程視圖。系統(tǒng)可有多個類圖,單個類圖僅表達了系統(tǒng)的一個方面。要在高層給出類的主要職責,在低層給出類的屬性和操作。
7.5.2對象圖
對象圖展示了一組對象及它們間的關(guān)系。用對象圖說明類圖中所反應(yīng)的事物實例的數(shù)據(jù)結(jié)構(gòu)和靜態(tài)快照。對象圖表達了系統(tǒng)的靜態(tài)設(shè)計視圖或靜態(tài)過程視圖,除了現(xiàn)實和原型的方面的因素外,它與類圖作用是相同的。
7.5.3用例圖
用例圖展現(xiàn)了一組用例、參與者以及它們間的關(guān)系。可以用用例圖描述系統(tǒng)的靜態(tài)使用情況。在對系統(tǒng)行為組織和建模方面,用例圖的是相當重要的。
用例(use case):從用戶的觀點對系統(tǒng)行為的一個描述。用來從用戶的觀察角度收集系統(tǒng)需求。
用例圖表達系統(tǒng)的外部事物(參與者)與系統(tǒng)的交互,它表達了系統(tǒng)的功能,即系統(tǒng)所提供的服務(wù)。
整個軟件項目的開發(fā)可以采用Use Case 驅(qū)動的方式進行。
7.5.4交互圖
交互圖展現(xiàn)了按一定的目的進行的一種交互,它由在一個上下文中的一組對象及它們間交互的信息組成。交互圖也可用于描述一個用例的行為。順序圖和協(xié)作圖都是交互圖,順序圖和協(xié)作圖可以相互轉(zhuǎn)換。
順序圖和協(xié)作圖都是交互圖,它們既是等價的,又是有區(qū)別的。
順序圖和協(xié)作圖都能等價的表現(xiàn)系統(tǒng)運行中對象通過消息發(fā)生的交互行為。
順序圖表示了時間的消息序列,便于分析交互的時序,但沒有表示靜態(tài)對象關(guān)系,順序圖可以有效地幫助人們觀察系統(tǒng)的順序行為。
協(xié)作圖著重表示一個協(xié)作中的對象之間的聯(lián)系和消息。
7.5.5順序圖
展現(xiàn)了一組對象和由這組對象收發(fā)的消息,用于按時間順序?qū)刂屏鹘?。用順序圖說明系統(tǒng)的動態(tài)視圖。
7.5.6協(xié)作圖
展現(xiàn)了一組對象,這組對象間的連接以及這組對象收發(fā)的消息。它強調(diào)收發(fā)消息的對象的結(jié)構(gòu)組織,按組織結(jié)構(gòu)對控制流建模。
協(xié)作圖顯示某組對象為了由一個用例描述的一個系統(tǒng)事件而與另一組對象進行協(xié)
作的交互圖。
協(xié)作圖只對相互間有交互作用的對象和這些對象間的關(guān)系建模,而忽略了其他對象
和關(guān)聯(lián)。
協(xié)作圖中包括如下元素:1.對象(Object)、2.鏈(Link)和3.消息(Message)。
協(xié)作圖的用途:
如果按組織對控制流建模,應(yīng)該選擇使用協(xié)作圖。協(xié)作圖強調(diào)交互中實例間的結(jié)構(gòu)關(guān)系以及所傳送的消息。協(xié)作圖對復雜的迭代和分支的可視化以及對多并發(fā)控制流的可視化要比時序圖好。
協(xié)作圖有別于時序圖的兩點特性:(1)協(xié)作圖有路徑(2)協(xié)作圖有順序號
7.5.7狀態(tài)圖
展示了一個特定對象的所有可能狀態(tài)以及由于各種事件的發(fā)生而引起的狀態(tài)間的轉(zhuǎn)移。一個狀態(tài)圖描述了一個狀態(tài)機,用狀態(tài)圖說明系統(tǒng)的動態(tài)視圖。它對于接口、類或協(xié)作的行為建模尤為重要,可用它描述用例實例的生命周期。在任一給定的時刻,一個對象總是處于某一特定的狀態(tài)。
狀態(tài)圖主要表現(xiàn)一個對象所經(jīng)歷的狀態(tài)序列,引起狀態(tài)或活動轉(zhuǎn)移的事件,以及因狀態(tài)或活動轉(zhuǎn)移而伴隨的動作。
7.5.8活動圖
活動圖是一種特殊的狀態(tài)圖,描述需要做的活動、執(zhí)行這些活動的順序(多為并行的)以及工作流(完成工作所需要的步驟)。它對于系統(tǒng)的功能建模特別重要,強調(diào)對象間的控制流程。
活動圖實質(zhì)上是一種流程圖,只不過表現(xiàn)的是從一個活動到另一個活動的控制流。活動圖描述活動的序列,并且支持對帶條件的行為和并發(fā)行為表達。
7.5.9時序圖
在一個運行的系統(tǒng)中,對象之間要發(fā)生交互,并且這些交互要經(jīng)歷一定的時間。
順序圖表達的正是這種基于時間的動態(tài)交互。重點是完成某個行為的對象類和這些對象類之間所傳遞的消息的時間順序。
7.5.10構(gòu)件圖
構(gòu)件圖展現(xiàn)了一組構(gòu)件之間的組織和依賴,用于對原代碼、可執(zhí)行的發(fā)布、物理數(shù)據(jù)庫和可調(diào)整的系統(tǒng)建模。
組件圖代表系統(tǒng)的一個物理實現(xiàn)塊,代表邏輯模型元素如類、接口的物理打包。
7.5.11部署圖
部署圖展現(xiàn)了對運行時處理節(jié)點以及其中構(gòu)件的配署。它描述系統(tǒng)硬件的物理拓撲結(jié)構(gòu)(包括網(wǎng)絡(luò)布局和構(gòu)件在網(wǎng)絡(luò)上的位置),以及在此結(jié)構(gòu)上執(zhí)行的軟件(即運行時軟構(gòu)件在節(jié)點中的分布情況)。用部署圖說明系統(tǒng)結(jié)構(gòu)的靜態(tài)部署視圖,即說明分布、交付和安裝的物理系統(tǒng)
7.5.12區(qū)別
1.以描述系統(tǒng)狀態(tài)轉(zhuǎn)移為主的狀態(tài)圖和活動圖
狀態(tài)圖:用來描述對象,子系統(tǒng),系統(tǒng)的生命周期。通過狀態(tài)圖可以了解一個對象所能達到的所有狀態(tài),以及對象收到的事件對對象狀態(tài)的影響。
活動圖:顯示動作及其結(jié)果。著重描述操作(方法)實現(xiàn)中所完成的工作以及用例實例或?qū)ο笾械幕顒?,它是狀態(tài)圖的一個變種。
狀態(tài)圖與活動圖的區(qū)別:活動圖主要描述動作及對象狀態(tài)改變的結(jié)果。狀態(tài)圖主要描述的是事件對對象狀態(tài)的影響。
2.以描述系統(tǒng)系統(tǒng)對象通訊和交互為主的協(xié)作圖和序列圖
序列圖:描述對象是如何交互的。重點放在消息序列上,描述消息在對象間是如何收發(fā)的。
協(xié)作圖:描述協(xié)作對象的交互與鏈接。
協(xié)作圖和序列圖的區(qū)別:協(xié)作圖和序列圖都是描述對象交互的,但是序列圖強調(diào)的是時間,協(xié)作圖強調(diào)的空間。
7.6需求分析與用例建模
7.6.1需求分析的任務(wù)
需求分析的基本任務(wù)不是確定系統(tǒng)怎樣完成它的工作,而是確定系統(tǒng)必須完成哪些工作,也就是對目標系統(tǒng)提出完整、準確、清晰、具體的要求。----準確地回答“系統(tǒng)必須做什么?”。
需求分析的步驟: 需求獲取 分析建模 文檔編寫 需求驗證
7.6.2類圖
類(Class)、對象(Object)和它們之間的關(guān)系是面向?qū)ο蠹夹g(shù)中最基本的元素。類圖技術(shù)是OO方法的核心。
類圖標加上它們之間的關(guān)系就構(gòu)成了類圖。
類圖用于對系統(tǒng)靜態(tài)設(shè)計視圖建模。與數(shù)據(jù)模型不同,它不僅顯示了信息的結(jié)構(gòu),同時還描述了系統(tǒng)的行為。
類圖中可以包含接口,包,關(guān)系等建模元素,也可以包含對象,鏈等實例。
類圖典型的應(yīng)用在下面三類建模:(1)對系統(tǒng)的詞匯建模(2)對簡單協(xié)作建模
(3)對邏輯數(shù)據(jù)庫模式建模
類圖通常包含下述內(nèi)容:類、接口、協(xié)作、依賴、泛化和關(guān)聯(lián)關(guān)系。
關(guān)系(Relationship)是事物間的關(guān)系。在類的關(guān)系中,最常用的4種分別為: 依賴(Dependency):它表示類之間的使用關(guān)系 泛化(Generalization):它表示類之間的一般和特殊的關(guān)系; 關(guān)聯(lián)(Association):它表示對象之間的結(jié)構(gòu)關(guān)系 實現(xiàn)(Realization):它是規(guī)格說明和其實現(xiàn)之間的關(guān)系。
類主要包含以下幾個部分
(1)名稱(Name)名稱是每個類所必有的構(gòu)成,用于和其他類相區(qū)分。(2)屬性(Attribute)類的一個組成部分描述了類所代表事物的屬性(3)操作(Operation)操作是對類的對象所能做的事務(wù)的抽象
類在UML中由專門的圖符表達,是分成3個分隔區(qū)的矩形,頂端為類的名字,中間存放類的屬性、屬性的類型和值,第3個分隔區(qū)放操作、操作的參數(shù)表和返回類型,如下圖:
7.6.3用例圖
在UML中,一個用例模型由若干個用例圖(use case diagram)描述。用例圖是顯示一組用例、參與者以及它們之間關(guān)系的圖。
用例圖是從用戶的角度來描述對軟件產(chǎn)品的需求,分析產(chǎn)品的功能和行為,因此,對整個軟件開發(fā)過程而言,用例圖是至關(guān)重要的。
用例圖定義和描述了系統(tǒng)的外部可見行為,是分析、設(shè)計直至組裝測試的重要依據(jù)。讓用戶參與前期的系統(tǒng)分析與設(shè)計。
用例圖的組成: 用例(Use Case)參與者(Actor)關(guān)系(Relationship)
1.什么是參與者
參與者:在系統(tǒng)之外,透過系統(tǒng)邊界與系統(tǒng)進行有意義交互的任何事物。參與者可能是人、另外一個系統(tǒng)、時間的流逝等。
UML中,參與者用“人形”圖標來表示,名字寫在圖標的下方。
參與者
2.什么是用例
用例(use case)一個用例是用戶與計算機之間的一次典型交互作用。在UML中,用例被定義成系統(tǒng)執(zhí)行的一系列動作(功能)。
參與者和用例分別描述了“誰來做?”和“做什么?”這兩個問題。每個用例都必須有一個惟一的名字以區(qū)別于其他用例。用例用一個橢圓來表示,用例的名字可以書寫在橢圓的內(nèi)部或下方。用例的UML圖標如圖所示。3.用例間、用例與參與者的關(guān)系
(1)泛化關(guān)系(Generalization):一個用例可以被特別列舉為一個或多個子用例,這被稱為用例泛化:
(2)包含關(guān)系(Include)一個用例可以簡單地包含其他用例具有的行為,并把它所包含的用例行為作為自身行為的一部分,這被稱作包含關(guān)系。
(3)擴展關(guān)系(Extend):一個用例也可以被定義為基礎(chǔ)用例的增量擴展,這稱作擴展關(guān)系,擴展關(guān)系是把新行為插入到已有用例的方法。
(4)關(guān)聯(lián)關(guān)系:關(guān)聯(lián)關(guān)系表示參與者與用例之間的通信。
4.用例間的關(guān)系
(1)泛化關(guān)系
當多個用例共同擁有一種類似的結(jié)構(gòu)和行為的時候我們可以將它們的共性抽象成為父用例,其他的用例作為泛化關(guān)系中的子用例。
用例可以被特別列舉為一個或多個子用例,這被稱做用例泛化。(2)包含關(guān)系
包含是指基本用例(base use case)會用到包含用例(inclusion),具體地講,就是將包含用例的事件流插入到基礎(chǔ)用例的事件流中。包含用例是可重用的用例──多個用例的公共用例。
(3)擴展關(guān)系
將擴展用例的事件流在一定的條件下按照相應(yīng)的擴展點插入到基礎(chǔ)用例中。基礎(chǔ)用例不必知道擴展用例的任何細節(jié),它僅為其提供擴展點。擴展用例的行為是否被執(zhí)行要取決于主事件流中的判定點。
擴展關(guān)系是從擴展用例到基本用例的關(guān)系,它說明為擴展用例定義的行為如何插入到為基本用例定義的行為中。它是以隱含形式插入的,也就是說,擴展用例并不在基本用例中顯示。在以下幾種情況下,可使用擴展用例:
a.表明用例的某一部分是可選的系統(tǒng)行為(這樣,您就可以將模型中的可選行為和必選行為分開);
b.表明只在特定條件(如例外條件)下才執(zhí)行的分支流;
5.用例之間的關(guān)系
包含用例與擴展用例的區(qū)別
①相對于基礎(chǔ)用例,擴展用例是可選的,而包含用例則不是。
②如果缺少擴展用例,基礎(chǔ)用例還是完整的,而缺少包含用例,則基礎(chǔ)用例就不完整了。③擴展用例的執(zhí)行需要滿足某種條件,而包含用例不需要。④擴展用例的執(zhí)行會改變基礎(chǔ)用例的行為,而包含用例不會。
6.識別用例的方法:
①參與者希望系統(tǒng)提供什么功能;
②系統(tǒng)是否存儲和檢索信息;如果是,這個行為由哪個參與者觸發(fā); ③當系統(tǒng)改變狀態(tài)時,是否通知參與者;
④是否存在影響系統(tǒng)的外部事件,是哪個參與者通知系統(tǒng)這些外部事件。
7.6.4活動圖
1.什么是活動圖
活動圖是UML中描述系統(tǒng)動態(tài)行為的圖之一,是描述系統(tǒng)或業(yè)務(wù)的一序列活動構(gòu)成的控制流,它描述了系統(tǒng)從一種活動轉(zhuǎn)換到另一種活動的整個過程。
2.活動圖用途
活動圖用于對系統(tǒng)的動態(tài)行為建模。
活動圖常用來描述業(yè)務(wù)或軟件系統(tǒng)的活動軌跡,描述了系統(tǒng)的活動控制流程。我們常用活動圖對業(yè)務(wù)過程、工作流和用例實現(xiàn)進行建模。
活動圖主要應(yīng)用對兩個方面建模:一是在業(yè)務(wù)分析階段,對工作流程進行建模;二是在系統(tǒng)分析和設(shè)計階段,對操作流程進行建模。
7.6.5面向?qū)ο蠓治鼋⒌?類模型
對象模型、動態(tài)模型、功能模型
對象模型
對象模型表示了靜態(tài)的、結(jié)構(gòu)化的系統(tǒng)數(shù)據(jù)性質(zhì),描述了系統(tǒng)的靜態(tài)結(jié)構(gòu),它是從客觀世界實體的對象關(guān)系角度來描述,表現(xiàn)了對象的相互關(guān)系。該模型主要關(guān)心系統(tǒng)中對象的結(jié)構(gòu)、屬性和操作,它是分析階段三個模型的核心,是其他兩個模型的框架。[2]
⒈對象和類 ⑴對象。
對象建模的目的就是描述對象。⑵ 類。
通過將對象抽象成類,我們可以使問題抽象化,抽象增強了模型的歸納能力。⑶ 屬性。
屬性指的是類中對象所具有的性質(zhì)(數(shù)據(jù)值)。⑷ 操作和方法。
操作是類中對象所使用的一種功能或變換。類中的各對象可以共享操作,每個操作都有一個目標對象作為其隱含參數(shù)。
方法是類的操作的實現(xiàn)步驟。⒉關(guān)聯(lián)和鏈
關(guān)聯(lián)是建立類之間關(guān)系的一種手段,而鏈則是建立對象之間關(guān)系的一種手段。⑴ 關(guān)聯(lián)和鏈的含義。
鏈表示對象間的物理與概念聯(lián)結(jié),關(guān)聯(lián)表示類之間的一種關(guān)系,鏈是關(guān)聯(lián)的實例,關(guān)聯(lián)是鏈的抽象。
⑵ 角色。
角色說明類在關(guān)聯(lián)中的作用,它位于關(guān)聯(lián)的端點。⑶ 受限關(guān)聯(lián)。
受限關(guān)聯(lián)由兩個類及一個限定詞組成,限定詞是一種特定的屬性,用來有效的減少關(guān)聯(lián)的重數(shù),限定詞在關(guān)聯(lián)的終端對象集中說明。
限定提高了語義的精確性,增強了查詢能力,在現(xiàn)實世界中,常常出現(xiàn)限定詞。⑷ 關(guān)聯(lián)的多重性。
關(guān)聯(lián)的多重性是指類中有多少個對象與關(guān)聯(lián)的類的一個對象相關(guān)。重數(shù)常描述為“一”或“多”。⒊類的層次結(jié)構(gòu) ⑴ 聚集關(guān)系。
聚集是一種“整體-部分”關(guān)系。在這種關(guān)系中,有整體類和部分類之分。聚集最重要的性質(zhì)是傳遞性,也具有逆對稱性。
聚集可以有不同層次,可以把不同分類聚集起來得到一顆簡單的聚集樹,聚集樹是一種簡單表示,比畫很多線來將部分類聯(lián)系起來簡單得多,對象模型應(yīng)該容易地反映各級層次。
⑵一般化關(guān)系。
一般化關(guān)系是在保留對象差異的同時共享對象相似性的一種高度抽象方式。它是“一般---具體”的關(guān)系。一般化類稱為你類,具體類又能稱為子類,各子類繼承了父類的性質(zhì),而各子類的一些共同性質(zhì)和操作又歸納到你類中。因此,一般化關(guān)系和繼承是同時存在的。一般化關(guān)系的符號表示是在類關(guān)聯(lián)的連線上加一個小三角形。
⒋對象模型
⑴模板。模板是類、關(guān)聯(lián)、一般化結(jié)構(gòu)的邏輯組成。⑵對象模型。
對象模型是由一個或若干個模板組成。模板將模型分為若干個便于管理的子塊,在整個對象模型和類及關(guān)聯(lián)的構(gòu)造塊之間,模板提供了一種集成的中間單元,模板中的類名及關(guān)聯(lián)名是唯一的
動態(tài)模型
動態(tài)模型是與時間和變化有關(guān)的系統(tǒng)性質(zhì)。該模型描述了系統(tǒng)的控制結(jié)構(gòu),它表示了瞬間的、行為化的系統(tǒng)控制
性質(zhì),它關(guān)心的是系統(tǒng)的控制,操作的執(zhí)行順序,它表示從對象的事件和狀態(tài)的角度出發(fā),表現(xiàn)了對象的相互行為。
該模型描述的系統(tǒng)屬性是觸發(fā)事件、事件序列、狀態(tài)、事件與狀態(tài)的組織。使用狀態(tài)圖作為描述工具。它涉及到事件、狀態(tài)、操作等重要概念。
⒈事件
事件是指定時刻發(fā)生的某件事。
⒉狀態(tài)
狀態(tài)是對象屬性值的抽象。對象的屬性值按照影響對象顯著行為的性質(zhì)將其歸并到一個狀態(tài)中去。狀態(tài)指明了對象對輸入事件的響應(yīng)。
⒊狀態(tài)圖
狀態(tài)圖是一個標準的計算機概念,他是有限自動機的圖形表示,這里把狀態(tài)圖作為建立動態(tài)模型的圖形工具。
狀態(tài)圖反映了狀態(tài)與事件的關(guān)系。當接收一事件時,下一狀態(tài)就取決于當前狀態(tài)和所接收的該事件,由該事件引起的狀態(tài)變化稱為轉(zhuǎn)換。
狀態(tài)圖是一種圖,用結(jié)點表示狀態(tài),結(jié)點用圓圈表示;圓圈內(nèi)有狀態(tài)名,用箭頭連線表示狀態(tài)的轉(zhuǎn)換,上面標記事件名,箭頭方向表示轉(zhuǎn)換的方向。
功能模型
功能模型描述了系統(tǒng)的所有計算。功能模型指出發(fā)生了什么,動態(tài)模型確定什么時候發(fā)生,而對象模型確定發(fā)生的客體。功能模型表明一個計算如何從輸入值得到輸出值,它不考慮計算的次序。功能模型由多張數(shù)據(jù)流圖組成。數(shù)據(jù)流圖用來表示從源對象到目標對象的數(shù)據(jù)值的流向,它不包含控制信息,控制信息在動態(tài)模型中表示,同時數(shù)據(jù)流圖也不表示對象中值的組織,值的組織在對象模型中表示。
數(shù)據(jù)流圖中包含有處理、數(shù)據(jù)流、動作對象和數(shù)據(jù)存儲對象。⒈處理
數(shù)據(jù)流圖中的處理用來改變數(shù)據(jù)值。最低層處理是純粹的函數(shù),一張完整的數(shù)據(jù)流圖是一個高層處理。
⒉數(shù)據(jù)流
數(shù)據(jù)流圖中的數(shù)據(jù)流將對象的輸出與處理、處理與對象的輸入、處理與處理聯(lián)系起來。在一個計算機中,用數(shù)據(jù)流來表示一中間數(shù)據(jù)值,數(shù)據(jù)流不能改變數(shù)據(jù)值。
⒊動作對象
動作對象是一種主動對象,它通過生成或者使用數(shù)據(jù)值來驅(qū)動數(shù)據(jù)流圖。
⒋數(shù)據(jù)存儲對象
數(shù)據(jù)流圖中的數(shù)據(jù)存儲是被動對象,它用來存儲數(shù)據(jù)。它與動作對象不一樣,數(shù)據(jù)存儲本身不產(chǎn)生任何操作,它只響應(yīng)存儲和訪問的要求。
7.7設(shè)計階段
7.7.1詳細設(shè)計
詳細設(shè)計階段的根本目標是確定怎樣具體地實現(xiàn)所要求的系統(tǒng),也就是說,經(jīng)過這個階段的設(shè)計工作,應(yīng)該得出對目標系統(tǒng)的精確描述,從而在編碼階段可以把這個描述直接翻譯成用某種程序設(shè)計語言書寫的程序。
詳細設(shè)計的目標: 設(shè)計出的處理過程應(yīng)該盡可能簡明易懂。詳細設(shè)計的任務(wù):
(1)為每個模塊確定采用的算法,選擇某種適當?shù)墓ぞ弑磉_算法的過程,寫出模塊的詳細過程性描述;
(2)確定每一模塊使用的數(shù)據(jù)結(jié)構(gòu);為以后的編寫程序做好充分的準備。(3)確定模塊接口的細節(jié)。
7.7.2總體設(shè)計
1.面向?qū)ο笤O(shè)計
面向?qū)ο笤O(shè)計的準則:優(yōu)秀設(shè)計就是使得系統(tǒng)在其整個生命周期中的總開銷最小的設(shè)計, 其主要特點就是容易維護。
面向?qū)ο笤O(shè)計(OOD,Object-Oriented Design)是面向?qū)ο蠓治龅綄崿F(xiàn)的一個橋梁。面向?qū)ο蠓治鍪菍⒂脩粜枨蠼?jīng)過分析后,建立問題域精確模型的過程;而面向?qū)ο笤O(shè)計則根據(jù)面向?qū)ο蠓治龅玫降男枨竽P?,建立求解域模型的過程。即分析必須搞清楚系統(tǒng)“做什么”,而設(shè)計必須搞清楚系統(tǒng)“怎么做”,從分析到設(shè)計不是傳統(tǒng)方法的轉(zhuǎn)換,而是平滑(無縫)過渡,而求解域模型是系統(tǒng)實現(xiàn)的依據(jù)。
靜態(tài)結(jié)構(gòu)設(shè)計: ? 類設(shè)計 ? 包設(shè)計 ? 接口設(shè)計
動態(tài)結(jié)構(gòu)設(shè)計(行為和交互建模): ? 對象如何進行交互的
2.GUI(圖形用戶界面)設(shè)計概述
對于用戶來說,一個友好的界面是至關(guān)重要的。
用戶界面(User Interface)的設(shè)計質(zhì)量直接影響用戶對軟件產(chǎn)品的評價,從而影響軟件產(chǎn)品的競爭力和使用壽命,因此,對人機界面的設(shè)計必須給予足夠的重視。
良好的GUI設(shè)計原則
1、關(guān)注用戶及其任務(wù),而不是技術(shù)
2、首先考慮功能,其次才是表現(xiàn)
3、與用戶對任務(wù)的看法保持一致
4、設(shè)計要符合常見情況
5、不要分散用戶對他們目標的注意力
6、促進學習,從外(用戶)到里(設(shè)計人員)思考,而不是相反。
7、傳遞信息,而不僅僅是數(shù)據(jù)
8、設(shè)計應(yīng)滿足響應(yīng)需求
9、通過用戶試用發(fā)現(xiàn)錯誤,然后修復它
3.數(shù)據(jù)庫設(shè)計
設(shè)計原則:
每一個類成為一個數(shù)據(jù)庫表。關(guān)系映射:
(1)一對多的關(guān)系映射為數(shù)據(jù)庫表的主外鍵關(guān)聯(lián)(1方的主鍵加入n方成為外鍵)
(2)一對一的關(guān)系映射為數(shù)據(jù)庫表的主外鍵關(guān)聯(lián)(1方的主鍵加入另一方成為外鍵)
(3)多對多的關(guān)系映射:產(chǎn)生第三張表,將兩個多方的主鍵加入其中成為外鍵,兩個外鍵的組合成為主鍵。
利用數(shù)據(jù)庫三范式檢查表,從而考察領(lǐng)域類圖的分析是否合理,消除冗余數(shù)據(jù)。檢查數(shù)據(jù)是否能夠反映用例視圖的需要;進一步與用戶再次確認使用的數(shù)據(jù)。
7.8注釋
夾在程序中的注釋是程序員與日后的程序讀者之間通信的重要手段。注釋決不是可有可無的。一些正規(guī)的程序文本中,注釋行的數(shù)量占到整個源程序的1/3到1/2,甚至更多。
注釋分為兩類:序言性注釋和功能性注釋。
1.序言性注釋
通常置于每個程序模塊的開頭部分,它應(yīng)當給出程序的整體說明,對于理解程序本身具有引導作用。
序言性注釋包括: 程序標題;
有關(guān)本模塊功能和目的的說明; 主要算法;
接口說明:包括調(diào)用形式,參數(shù)描述,子程序清單;
有關(guān)數(shù)據(jù)描述:重要的變量及其用途,約束或限制條件,以及其它有關(guān)信息; 模塊位置:在哪一個源文件中,或隸屬于哪一個軟件包;
開發(fā)簡歷:模塊設(shè)計者,復審者,復審日期,修改日期及有關(guān)說明等。
2.功能性注釋
功能性注釋嵌在源程序體中,用以描述其后的語句或程序段是在做什么工作,或是執(zhí)行了下面的語句會怎么樣,而不要解釋下面怎么做。
要點:
描述一段程序,而不是每一個語句; 用縮進和空行,使程序與注釋容易區(qū)別;
7.9軟件測試
軟件測試的定義:軟件測試是使用人工和自動手段來運行或測試某個系統(tǒng)的過程,其目的在于檢測被測試軟件系統(tǒng)是否滿足規(guī)定的需要,或是弄清楚被測系統(tǒng)的預期結(jié)果與實際結(jié)果之間的差別。
黑盒測試:僅需要知道被測試對象的輸入和預期輸出,不需要了解代碼實現(xiàn)的細節(jié)。測試方法
主要分為兩類:功能層面的測試方法和函數(shù)層面的測試方法(邊界值測試、等價類測試、基于決策表測試)。側(cè)重于系統(tǒng)業(yè)務(wù)流程的梳理,是基于動態(tài)業(yè)務(wù)過程設(shè)計測試用例。
白盒測試:是針對程序代碼展開的測試,分為靜態(tài)測試和動態(tài)測試:關(guān)注對象包括源代碼和程序結(jié)構(gòu)。靜態(tài)白盒測試的方法是代碼檢查。靜態(tài)測試不需要運行程序和設(shè)計測試用例,側(cè)重于源代碼的檢查和優(yōu)化,直接查看源代碼和執(zhí)行代碼,直接定位代碼中的缺陷。動態(tài)測試側(cè)重于程序結(jié)構(gòu)的測試。
測試用例的定義:測試用例是一組測試輸入,執(zhí)行條件和預期結(jié)果。目的是要滿足一個特定的目標。如果執(zhí)行一條特定的程序路徑或者檢驗是否符合一個特定的需求的用例。測試用例:輸入+輸出+測試環(huán)境測試環(huán)境包括:硬件環(huán)境,軟件環(huán)境,網(wǎng)絡(luò)環(huán)境,歷史數(shù)據(jù)。
測試用例分為兩個階段:測試用例分析階段,測試用例設(shè)計階段。
7.9.1測試和調(diào)試的區(qū)別
1、目的不同
軟件測試的目的是發(fā)現(xiàn)錯誤,至于找出錯誤的原因和錯誤發(fā)生的地方不是軟件測試的任務(wù),而是調(diào)試的任務(wù).調(diào)試的目的是為了證明程序的正確,因此它必須不斷地排除錯誤.它們的出發(fā)點不一樣。前者是挑錯,是一種挑剔過程,屬于質(zhì)盤保證活動。后者是排錯,是一種排除過程,是編碼活動的一部分。
2、任務(wù)不同
既然軟件測試屬于質(zhì)量保證活動,因此它貫穿于整個開發(fā)過程.從需求分析開始,就要制訂軟件測試計劃,軟件設(shè)計時要設(shè)計系統(tǒng)軟件測試、集成側(cè)試用例,編碼階段要設(shè)計單元軟件測試用例并進行單元軟件測試,軟件測試階段要進行集成軟件測試、系統(tǒng)軟件測試等,直到產(chǎn)品交付。只要有修改就有軟件測試,產(chǎn)品交付后同樣。它是比較有規(guī)律的活動,有系統(tǒng)的方法、原則作指導。
而調(diào)試是編碼活動的一部分,因此有編碼就有調(diào)試.它的任務(wù)主要就是排錯。調(diào)試的方法經(jīng)常與使用的開發(fā)工具有關(guān),例如:解釋型的開發(fā)工具可以交互式調(diào)試,編譯型開發(fā)工具就很難較好地查錯。當然它有一些啟發(fā)式的方法,它是一種比較依賴開發(fā)人員經(jīng)驗的活動。
3、指導原則和方法不同
軟件側(cè)試是一種有規(guī)律的活動,有一系列軟件軟件測試的原則.其中主要是制訂側(cè)試計劃,然后嚴格執(zhí)行.其次是一種挑剔性行為,因此它不但要側(cè)試軟件應(yīng)該做的,還需要側(cè)試軟件不應(yīng)該做的事情。調(diào)試所遵循的規(guī)律主要是一些啟發(fā)式規(guī)則,是一個推理過程。例如使用歸納法、演繹法、回溯法等。
軟件測試的輸出是預知的,其軟件測試用例必須包括預期的結(jié)果,而調(diào)試的輸出大多是不可預見的,需要調(diào)試者去解釋、去發(fā)現(xiàn)產(chǎn)生的原因。
4、操作者
因為心理狀態(tài)是軟件測試程序的障礙,所以執(zhí)行軟件測試的人一般不是開發(fā)人員,以使軟件測試更客觀、更有效,而調(diào)試人員一般都是開發(fā)人員.7.9.2軟件維護
軟件維護活動類型總起來大概有四種:糾錯性維護(校正性維護)、適應(yīng)性維護、完善性維護或增強、預防性維護或再工程。
改正性維護
改正性維護是指改正在系統(tǒng)開發(fā)階段已發(fā)生而系統(tǒng)測試階段尚未發(fā)現(xiàn)的錯誤。這方面的維護工作量要占整個維護工作量的17%~21%。所發(fā)現(xiàn)的錯誤有的不太重要,不影響系統(tǒng)的正常運行,其維護工作可隨時進行:而有的錯誤非常重要,甚至影響整個系統(tǒng)的正常運行,其維護工作必須制定計劃,進行修改,并且要進行復查和控制。
適應(yīng)性維護
適應(yīng)性維護是指使用軟件適應(yīng)信息技術(shù)變化和管理需求變化而進行的修改。這方面的維護工作量占整個維護工作量的18%~25%。由于計算機硬件價格的不斷下降,各類系統(tǒng)軟件屢出不窮,人們常常為改善系統(tǒng)硬件環(huán)境和運行環(huán)境而產(chǎn)生系統(tǒng)更新?lián)Q代的需求;企業(yè)的外部市場環(huán)境和管理需求的不斷變化也使得各級管理人員不斷提出新的信息需求。這些因素都將導致適應(yīng)性維護工作的產(chǎn)生。進行這方面的維護工作也要像系統(tǒng)開發(fā)一樣,有計劃、有步驟地進行。
完善性維護
完善性維護是為擴充功能和改善性能而進行的修改,主要是指對已有的軟件系統(tǒng)增加一些在系統(tǒng)分析和設(shè)計階段中沒有規(guī)定的功能與性能特征。這些功能對完善系統(tǒng)功能是非常必要的。另外,還包括對處理效率和編寫程序的改進,這方面的維護占整個維護工作的50%~60%,比重較大.也是關(guān)系到系統(tǒng)開發(fā)質(zhì)量的重要方面。這方面的維護除了要有計劃、有步驟地完成外.還要注意將相關(guān)的文檔資料加入到前面相應(yīng)的文檔中去。
預防性維護
預防性維護為了改進應(yīng)用軟件的可靠性和可維護性,為了適應(yīng)未來的軟硬件環(huán)境的變化,應(yīng)主動增加預防性的新的功能,以使應(yīng)用系統(tǒng)適應(yīng)各類變化而不被淘汰。例如將專用報表功能改成通用報表生成功能,以適應(yīng)將來報表格式的變化。這方面的維護工作量占整個維護工作量的4%左右。
第一章
1.軟件有哪些種類?
答:1.按功能特征進行劃分:
(1)系統(tǒng)軟件(2)支撐軟件(3)應(yīng)用軟件
2.按規(guī)模大小進行劃分
微型、小型、大型、甚大型、極大型
4.結(jié)合自己的親身經(jīng)歷,談?wù)勡浖ぞ咴谲浖_發(fā)過程中的作用。
使軟件開發(fā)更加模式化,工程化,從而提高軟件開發(fā)的效率和封裝性。
第二章
2.軟件瀑布模型為什么要劃分階段?各個階段的任務(wù)是什么?
在軟件開發(fā)早期,開發(fā)只是被簡單地分成編寫代碼和修改代碼兩個階段。往往在拿到項目后立刻編寫程序,然后調(diào)試通過后直接交付給用戶使用。如果應(yīng)用中出現(xiàn)錯誤,或者有新的要求,都需要重新修改代碼。這種小作坊式的軟件開發(fā)方法有明顯的弊端,如缺乏統(tǒng)的項目規(guī)劃、不太重視需求的獲取和分析、對軟件的測試和維護考慮不周等,這些都會導致軟件項目的失敗。
概念階段:計劃、需求分析
開發(fā)階段:設(shè)計、編碼、測試
維護階段:運行維護
3.舉例說明哪些項目的開發(fā)適用于原型模型或螺旋模型,哪些不適于采用這兩種模型。
螺旋模型適合于大型軟件的開發(fā),應(yīng)該說它是最為實際的方法,它吸收了軟件工程“演化”的概念,使得開發(fā)人員和客戶對每個演化層出現(xiàn)的風險有所了解,繼而做出應(yīng)有的反應(yīng)。
不適用:小型軟件。
原型般是指對某種產(chǎn)品進行模擬的初始版本或者原始模型,在工程領(lǐng)域中具有廣泛應(yīng)用。
不適用:大型軟件項目;含有對于計算量大、邏輯性較強的程序模塊:
第三章
1.可行性研究的任務(wù)是什么?
可行性研究的任務(wù)是以最小的代價在盡可能短的時間內(nèi)確定問題是否能夠解決。簡單的說,可行性研究的最終結(jié)果是決定項目y做還是小做”而不是“如何做”。2.項目開發(fā)計劃有哪些內(nèi)容?
引言(目的、背景、參考文獻、術(shù)語);項目概述(功能、條件、運行環(huán)境、產(chǎn)品、程序、文檔、服務(wù)、驗收標準、實施計劃、工作任務(wù)分解、進度、預算、人員)
第四章
1.什么是需求工程?需求工程包括哪些活動?
需求工程是指應(yīng)用已證實有效的技術(shù)、方法進行需求分析,確定客戶需求,幫助分析人員理解問題并定義目標系統(tǒng)的所有外部特征的 門學科。它通過合適的工具和記號系統(tǒng)地描述待開發(fā)系統(tǒng),及其行為特征和相關(guān)約束,形成需求文檔;并對用戶不斷變化的需求演進給予支持。
一個良好的需求開發(fā)過程應(yīng)該包括需求獲取、需求分析與建模、編寫需求規(guī)格說明書和需求評審4個主要活動。
2.需求工程過程包括哪些主要活動? 需求開發(fā)過程應(yīng)該包括需求獲取、需求分析與建模、編寫需求規(guī)格說明書和需求評審4個主要活動。3.有哪兩種主要的需求分析模型?它們的主要思想是什么?
答:面向?qū)ο蠓治瞿P?,結(jié)構(gòu)化分析模型。前者是采用面向?qū)ο蟮乃枷脒M行軟件需求分析的建模過程,而后者模型的核心是DD,它是設(shè)計各種數(shù)據(jù)對象的總和。他們的模型分別起到了描述數(shù)據(jù)模型,功能模型與行為模型的作用。
4.需求規(guī)格說明書的主要作用是什么?應(yīng)該包括哪些主要內(nèi)容? 作用:
(1)作為用戶方和開發(fā)方之間的合同,為雙方相互了解提供基礎(chǔ)。
(2)反映問題的結(jié)構(gòu),作為系統(tǒng)設(shè)計和編碼的依據(jù)。
(3)作為測試和驗收目標系統(tǒng)的依據(jù)。內(nèi)容:
用戶可以通過需求規(guī)格說明書檢查需求描述是否滿足原來的期望。設(shè)計人員根據(jù)軟件需求規(guī)格說明書的描述了解所需開發(fā)軟件的功能和性能,以及開發(fā)軟件時必須滿足的約束,將其作為軟件設(shè)計的依據(jù)。測試人員根據(jù)軟件需求規(guī)格說明書中對產(chǎn)品的描述,設(shè)計測試計劃、測試用例和測試過程。產(chǎn)品發(fā)布人員根據(jù)軟件需求規(guī)格說明和用戶界面設(shè)計編寫用戶手冊和幫助信息
第五章
2.簡述數(shù)據(jù)流圖分解時的注意事項。
?上層可分解得快些(即分解成子數(shù)據(jù)處理個數(shù)多些),這是因為上層是綜合性描述,對可讀性的影(即分解成的子數(shù)據(jù)處理個數(shù)多些),這是因為上層是綜合性描述,對可讀性的影響小。而下層應(yīng)分解得慢性。
?在不影響可讀性的前提下,應(yīng)適當多分解成幾部分,以減少分解層數(shù)。3.數(shù)據(jù)字典的作用是什么?它有哪些基本內(nèi)容? ?分解應(yīng)自然,概念上要合理、清晰。
作用:數(shù)據(jù)字典作為分析階段的工具,有助于改進分析人員和用戶.間的通信,進而消除很多的誤解,同時也有助于改進不同開發(fā)人員之間的通信;.內(nèi)容:數(shù)據(jù)字典的內(nèi)容主要是對數(shù)據(jù)流圖中的數(shù)據(jù)項、數(shù)據(jù)流、加工邏輯、數(shù)據(jù)存儲和外部實體
第六章
1.什么是面向?qū)ο蠓椒??與傳統(tǒng)軟件開發(fā)方法相比,面向?qū)ο蠓椒ㄓ惺裁磧?yōu)點? 是一種把面向?qū)ο蟮乃枷霊?yīng)用于軟件開發(fā)過程中,指導開發(fā)活動的系統(tǒng)方法。優(yōu)點:
1.符合人們對問題的認識習慣
2.增強問題域與最終軟件系統(tǒng)之間的銜接
3.易于維護和復用
4.易于開發(fā)大型軟件產(chǎn)品
2.什么是模型?在軟件開發(fā)過程中為什么需要建立模型?
在軟件開發(fā)過程中,建立軟件模型具有十分重要的作用,主要體現(xiàn)在以下幾個方面:
有助于問題的簡化,通過抽象降低復雜性;
有助于和其他開發(fā)小組成員,各種用戶以及系統(tǒng)相關(guān)者進行交流;
有助于維護人員了解軟件設(shè)計的思路和細節(jié),為以后的維護和升級提供了文檔。
第七章
1.面向?qū)ο蠓治霭男┗顒樱繎?yīng)該建立哪些類型的模型?
面向?qū)ο蠓治鯫OA模型的過程包括理解用例模型、識別分析類、定義交互行為、建立分析類圖、評審分析模型5個活動組成。
目標是建立一個符合問題域、滿足用戶需求的OOA模型。
2.什么是實體類、邊界類和控制類?為什么將分析類劃分成這3種類型?
實體類:用于描述必須存儲的信息,同時描述相關(guān)的行為。實體類代表擬建系統(tǒng)中的核心信息。在RUP的有關(guān)文檔中對實體類的解釋為:“實體類是用于對必須存儲的信息和相關(guān)行為建模的類。邊界類:在系統(tǒng)與外界之間,為它們交換各種信息與事件。邊界類處理軟件系統(tǒng)的輸入和輸出。在RUP的有關(guān)文檔中對邊界類的解釋為:邊界類是一種用于對系統(tǒng)外部環(huán)境與其內(nèi)部運作之間的交互進行建模的類。
控制類:與業(yè)務(wù)過程相關(guān),它們控制整個業(yè)務(wù)的流程和執(zhí)行次序。在RUP的有關(guān)文檔中對控制類的解釋為:控制類用于對一個或幾個用例所持有的控制行為進行建模。
控制類對象可以和邊界對象交互,也可以和實體對象交互,但不能和用例的參與者直接進行交互。
第八章
1.什么是軟件設(shè)計?它的目標和任務(wù)是什么?
<1>軟件設(shè)計:在需求分析的基礎(chǔ)上通過抽象和分解將系統(tǒng)分解成模塊,確定系統(tǒng)功能的實現(xiàn)。即把軟件需求轉(zhuǎn)換為軟件包表示的過程。
<2>目標:軟件設(shè)計的最終目標是產(chǎn)生一個設(shè)計規(guī)約,該規(guī)約包括體系結(jié)構(gòu)、描述數(shù)據(jù)、接口和構(gòu)件的設(shè)計模型。
軟件設(shè)計的任務(wù),就是把分析階段產(chǎn)生的軟件需求規(guī)格說明轉(zhuǎn)換為用適當手段表示的軟件設(shè)計文檔。
2.完成良好的軟件設(shè)計應(yīng)遵循哪些原則?
模塊化與模塊獨立性;抽象與逐步求精;信息隱藏。3.如何理解模塊獨立性?用什么指標來衡量模塊獨立性?
<1>模塊的獨立性是指軟件系統(tǒng)中每個模塊只涉及軟件要求的具體的子功能,而和軟件系統(tǒng)中其他的模塊的接口是簡單的。
<2>一般采用兩個準則度量模塊獨立性,即模塊的內(nèi)聚性和模塊間的耦合性 4.說明軟件設(shè)計階段的任務(wù)和過程 軟件設(shè)計分兩步完成,即總體設(shè)計與詳細設(shè)計。第個階段是總體設(shè)計,即概要設(shè)計或初步設(shè)計。這、階段主要確定實現(xiàn)目標系統(tǒng)的總體思想和設(shè)計框架,確定程序由哪些模塊組成,以及模塊與模塊之間的關(guān)系,最后提出概要設(shè)計說明書。第二個階段是詳細設(shè)計,即過程設(shè)計或構(gòu)件級設(shè)計,其任務(wù)是通過對結(jié)構(gòu)表示進行細化,確定各個軟件構(gòu)件的詳細數(shù)據(jù)結(jié)構(gòu)和算法,產(chǎn)生描述各個軟件構(gòu)件的詳細設(shè)計文檔。
5.試說明軟件體系結(jié)構(gòu)在軟件設(shè)計階段中的重要性。
良好的體系結(jié)構(gòu)設(shè)計是決定軟件系統(tǒng)成功的重要因素。軟件體系結(jié)構(gòu)設(shè)計的好壞往往會成為一個系統(tǒng)設(shè)計成敗的關(guān)鍵。通常,軟件體系結(jié)構(gòu)涉及軟件的總體組織、全局控制、數(shù)據(jù)存取及子系統(tǒng)之間的通信協(xié)議等。
6.簡述面向?qū)ο笤O(shè)計階段要做的工作。
OOD主要包括三個方面的工作:系統(tǒng)體系結(jié)構(gòu)設(shè)計、用例實現(xiàn)方案設(shè)計和用戶界面設(shè)計。
第十一章
1.簡述程序設(shè)計語言的基本特征及分類。
基本特征包括心理特性,工程特性和技術(shù)特性三個方面。語言的的—心理特性對人機通信的質(zhì)量有主要的影響;語言的工程特性對軟件開發(fā)成功與否有重要的影響,此外語言的技術(shù)特性也會影響軟件設(shè)計的質(zhì)量
?按程序設(shè)計語言的歷史發(fā)展過程,計算機語言可分為機器語言、匯編語言、高級程序設(shè)計語言。
?按與機器的依賴程度,可分為低級、中級和高級語言。
?按應(yīng)用范圍,可分為通用語言與專用語言兩大類,通用語言義可細分為系統(tǒng)程序設(shè)計語言、科學計算語言、事務(wù)處理語言和實時控制語言等。
?按程序的設(shè)計方法,可分為命令性語言和作用性語言。
?按語言的成分,可以分成順序語言、并行語言和實時語言等。
?按語言的組成方法,可以分成匯集式語言和可擴充語言。2.為了具有良好的程序設(shè)計風格,應(yīng)該注意哪些方面的問題?
要形成良好的程序設(shè)計風格,應(yīng)從源程序文檔化、數(shù)據(jù)說明、語句構(gòu)造、輸入輸出和追求效率幾個方面加以注意。
3.什么是軟件測試?軟件I則試的原則有哪些?
軟件測試是按照特定的規(guī)則,發(fā)現(xiàn)缺陷而執(zhí)行程序的過程。
一個好的測試用例是指盡可能找到迄今為止尚未發(fā)現(xiàn)缺陷的用例。一個成功的測試是指揭示了迄今為止尚未發(fā)現(xiàn)缺陷的測試。軟件測試的原則:
(l)所有的測試都應(yīng)該能追溯到用戶需求。
(Z)應(yīng)該在測試之前就制定出測試計劃。
(3)Pareto原理可應(yīng)用于軟件測試。
(4)測試應(yīng)從“小規(guī)?!遍_始,逐步轉(zhuǎn)向“大規(guī)?!?/p>
(S)窮舉測試是不可能的。
(6)既要做通過性測試,又要做失效性測試。
(D為了達到最佳的測試效果,應(yīng)該由獨立的第三方從事測試工作。
第十四章
1.為什么說軟件維護是不可避免的?
因為軟件的開發(fā)過程中,一般很難檢測到所有的錯誤,其次軟件在應(yīng)用過程中需要隨用戶新的要求或運行環(huán)境的變化而進行軟件的修改或糾正軟件開發(fā)過程未發(fā)現(xiàn)的錯誤,增強、改進和完善軟件的功能和性能,以適應(yīng)軟件的發(fā)展,延長軟件的壽命,軟件的維護是不可避免的。2.什么是軟件再工程?軟件再工程的主要活動有哪些?
指在逆向工程所獲信息的基礎(chǔ)上修改重構(gòu)已有的系統(tǒng),產(chǎn)生的―個新版本,或者說利用這些信息修改或重構(gòu)軟件系統(tǒng)的工作。
它定義了6為活動r即庫存目錄分析、文檔重構(gòu)、逆向工程、代碼重構(gòu)、數(shù)據(jù)重構(gòu)、正向工程。3.軟件調(diào)試與軟件測試有什么區(qū)別?
1、目的不同
軟件測試的目的是發(fā)現(xiàn)錯誤,至于找出錯誤的原因和錯誤發(fā)生的地方不是軟件測試的任務(wù),而是調(diào)試的任務(wù)。調(diào)試的目的是為了證明程序的正確,因此它必須不斷地擠除錯誤.它們的出發(fā)點不一樣“前者是挑錯,是一種挑剔過程,屬于質(zhì)盤保證活動。后者是排錯,是-種排除過程,是編碼活動的部分?
2、任務(wù)不同
既然軟件測試屬于質(zhì)量保證活動,因此它貫穿十整個計發(fā)過程.從需求分析開始,就要制訂軟件測試計劃,軟件設(shè)計時要設(shè)計系統(tǒng)軟件測試、集成側(cè)試用例,編碼階段要設(shè)計單元軟件測試用例并進行單元軟件測試,軟件測試階段要進行集成軟件測試、系統(tǒng)軟件測試等,直到產(chǎn)品交付。只要有修改就有軟件測試,產(chǎn)品交付后同樣。它是比較有規(guī)律的活動,有系統(tǒng)的方法、原則作指導。
而調(diào)試是編碼活動的部分,因此有編碼就有調(diào)試它的任務(wù)主要就是排錯。調(diào)試的方法經(jīng)常與使用的開發(fā)工具有關(guān),例如解釋型的開發(fā)工具可以交互式調(diào)試,編譯型開發(fā)工具就很難較好地查錯。當然它有些啟發(fā)式的方法,它是.種比較依賴開發(fā)人員經(jīng)驗的活動。
3、指導原則和方法不同
軟件側(cè)試是種有規(guī)律的活動,有一系列軟件軟件測試的原則.其中主要是制U側(cè)試計劃,然后嚴格執(zhí)行。其次是種挑剔性行為,因此它不但要側(cè)試軟件應(yīng)該做的,還需要側(cè)試軟件個應(yīng)該做的事情。調(diào)試所遵循的規(guī)律主要是些啟發(fā)式規(guī)則,是”個推理過程。例如使用歸納法、演繹法、回溯法等。
軟件測試的輸出是預知的,其軟件測試用例必須包括預期的結(jié)果,而調(diào)試的輸出大多是不可預見的,需要調(diào)試者去解釋、去發(fā)現(xiàn)產(chǎn)生的原因。
4、操作者
因為心理狀態(tài)是軟件測試程序的障礙,所以執(zhí)行軟件測試的人一般不是開發(fā)人員,以使軟件測試更客觀、更有效,而調(diào)試人員一般都是開發(fā)人員?
5、操作環(huán)境、配置、工具不同
調(diào)試在開發(fā)的編碼環(huán)境下進行。如果編碼使用解釋型語言,則可以進行人機交互式調(diào)試,設(shè)里斷點、單步調(diào)試等。如果編碼使用編譯型語言,也可以設(shè)置斷點、顯示調(diào)試變量值等。而軟件測試是在軟件測試環(huán)境下進行,直接運行開發(fā)完成的程序,可能不再需要一些開發(fā)時的驅(qū)動程序、動態(tài)鏈接庫等.使用不同的工具,環(huán)境配置也不同。
簡答題,1.什么是軟件工程?請分析軟件工程的目標是什么?
答案:軟件工程是:1將系統(tǒng)化的、規(guī)范的、可度量的方法應(yīng)用于軟件的升發(fā)、運行和維護過程,也就是說將工程化應(yīng)用于軟件開發(fā)和管理之中;2對1中所選方法的研究”
軟件工程旨在開發(fā)滿足用戶需要、及時交付、不超過預算和無故障的軟件,其主要目標如下: a)實現(xiàn)預期的軟件功能,達到較好的軟件性能,滿足用戶的需求。
b)增強軟件過程的可見性和可控性,保證軟件的質(zhì)量。
c)提高所開發(fā)軟件的可維護性,降低維護費用。
d)提高軟件開發(fā)生產(chǎn)率,及時交付使用。
e)合理預算開發(fā)成本,付出較低的開發(fā)費用。
3.根據(jù)相關(guān)的法律,對于侵犯軟件著作權(quán)的行為,根據(jù)情節(jié)應(yīng)當給予什么處罰?
對于侵犯軟件著作權(quán)的行為,要根據(jù)情況承擔停止侵害、消除影響、賠禮道歉、賠償損失等民事責任;損害社會公共利益的,由著作權(quán)行政管理部門責令停止侵權(quán)行為,沒收違法所得,沒收、銷毀侵權(quán)復制品,并處罰款;情節(jié)嚴重的,著作權(quán)行政管理部門可以沒收用子制作侵權(quán)復制品的材料、工具、設(shè)備等;觸犯刑律的,依法追究刑事責任。
4根據(jù)你的理解,列舉出職業(yè)化軟件工程師要注意的三個主要問題,請給出理由。沒有唯一答案。
1)不遵守標準和規(guī)范:職業(yè)化的重要特征是遵守行業(yè)標準,不能肆意按照自己的想象來發(fā)揮。自從人們認識到軟件危機以來,總結(jié)軟件開發(fā)的失敗教訓和成功經(jīng)驗,并把它們總結(jié)成為最佳實踐,進而形成標準,要充分利用這些最佳實踐和標準來指導軟件過程。任何閉門造車、想當然的行為都是不被提倡的,注定要走彎路。
2)對待計劃不嚴肅:軟件工程強調(diào)計劃性,計劃的內(nèi)容包括;設(shè)備資源、進度安排、人力資源、任務(wù)分配等等。在項目的進行中要跟蹤計劃執(zhí)行情況,記錄計劃執(zhí)行過程中的偏差,對任何變更都要經(jīng)過評審和批準才能付諸行動。
3)不主動與人溝通:軟件不可見的特性,需要軟件工程師進行大量書面的、口頭的或面對面的溝通,溝通的目的是為了使相關(guān)的人員了解項目的進展、遇到的問題、應(yīng)用的技術(shù)、采用的方法。5.軟件工程為什么要強調(diào)規(guī)范化和文檔化?.軟件工程強調(diào)規(guī)范化和文檔化。規(guī)范化的目的是使眾多的開發(fā)者遵守相同的規(guī)范,使軟件生產(chǎn)擺脫個人生產(chǎn)方式,進入標準化、工程化的生產(chǎn)方式。文檔化是將軟件的設(shè)計思想、設(shè)計過程和實現(xiàn)過程完整地記錄下來,以便于后人的使用和維護,在開發(fā)過程中各類相關(guān)人員借助于文檔進行交流和溝通。另外,在開發(fā)過程中產(chǎn)生的各類文檔使得軟件的生產(chǎn)過程由不可見變?yōu)榭梢?,便于管?/p>
者對軟件生產(chǎn)進度和開發(fā)過程進行管理。在用戶最終驗收時可以通過對提交的文檔進行技術(shù)審查和管理審查,保證軟件的質(zhì)量。
6.請簡單說明結(jié)構(gòu)化分析的主要步驟。
根據(jù)用戶的需求畫出初始的數(shù)據(jù)流程圖,寫出數(shù)據(jù)字典和初始的加工處理說明(lPO圖),實體關(guān)系圖。以初始數(shù)據(jù)流程圖為基礎(chǔ),從數(shù)據(jù)流程圖的輸出端開始回溯。在對數(shù)據(jù)流程圖進行回溯的過程中可能會發(fā)現(xiàn)丟失的處理和數(shù)據(jù),應(yīng)將數(shù)據(jù)流程圖補充完善。對軟件性能指標、接口定義、設(shè)計和實現(xiàn)的約束條件等逐一進行分析。系統(tǒng)分析人員與用戶起對需求分析的結(jié)果進行復查。根據(jù)細化的需求修訂開發(fā)計劃。編寫需求規(guī)格說明書和初始的用戶手冊,測試人員開始編寫功能測試用的測試數(shù)據(jù)。
7.設(shè)計類的屬性時必須要定義是哪兩項?
設(shè)計類的屬性時必須要定義的內(nèi)容:
1)屬性的類型:設(shè)計屬性時必須要根據(jù)開發(fā)語言確定每個屬性的數(shù)據(jù)類型?如果數(shù)據(jù)類型不夠,設(shè)計人員可以利用已有的數(shù)據(jù)類型定義新的數(shù)據(jù)類型。
2)屬性的可見性。在設(shè)計屬性時要確定公有屬性、私有屬性、受保護屬性。活動圖反映系統(tǒng)中從一個活動到另一個活動的流程,強調(diào)對象間的控制流程?;顒訄D特別適合描述工作流和并行處理過程。具體地說活動圖可以描述一個操作過程中需要完成的活動;描述一個對象內(nèi)部的工作;描述如何執(zhí)行組相關(guān)的動作,以及這些動作如何影響它們周圍的對象;說明個業(yè)務(wù)活動中角色、工作流、組織和對象是如何工作的。
順序圖用于描述一組交互對象間的交互方式,它表示完成某項行為的對象和這些對象之間傳遞消息的時間順序。
8面向?qū)ο蟮姆治鐾ǔR⑷齻€模型,請問三個模型的作用?
a)功能模型:表達系統(tǒng)的詳細需求,為軟件的進一步分析和設(shè)計打下基礎(chǔ)。在面向?qū)?/p>
象方法中,由用例圖和場景描述組成。
b)對象模型:表示靜態(tài)的、結(jié)構(gòu)化的系統(tǒng)“數(shù)據(jù)”性質(zhì)。描述現(xiàn)實世界中實體的對象以及它們之間的關(guān)系,表示目標系統(tǒng)的靜態(tài)數(shù)據(jù)結(jié)構(gòu)。在面向?qū)ο蠓椒ㄖ?,類圖是構(gòu)件對象模型的核心上具。
c)動態(tài)模型:描述系統(tǒng)的動態(tài)結(jié)構(gòu)和對象之間的交互,表示瞬時的、行為化的系統(tǒng)的“控制”特性。面向?qū)ο蠓椒ㄖ校S脿顟B(tài)圖、順序圖、合作圖、活動圖構(gòu)件系統(tǒng)的動態(tài)模型。
9.面向?qū)ο蟮脑O(shè)計活動中,有構(gòu)架師、用例工程師和構(gòu)件師參加,他們每個角色的職責是什么?
構(gòu)架設(shè)計的目的是要勾畫出系統(tǒng)的總體結(jié)構(gòu),這項工作由經(jīng)驗豐富的構(gòu)架設(shè)計師主持完成。該活動以用例模型、分析模型為輸入,生成物理構(gòu)架、子系統(tǒng)及其接口、概要的設(shè)計類(即設(shè)計階段定義的類)。
根據(jù)分析階段產(chǎn)生的高層類圖和交互圖,由用例設(shè)計師研究已有的類,將它們分配到相應(yīng)的用例中。檢查每個用例的功能,這些功能依靠當前的類能否實現(xiàn),同時檢查每個用例的.特殊需求是否有合適的類來實現(xiàn)。細化每個用例的類圖,描述實現(xiàn)用例的類及其類之間的相互關(guān)系,其中的通用類和關(guān)鍵類可用粗線框區(qū)分,這些類將作為項目經(jīng)理檢查項目時的重點。
經(jīng)過前面兩個活動,構(gòu)架設(shè)計師已經(jīng)將系統(tǒng)的構(gòu)架建立起來,用例設(shè)計師按照用例的功能將每個類分配給相應(yīng)的用例?,F(xiàn)在要由構(gòu)件工程師詳細設(shè)計每個類的屬性、方法和關(guān)系。10.提高程序可讀性有哪些招數(shù)?對你來講比較靈驗的是哪些?
a)源程序文件頭說明,函數(shù)應(yīng)有函數(shù)頭說明,內(nèi)容包括:程序標題;有關(guān)該模塊功能和目的說明;主要算法說明;接O說明,包括調(diào)用形式、參數(shù)描述、子程序清單、有關(guān)數(shù)據(jù)的說明。
b)主要變量(結(jié)構(gòu)、聯(lián)合、類或?qū)ο?的定義能夠反映其內(nèi)在含義。c)變量定義最規(guī)范化,說明的先后次序固定。
d)處理過程的每個階段和典型算法前都有相關(guān)注釋說明。
三、簡答題:
2、什么是軟件工程?包括哪些內(nèi)容?
答: 軟件工程:用科學知識和技術(shù)原理來定義、開發(fā)、維護軟件的一門學科。軟件工程的內(nèi)容:
1)軟件開發(fā)技術(shù):軟件開發(fā)方法、軟件開發(fā)過程、軟件開發(fā)工具和環(huán)境。2)軟件開發(fā)管理:軟件管理學、軟件經(jīng)濟學、軟件心理學。
軟件工程的目標:是成功的建造一個大型軟件系統(tǒng),所謂成功是要達到以下幾個目標:①付出較 低的開發(fā)成本;②面到要求的軟件功能;③取得較好的軟件性能;④開發(fā)的軟件易于 移植;⑤需要較低的維護費用;⑥能按時完成開發(fā)任務(wù),及時交付使用;⑦開發(fā)的軟 件可靠性高;軟件工程過程:生產(chǎn)一個最終能滿足需求且達到工程目標的軟件產(chǎn)品所需要的步驟。軟件工 程過程主要包括開發(fā)過程、運作過程、維護過程。它們覆蓋了需求、設(shè)計、實現(xiàn)、確認以及維護等活動。
軟件工程的框架可概括為:①目標、②過程和③原則。
軟件工程的原則:是指圍繞工程設(shè)計、工程支持以及工程管理在軟件開發(fā)過程中必須遵循的原則。基本原理:⑴用分階段的生命周期計劃嚴格管理;⑵堅持進行階段評審;⑶實行嚴格的產(chǎn)品控制; ⑷采用現(xiàn)代程序設(shè)計技術(shù);⑸結(jié)果應(yīng)能清楚地審查;⑹開發(fā)小組的人員應(yīng)該少而精; ⑺承認不斷改進軟件工程實踐的必要性;(工程化的方法開發(fā)軟件基本原理)
軟件工程方法學:軟件工程包括技術(shù)和管理兩方面的內(nèi)容,是技術(shù)與管理緊密結(jié)合所形成的工 程學科。
軟件工程方法學包括:①傳統(tǒng)方法學(結(jié)構(gòu)化范型)和②面向?qū)ο蠓椒▽W。
面向?qū)ο蟮囊c: ①把對象作為融合了數(shù)據(jù)及在數(shù)據(jù)上的操作行為的統(tǒng)一的軟件構(gòu)件。②把所 有對象都劃分成類。③按子類與父類的關(guān)系,把類組成一個層次結(jié)構(gòu)。④對象彼此之 間僅能通過傳遞消息互相聯(lián)系。
軟件工程方法學三要素是:①方法;②工具;③過程。
3、軟件生命周期由哪三個時期組成,又劃分為哪8個階段?
答:軟件生存周期:一個軟件從提出開發(fā)要求開始直到該軟件報廢為止的整個時期。軟件生命周期是
由:⑴軟件定義時期;⑵軟件開發(fā)時期;⑶軟件維護時期三個時期組成的。又劃分為:①問題定義、②可行性研究、③需求分析、④總體設(shè)計、⑤詳細設(shè)計、⑥編碼和單元測試、⑦綜合測試、⑧維護八個階段。
1、問題的定義及規(guī)劃 此階段是軟件開發(fā)方與需求方共同討論,主要確定軟件的開發(fā)目標及其可行性。
2、需求分析 在確定軟件開發(fā)可行的情況下,對軟件需要實現(xiàn)的各個功能進行詳細分析。需求分析階段是一個很重要的階段,這一階段做得好,將為整個軟件開發(fā)項目的成功打下良好的基礎(chǔ)。“唯一不變的是變化本身?!?,同樣需
求也是在整個軟件開發(fā)過程中不斷變化和深入的,因此我們必須制定需求變更計劃來應(yīng)付這種變化,以保護整個項目的順利進行。
3、軟件設(shè)計 此階段主要根據(jù)需求分析的結(jié)果,對整個軟件系統(tǒng)進行設(shè)計,如系統(tǒng)框架設(shè)計,數(shù)據(jù)庫設(shè)計等等。軟件設(shè)計一般分為總體設(shè)計和詳細設(shè)計。好的軟件設(shè)計將為軟件程序編寫打下良好的基礎(chǔ)。
4、程序編碼 此階段是將軟件設(shè)計的結(jié)果轉(zhuǎn)換成計算機可運行的程序代碼。在程序編碼中必須要制定統(tǒng)一,符合標準的編寫規(guī)范。以保證程序的可讀性,易維護性,提高程序的運行效率。
5、軟件測試 在軟件設(shè)計完成后要經(jīng)過嚴密的測試,以發(fā)現(xiàn)軟件在整個設(shè)計過程中存在的問題并加以糾正。整個測試過程分單元測試、組裝測試以及系統(tǒng)測試三個階段進行。測試的方法主要有白盒測試和黑盒測試兩種。在測試過程中需要建立詳細的測試計劃并嚴格按照測試計劃進行測試,以減少測試的隨意性。
6、運行維護 軟件維護是軟件生命周期中持續(xù)時間最長的階段。在軟件開發(fā)完成并投入使用后,由于多方面的原因,軟件不能繼續(xù)適應(yīng)用戶的要求。要延續(xù)軟件的使用壽命,就必須對軟件進行維護。軟件的維護包括糾錯性維護和改進性維護兩個方面。
4、什么是白盒測試法?什么是黑盒測試法?
答:白盒測試:所謂白盒測試就是在知道產(chǎn)品內(nèi)部工作過程或程序內(nèi)部結(jié)構(gòu)和處理過程的前提下,檢
驗產(chǎn)品內(nèi)部動作是否按照規(guī)格說明書的規(guī)定正常進行或按照程序內(nèi)部的邏輯測試程序,檢驗程序中的每條通路是否都能按照預定要求正確工作的測試方法.因此白盒測試又稱為結(jié)構(gòu)測試或邏輯測試。
從覆蓋源程序語句的詳盡程度分析,大致有以下一些不同的覆蓋標準:⑴語句覆蓋;⑵判定覆蓋;⑶條件覆蓋;⑷判定/條件覆蓋;⑸條件組合覆蓋;⑹點覆蓋;⑺邊覆蓋;⑻路徑覆蓋。黑盒測試:所謂黑盒測試是指在完全不考慮程序的內(nèi)部結(jié)構(gòu)和處理過程的前提下,在程序接口進行的測試,它只檢查程序功能是否能按照規(guī)格說明書的規(guī)定正常使用,程序是否能適當?shù)亟邮茌斎霐?shù)據(jù)產(chǎn)生正確的輸出信息,并且保持外部信息的完整性.因此,又稱為功能測試。特點:等價類劃分、邊界值分析、因果圖、錯誤推測。
優(yōu)點 1.基本上不用人管著,如果程序停止運行了一般就是被測試程序crash了 2.設(shè)計完測試例之后,下來的工作就是爽了,當然更苦悶的是確定crash原因 缺點 1.結(jié)果取決于測試例的設(shè)計,測試例的設(shè)計部分來勢來源于經(jīng)驗,OUSPG的東西很值得借鑒
2.沒有狀態(tài)轉(zhuǎn)換的概念,目前一些成功的例子基本上都是針對PDU來做的,還做不到針對被測試程序的狀態(tài)轉(zhuǎn)換來作
3.就沒有狀態(tài)概念的測試來說,尋找和確定造成程序crash的測試例是個麻煩事情,必須把周圍可能的測試例單獨確認一遍。而就有狀態(tài)的測試來說,就更麻煩了,尤其不
是一個單獨的testcase造成的問題。這些在堆的問題中表現(xiàn)的更為突出。
5、什么是集成測試?非漸增式和漸增式有什么區(qū)別?漸增式如何組裝模塊?
答:將模塊組合起來成為一個完整的系統(tǒng)對其進行測試。非漸增式是將模塊先進行單元測試然后組裝
在一起進行測試。漸增式是逐個將未測試的模塊組裝到已經(jīng)測試過的模塊上去進行集成測試,每加入一個就測試一次。非漸增式需要樁模塊和驅(qū)動模塊、非漸增式開始可以并行測試、漸增式可以及時的發(fā)現(xiàn)接口錯誤,非漸增式很難發(fā)現(xiàn)接口發(fā)現(xiàn)錯誤、漸增式開始不能并行測試、漸增式測試比較徹底。漸增式組裝模塊有自頂向下和自底向上兩種組裝方式。
6、什么是確認測試?該階段有那些工作?
答:調(diào)試的目的是發(fā)現(xiàn)錯誤的位置并改正錯誤。簡單調(diào)試、演繹調(diào)試、遞歸調(diào)試、回溯調(diào)試。
7、面向?qū)ο蠓椒▽W與傳統(tǒng)方法學有何區(qū)別?
答:面向?qū)ο蠓椒▽W注重的是軟件的重用性,而傳統(tǒng)的方法學則在這一問題解決上不理想。面向?qū)ο?/p>
方法學和傳統(tǒng)的方法學在問題分析上的切入點不同。面向?qū)ο罄锩妫到y(tǒng)是長出來的,傳統(tǒng)的方法學里面,系統(tǒng)是放進去的。傳統(tǒng)方法:⑴結(jié)構(gòu)化開發(fā)方法,注重的是系統(tǒng)功能,自頂向下,從大到小的功能分解,從DFD到MSD,往往系統(tǒng)需求變化最大就是功能,一段較長的時間內(nèi),商業(yè)的流程可能已經(jīng)發(fā)生了很大的變化,這樣基于功能和過程的方法顯然難以維護的,代碼重用率可想而知,而商業(yè)過程中的數(shù)據(jù)可能變化不會很大,⑵信息工程法,注重的是數(shù)據(jù),事件流->信息流,(資金流,物流)->數(shù)據(jù)流,數(shù)據(jù)的輸入和轉(zhuǎn)化輸出,數(shù)據(jù)流程圖,狀態(tài)轉(zhuǎn)化圖,事件順序圖,過程依賴圖,兩者都是由事件驅(qū)動.面向的是問題,是為了要解決某一個具體問題,其觀察事物的方法不是本體客體本身,而是對本體客體相互作用過程抽象,轉(zhuǎn)化成邏輯模型。面向?qū)ο蠓椒▽W:其切入點是客觀世界的主體和客體,通過封裝實現(xiàn)了信息交流的安全,抽象和繼承使得事物的一完整表述和容易修改新的變化,聚合,關(guān)聯(lián)反映事物間的相互作用和關(guān)系,通過關(guān)聯(lián)類管理,這樣把事物和事物間的關(guān)系分開.減少了復雜度,便于維護,大大提高了代碼重用率。
8、軟件開發(fā)模型有幾種?各有什么特點? 軟件生存周期模型:是描述軟件開發(fā)過程中各種活動如何執(zhí)行的模型。(模型:是為了理解事物而 對事物做出一種抽象,它忽略不必要的細節(jié),它也是事物的一種抽象形式、一個規(guī)劃、一個程式。)主要模型:①瀑布模型;②增量模型;③螺旋模型;④噴泉模型;⑤變換模型;⑥基于知識的模 型等
瀑布模型:①它提供了一個摸板,這個摸板使分析、設(shè)計、編碼、測試和支持的方法可以在該摸 板下有一個共同的指導;②雖然有不少缺陷但比在軟件開發(fā)中隨意的狀態(tài)要好得多??焖僭湍P停孩匍_發(fā)速度快,質(zhì)量有保證。②對信息系統(tǒng)特別有效。
增量模型:①人員分配靈活,剛開始不用投入大量人力資源,當核心產(chǎn)品很受歡迎時,可增加人
力實現(xiàn)下一個增量。②當配備的人員不能在設(shè)定的期限內(nèi)完成產(chǎn)品時,它提供了一種先推出核心產(chǎn)品的途徑,這樣就可以先發(fā)布部分功能給客戶,對客戶起到鎮(zhèn)靜劑的作用。③具有一定的市場。
螺旋模型:①對于大型系統(tǒng)及軟件的開發(fā),這種模型是一個很好的方法。開發(fā)者和客戶能夠較好
地對待和理解每一個演化級別上的風險。②對可選方案和約束條件的強調(diào)有利于已有軟件的重用,也有助于把軟件質(zhì)量作為軟件開發(fā)的一個重要目標;減少了過多測試或測試不足所帶來的風險。
9、可行性研究:⑴系統(tǒng)流程圖;⑵數(shù)據(jù)流程圖;
系統(tǒng)流程圖:系統(tǒng)流程圖是概括地描繪物理系統(tǒng)的傳統(tǒng)工具。基本思想是用圖形符號以黑盒子形
式描繪組成系統(tǒng)的每個部件。其表達的是數(shù)據(jù)在系統(tǒng)各部件之間流動的情況,而不是對數(shù)據(jù)進行加工處理的控制過程。
數(shù)據(jù)流程圖:簡稱DFD,是描述數(shù)據(jù)處理過程的工具。數(shù)據(jù)流圖從數(shù)據(jù)傳遞和加工的角度,以圖形的方式刻畫數(shù)據(jù)流從輸入到輸出的移動變換過程,是一種功能模型。作用:它以圖形的方式描繪數(shù)據(jù)在系統(tǒng)中流動和處理的過程,反映系統(tǒng)必須完成的邏輯功能?;痉栍兴姆N:→,箭頭,表示數(shù)據(jù)流;○,圓或橢圓,表示加工; =,雙杠,表示數(shù)據(jù)存儲;□,方框,表示數(shù)據(jù)的源點或終點。
可行性研究的任務(wù):(1)經(jīng)濟可行性。確定待開發(fā)系統(tǒng)是否值得投資開發(fā)。(2)技術(shù)可行性。對待
開發(fā)的系統(tǒng)進行功能、性能和限制條件的分析,確定在現(xiàn)有資源的條件下技術(shù)風險有多大,系統(tǒng)是否能實現(xiàn)。(3)法律可行性。確認待開發(fā)系統(tǒng)可能會涉及的任何侵犯、妨礙、責任等問題。(4)抉擇。對系統(tǒng)開發(fā)的不同方案進行比較評估。
10、什么是字據(jù)字典?其作用是什么?它有哪些條目?
字據(jù)字典:簡稱DD,就是用來定義數(shù)據(jù)流圖中的各個成分具體含義的,它以一種準確的、無二義性 的說明方式為系統(tǒng)的分析、設(shè)計及維護提供了有關(guān)元素的一致的定義和詳細的描述。
作 用:⑴為系統(tǒng)的分析設(shè)計及維護提供了有關(guān)元素的一致的定義和詳細的描述.⑵為分析人員查找
數(shù)據(jù)流圖中有關(guān)名字的詳細定義而服務(wù)的.⑶它和數(shù)據(jù)流圖共同構(gòu)成了系統(tǒng)的邏輯模型,是需求規(guī)格說明書的主要組成部分.條 目:數(shù)據(jù)流、數(shù)據(jù)項、數(shù)據(jù)存儲、基本加工。
11、需求分析的任務(wù)是什么? 答: 需求分析是指:開發(fā)人員要準確理解用戶的要求,進行細致的調(diào)查分析,將用戶非形式的需求陳 述轉(zhuǎn)化為完整的需求定義,再由需求定義轉(zhuǎn)換到相應(yīng)的形式主義功能規(guī)約(需求規(guī)格說明)的過程。需求分析的主要任務(wù):⑴正確地確定對系統(tǒng)綜合要求,充分理解和表達用戶的需求。⑵通過結(jié)構(gòu)分
析的方法對系統(tǒng)進行分解,以確定軟件系統(tǒng)的主要成分或軟件系統(tǒng)的構(gòu)成。⑶是對以上已進行的兩項工作進行描述,以形成需求文檔。⑷編寫用戶手冊;⑸編寫驗收計劃;⑹修正可行性研究階段所制訂的軟件項目開發(fā)計劃。
12、結(jié)構(gòu)化分析方法:結(jié)構(gòu)化分析方法就是用抽象模型的概念,按照軟件內(nèi)部數(shù)據(jù)傳遞、變換的關(guān)系,自頂向下逐層分解,直到找到滿足功能要求的所有可實現(xiàn)的軟件為止。
主要工具:數(shù)據(jù)流圖、數(shù)據(jù)詞典、結(jié)構(gòu)化英語、判定表和判定樹。3種模型:①數(shù)據(jù)模型、②功能模型和③行為模型。
驗證軟件需求:⑴一致性;⑵完整性;⑶現(xiàn)實性;⑷有效性;
結(jié)構(gòu)化分析方法步驟: ①了解當前系統(tǒng)的工作流程,獲得當前系統(tǒng)的物理模型。②抽象出當前系 統(tǒng)的邏輯模型。③建立上標系統(tǒng)的邏輯模型。④作進一步補充和優(yōu)化。
結(jié)構(gòu)化程序設(shè)計基本要點:⑴采用自頂向下、逐步求精的程序設(shè)計方法;⑵使用三種基本程序控 制結(jié)構(gòu)構(gòu)造程序(①順序方式;②選擇方式;③循環(huán)方式;)。⑶主程序員組的組織形式。
13、總體設(shè)計過程由兩個主要階段組成:①系統(tǒng)設(shè)計階段,確定系統(tǒng)的具體實現(xiàn)方案;②結(jié)構(gòu)設(shè)計階段,確定軟件結(jié)構(gòu)。
模塊:軟件系統(tǒng)的層次結(jié)構(gòu)正是模塊化的具體體現(xiàn)。將整個軟件劃分成若干單獨命名和可編址的部分,稱之為模塊。模塊化:就是把程序劃分成獨立命名且可獨立訪問的模塊,每個模塊完成一個子功能,把這些模塊集 成起來構(gòu)成一個整體,可以完成指定的功能滿足用戶的需求。模塊是構(gòu)成程序的基本構(gòu)件。
模塊化的根據(jù):把復雜的問題分解成許多容易解決的小問題,原來的問題也就容易解決了。這就是模塊化的根據(jù)。
14、衡量模塊獨立性的兩個標準是什么?它們各表示什么含義? 兩個定性的度量標準:耦合與內(nèi)聚性。
耦合:是模塊之間的相對獨立性(互相連接的緊密程度)的度量。模塊之間的連接越緊密,聯(lián)系越多,耦合性就越高,而其模塊獨立性就越弱。按耦合度從低到高依次有7種耦合方式:①非直接耦
合(獨立運行);②數(shù)據(jù)耦合(用參數(shù)表傳遞簡單數(shù)據(jù));③標記耦合(傳遞數(shù)據(jù)結(jié)構(gòu)或者一部分);④控制耦合(傳遞的信息包括控制模塊的信息);⑤外部耦合(模塊與軟件之外的環(huán)境有關(guān));⑥公共耦合(多個模塊引用同一全局的數(shù)據(jù)區(qū));⑦內(nèi)容耦合(訪問內(nèi)部數(shù)據(jù),代碼重疊或者多個入口)。
內(nèi)聚:是模塊功能強度(一個模塊內(nèi)部各個元素彼此結(jié)合的緊密程度)的度量。一個模塊內(nèi)部各個元素
之間的聯(lián)系越緊密,則它的內(nèi)聚性就越高。按內(nèi)聚度從低到高依次有7種內(nèi)聚種類: ①偶然內(nèi)聚(模塊完成的多個任務(wù),任務(wù)之間的關(guān)系松散);②邏輯內(nèi)聚(模塊完成邏輯相關(guān)的一組任務(wù));③瞬時內(nèi)聚(模塊的所有任務(wù)必須在同一時間間隔內(nèi)執(zhí)行);④過程內(nèi)聚(模塊的處理元素相關(guān)而且按照特定的次序執(zhí)行);⑤通信內(nèi)聚(模塊的所有元素集中在一個數(shù)據(jù)結(jié)構(gòu)區(qū)域上);⑥順序內(nèi)聚(模塊的處理元素相關(guān),必須順序執(zhí)行);⑦功能內(nèi)聚(模塊完成單一的功能,各個部分協(xié)調(diào)工作,而且不可缺少)
耦合和內(nèi)聚的關(guān)系:一般說來,在系統(tǒng)中各模塊的內(nèi)聚越大,則模塊間的耦合越小。但這種關(guān)系并不
是絕對的。耦合小使得模塊間盡可能相對獨立,從而各模塊可以單獨開發(fā)和維護。內(nèi)聚大使得模塊的可理解性和維護性大大增強。因此,在模塊的分解中應(yīng)盡量減少模塊的耦合,力求增加模塊的內(nèi)聚。
15、Jackson方法的步驟:(1)實體動作分析:從問題的描述中,提取軟件系統(tǒng)要產(chǎn)生和運用的實體,以及
現(xiàn)實世界作用于實體上的動作。(2)實體結(jié)構(gòu)分析:把作用于實體的動作或由實體執(zhí)行的動作,按時間發(fā)生的先后次序排序,構(gòu)成進程,并用一個層狀的Jackson結(jié)構(gòu)圖表示。(3)定義初始模型:把實體和動作表示成一個進程模型,定
義模型與現(xiàn)實世界的聯(lián)系。(4)功能描述:說明與已定義的動作相對應(yīng)的功能,為已定義的動作加入功能函數(shù)。(5)決定系統(tǒng)時間特性:對進程加入時間因素,對進程調(diào)度特性進行評價和說明。(6)實現(xiàn):設(shè)計組成系統(tǒng)的硬件和軟件,實現(xiàn)系統(tǒng)的原型。
16、測試階段的信息流:這個階段的輸入信息有兩類:(1)軟件配置,包括需求說明書、設(shè)計說明書和源 程序清單等;
(2)測試配置,包括測試計劃和測試方案。
自頂向下集成:從主控制模塊開始,沿著程序的控制
層次向下移動,逐漸把各個模塊結(jié)合起來。在把附屬于主控制模塊的那些模塊組裝到程序結(jié)構(gòu)中去時,或者使用深度優(yōu)先的策略,或者使用寬度優(yōu)先的策略。
深度優(yōu)先的結(jié)合方法先組裝在軟件結(jié)構(gòu)的一條主控制通路上的所有模塊。選擇一條主控制通路取決于應(yīng)用的特點,并且有很大任意
性。而寬度優(yōu)先的結(jié)合方法是沿軟件結(jié)構(gòu)水平地移動,把處于同一個控制層次上的所有模塊組裝起來。
集成測試的策略:當使用漸增方式把模塊結(jié)合到程序中去時,有自頂向下和自底向上兩種集成策略。
17、決定軟件可維護性的因素:⑴可理解性;⑵可測試性;⑶可修改性;⑷可移植性;⑸可重用性;
軟件維護:是指在軟件已經(jīng)交付使用之后,為了改正錯誤或滿足新的需要而修改軟件的過程.軟件維護 是軟件生命周期的最后一個階段,也是持續(xù)時間最長代價最大的一個階段。軟件的可維護性可以定義為:維護人員理解,改正和改動軟件的難易程度。
18、對象:是對現(xiàn)實世界實體的正確抽象,它是由描述內(nèi)部狀態(tài)表示靜態(tài)屬性的數(shù)據(jù),以及可以對這些數(shù) 據(jù)施加的操作,封裝在一起所構(gòu)成的統(tǒng)一體。對象之間通過傳遞消息互相聯(lián)系,以模擬現(xiàn)實世界中不同事物彼此之間的聯(lián)系。
對象的特點:①以數(shù)據(jù)為中心;②對象是主動的;③實現(xiàn)了數(shù)據(jù)封裝;④本質(zhì)上具有并行性;⑤模塊 工程規(guī)模:此系統(tǒng)中應(yīng)包含接受模塊和信息處理與輸出模塊。可能的解決方案及其評價 從三方面研究每種解決方法的可行性:
(1).技術(shù)可行性 使用現(xiàn)在的技術(shù)完全可以實現(xiàn)該系統(tǒng)
(2).經(jīng)濟可行性 這個系統(tǒng)的開發(fā)成本不高,節(jié)省的經(jīng)濟資源以及經(jīng)濟消息能夠超過該系統(tǒng)的開發(fā)成本(3).操作可行性 該教學事務(wù)管理系統(tǒng)在校院的各個辦公室都可以實現(xiàn),操作人員為在校師生,所以不存在技術(shù)、能力問題。推薦行動方針 通過從技術(shù),經(jīng)濟,可操作三方面的研究,分析的出結(jié)論,此系統(tǒng)是可行的。16.構(gòu)成E-R圖的基本要素是實體型、屬性和聯(lián)系,其表示方法為:
· 實體型(Entity):用矩形表示,矩形框內(nèi)寫明實體名;比如學生張三豐、學生李尋歡都是實體。如果是弱實體的話,在矩形外面再套實線矩形。
· 屬性(Attribute):用橢圓形表示,并用無向邊將其與相應(yīng)的實體連接起來;比如學生的姓名、學號、性別、都是屬性。如果是多值屬性的話,再橢圓形外面再套實線橢圓。如果是派生屬性則用虛線橢圓表示。
· 聯(lián)系(Relationship):用菱形表示,菱形框內(nèi)寫明聯(lián)系名,并用無向邊分別與有關(guān)實體連接起來,同時在無向邊旁標上聯(lián)系的類型(1 : 1,1 : n或m : n)。比如老師給學生授課存在授課關(guān)系,學生選課存在選課關(guān)系。如果是弱實體的聯(lián)系則在菱形外面再套菱形。(猜考畫圖,或25題)第一章 軟件工程介紹 ? 軟件的特性
1. 軟件是設(shè)計開發(fā)的,而不是傳統(tǒng)意義上的生產(chǎn)制造的。2. 軟件不會“磨損”。3. 雖然整個工業(yè)向著基于構(gòu)件的構(gòu)造模式發(fā)展,然而大多數(shù)軟件扔是根據(jù)實際的顧客需
求定制的。? 計算機軟件的七大分類:系統(tǒng)軟件、應(yīng)用軟件、工程/科學軟件、嵌入式軟件、產(chǎn)品線軟件、Web應(yīng)用軟件、人工智能軟件。?
遺留系統(tǒng)發(fā)生系統(tǒng)演化的原因:1.軟件需要修改其適應(yīng)性,從而滿足新的計算環(huán)境或者技術(shù)的需求;2.軟件必須根據(jù)新的業(yè)務(wù)需求進行升級;3.軟件必須擴展以具有與更多現(xiàn)代系統(tǒng)和數(shù)據(jù)庫的協(xié)作能力;4.軟件架構(gòu)必須進行改建以適應(yīng)多樣化的網(wǎng)絡(luò)環(huán)境。? 軟件神話:管理者,用戶,從業(yè)者 ? 軟件的定義:程序、數(shù)據(jù)和文檔。?
軟件工程的目的就是為開發(fā)高質(zhì)量的軟件產(chǎn)品提供一個工程框架。第二章 過程綜述
? 軟件工程的三個要素:工具,過程,方法。
? 通用軟件過程框架:溝通,策劃,建模,構(gòu)建,部署。?
能力成熟度模型:第0級,不完全級;第1級,已執(zhí)行級;第2級,已管理級;第三級,已定義級;第4級,已定量管理級;第5級,優(yōu)化級。
第三章 過程模型
? 簡述慣例框架包含的主要活動:溝通、策劃、建模、構(gòu)建、部署。? 簡述瀑布模型所包含的主要框架活動:策劃、建模、構(gòu)建、部署。?
簡述瀑布模型在實際運用中所面臨的問題(缺點):“瀑布模型是由文檔驅(qū)動的”這個事實也是它的一個主要缺點。實際項目很少按照該模型給出的順序進行;用戶常常難以清楚地給出所有需求;用戶必須有耐心,等到系統(tǒng)開發(fā)完成。
演化過程模型產(chǎn)生的背景:業(yè)務(wù)和產(chǎn)品需求經(jīng)常變化、嚴格的交付時間、了解了核心產(chǎn)品和系統(tǒng)需求后沒有定義產(chǎn)品或系統(tǒng)擴展的細節(jié)問題 ?
簡述基于原型開發(fā)模型的軟件開發(fā)過程:在用戶不能給出完整、準確的需求說明,或者開發(fā)者不能確定算法的有效性、操作系統(tǒng)的適應(yīng)性或人機交互的形式等許多情況下,可以根據(jù)用戶的一組基本需求,快速建造一個原型(可運行的軟件),然后進行評估,進一步精化、調(diào)整原型,使其滿足用戶的要求,也使開發(fā)者對將要做的事情有更好的理解。溝通-》快速策劃-》建模快速設(shè)計-》構(gòu)建模型-》部署交付品及反饋
? 簡述原型開發(fā)的缺點:1.為了使原型盡快的工作,沒有考慮軟件的總體質(zhì)量和長期的可
維護性。2.為了演示,可能采用不合適的操作系統(tǒng)、編程語言、效率低的算法,這些不理想的選擇成了系統(tǒng)的組成部分。3.開發(fā)過程不便于管理 ? 統(tǒng)一過程的三個特點:用例驅(qū)動,以架構(gòu)為核心,迭代并增量
? 簡述統(tǒng)一過程(UP)的5個階段的主要內(nèi)容:起始,細化,構(gòu)建,轉(zhuǎn)換和生產(chǎn) ? 螺旋模型強調(diào)了其他模型均忽略了的(風險分析)?
橫切關(guān)注點的定義:一個信用卡處理系統(tǒng)的核心關(guān)注點是借貸/存入處理,而系統(tǒng)級的關(guān)注點則是日志、事務(wù)完整性、授權(quán)、安全及性能問題等許多關(guān)注點,我們叫它橫切關(guān)注點 第四章 敏捷視角下的過程 ?
軟件工程的敏捷理念強調(diào)4個關(guān)鍵問題:1.具有控制力的自我組織團隊對所開展工作的重要性;2.團隊成員之間、開
發(fā)參與者與客戶之間的交流與合作;3.對“變更代表機遇”的認識;4.以及強調(diào)快速軟件交付以讓客戶滿意。?
簡述極限編程(XP)過程模型所包含的4個主要框架活動:策劃,設(shè)計,編碼,測試 第五章 系統(tǒng)工程
? 計算機系統(tǒng)的6個系統(tǒng)要素:軟件,硬件,人員,數(shù)據(jù)庫,文檔,規(guī)程
? Hatley-Pirbhai建模方法:用戶界面,輸入,系統(tǒng)功能和控制,輸出,維護和自檢 ? 系統(tǒng)環(huán)境圖(System Context Diagram)的表示方法(實例)第六章 需求工程
? 需求工程的過程:起始,導出,精化,協(xié)商,規(guī)格說明,確認和管理 ?
在項目(起始)階段,軟件工程師會詢問一些似乎與項目無直接關(guān)系的問題,目的是對
問題、方案需求方、期望方案的本質(zhì)、客戶和開發(fā)人員之間初步的交流和合作的效果建立基本的諒解。
? 為什么導出需求這么困難:范圍問題,理解問題,易變問題。? 用例的定義:講述了能表達主題場景的故事:最終用戶如何在一特定環(huán)境下和系統(tǒng)交互 ?
在需求工程的導出階段,三個主要的需求收集活動是:主持人會議、QFD和用戶場景開發(fā) 第七章 構(gòu)建分析模型
? 分析模型在系統(tǒng)描述和設(shè)計模型之間建立橋梁。
? 分析模型必須實現(xiàn)的目標:1。描述客戶需要什么;2。為軟件設(shè)計奠定基礎(chǔ);3。定義在軟件完成后可以被確認的一組需求。
? 分析模型的所有元素都可以直接跟蹤到設(shè)計模型。
? 分析模型的4個元素:基于場景的元素,面向信息流的元素,基于類的元素,行為元素 ? UML泳道圖是活動圖的一種變形,可以讓建模人員表示用例所描述的活動流,同時指示哪個參與者或分析類對活動矩形所描述的活動負責。
? UML狀態(tài)圖為每個類表現(xiàn)活動狀態(tài)和導致這些活動狀態(tài)變化的事件 ? UML順序圖說明事件如何引發(fā)一個對象到另一個對象的轉(zhuǎn)移
? 簡述CRC建模的內(nèi)容:CRC提供了一個簡單方法,可以識別和組織與系統(tǒng)或產(chǎn)品需求相關(guān)的類。? 使用UML類圖來舉例說明組合和聚合之間的區(qū)別 ? 使用UML類圖舉例說明關(guān)聯(lián)和依賴之間的區(qū)別
系統(tǒng)分析的經(jīng)驗原則(1)系統(tǒng)開發(fā)是面向客戶的,應(yīng)從客戶的角度考慮。
(2)諸如系統(tǒng)開發(fā)生命周期之類的產(chǎn)品更新?lián)Q代機構(gòu)應(yīng)該在所有的信息系統(tǒng)開發(fā)項目中建立起來。
(3)信息系統(tǒng)開發(fā)的過程并不是一個順序的過程,它允許步驟的重疊和倒轉(zhuǎn)等。(4)如果系統(tǒng)的成功可能性受到很大限制時,應(yīng)取消整個項目。(5)文檔材料是系統(tǒng)開發(fā)生命周期中重要的可遞交成果,應(yīng)加以重視 第八章 設(shè)計工程 ?
簡述良好設(shè)計的三個特征:1。設(shè)計必須實現(xiàn)所有包含在分析模型中的明確需求,而且必須滿足客戶期望的所有隱含需求;2。對于那些生成代碼的人和那些進行測試以及隨后維護軟件的人而言,設(shè)計必須是可讀的、可理解的指南;3。設(shè)計必須提供軟件的全貌,從實現(xiàn)的角度說明數(shù)據(jù)域、功能域和行為域。? 設(shè)計模型包含的四種元素是什么:數(shù)據(jù)/類設(shè)計、體系結(jié)構(gòu)設(shè)計、接口設(shè)計、構(gòu)建級設(shè)計
? 軟件體系結(jié)構(gòu)的定義:軟件的整體結(jié)構(gòu)和這種結(jié)構(gòu)為系統(tǒng)提供概念上完整性的方式 ? 模塊應(yīng)該詳細說明且精心設(shè)計以求在某個模塊中包含的信息不被不需要這些信息的其他模塊訪問
?
重構(gòu)的定義:是使用這樣一種方式改變軟件系統(tǒng)的過程:不改變代碼設(shè)計的外部行為而是改進其內(nèi)部結(jié)構(gòu)
? 舉例說明逐步求精 ?
框架和設(shè)計模式之間的區(qū)別:框架能使應(yīng)用程序的開發(fā)簡單,價格低廉,但是開發(fā)框架不
是一件容易的事。它是一個需要領(lǐng)域和設(shè)計經(jīng)驗的反復過程。設(shè)計模式可以簡化這個過程,因為它提供了對過去經(jīng)驗的抽象??蚣苣芨叨瘸橄笸活I(lǐng)域內(nèi)的問題,進而降低開發(fā)難度和強度。因此,在軟件開發(fā)過程中把框架和模式配合起來使用,可以極大地提高軟件的重用??蚣苁擒浖?,而設(shè)計模式是軟件的知識 第九章 進行體系結(jié)構(gòu)設(shè)計 ?
簡述軟件體系結(jié)構(gòu)的作用:1。軟件體系結(jié)構(gòu)的表示有助于對計算機系統(tǒng)開發(fā)感興趣的各方(共利益者)開發(fā)交流;2。體系結(jié)構(gòu)突出了早期設(shè)計決策,這些決策對隨后的所有軟件工程工作有深遠的影響,同時對系統(tǒng)作為一個可運行實體的最后成功有重要作用。3。體系結(jié)構(gòu)“構(gòu)建了一個相對小的,易于理解的模型,該模型描述了系統(tǒng)如何構(gòu)成以及其構(gòu)建如何一起工作”
? 軟件體系結(jié)構(gòu)的典型分類:以數(shù)據(jù)為中心,數(shù)據(jù)流體系結(jié)構(gòu),調(diào)用和返回體系結(jié)構(gòu),面向?qū)ο篌w系結(jié)構(gòu),層次體系結(jié)構(gòu)(以圖例來說明)?
體系結(jié)構(gòu)環(huán)境圖所包含的要素,以圖例來說明 第十二章 軟件測試策略
? 簡述軟件測試策略的螺旋模型:單元測試,集成測試,確認測試,系統(tǒng)測試 ?
簡述單元測試中驅(qū)動程序和樁程序的作用:驅(qū)動程序只是一個“主程序”,它接收測試用例數(shù)據(jù),將這些數(shù)據(jù)傳遞給(將要測試的)構(gòu)件并打印相關(guān)結(jié)果。樁程序的作用是替換那些從屬于將要測試的構(gòu)件或被其調(diào)用的構(gòu)件。? 集成測試的兩種方式:一步到位和增量集成
? 試以圖例描述自頂向下集成測試方法的過程 ? 簡述確認測試的兩種主要方法:α測試和β測試 ? 系統(tǒng)測試的主要方法:恢復測試,安全測試,壓力測試,性能測試 ? 三種調(diào)試方法:蠻力法,回溯法,原因排除法 第十三章 測試戰(zhàn)術(shù)
? 好的測試所具有的特性:1。好的測試具有較高的發(fā)現(xiàn)錯誤的可能性;2。好的測試是不冗余的;3。好的測試應(yīng)該是“最佳品種”4。好的測試應(yīng)該既不太簡單也不太復雜。?
黑盒測試的定義:所謂黑盒測試是指在完全不考慮程序的內(nèi)部結(jié)構(gòu)和處理過程的前提下,在程序接
口進行的測試,它只檢查程序功能是否能按照規(guī)格說明書的規(guī)定正常使用,程序是否能適當?shù)亟邮茌斎霐?shù)據(jù)產(chǎn)生正確的輸出信息,并且保持外部信息的完整性.因此,又稱為功能測試。
白盒測試的定義:所謂白盒測試就是在知道產(chǎn)品內(nèi)部工作過程或程序內(nèi)部結(jié)構(gòu)和處理過程的前提下, 檢驗產(chǎn)品內(nèi)部動作是否按照規(guī)格說明書的規(guī)定正常進行或按照程序內(nèi)部的邏輯測試程序,檢驗程序中的每條通路是否都能按照預定要求正確工作的測試方法.因此白盒測試又稱為結(jié)構(gòu)測試或邏輯測試。? 基本路徑測試的環(huán)復雜度計算方法和獨立路徑集合的識別V(G)=E-N+2;其中E為流圖 的邊數(shù),N為流圖的結(jié)點數(shù)。? 控制結(jié)構(gòu)測試的3個主要方法:條件測試,數(shù)據(jù)流測試,循環(huán)測試 ? 黑盒測試的兩個主要方法:等價類劃分,邊界值分析 ? 類級可應(yīng)用的測試方法:隨機測試,劃分測試 ? 面向?qū)ο蟮念惣墑澐譁y試的主要方法:基于狀態(tài)劃分,基于屬性劃分,基于類別劃分 ?
以圖例說明從行為模型導出測試用例 第十四章 產(chǎn)品度量
? 軟件度量為產(chǎn)品內(nèi)部屬性的質(zhì)量評估提供了一種(定量)方法,從而可以是軟件工程師在產(chǎn)品開發(fā)出來之前進行質(zhì)量評估
? 軟件測量的5個主要活動:公式化,收集,分析,解釋,反饋 ?
面向目標的軟件測量(GQM范型)的內(nèi)容:1。確定特定過程活動的明確的測量目標或?qū)⒁u估的產(chǎn)品特性;2。定義一組必須回答的問題以達到目標;3。確定被良好公式化的度量以幫助回答這些問題 ?
有效軟件度量的屬性1。簡單的和可計算的2。在經(jīng)驗上和直覺上有說服力3。一致的和客觀的4。單位和量綱的使用是一致的。5。編程語言的獨立性6。高質(zhì)量反饋的有效機制