日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

哈工大软件构造课程知识点总结(一)

發(fā)布時間:2023/12/20 编程问答 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 哈工大软件构造课程知识点总结(一) 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

系列文章目錄

哈工大軟件構(gòu)造課程知識點總結(jié)(一)
哈工大軟件構(gòu)造課程知識點總結(jié)(二)
哈工大軟件構(gòu)造課程知識點總結(jié)(三)
哈工大軟件構(gòu)造課程知識點總結(jié)(四)
哈工大軟件構(gòu)造課程知識點總結(jié)(五)
哈工大軟件構(gòu)造課程知識點總結(jié)(六)


文章目錄

  • 系列文章目錄
  • 簡介
  • Chapter 1:Views and Quality Objectives of Software Construction
    • 概述
    • 軟件的多維度視圖
      • 多維視圖表
      • 視圖間關(guān)系
    • 軟件系統(tǒng)的質(zhì)量
      • 內(nèi)、外部質(zhì)量因素
      • 五個關(guān)鍵的質(zhì)量指標(biāo)
  • Chapter 2:Testing and Test-First Programming
    • 概述
    • 軟件測試
      • 黑盒測試
        • 等價類劃分
        • 邊界值分析方法
        • 等價類覆蓋的極限方式
      • 白盒測試
      • 代碼覆蓋度
    • 測試優(yōu)先的編程


簡介

此文章是2021春哈工大軟件構(gòu)造課程Chapter 1、Chapter 2的知識點總結(jié)。

Chapter 1:Views and Quality Objectives of Software Construction

概述

本章首先展示了軟件構(gòu)造過程中的多維度視圖,對此圖的各部分進(jìn)行了詳細(xì)的解讀,并簡要介紹了各維度視圖之間的聯(lián)系。隨后列出了軟件系統(tǒng)的內(nèi)、外部質(zhì)量因素。最后提出了五個關(guān)鍵質(zhì)量指標(biāo)。

軟件的多維度視圖

多維視圖表

MomentPeriod
Code-levelComponent-levelCode-levelComponent-level
Build-timeSource code, AST, Interface-Class-Attribute-Method (Class Diagram)Package, File, Static Linking, Library, Test Case, Build Script (Component Diagram)Code ChurnConfiguration Item, Version
Run-timeCode Snapshot, Memory dumpPackage, Library, Dynamic linking, Configuration, Database, Middleware, NetworkExecution stack trace, Concurrent multithreadsEvent log, Multi-processes, Distributed processes

以下為個人理解:

  • Moment維度關(guān)注于程序在某一特定時刻的表現(xiàn),而Period維度關(guān)注于程序在某一段特定時間內(nèi)的表現(xiàn);
  • Build-time維度聚焦于程序被運行前構(gòu)造階段的表現(xiàn),而Run-time維度聚焦于程序運行時的表現(xiàn);
  • Code-level維度注重程序代碼本身、邏輯實體在內(nèi)存中的呈現(xiàn)等細(xì)節(jié)方面,Component-level維度注重系統(tǒng)模塊及整體以及物理實體在內(nèi)存中的呈現(xiàn)等較大方面。

表格中具體各部分如下:

  • Build-time, Moment, and Code-level: 關(guān)注源碼的組織情況,可在詞匯(源碼)、語法(抽象語法樹)、語義(類圖)三個層面分析;
  • Build-time, Period, and Code-level: 關(guān)注代碼變化(Code churn);
  • Build-time, Moment, and Component-level: 關(guān)注未運行時的包、庫、模塊等(靜態(tài));
  • Build-time, Period, and Component-level: 關(guān)注文件版本的變化,而不是具體語句的變化;
  • Run-time, Moment, and Code-level: 關(guān)注程序在某個時間點的細(xì)節(jié)情況,如代碼快照圖(Code Snapshot)、內(nèi)存信息轉(zhuǎn)儲(Memory dump);
  • Run-time, Period and Code-level: 關(guān)注代碼階段執(zhí)行情況;
  • Run-time, Moment, and Component-level: 關(guān)注點與第3點類似,但是在運行時(動態(tài));
  • Run-time, Period, and Component-level view 關(guān)注系統(tǒng)整體運行情況。
  • 視圖間關(guān)系

    如下圖:

    軟件系統(tǒng)的質(zhì)量

    內(nèi)、外部質(zhì)量因素

    外部質(zhì)量因素影響用戶,內(nèi)部質(zhì)量因素影響軟件本身和它的開發(fā)者,外部質(zhì)量取決于內(nèi)部質(zhì)量。
    外部質(zhì)量因素包括:

  • 正確性:最重要的質(zhì)量指標(biāo)
  • 健壯性:針對異常情況的處理
  • 可擴(kuò)展性:對軟件的規(guī)約的修改要足夠容易
  • 可復(fù)用性:一次開發(fā),多次使用
  • 兼容性:不同的軟件系統(tǒng)之間相互可容易的集成
  • 性能:性能毫無意義,除非有足夠的正確性
  • 可移植性:軟件可方便的在不同的技術(shù)環(huán)境之間移植
  • 易用性、功能性、及時性、可驗證性、完整性、可修復(fù)性、經(jīng)濟(jì)性……
  • 注意:以上質(zhì)量因素不可能同時完美滿足,性能常常要與其他質(zhì)量因素相折中,但正確性絕不能與其他質(zhì)量因素折中。
    內(nèi)部質(zhì)量因素包括:
    可讀性(Readability)、可理解性(Understandability)、簡潔性(Clearness)、大小(Size)等等。

    五個關(guān)鍵的質(zhì)量指標(biāo)

    • 易于理解(Easy to understand)
    • 易維護(hù)、修改(Ready for change)
    • 可復(fù)用(Cheap for develop)
    • 健壯性(Safe from bugs)
    • 高效性(Efficient to run)

    Chapter 2:Testing and Test-First Programming

    概述

    本章主要講解軟件測試與測試優(yōu)先的編程,要求重點掌握黑盒測試。

    軟件測試

    軟件測試是提高軟件質(zhì)量的重要手段。測試跟其他活動的目標(biāo)相反,測試往往是破壞、證錯、“負(fù)能量”的。好的測試具有以下幾個特點:

    • 能發(fā)現(xiàn)錯誤
    • 不冗余
    • 最佳特性
    • 別太復(fù)雜也別太簡單

    軟件測試能在一定程度上提高軟件的質(zhì)量,但即使是最好的測試,也無法達(dá)到100%的無錯誤。

    測試分為如下四個階段:

  • 單元測試:針對軟件的最小單元模型開展測試,隔離各個模塊,容易定位錯誤和調(diào)試(使用JUnit進(jìn)行單元測試是課程實驗的一部分)
  • 集成測試
  • 系統(tǒng)測試
  • 驗收測試
  • 一旦程序被修改,重新執(zhí)行之前的所有測試(回歸測試)。

    測試用例 = 輸入+執(zhí)行條件+期望結(jié)果

    黑盒測試

    黑盒測試用于檢查程序是否符合規(guī)約(程序功能正確性),不關(guān)心內(nèi)部實現(xiàn)細(xì)節(jié)。理想情況是用盡可能少的測試用例,盡快運行,并盡可能大的發(fā)現(xiàn)程序的錯誤。

    等價類劃分

    基于等價類劃分的測試:針對每個輸入數(shù)據(jù)需要滿足的約束條件劃分等價類,從等價類中導(dǎo)出測試用例。

    :設(shè)計max: int × int → int的測試用例。
    劃分為三個等價類: a < b, a = b, a > b。
    設(shè)計對應(yīng)的測試用例,可以是:
    (a, b) = (1, 2) to cover a < b
    (a, b) = (9, 9) to cover a = b
    (a, b) = (-5, -6) to cover a > b

    邊界值分析方法

    大量的錯誤發(fā)生在輸入域的“邊界”而非中央,邊界值分析方法是對等價類劃分方法的補(bǔ)充。故可在等價類劃分時,將邊界作為等價類之一加入考慮。

    :重新設(shè)計max: int × int → int的測試用例。
    考慮a或b取邊界值的情況,如0, INT_MAX, INT_MIN等等,添加到等價類中。

    等價類覆蓋的極限方式

    笛卡爾積:全覆蓋,多個劃分維度上的多個取值,要組合起來,每個組合都要有一個用例。測試完備,但用例數(shù)量多,測試代價高。

    覆蓋每個取值:每個維度的每個取值至少被1個測試用例覆蓋一次即可,測試用例少,代價低,但測試覆蓋度未必高。

    白盒測試

    白盒測試要考慮內(nèi)部實現(xiàn)細(xì)節(jié),根據(jù)程序執(zhí)行路徑設(shè)計測試用例。通常由開發(fā)人員完成,一般較早執(zhí)行。針對功能(實現(xiàn))進(jìn)行測試,但測不出未實現(xiàn)的需求。

    獨立/基本路徑測試:對程序所有執(zhí)行路徑進(jìn)行等價類劃分,找出有代表性的最簡單的路徑(例如循環(huán)只需執(zhí)行1次),設(shè)計測試用例使每一條基本路徑被至少覆蓋1次。

    代碼覆蓋度

    代碼覆蓋度:已有的測試用例有多大程度覆蓋了被測程序。
    代碼覆蓋度越低,測試越不充分;要達(dá)到很高的代碼覆蓋度需要大量的測試用例,測試代價高。

    評判代碼覆蓋度的幾個方面:

    • 函數(shù)覆蓋:所有的方法是否都被測試一次
    • 語句覆蓋:所有的語句都被測試一次
    • 分支覆蓋:所有的分支都被測試一次
    • 條件覆蓋:所有的條件的真假組合都被執(zhí)行一次
    • 路徑覆蓋:所有的路徑都被執(zhí)行一次,這是測試中最強(qiáng)的覆蓋標(biāo)準(zhǔn)

    測試效果:路徑覆蓋>分支覆蓋>語句覆蓋
    測試難度:路徑覆蓋>分支覆蓋>語句覆蓋

    注意:條件覆蓋與分支覆蓋無可比性!

    測試優(yōu)先的編程

    過程為先寫規(guī)約,然后寫符合規(guī)約的測試用例,最后寫代碼、執(zhí)行測試、有問題再改、再執(zhí)行測試用例,直到通過它。

    總結(jié)

    以上是生活随笔為你收集整理的哈工大软件构造课程知识点总结(一)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。