軟件工程 期末復習

瀑布模型:計劃

螺旋模型:風險低

原型模型: 用戶反饋

噴泉模型:代碼復用


?高內聚 低耦合:模塊內部功能緊密 模塊之間依賴程度小

  1. 高內聚:指的是一個模塊內部的功能應該緊密相關。換句話說,一個模塊應當只實現單一的功能或者一組緊密相關的功能。這樣做的好處是可以讓模塊更容易理解和維護。例如,一個專門處理用戶輸入驗證的模塊就應該只包含與輸入驗證相關的代碼,而不應該混入數據庫訪問等其他功能的代碼。

  2. 低耦合:指的是模塊之間的依賴程度要盡可能小。模塊之間如果存在高度依賴(即高耦合),那么修改一個模塊可能會導致其他多個模塊也需要做出相應修改,這會大大增加維護成本和出錯的可能性。低耦合的設計鼓勵使用接口或者抽象層來減少直接依賴,使得系統更加靈活和易于修改。例如,通過定義接口來規范不同模塊之間的交互,可以降低模塊間的直接依賴關系。


類圖:

1.關聯關系(association)
關聯關系是用一條直線表示的;它描述不同類的對象之間的結構關系;它是一種靜態關系, 通常與運行狀態無關,一般由常識等因素決定的;它一般用來定義對象之間靜態的、天然的結構; 所以,關聯關系是一種“強關聯”的關系;

比如,乘車人和車票之間就是一種關聯關系;學生和學校就是一種關聯關系;

關聯關系默認不強調方向,表示對象間相互知道;如果特別強調方向,如下圖,表示A知道B,但 B不知道A;

注:在最終代碼中,關聯對象通常是以成員變量的形式實現的;
?

2.依賴關系:是用一套帶箭頭的虛線表示的;如下圖表示A依賴于B;他描述一個對象在運行期間會用到另一個對象的關系;

_images/uml_dependency.jpg

與關聯關系不同的是,它是一種臨時性的關系,通常在運行期間產生,并且隨著運行時的變化; 依賴關系也可能發生變化;

顯然,依賴也有方向,雙向依賴是一種非常糟糕的結構,我們總是應該保持單向依賴,杜絕雙向依賴的產生;


?


?


軟件測試的目的
  • 測試是一個為了發現錯誤而執行程序的過程。
  • 一個好的測試用例是指很可能找到迄今為止尚未發現的錯誤的測試用例。
  • 一個成功的測試是指揭示了迄今為止尚未發現的錯誤的測試。

    白盒測試

  • 語句覆蓋:

  • 判定覆蓋:選擇足夠的測試用例,使得運行這些測試用例時,被測程序的所有可能結果都至少出現一次(即判定的每個分支都至少經過一次)

  • 條件覆蓋:選擇足夠的測試用例,使得運行這些測試用例時,被測程序的每個判定中的每個條件的所有可能結果都至少出現一次


    黑盒測試

  • 等價分類法:

  • 邊界值分析法:


    測試策略

  • 單元測試:是針對程序中的模塊或構件,主要揭露編碼階段產生的錯誤。

  • 集成測試:針對集成的軟件系統,主要揭露設計階段產生的錯誤

  • 確認測試:是根據軟件需求規約對集成的軟件進行確認,主要揭露不符合需求規約的錯誤。

  • 系統測試:對于基于計算機系統中的軟件,還需將它集成到基于計算機系統中,并進行系統測試,以揭露不符合系統工程中對軟件要求的錯誤。


    軟件維護與再工程
    1.什么是軟件維護?
    是指軟件系統交付使用以后,為了改正錯誤或滿足新的需要而修改軟件的過程。
    2.軟件維護分類
    糾錯性維護:為了改正軟件系統中的錯誤,使軟件能夠滿足預期的正常運行狀態的要求而進行的維護
    適應性維護:為了使軟件適應內部或外部環境變化,而去修改軟件的過程。
    改善性維護:滿足使用過程中用戶提出增加新功能或修改已有功能的建議維護。
    預防性維護:為了提高軟件的可維護性、可靠性等,為以后進一步改進軟件打下良好基礎而修改軟件的活動。
    ?

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

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

相關文章

鴻蒙 Stege模型 多模塊應用

模塊 一個鴻蒙應用可能包含一個或者多個功能模塊,在 DevEcoStudio 工程中可以創建對應的一個或多個 Module。Module 又分為 “Ability” 和 “Library”兩種類型,“Ability”類型的 Module 對應于編譯后的 HAP(Harmony Ability Package&…

領域LLM九講——第4講 構建可測評、可優化的端到端商業AI Agent 系統

領域LLM九講——第4講 構建可測評、可優化的端到端商業AI Agent 系統 以 OpenAI Cookbook 的《receipt_inspection》示例為基礎,探討如何設計一個可測試、可優化的端到端 AI Agent 系統。整體流程分為三個階段: (1) 端到端 Agent 構建(基線測…

MySQL體系架構解析(三):MySQL目錄與啟動配置全解析

MySQL中的目錄和文件 bin目錄 在 MySQL 的安裝目錄下有一個特別重要的 bin 目錄,這個目錄下存放著許多可執行文件。與其他系統的可執行文件類似,這些可執行文件都是與服務器和客戶端程序相關的。 啟動MySQL服務器程序 在 UNIX 系統中,用…

Linux線程與進程關系及底層實現

在操作系統中,線程切換相比進程切換更輕量級的關鍵原因之一是 緩存(Cache)的有效性,尤其是對 CPU 緩存(如 L1/L2/L3)和 TLB(Translation Lookaside Buffer)的影響。以下從緩存角度詳…

【論文閱讀30】Bi-LSTM(2024)

用于精確實時滑坡檢測的雙向LSTM模型:以印度梅加拉亞邦毛永格里姆為例的研究 IEEE Internet of Things Journal(簡稱 IoT?J)是一份 IEEE 自 2014 年起雙月刊發表的國際頂級學術期刊,專注于物聯網各領域的研究。 作者&#xff1a…

Java編程之原型模式

原型模式的定義 原型模式(Prototype Pattern)是一種創建型設計模式,通過復制已有對象來創建新對象,而非通過常規的手段的new關鍵字來實例化。適用于對象創建成本較高或需要動態配置的場景。 例如,在一個游戲開發中&am…

RAG質量評估

當完成了一個RAG系統的開發工作以后,還需要對該系統的性能進行評估。如何對RAG系統的性能進行評估呢?仔細分析RAG系統的產出成果,主要涉及以下幾點: (1)檢索器組件 檢索的相關文檔 context, (…

LLMs基礎學習(八)強化學習專題(1)

LLMs基礎學習(八)強化學習專題(1) 文章目錄 LLMs基礎學習(八)強化學習專題(1)學習資料資源強化學習是什么強化學習一句話精準定義 強化學習與其他學習類型的對比強化學習 vs 監督學習…

19-Oracle 23 ai Database Sharding-知識準備

小伙伴是不是經常遇見大規模集群和數量的時候,業務就提出要對數據進行sharding。 Oracle 和其他數據庫(如 MySQL、PostgreSQL、MongoDB 等) 為什么要進行分片(sharding),分片的原因是什么,實現…

分類與邏輯回歸 - 一個完整的guide

線性回歸和邏輯回歸其實比你想象的更相似 😃 它們都是所謂的參數模型。讓我們先看看什么是參數模型,以及它們與非參數模型的區別。 線性回歸 vs 邏輯回歸 線性回歸:用于回歸問題的線性參數模型。邏輯回歸:用于分類問題的線性參數…

英語寫作中“每一個”each individual、every individual、every single的用法

一、Individual :個體,相對于團體,例如: Individual competition (個人比賽),相對于team competition (團體比賽) Individual users (個人用戶)…

由于 z(x,y) 的變化導致的影響(那部分被分給了鏈式項)

? 本質問題:為什么鏈式法則中 ? F ? x \frac{\partial F}{\partial x} ?x?F? 不考慮 z z ( x , y ) zz(x,y) zz(x,y)? 🔍 一、關鍵是:偏導數的定義是什么? 我們從最根本的定義開始: ? F ( x , y…

python打卡day44@浙大疏錦行

知識點回顧: 預訓練的概念常見的分類預訓練模型圖像預訓練模型的發展史預訓練的策略預訓練代碼實戰:resnet18 作業: 嘗試在cifar10對比如下其他的預訓練模型,觀察差異,盡可能和他人選擇的不同嘗試通過ctrl進入resnet的…

十一(3) 類,加深對拷貝構造函數的理解

class ClassName { public: // 拷貝構造函數:參數是同類型對象的引用(通常為 const 引用) ClassName(const ClassName& other) { // 復制 other 的成員變量到當前對象 } }; 參數要求:必須是同類型對象的引用&#xff0…

網頁后端開發(基礎1--maven)

maven的作用: Maven是一款管理和構建Java項目的工具。 1.依賴管理: 方便快捷的管理項目依賴的資源(jar包) 不用手動下載jar包,只需要中maven中引用,maven會查找本地倉庫。若本地倉庫沒有,會直…

認識電子元器件---高低邊驅動

目錄 一、基本概念 二、關鍵參數對比 三、工作原理 (1)高邊驅動 (2)低邊驅動 四、典型的應用場景 五、如何選擇 一、基本概念 可以理解成:高低邊驅動是MOS/IGBT的一種應用方式 高低邊驅動是電路拓撲概念&#…

JavaScript 標簽加載

目錄 JavaScript 標簽加載script 標簽的 async 和 defer 屬性,分別代表什么,有什么區別1. 普通 script 標簽2. async 屬性3. defer 屬性4. type"module"5. 各種加載方式的對比6. 使用建議 JavaScript 標簽加載 script 標簽的 async 和 defer …

C/CPP 結構體、聯合體、位段內存計算 指南

C/CPP 結構體、聯合體、位段內存計算 指南 在C語言中,結構體、聯合體和位段是對數據的高級抽象,它們可以讓程序員以更易于理解的方式來操作復雜的數據結構。然而,這些結構在內存中的布局可能并不如它們的語法結構那樣直觀,特別是當…

ASR(語音識別)語音/字幕標注 通過via(via_subtitle_annotator)

文章目錄 1 VIA 官網資料2 語音/字幕標注3 鍵盤快捷鍵常規當一個時間片段被選中時圖像或視頻幀中的空間區域 1 VIA 官網資料 VIA官網:https://www.robots.ox.ac.uk/~vgg/software/via/ VIA官網標注示例:https://www.robots.ox.ac.uk/~vgg/software/via/…

mq安裝新版-3.13.7的安裝

一、下載包,上傳到服務器 https://github.com/rabbitmq/rabbitmq-server/releases/download/v3.13.7/rabbitmq-server-generic-unix-3.13.7.tar.xz 二、 erlang直接安裝 rpm -ivh erlang-26.2.4-1.el8.x86_64.rpm不需要配置環境變量,直接就安裝了。 erl…