OO期末總結


$0 寫在前面


善始善終,臨近期末,為一學期的收獲和努力畫一個圓滿的句號。

?


?$1 測試與正確性論證的比較


?


$1-0 什么是測試?


?

測試是使用人工操作或者程序自動運行的方式來檢驗它是否滿足規定的需求或弄清預期結果與實際結果之間的差別的過程。

它是幫助識別開發完成(中間或最終的版本)的計算機軟件(整體或部分)的正確度(correctness) 、完全度(completeness)和質量(quality)的軟件過程;是SQA(software quality assurance)的重要子域。

Glenford J.Myers曾對測試的目的提出過以下觀點:

?(1)測試是為了發現程序中的錯誤而執行程序的過程。

(2)好的測試方案是極可能發現迄今為止尚未發現的錯誤的測試方案。

(3)成功的測試是發現了至今為止尚未發現的錯誤的測試。

(4)測試并不僅僅是為了找出錯誤。通過分析錯誤產生的原因和錯誤的發生趨勢,可以幫助項目管理者發現當前軟件開發過程中的缺陷,以便及時改進。

(5)這種分析也能幫助測試人員設計出有針對性的測試方法,改善測試的效率和有效性。

(6)沒有發現錯誤的測試也是有價值的,完整的測試是評定軟件質量的一種方法。

(7)另外,根據測試目的的不同,還有回歸測試、壓力測試、性能測試等,分別為了檢驗修改或優化過程是否引發新的問題、軟件所能達到處理能力和是否達到預期的處理能力等。

測試目標包括以下幾點

(1) 發現一些可以通過測試避免的開發風險。

(2) 實施測試來降低所發現的風險。

(3) 確定測試何時可以結束。

(4) 在開發項目的過程中將測試看作是一個標準項目。


$1-1 什么是正確性論證?


?

程序正確性論證是程序設計理論的一個重要組成部分,研究如何使用程序設計語言編制程序,以正確實現預定的目標。

程序正確性論證提出編制正確程序的兩種途徑一種稱為程序驗證,研究如何使用數學推理來嚴格論證程序是否符合其目標。

另一種稱為程序綜合,研究如何由給定目標出發,逐步構造一個在計算機系統上可運行的程序,而且要求構造過程的每一步都是嚴格保持正確無誤的。

在保證正確性的前提下,為提高程序運算效率而實現的程序之間的轉換,稱為程序變形,也是程序正確性論證的一個重要內容。

程序綜合和程序變形是自動程序設計的理論基礎。


?$1-2 測試與正確性論證的效果差異


?

測試是使用測試樣例對程序進行檢測而正確性論證則是根據代碼的邏輯進行驗證。

測試想要完全覆蓋的難度較大,需要大量的樣例才能達到近似的完全覆蓋,而正確性論證則不需要花費那么大的精力,只需要根據代碼的邏輯和規格進行一系列驗證即可。

二者相互補充,相輔相成。正確性論證可能由于一開始設計的錯誤導致程序運行的錯誤,而測試則難以覆蓋全面,二者相互補充之后便可以對程序進行充分的測試。

總體而言,二者都是用于工程化測試的好方法,但是面向對象本身就是一種極為具體化的簡單設計思路,大多數情況使用單元測試就能很好的應對測試需求。

?


?$2 OCL語言調研


?


?$2-0 關于OCL


?對象約束語言是一種用于施加在指定的模型元素上約束的語言。

對象約束語言簡稱OCL(Object Constraint Language)。

對象約束語言(Object Constraint Language, OCL)作為圖形符號的補充,說明建模元素的有關細節,例如:約束,前置條件,后置條件等。

OCL(object constraint language) 對象約束語言。用來進行約束定義的,形式化的無二義的語言。

OCL語言有如下特征

????? (1) 聲明性語言,不會改變模型中的內容。

???? ?(2) 形式化語言語言。

????? (3) 無二義規范語言。

????? (4) 類型性語言,每一個表達式都有類型;

????? (5) 易學好用。


?$2-1 OCL與JSF的異同


與JSF相比的相似點:二者都是形式語言,聲明式的語言,都沒有二義性,都有前置條件和后置條件以及不變式;

與JSF相比的不同點:OCL每個表達式都是具有類型的,且具有許多的基本數據類型等,不像JSF一樣完全使用邏輯表達式。

?


?$3 關于第14次作業的單電梯系統


?

根據第十四次作業的單電梯系統,針對調度器、電梯、請求隊列和請求,整理出如下的UML類圖以及時序圖,采用圖(graph)來演示成如下模型:

?


?$3-0 類圖


?

?

【圖1】 單電梯系統的類圖

類圖中表示了不同類之間的繼承依賴關系,在各個類中呈現了類全部的屬性和方法。


?$3-1 時序圖


?

【圖2】時序圖

該時序圖呈現了程序的執行過程,以及狀態轉換邏輯。

?


?$4 學期小結


?


?$4-0?闡述四個單元模塊知識點之間的關系


 (1) 單元一主要介紹了JAVA面向對象語言的思想等,主要注重對語言基礎知識的訓練以及對面向對象思想的初步了解;

 (2) 單元二開始變涉及多線程的編程訓練,介紹了多線程的機制、沖突,對面向對象的繼承、封裝、多態的特征也有了更進一步的深入介紹;

 (3) 單元三開始進行規格化設計,通過JSF語言的書寫來實現程序的規格化設計;

 (4) 單元四則是隊代碼的驗證與測試,編寫JUnit測試單元對程序開展自動化測試、編寫正確性論證文檔對程序類和方法實現的正確性進行論證等。

 這四個單元循序漸進,相輔相成,一步步引導我們逐步深入的對面向對象的編程思想進行了解。


?$4-1 梳理自己所設計實現的程序,分析自己在設計、測試和質量上的進步


?本學期我一共實現了兩個獨立作業和兩個系列作業。

最開始的多項式處理作業,讓我對JAVA語言的基本運用有了初步的了解;

到后來電梯、出租車系列作業讓我接觸到了面向對象編程思想以及多線程編程的模式;

編寫單元測試JUnit,讓我掌握了自動化測試方法;

從頭至尾認真梳理下來,當我再次打開前幾次的代碼作業的時候,

令我欣慰的是,我能夠從中看到自己的進步:

(1) 編碼風格的進步:變量名、方法名的命名規范;方法的代碼行數明顯縮短;類的功能層次明顯。

(2) 符合規格規范:通過對JSF的編寫,能夠按照規格,來編寫符合規格約束的方法代碼。

(3) 對SOLID設計原則的更深刻體會:代碼不再是“靈機一動”的產物,而是經過思考和設計所編寫的、符合設計原則的代碼。


$4-2?闡述自己對工程化開發的理解


?工程化開發和作業由著本質的不同。作業更注重的是結果的正確性,而工程化開發則要求設計人員有著良好的代碼素養,和工程化開發規范。

工程過程的不同,工程化開發要求將系統化的、規范的、可度量的方法應用于程序的開發、運行和維護的過程,即將工程化應用于軟件過程。

工程著重應用,工程項目一定是軟件過程的一個產出,一個個性化的實例!換句話來講,工程也是由過程組成的。

工程化開發遵從一定的規格設計進行程序的開發,十分有利于于團隊協作,提高工作效率和降低成本。

良好的工程化,能降低溝通成本,實現更好的協同,節省開發和測試人員的重復勞動,降低發布的常見問題的復現率等等。


?$4-3?對課程的任何期望或建議


?衷心的希望課程越辦越好,讓更多的人從中受益。

轉載于:https://www.cnblogs.com/chrischen98/p/9225658.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/389375.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/389375.shtml
英文地址,請注明出處:http://en.pswp.cn/news/389375.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

puppet puppet模塊、file模塊

轉載:http://blog.51cto.com/ywzhou/1577356 作用:通過puppet模塊自動控制客戶端的puppet配置,當需要修改客戶端的puppet配置時不用在客戶端一一設置。 1、服務端配置puppet模塊 (1)模塊清單 [rootpuppet ~]# tree /et…

數據可視化及其重要性:Python

Data visualization is an important skill to possess for anyone trying to extract and communicate insights from data. In the field of machine learning, visualization plays a key role throughout the entire process of analysis.對于任何試圖從數據中提取和傳達見…

熊貓數據集_熊貓邁向數據科學的第三部分

熊貓數據集Data is almost never perfect. Data Scientist spend more time in preprocessing dataset than in creating a model. Often we come across scenario where we find some missing data in data set. Such data points are represented with NaN or Not a Number i…

Pytorch有關張量的各種操作

一,創建張量 1. 生成float格式的張量: a torch.tensor([1,2,3],dtype torch.float)2. 生成從1到10,間隔是2的張量: b torch.arange(1,10,step 2)3. 隨機生成從0.0到6.28的10個張量 注意: (1).生成的10個張量中包含0.0和6.28&#xff…

mongodb安裝失敗與解決方法(附安裝教程)

安裝mongodb遇到的一些坑 浪費了大量的時間 在此記錄一下 主要是電腦系統win10企業版自帶的防火墻 當然還有其他的一些坑 一般的問題在第6步驟都可以解決,本教程的安裝步驟不夠詳細的話 請自行百度或谷歌 安裝教程很多 我是基于node.js使用mongodb結合Robo 3T數…

【洛谷算法題】P1046-[NOIP2005 普及組] 陶陶摘蘋果【入門2分支結構】Java題解

👨?💻博客主頁:花無缺 歡迎 點贊👍 收藏? 留言📝 加關注?! 本文由 花無缺 原創 收錄于專欄 【洛谷算法題】 文章目錄 【洛谷算法題】P1046-[NOIP2005 普及組] 陶陶摘蘋果【入門2分支結構】Java題解🌏題目…

web性能優化(理論)

什么是性能優化? 就是讓用戶感覺你的網站加載速度很快。。。哈哈哈。 分析 讓我們來分析一下從用戶按下回車鍵到網站呈現出來經歷了哪些和前端相關的過程。 緩存 首先看本地是否有緩存,如果有符合使用條件的緩存則不需要向服務器發送請求了。DNS查詢建立…

python多項式回歸_如何在Python中實現多項式回歸模型

python多項式回歸Let’s start with an example. We want to predict the Price of a home based on the Area and Age. The function below was used to generate Home Prices and we can pretend this is “real-world data” and our “job” is to create a model which wi…

充分利用UC berkeleys數據科學專業

By Kyra Wong and Kendall Kikkawa黃凱拉(Kyra Wong)和菊川健多 ( Kendall Kikkawa) 什么是“數據科學”? (What is ‘Data Science’?) Data collection, an important aspect of “data science”, is not a new idea. Before the tech boom, every industry al…

文本二叉樹折半查詢及其截取值

using System;using System.ComponentModel;using System.Data;using System.Drawing;using System.Text;using System.Windows.Forms;using System.Collections;using System.IO;namespace CS_ScanSample1{ /// <summary> /// Logic 的摘要說明。 /// </summary> …

nn.functional 和 nn.Module入門講解

本文來自《20天吃透Pytorch》 一&#xff0c;nn.functional 和 nn.Module 前面我們介紹了Pytorch的張量的結構操作和數學運算中的一些常用API。 利用這些張量的API我們可以構建出神經網絡相關的組件(如激活函數&#xff0c;模型層&#xff0c;損失函數)。 Pytorch和神經網絡…

10.30PMP試題每日一題

SC>0&#xff0c;CPI<1&#xff0c;說明項目截止到當前&#xff1a;A、進度超前&#xff0c;成本超值B、進度落后&#xff0c;成本結余C、進度超前&#xff0c;成本結余D、無法判斷 答案將于明天和新題一起揭曉&#xff01; 10.29試題答案&#xff1a;A轉載于:https://bl…

02-web框架

1 while True:print(server is waiting...)conn, addr server.accept()data conn.recv(1024) print(data:, data)# 1.得到請求的url路徑# ------------dict/obj d["path":"/login"]# d.get(”path“)# 按著http請求協議解析數據# 專注于web業…

ai驅動數據安全治理_AI驅動的Web數據收集解決方案的新起點

ai驅動數據安全治理Data gathering consists of many time-consuming and complex activities. These include proxy management, data parsing, infrastructure management, overcoming fingerprinting anti-measures, rendering JavaScript-heavy websites at scale, and muc…

從Text文本中讀值插入到數據庫中

/// <summary> /// 轉換數據&#xff0c;從Text文本中導入到數據庫中 /// </summary> private void ChangeTextToDb() { if(File.Exists("Storage Card/Zyk.txt")) { try { this.RecNum.Visibletrue; SqlCeCommand sqlCreateTable…

Dataset和DataLoader構建數據通道

重點在第二部分的構建數據通道和第三部分的加載數據集 Pytorch通常使用Dataset和DataLoader這兩個工具類來構建數據管道。 Dataset定義了數據集的內容&#xff0c;它相當于一個類似列表的數據結構&#xff0c;具有確定的長度&#xff0c;能夠用索引獲取數據集中的元素。 而D…

鐵拳nat映射_鐵拳如何重塑我的數據可視化設計流程

鐵拳nat映射It’s been a full year since I’ve become an independent data visualization designer. When I first started, projects that came to me didn’t relate to my interests or skills. Over the past eight months, it’s become very clear to me that when cl…

Django2 Web 實戰03-文件上傳

作者&#xff1a;Hubery 時間&#xff1a;2018.10.31 接上文&#xff1a;接上文&#xff1a;Django2 Web 實戰02-用戶注冊登錄退出 視頻是一種可視化媒介&#xff0c;因此視頻數據庫至少應該存儲圖像。讓用戶上傳文件是個很大的隱患&#xff0c;因此接下來會討論這倆話題&#…

BZOJ.2738.矩陣乘法(整體二分 二維樹狀數組)

題目鏈接 BZOJ洛谷 整體二分。把求序列第K小的樹狀數組改成二維樹狀數組就行了。 初始答案區間有點大&#xff0c;離散化一下。 因為這題是一開始給點&#xff0c;之后詢問&#xff0c;so可以先處理該區間值在l~mid的修改&#xff0c;再處理詢問。即二分標準可以直接用點的標號…

從數據庫里讀值往TEXT文本里寫

/// <summary> /// 把預定內容導入到Text文檔 /// </summary> private void ChangeDbToText() { this.RecNum.Visibletrue; //建立文件&#xff0c;并打開 string oneLine ""; string filename "Storage Card/YD" DateTime.Now.…