OO期末总结
$0 寫(xiě)在前面
善始善終,臨近期末,為一學(xué)期的收獲和努力畫(huà)一個(gè)圓滿的句號(hào)。
?
?$1 測(cè)試與正確性論證的比較
?
$1-0 什么是測(cè)試?
?
測(cè)試是使用人工操作或者程序自動(dòng)運(yùn)行的方式來(lái)檢驗(yàn)它是否滿足規(guī)定的需求或弄清預(yù)期結(jié)果與實(shí)際結(jié)果之間的差別的過(guò)程。
它是幫助識(shí)別開(kāi)發(fā)完成(中間或最終的版本)的計(jì)算機(jī)軟件(整體或部分)的正確度(correctness) 、完全度(completeness)和質(zhì)量(quality)的軟件過(guò)程;是SQA(software quality assurance)的重要子域。
Glenford J.Myers曾對(duì)測(cè)試的目的提出過(guò)以下觀點(diǎn):
?(1)測(cè)試是為了發(fā)現(xiàn)程序中的錯(cuò)誤而執(zhí)行程序的過(guò)程。
(2)好的測(cè)試方案是極可能發(fā)現(xiàn)迄今為止尚未發(fā)現(xiàn)的錯(cuò)誤的測(cè)試方案。
(3)成功的測(cè)試是發(fā)現(xiàn)了至今為止尚未發(fā)現(xiàn)的錯(cuò)誤的測(cè)試。
(4)測(cè)試并不僅僅是為了找出錯(cuò)誤。通過(guò)分析錯(cuò)誤產(chǎn)生的原因和錯(cuò)誤的發(fā)生趨勢(shì),可以幫助項(xiàng)目管理者發(fā)現(xiàn)當(dāng)前軟件開(kāi)發(fā)過(guò)程中的缺陷,以便及時(shí)改進(jìn)。
(5)這種分析也能幫助測(cè)試人員設(shè)計(jì)出有針對(duì)性的測(cè)試方法,改善測(cè)試的效率和有效性。
(6)沒(méi)有發(fā)現(xiàn)錯(cuò)誤的測(cè)試也是有價(jià)值的,完整的測(cè)試是評(píng)定軟件質(zhì)量的一種方法。
(7)另外,根據(jù)測(cè)試目的的不同,還有回歸測(cè)試、壓力測(cè)試、性能測(cè)試等,分別為了檢驗(yàn)修改或優(yōu)化過(guò)程是否引發(fā)新的問(wèn)題、軟件所能達(dá)到處理能力和是否達(dá)到預(yù)期的處理能力等。
測(cè)試目標(biāo)包括以下幾點(diǎn)
(1) 發(fā)現(xiàn)一些可以通過(guò)測(cè)試避免的開(kāi)發(fā)風(fēng)險(xiǎn)。
(2) 實(shí)施測(cè)試來(lái)降低所發(fā)現(xiàn)的風(fēng)險(xiǎn)。
(3) 確定測(cè)試何時(shí)可以結(jié)束。
(4) 在開(kāi)發(fā)項(xiàng)目的過(guò)程中將測(cè)試看作是一個(gè)標(biāo)準(zhǔn)項(xiàng)目。
$1-1 什么是正確性論證?
?
程序正確性論證是程序設(shè)計(jì)理論的一個(gè)重要組成部分,研究如何使用程序設(shè)計(jì)語(yǔ)言編制程序,以正確實(shí)現(xiàn)預(yù)定的目標(biāo)。
程序正確性論證提出編制正確程序的兩種途徑一種稱為程序驗(yàn)證,研究如何使用數(shù)學(xué)推理來(lái)嚴(yán)格論證程序是否符合其目標(biāo)。
另一種稱為程序綜合,研究如何由給定目標(biāo)出發(fā),逐步構(gòu)造一個(gè)在計(jì)算機(jī)系統(tǒng)上可運(yùn)行的程序,而且要求構(gòu)造過(guò)程的每一步都是嚴(yán)格保持正確無(wú)誤的。
在保證正確性的前提下,為提高程序運(yùn)算效率而實(shí)現(xiàn)的程序之間的轉(zhuǎn)換,稱為程序變形,也是程序正確性論證的一個(gè)重要內(nèi)容。
程序綜合和程序變形是自動(dòng)程序設(shè)計(jì)的理論基礎(chǔ)。
?$1-2 測(cè)試與正確性論證的效果差異
?
測(cè)試是使用測(cè)試樣例對(duì)程序進(jìn)行檢測(cè)而正確性論證則是根據(jù)代碼的邏輯進(jìn)行驗(yàn)證。
測(cè)試想要完全覆蓋的難度較大,需要大量的樣例才能達(dá)到近似的完全覆蓋,而正確性論證則不需要花費(fèi)那么大的精力,只需要根據(jù)代碼的邏輯和規(guī)格進(jìn)行一系列驗(yàn)證即可。
二者相互補(bǔ)充,相輔相成。正確性論證可能由于一開(kāi)始設(shè)計(jì)的錯(cuò)誤導(dǎo)致程序運(yùn)行的錯(cuò)誤,而測(cè)試則難以覆蓋全面,二者相互補(bǔ)充之后便可以對(duì)程序進(jìn)行充分的測(cè)試。
總體而言,二者都是用于工程化測(cè)試的好方法,但是面向?qū)ο蟊旧砭褪且环N極為具體化的簡(jiǎn)單設(shè)計(jì)思路,大多數(shù)情況使用單元測(cè)試就能很好的應(yīng)對(duì)測(cè)試需求。
?
?$2 OCL語(yǔ)言調(diào)研
?
?$2-0 關(guān)于OCL
?對(duì)象約束語(yǔ)言是一種用于施加在指定的模型元素上約束的語(yǔ)言。
對(duì)象約束語(yǔ)言簡(jiǎn)稱OCL(Object Constraint Language)。
對(duì)象約束語(yǔ)言(Object Constraint Language, OCL)作為圖形符號(hào)的補(bǔ)充,說(shuō)明建模元素的有關(guān)細(xì)節(jié),例如:約束,前置條件,后置條件等。
OCL(object constraint language) 對(duì)象約束語(yǔ)言。用來(lái)進(jìn)行約束定義的,形式化的無(wú)二義的語(yǔ)言。
OCL語(yǔ)言有如下特征
????? (1) 聲明性語(yǔ)言,不會(huì)改變模型中的內(nèi)容。
???? ?(2) 形式化語(yǔ)言語(yǔ)言。
????? (3) 無(wú)二義規(guī)范語(yǔ)言。
????? (4) 類型性語(yǔ)言,每一個(gè)表達(dá)式都有類型;
????? (5) 易學(xué)好用。
?$2-1 OCL與JSF的異同
與JSF相比的相似點(diǎn):二者都是形式語(yǔ)言,聲明式的語(yǔ)言,都沒(méi)有二義性,都有前置條件和后置條件以及不變式;
與JSF相比的不同點(diǎn):OCL每個(gè)表達(dá)式都是具有類型的,且具有許多的基本數(shù)據(jù)類型等,不像JSF一樣完全使用邏輯表達(dá)式。
?
?$3 關(guān)于第14次作業(yè)的單電梯系統(tǒng)
?
根據(jù)第十四次作業(yè)的單電梯系統(tǒng),針對(duì)調(diào)度器、電梯、請(qǐng)求隊(duì)列和請(qǐng)求,整理出如下的UML類圖以及時(shí)序圖,采用圖(graph)來(lái)演示成如下模型:
?
?$3-0 類圖
?
?
【圖1】 單電梯系統(tǒng)的類圖
類圖中表示了不同類之間的繼承依賴關(guān)系,在各個(gè)類中呈現(xiàn)了類全部的屬性和方法。
?$3-1 時(shí)序圖
?
【圖2】時(shí)序圖
該時(shí)序圖呈現(xiàn)了程序的執(zhí)行過(guò)程,以及狀態(tài)轉(zhuǎn)換邏輯。
?
?$4 學(xué)期小結(jié)
?
?$4-0?闡述四個(gè)單元模塊知識(shí)點(diǎn)之間的關(guān)系
(1) 單元一主要介紹了JAVA面向?qū)ο笳Z(yǔ)言的思想等,主要注重對(duì)語(yǔ)言基礎(chǔ)知識(shí)的訓(xùn)練以及對(duì)面向?qū)ο笏枷氲某醪搅私?#xff1b;
(2) 單元二開(kāi)始變涉及多線程的編程訓(xùn)練,介紹了多線程的機(jī)制、沖突,對(duì)面向?qū)ο蟮睦^承、封裝、多態(tài)的特征也有了更進(jìn)一步的深入介紹;
(3) 單元三開(kāi)始進(jìn)行規(guī)格化設(shè)計(jì),通過(guò)JSF語(yǔ)言的書(shū)寫(xiě)來(lái)實(shí)現(xiàn)程序的規(guī)格化設(shè)計(jì);
(4) 單元四則是隊(duì)代碼的驗(yàn)證與測(cè)試,編寫(xiě)JUnit測(cè)試單元對(duì)程序開(kāi)展自動(dòng)化測(cè)試、編寫(xiě)正確性論證文檔對(duì)程序類和方法實(shí)現(xiàn)的正確性進(jìn)行論證等。
這四個(gè)單元循序漸進(jìn),相輔相成,一步步引導(dǎo)我們逐步深入的對(duì)面向?qū)ο蟮木幊趟枷脒M(jìn)行了解。
?$4-1 梳理自己所設(shè)計(jì)實(shí)現(xiàn)的程序,分析自己在設(shè)計(jì)、測(cè)試和質(zhì)量上的進(jìn)步
?本學(xué)期我一共實(shí)現(xiàn)了兩個(gè)獨(dú)立作業(yè)和兩個(gè)系列作業(yè)。
最開(kāi)始的多項(xiàng)式處理作業(yè),讓我對(duì)JAVA語(yǔ)言的基本運(yùn)用有了初步的了解;
到后來(lái)電梯、出租車系列作業(yè)讓我接觸到了面向?qū)ο缶幊趟枷胍约岸嗑€程編程的模式;
編寫(xiě)單元測(cè)試JUnit,讓我掌握了自動(dòng)化測(cè)試方法;
從頭至尾認(rèn)真梳理下來(lái),當(dāng)我再次打開(kāi)前幾次的代碼作業(yè)的時(shí)候,
令我欣慰的是,我能夠從中看到自己的進(jìn)步:
(1) 編碼風(fēng)格的進(jìn)步:變量名、方法名的命名規(guī)范;方法的代碼行數(shù)明顯縮短;類的功能層次明顯。
(2) 符合規(guī)格規(guī)范:通過(guò)對(duì)JSF的編寫(xiě),能夠按照規(guī)格,來(lái)編寫(xiě)符合規(guī)格約束的方法代碼。
(3) 對(duì)SOLID設(shè)計(jì)原則的更深刻體會(huì):代碼不再是“靈機(jī)一動(dòng)”的產(chǎn)物,而是經(jīng)過(guò)思考和設(shè)計(jì)所編寫(xiě)的、符合設(shè)計(jì)原則的代碼。
$4-2?闡述自己對(duì)工程化開(kāi)發(fā)的理解
?工程化開(kāi)發(fā)和作業(yè)由著本質(zhì)的不同。作業(yè)更注重的是結(jié)果的正確性,而工程化開(kāi)發(fā)則要求設(shè)計(jì)人員有著良好的代碼素養(yǎng),和工程化開(kāi)發(fā)規(guī)范。
“工程”和“過(guò)程”的不同,工程化開(kāi)發(fā)要求將系統(tǒng)化的、規(guī)范的、可度量的方法應(yīng)用于程序的開(kāi)發(fā)、運(yùn)行和維護(hù)的過(guò)程,即將工程化應(yīng)用于軟件過(guò)程。
工程著重應(yīng)用,工程項(xiàng)目一定是軟件過(guò)程的一個(gè)“產(chǎn)出”,一個(gè)個(gè)性化的實(shí)例!換句話來(lái)講,工程也是由過(guò)程組成的。
工程化開(kāi)發(fā)遵從一定的規(guī)格設(shè)計(jì)進(jìn)行程序的開(kāi)發(fā),十分有利于于團(tuán)隊(duì)協(xié)作,提高工作效率和降低成本。
良好的工程化,能降低溝通成本,實(shí)現(xiàn)更好的協(xié)同,節(jié)省開(kāi)發(fā)和測(cè)試人員的重復(fù)勞動(dòng),降低發(fā)布的常見(jiàn)問(wèn)題的復(fù)現(xiàn)率等等。
?$4-3?對(duì)課程的任何期望或建議
?衷心的希望課程越辦越好,讓更多的人從中受益。
轉(zhuǎn)載于:https://www.cnblogs.com/chrischen98/p/9225658.html
總結(jié)
- 上一篇: vue 上传图片限制大小和格式
- 下一篇: 02-web框架