oo第四阶段总结
oo第四階段總結(jié)
一、關(guān)于測(cè)試與正確性論證
測(cè)試是根據(jù)代碼功能構(gòu)造相應(yīng)的數(shù)據(jù),通過(guò)結(jié)果的正確性來(lái)判斷代碼中是否有bug。
正確性論證是根據(jù)代碼的規(guī)格,以自然語(yǔ)言的形式對(duì)代碼是否能夠?qū)崿F(xiàn)相應(yīng)功能、是否能夠?qū)ο鄳?yīng)異常進(jìn)行處理進(jìn)行論證。
總的來(lái)看,正確性論證更為宏觀,適合于大型系統(tǒng)的宏觀正確性控制,即對(duì)大型系統(tǒng)進(jìn)行錯(cuò)誤的檢查,由于其使用的是自然語(yǔ)言,因此也更加直觀,便于檢查過(guò)程中的交流理解,但正確性論證難以保證規(guī)格內(nèi)代碼是否能夠準(zhǔn)確實(shí)現(xiàn)規(guī)格所說(shuō)明的功能,即無(wú)法從實(shí)際論證代碼的正確性。而通過(guò)數(shù)據(jù)進(jìn)行測(cè)試則更加微觀,尤其在課程后期,引入了運(yùn)用junit進(jìn)行檢查的方法后,如果數(shù)據(jù)構(gòu)造足夠充分,能夠?qū)崿F(xiàn)分支和代碼的百分之一百的覆蓋,從而驗(yàn)證代碼功能的正確性,但是,隨著代碼量的增加,要想做到百分之一百的代碼覆蓋率和分支覆蓋率,構(gòu)造的數(shù)據(jù)量將會(huì)十分龐大,同時(shí)構(gòu)造難度也會(huì)提升,因而數(shù)據(jù)測(cè)試更適合局部代碼的正確性檢查。
在實(shí)際的應(yīng)用中,兩種方法可以實(shí)現(xiàn)局部與宏觀的互補(bǔ),同時(shí)運(yùn)用兩種方法,有利于增強(qiáng)測(cè)試的準(zhǔn)確性,同時(shí)提高測(cè)試的效率。
二、關(guān)于OCL和JSF
OCL語(yǔ)言全名為對(duì)象約束語(yǔ)言(Object Constraint Language),是一種用于施加在指定的模型元素上約束的語(yǔ)言。OCL的基礎(chǔ)是數(shù)學(xué)中的集合論和謂詞邏輯,并且它有一個(gè)形式化的數(shù)學(xué)語(yǔ)義,但是它并沒(méi)有使用某種數(shù)學(xué)符號(hào)。因?yàn)殡m然數(shù)學(xué)符號(hào)能夠清晰的、無(wú)歧義的表達(dá)事物,但是只有極少的專(zhuān)家可以看懂。所以數(shù)學(xué)符號(hào)并不適合用于一個(gè)廣泛應(yīng)用的標(biāo)準(zhǔn)語(yǔ)言。
?
自然語(yǔ)言是最易懂的,但是它是含混不清晰的。OCL取了自然語(yǔ)言和數(shù)學(xué)符號(hào)的折中方案,使用普通的ASCII字符來(lái)表達(dá)數(shù)學(xué)中同樣的概念。如果你不喜歡當(dāng)前的OCL表達(dá)方法,OCL規(guī)范還允許你定義自己的OCL符號(hào)集,這點(diǎn)是可以理解的,因?yàn)镺CL有一個(gè)清晰的數(shù)學(xué)語(yǔ)義。
兩種語(yǔ)言的相同點(diǎn):兩者都是預(yù)先對(duì)程序設(shè)計(jì)的約束,是對(duì)程序設(shè)計(jì)預(yù)期功能和效果的標(biāo)準(zhǔn)化定義,兩者都不具有二義性,且都有前置條件,后置條件和不變式。
兩種語(yǔ)言的不通點(diǎn):首先OCL每個(gè)表達(dá)式都是具有類(lèi)型的,融入了一定的自然語(yǔ)言的特性,且具有許多的基本數(shù)據(jù)類(lèi)型等,而JSF只是單純的數(shù)學(xué)邏輯表達(dá)式。其次JSF圍繞類(lèi)和方法進(jìn)行約束,而OCL則對(duì)對(duì)象及對(duì)象內(nèi)、對(duì)象間所包含的數(shù)據(jù)進(jìn)行約束。
三、關(guān)于第十四次作業(yè)
UML類(lèi)圖:
?
UML狀態(tài)圖:
?
?
UML時(shí)序圖:
?
?
四、學(xué)期總結(jié)
1.四個(gè)單元模塊中,第一單元主要是熟悉面向?qū)ο蟮木幊谭椒?#xff0c;了解面向?qū)ο蟮膶?duì)象、類(lèi)、方法、接口、繼承等基本概念。第二單元主要知識(shí)集中在多線程以及多線程的數(shù)據(jù)保護(hù),整體上是逐步熟練掌握多線程 編程方法的過(guò)程。第三單元引入了規(guī)格化設(shè)計(jì)方法,讓我們了解了一些工程上編程的解決方案。第四單元是測(cè)試和正確性論證,讓我們能夠通過(guò)兩種方法對(duì)自己寫(xiě)的代碼進(jìn)行更好的檢查,確保代碼的正確性,
2.本學(xué)期的課程中,我依次完成了多項(xiàng)式處理、單個(gè)傻瓜電梯、單個(gè)可捎帶電梯、多線程可捎帶電梯、IEEE處理器以及出租車(chē)調(diào)度這六大程序。在多項(xiàng)式處理的作業(yè)中,我了解了對(duì)輸入進(jìn)行約束的設(shè)計(jì)思想;在三次電梯作業(yè)中,我逐步理解了面向?qū)ο蟮脑O(shè)計(jì)思想,學(xué)會(huì)了將實(shí)際問(wèn)題模擬成程序中的相應(yīng)類(lèi),從而實(shí)現(xiàn)作業(yè)要求,而不是之前簡(jiǎn)單的數(shù)據(jù)抽象處理的編程思想;在IEEE作業(yè)中,我進(jìn)一步熟練了多線程的使用,成功實(shí)現(xiàn)了多線程的數(shù)據(jù)保護(hù);之后的四次出租車(chē),則是對(duì)之前學(xué)到的設(shè)計(jì)、編程方法的綜合運(yùn)用,進(jìn)一步提高編程能力;最后兩次作業(yè),提供了測(cè)試和正確性論證的方法,讓我學(xué)會(huì)了除了自己構(gòu)造數(shù)據(jù)進(jìn)行測(cè)試以外的新的程序檢測(cè)方法。減少代碼中的bug。
3.工程化開(kāi)發(fā)更加強(qiáng)調(diào)格式的標(biāo)準(zhǔn)化與統(tǒng)一,這樣雖然會(huì)導(dǎo)致一些繁瑣要求的產(chǎn)生,但是從整體上看,這樣的要求更利于大型系統(tǒng)的開(kāi)發(fā)。同時(shí)工程化開(kāi)發(fā)削弱了一些算法和數(shù)據(jù)抽象的運(yùn)用,其更注重代碼的可讀性,這也對(duì)提高多人合作開(kāi)發(fā)的效率具有積極的意義。最后,工程化開(kāi)發(fā)的錯(cuò)誤處理很重要,錯(cuò)誤處理也是影響這個(gè)系統(tǒng)穩(wěn)定性的關(guān)鍵。
4.雖然本課程有一些存在爭(zhēng)議的地方,但相比于其帶給我的收獲,也就無(wú)傷大雅了,也希望課程能越辦越好。
?
轉(zhuǎn)載于:https://www.cnblogs.com/lvubyr/p/9224322.html
總結(jié)
- 上一篇: nginx2goaccess.sh脚本内
- 下一篇: 深度学习基本概念的了解