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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

软件工程期末总复习

發(fā)布時(shí)間:2024/3/26 编程问答 51 豆豆
生活随笔 收集整理的這篇文章主要介紹了 软件工程期末总复习 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

軟件工程思維導(dǎo)圖

題目:
https://wenku.baidu.com/view/652c442dcd1755270722192e453610661ed95aaa.html
考試大綱:

  • 軟件工程的定義及分類(填空選擇)
    軟件工程:
    ①將系統(tǒng)性的、規(guī)范化的、可定量的方法應(yīng)用于軟件的開發(fā)、運(yùn)行和維護(hù),即工程化應(yīng)用到軟件上;
    ②對(duì)①中所述方法的研究。

    軟件=程序+數(shù)據(jù)+文檔
    分類:系統(tǒng)軟件、支撐軟件、應(yīng)用軟件

  • 軟件工程產(chǎn)生的原因(選擇)
    1968 年北大西洋公約組織在前聯(lián)邦德國開會(huì)提出軟件工程的概念,要用工程化的思想解決軟件危機(jī)。
    軟件危機(jī)是指在計(jì)算機(jī)軟件的開發(fā)和維護(hù)過程中遇到的一系列嚴(yán)重問題。

    [單選] 軟件工程學(xué)科出現(xiàn)的主要原因是()。
    A . 計(jì)算機(jī)的發(fā)展
    B . 其他工程學(xué)科影響
    C . 軟件危機(jī)的出現(xiàn)
    D . 程序設(shè)計(jì)方法學(xué)的影響

  • 軟件工程方法學(xué)三要素(填空選擇)
    過程:支持軟件生命周期的所有活動(dòng),整個(gè)一系列的動(dòng)作如何組織,動(dòng)作之間的關(guān)系
    方法:為軟件開發(fā)過程提供“如何做”的技術(shù)
    工具:為軟件開發(fā)方法提供自動(dòng)的或半自動(dòng)的軟件支撐環(huán)境,計(jì)算機(jī)輔助軟件工程

    軟件工程方法學(xué)的三要素是()。
    ①方法
    ②項(xiàng)目管理
    ③過程
    ④開發(fā)語言
    ⑤工具

    A.①②③
    B.①②⑤
    C.②③④
    D.①③⑤

  • 軟件生命周期劃分及各階段的主要任務(wù)(填空選擇重點(diǎn))
    (1)軟件生命周期軟件定義、軟件開發(fā)、和運(yùn)行維護(hù)3個(gè)階段組成
    具體劃分:問題的定義、可行性研究、軟件需求分析、系統(tǒng)總體設(shè)計(jì)、詳細(xì)設(shè)計(jì)、編碼、測(cè)試和運(yùn)行、維護(hù)


    軟件開發(fā)的瀑布模型,一般都將開發(fā)過程劃分為:分析、設(shè)計(jì)、編碼和測(cè)試等階段,一般認(rèn)為可能占用人員最多的階段是( )
    A.分析階段 B.設(shè)計(jì)階段
    C.編碼階段 D.測(cè)試階段

    正確答案:C

    問題定義:
    (1)確定要開發(fā)軟件系統(tǒng)的總目標(biāo)和規(guī)模。
    (2)從技術(shù)、經(jīng)濟(jì)和社會(huì)因素等方面的要求來論證完成該軟件任務(wù)的可行性。
    (3)估計(jì)可利用的資源(計(jì)算機(jī)硬件,軟件,人力等)、成本、效益、開發(fā)進(jìn)度。
    (4)制定出完成開發(fā)任務(wù)的實(shí)施計(jì)劃,連同可行性研究報(bào)告,提交管理部門審查。
    需求開發(fā):
    (1)調(diào)查、分析、整理用戶需求;
    (2)建立需求分析模型;
    (3)編寫軟件需求規(guī)格說明書,提交管理部門審查
    軟件設(shè)計(jì):
    (1)根據(jù)需求規(guī)格說明書,確定軟件的體系結(jié)構(gòu);
    (2)設(shè)計(jì)每個(gè)系統(tǒng)部件的實(shí)現(xiàn)算法、數(shù)據(jù)結(jié)構(gòu)及接口等;
    (3)編寫軟件設(shè)計(jì)說明書,并提交管理部門審查。
    軟件構(gòu)造(編碼):
    (1)根據(jù)軟件設(shè)計(jì)說明書,進(jìn)行程序設(shè)計(jì);
    (2)編寫功能實(shí)現(xiàn)代碼;
    (3)編寫測(cè)試代碼。
    軟件測(cè)試:檢測(cè)和驗(yàn)證所開發(fā)的系統(tǒng)是否滿足需求,包括:
    (1)單元測(cè)試;
    (2)集成測(cè)試;
    (3)確認(rèn)測(cè)試;
    (4)系統(tǒng)測(cè)試
    軟件維護(hù):
    對(duì)系統(tǒng)進(jìn)行改進(jìn),以適應(yīng)不斷變化的需求

  • 軟件過程模型及特點(diǎn)(選擇填空)


    瀑布模型:特點(diǎn):嚴(yán)格按照步驟,文檔驅(qū)動(dòng)型,從上到下
    快速原型模型:思想:和客戶交流能很快構(gòu)造模型,通過模型討論,完善功能
    做UI界面,做一些簡單的模擬展示
    螺旋模型:有風(fēng)險(xiǎn)評(píng)估,每次迭代,都要風(fēng)險(xiǎn)評(píng)估,適合大型項(xiàng)目,投入大風(fēng)險(xiǎn)高

  • 模塊的獨(dú)立性指標(biāo)(填空選擇)
    內(nèi)聚和耦合
    內(nèi)聚:模塊里面的關(guān)系
    耦合:模塊之間聯(lián)系的指標(biāo)
    內(nèi)聚最高:功能內(nèi)聚
    內(nèi)聚最低:巧合內(nèi)聚
    耦合最高:內(nèi)容耦合
    耦合最低:非直接耦合

    內(nèi)聚和耦合是主要描述模塊內(nèi)外聯(lián)系的,所以我們了解內(nèi)聚和耦合之前,我們先了解一下模塊
    模塊:就是為了完成某一功能所需的一段程序或是子程序;或是能夠編譯程序、裝配程序等處理的獨(dú)立程序單位;或是指大型軟件系統(tǒng)的一部分
    模塊化:能夠把一個(gè)大而復(fù)雜的軟件系統(tǒng)劃分成易于理解的比較簡單的模塊結(jié)構(gòu)。(按功能域劃分
    基本屬性
    ?? 1. 功能:描述該模塊實(shí)現(xiàn)什么功能
    ?? 2. 邏輯:描述模塊內(nèi)部
    ?? 3. 狀態(tài):該模塊使用時(shí)的環(huán)境和條件
    ??模塊的獨(dú)立性:軟件在系統(tǒng)中每個(gè)模塊設(shè)計(jì)軟件要求的具體的子功能
    ??它的獨(dú)立性的度量準(zhǔn)則:模塊間的耦合和內(nèi)聚
    ??好的模塊:高內(nèi)聚,低耦合(主要是面向?qū)ο蟮脑O(shè)計(jì),看類的內(nèi)聚度是否高,耦合度是否低)
    ??高內(nèi)聚,低耦合的好處:在系統(tǒng)的持續(xù)發(fā)展中,它會(huì)使系統(tǒng)有很好的重用性,維護(hù)性,擴(kuò)展性,可以更高效的完成系統(tǒng)的維護(hù)開發(fā),持續(xù)的支持業(yè)務(wù)發(fā)展!

    內(nèi)聚
    內(nèi)聚主要描述的是模塊內(nèi)功能的聯(lián)系,高內(nèi)聚就是模塊內(nèi)功能聯(lián)系比較緊密,代碼的相關(guān)性特別的強(qiáng),程序設(shè)計(jì)的比較嚴(yán)謹(jǐn)!
    內(nèi)聚的分類
    1 功能內(nèi)聚(最理想的內(nèi)聚)
    ??一個(gè)模塊中各個(gè)部分都是完成某一具體功能必不可少的組成部分,是不可分割的
    ??功能內(nèi)聚是最強(qiáng)的內(nèi)聚,其最大的優(yōu)點(diǎn)是它的功能明確。判斷一個(gè)模塊是否功能內(nèi)聚,一般從模塊名稱就能看出。如果模塊名稱只有一個(gè)動(dòng)詞和一個(gè)特定的目標(biāo)(單數(shù)名詞),一般來說就是功能內(nèi)聚,如:“計(jì)算水費(fèi)”、“計(jì)算產(chǎn)值”等模塊。功能內(nèi)聚一般出現(xiàn)在軟件結(jié)構(gòu)圖的較低層次上
    ??功能內(nèi)聚模塊的一個(gè)重要特點(diǎn)是:他是一個(gè)“暗盒”,對(duì)于該模塊的調(diào)用者來說,只需要知道這個(gè)模塊能做什么,而不需要知道這個(gè)模塊是如何做的
    2 信息內(nèi)聚
    ??這個(gè)模塊完成多個(gè)功能,各個(gè)功能都在同一數(shù)據(jù)結(jié)構(gòu)上操作,每一項(xiàng)功能有一個(gè)唯一的入口點(diǎn)
    3 通信內(nèi)聚
    ??如果一個(gè)模塊內(nèi)各功能部分都使用了相同的輸入數(shù)據(jù),或產(chǎn)生了相同的輸出數(shù)據(jù),則稱之為通信內(nèi)聚模型
    4 過程內(nèi)聚
    ??使用流程作為工具設(shè)計(jì)程序時(shí),把流程圖中的某一個(gè)部分劃分出組成模塊,就得到過程內(nèi)聚模塊
    5 時(shí)間內(nèi)聚
    ??時(shí)間內(nèi)聚模塊的各個(gè)功能的執(zhí)行與時(shí)間有關(guān),通常要求所有功能必須在同一時(shí)間段內(nèi)執(zhí)行
    6 邏輯內(nèi)聚
    ??這種模塊把幾種相關(guān)功能組合在一起
    7 巧合內(nèi)聚
    ??各部分之間沒有聯(lián)系,或者即使有聯(lián)系,這種聯(lián)系也很松散。

    耦合可以分為以下幾種,它們之間的耦合度由高到低排列如下
    (1) 內(nèi)容耦合:如果發(fā)生下列情形,兩個(gè)模塊之間就發(fā)生了內(nèi)容耦合
    一個(gè)模塊直接訪問另一個(gè)模塊的內(nèi)部數(shù)據(jù);
    一個(gè)模塊不通過正常入口轉(zhuǎn)到另一模塊內(nèi)部;
    兩個(gè)模塊有一部分程序代碼重迭(只可能出現(xiàn)在匯編語言中);
    一個(gè)模塊有多個(gè)入口。
    (2) 公共耦合:若一組模塊都訪問同一個(gè)公共數(shù)據(jù)環(huán)境,則它們之間的耦合就稱為公共耦合。公共的數(shù)據(jù)環(huán)境可以是全局?jǐn)?shù)據(jù)結(jié)構(gòu)、共享的通信區(qū)、內(nèi)存的公共覆蓋區(qū)等。
    (3) 外部耦合: 一組模塊都訪問同一全局簡單變量而不是同一全局?jǐn)?shù)據(jù)結(jié)構(gòu),而且不是通過參數(shù)表傳遞該全局變量的信息,則稱之為外部耦合。
    (4) 控制耦合:如果一個(gè)模塊通過傳送開關(guān)、標(biāo)志、名字等控制信息,明顯地控制選擇另一模塊的功能,就是控制耦合。
    (5) 標(biāo)記耦合:一組模塊通過參數(shù)表傳遞記錄信息,就是標(biāo)記耦合。這個(gè)記錄是某一數(shù)據(jù)結(jié)構(gòu)的子結(jié)構(gòu),而不是簡單變量。
    (6) 數(shù)據(jù)耦合:一個(gè)模塊訪問另一個(gè)模塊時(shí),彼此之間是通過簡單數(shù)據(jù)參數(shù) (不是控制參數(shù)、公共數(shù)據(jù)結(jié)構(gòu)或外部變量) 來交換輸入、輸出信息的。
    (7) 非直接耦合:兩個(gè)模塊之間沒有直接關(guān)系,它們之間的聯(lián)系完全是通過主模塊的控制和調(diào)用來實(shí)現(xiàn)的
    (8)順序耦合:是靜態(tài)耦合性的一種,為了保持正確性,兩個(gè)元素(一般是函數(shù)或API)必須以特定的順序出現(xiàn)。

  • 軟件結(jié)構(gòu)的深度、寬度、扇入、扇出的定義?(填空選擇)
    結(jié)構(gòu)圖的深度指模塊的層數(shù)
    寬度指一層中最大的模塊數(shù)
    扇出指一個(gè)模塊直接調(diào)用下屬模塊的個(gè)數(shù)
    扇入指一個(gè)模塊直接上屬模塊的個(gè)

    下面軟件結(jié)構(gòu)圖的深度、第二層的寬度、A模塊的扇出和B模塊的扇入分別為(A)
    A.4、3、3、1
    B.4、2、3、1
    C.4、3、1、3
    D.4、2、1、3.

  • 數(shù)據(jù)流圖的基本要素及畫法(填空題)
    數(shù)據(jù)流圖(Data Flow Diagram,簡稱DFD)描繪系統(tǒng)的邏輯模型,是結(jié)構(gòu)化系統(tǒng)分析的主要工具。數(shù)據(jù)流圖(DFD)是描述軟件系統(tǒng)中數(shù)據(jù)處理過程的一種有力的圖形工具。
    數(shù)據(jù)流圖描述輸入數(shù)據(jù)流到輸出數(shù)據(jù)流的變換(加工),用于對(duì)系統(tǒng)的功能建模。
    采用自頂向下逐層分解,描繪滿足用戶要求的軟件模型。
    基本要素
    數(shù)據(jù)源點(diǎn):產(chǎn)生數(shù)據(jù)的地方
    數(shù)據(jù)終點(diǎn):數(shù)據(jù)的最終消費(fèi)者
    數(shù)據(jù)處理:數(shù)據(jù)的加工過程
    數(shù)據(jù)流:在系統(tǒng)中進(jìn)行流動(dòng)的數(shù)據(jù)。
    數(shù)據(jù)存儲(chǔ):存儲(chǔ)數(shù)據(jù)的地方


    畫分層DFD的指導(dǎo)原則:
    父圖-子圖平衡:模型分解時(shí)必須保持父圖的輸入輸出數(shù)據(jù)流和子圖輸入輸出數(shù)據(jù)流相同。
    局部數(shù)據(jù)存儲(chǔ):出現(xiàn)在加工之間的界面時(shí),才畫出來
    編號(hào):子圖圖號(hào)為分解的父圖中的加工號(hào),同級(jí)子圖在最后數(shù)字以序號(hào)區(qū)別。
    分解的程度:按功能情況定,一般設(shè)深度為3-5;同一層次超過5個(gè)加工,最好分解畫,否則容易出錯(cuò)。

    數(shù)據(jù)流圖的分析步驟:
    找出數(shù)據(jù)流圖的四種組成要素。
    源點(diǎn)和終點(diǎn)、數(shù)據(jù)處理、數(shù)據(jù)存儲(chǔ)、數(shù)據(jù)流。
    畫出基本系統(tǒng)模型。
    把軟件系統(tǒng)看作一個(gè)整體單元,描述它與外部環(huán)境的數(shù)據(jù)交互關(guān)系。
    畫出功能模型。
    把系統(tǒng)劃分出幾個(gè)主要的數(shù)據(jù)處理步驟,描述系統(tǒng)內(nèi)部之間的數(shù)據(jù)流動(dòng)關(guān)系。
    數(shù)據(jù)流圖細(xì)化。
    對(duì)數(shù)據(jù)處理進(jìn)行進(jìn)一步細(xì)化,形成詳細(xì)的數(shù)據(jù)流圖。

  • ER圖的基本要素及畫(分析題)
    實(shí)體:矩形
    屬性:橢圓
    屬性-實(shí)體 線條
    實(shí)體-實(shí)體有關(guān)系 用菱形
    映射基數(shù) 多對(duì)多

  • 數(shù)據(jù)庫邏輯設(shè)計(jì)內(nèi)容及做法(同第九題一起出)
    邏輯設(shè)計(jì)就是將ER圖轉(zhuǎn)為關(guān)系模式
    考試第一步畫ER圖,第二部轉(zhuǎn)換他的關(guān)系模
    每一個(gè)實(shí)體他是可以轉(zhuǎn)為一個(gè)關(guān)系模式,每一個(gè)關(guān)系也可以轉(zhuǎn)為一個(gè)關(guān)系模式
    關(guān)系里面根據(jù)映射的多少轉(zhuǎn)換的方式也不一
    還要注意:映射完后,主關(guān)鍵字能標(biāo)注出來,畫下劃線

    題目:

  • 向數(shù)據(jù)流的設(shè)計(jì)方法(非分析題)
    數(shù)據(jù)流->結(jié)構(gòu)圖就是面向數(shù)據(jù)流的設(shè)計(jì)方法
    兩種數(shù)據(jù)流 變換型,事物型
    變換型:映射為哪三個(gè)部分:傳入路徑 變換中心 傳出路徑
    變換型分析的設(shè)計(jì)步驟:

    (1)確定DFD的變換中心、邏輯輸入和邏輯輸出
    (2)設(shè)計(jì)軟件結(jié)構(gòu)的頂層和第一層:變換結(jié)構(gòu)
    (3)設(shè)計(jì)中、下層模塊
    (4)設(shè)計(jì)的優(yōu)化
    事物型:事務(wù)型結(jié)構(gòu)由至少一條接受路徑、一個(gè)事務(wù)中心與若干條動(dòng)作路徑組成。

    事務(wù)分析的設(shè)計(jì)步驟:
    ⑴確定事務(wù)中心和加工路徑?
    ⑵設(shè)計(jì)頂層(事務(wù)機(jī)構(gòu))和第一層?頂層模塊有兩個(gè)功能:接收數(shù)據(jù)和根據(jù)事務(wù)類型調(diào)動(dòng)相應(yīng)處理模塊。?
    ⑶中下層模塊的設(shè)計(jì)﹑優(yōu)化工作與變換結(jié)構(gòu)相同。?
    事務(wù)型軟件結(jié)構(gòu)包括兩部分:?接收分支?發(fā)送分支
    通常包括一調(diào)度模塊,當(dāng)事務(wù)類型不多時(shí),可與主模塊合并

  • 面向?qū)ο笏枷?分?jǐn)?shù)多,填空選擇問答)
    基本觀點(diǎn):

    1)對(duì)象:客觀世界由對(duì)象組成
    2)類:對(duì)象可以歸并為一個(gè)類
    3)對(duì)象之間有繼承關(guān)系
    4)對(duì)象直接有聯(lián)系,通過通信,成為消息
    面向?qū)ο笕筇卣?br /> 封裝繼承多態(tài)
    1)封裝:將客觀事物抽象成類,每個(gè)類對(duì)自身的數(shù)據(jù)和方法實(shí)行protection (private,protected,public)
    2)繼承:廣義的繼承有三種實(shí)現(xiàn)形式:實(shí)現(xiàn)繼承(指使用基類的屬性和方法而無需額外編碼的能力)、可視繼承(子窗體使用父窗體的外觀和實(shí)現(xiàn)代碼)、接口繼承(僅使用屬性和方法,實(shí)現(xiàn)滯后到子類實(shí)現(xiàn))。前兩種(類繼承)和后一種((對(duì)象組合=>接口繼承以及純虛函數(shù))構(gòu)成了功能復(fù)用的兩種方式。
    3)多態(tài):是將父對(duì)象設(shè)置成為和一個(gè)或更多的與他的子對(duì)象相等的技術(shù),賦值之活,父對(duì)象就可以根據(jù)當(dāng)前賦值給它的子對(duì)象的特性以不同的方式運(yùn)作。簡單的說,就是一句話:允許將子類類型的指針賦值給父類類型的指針。

  • 面向?qū)ο蠓治鲋蓄I(lǐng)域建模任務(wù)(分析題)
    識(shí)別出分析類
    考大題,給一個(gè)業(yè)務(wù)描述,這里面識(shí)別出來幾個(gè)類,類圖怎么畫
    類的識(shí)別方法:分析類,邊界類,控制類,實(shí)體類

    題目: 汽車和自行車都是交通工具。一輛自行車只能歸一個(gè)人擁有,但一輛汽車可歸一個(gè)人或者兩個(gè)人擁有。一個(gè)人可能沒有自行車或汽車.也可能擁有多輛自行車或汽車。人分男人和女人兩類,每個(gè)人都具有年齡和名字。在任何時(shí)候,一輛汽車上可能載有0個(gè)多個(gè)乘客。每輛汽車都有自己的顏色和商標(biāo)。特別地,每輛汽車都只有兩個(gè)前燈和一臺(tái)發(fā)動(dòng)機(jī)。請(qǐng)畫出類圖。

  • 面向?qū)ο笤O(shè)計(jì)的七大原則(考一兩個(gè)原則概念填空題)
    開閉原則
    里氏代換原則
    最少知道原則
    單一職責(zé)原則
    接口隔離原則
    依賴倒轉(zhuǎn)原則
    合成復(fù)用原則
    (1) 單一職責(zé)原則(Single Responsibility Principle, SRP)
    定義:
    ??類的職責(zé)要單一,一個(gè)類只負(fù)責(zé)一項(xiàng)職責(zé)
    分析:
    ??一個(gè)類(或者大到模塊,小到方法)承擔(dān)的職責(zé)越多,它被復(fù)用的可能性越小,而且如果一個(gè)類承擔(dān)的職責(zé)過多,就相當(dāng)于將這些職責(zé)耦合在一起,當(dāng)其中一個(gè)職責(zé)變化時(shí),可能會(huì)影響其他職責(zé)的運(yùn)作
    作用:
    ??降低代碼復(fù)雜度、系統(tǒng)解耦合、提高可讀性
    注意:
    ??通常情況下,我們應(yīng)當(dāng)遵守單一職責(zé)原則,只有邏輯足夠簡單,才可以在代碼級(jí)違反單職責(zé)原則;只有類中方法數(shù)量足夠少,可以在方法級(jí)別保持單一職責(zé)原則。

    (2) 接口隔離原則(Interface Segregation Principle, ISP)
    定義:
    ??客戶端不應(yīng)該依賴那些它不需要的接口。 一旦一個(gè)接口太大,則需要將它分割成一些更細(xì)小的接口,使用該接口的客戶端僅需知道與之相關(guān)的方法即可

    分析:
    接口隔離原則是指使用多個(gè)專門的接口,而不使用單一的總接口。每一個(gè)接口應(yīng)該承擔(dān)一種相對(duì)獨(dú)立的角色,不多不少,不干不該干的事,該干的事都要干。
    一個(gè)接口就只代表一個(gè)角色,每個(gè)角色都有它特定的一個(gè)接口,此時(shí)這個(gè)原則可以叫做“角色隔離原則”。
    接口僅僅提供客戶端需要的行為,即所需的方法,客戶端不需要的行為則隱藏起來,應(yīng)當(dāng)為客戶端提供盡可能小的單獨(dú)的接口,而不要提供大的總接口。
    使用接口隔離原則拆分接口時(shí),首先必須滿足單一職責(zé)原則,將一組相關(guān)的操作定義在一個(gè)接口中,且在滿足高內(nèi)聚的前提下,接口中的方法越少越好。
    可以在進(jìn)行系統(tǒng)設(shè)計(jì)時(shí)采用定制服務(wù)的方式,即為不同的客戶端提供寬窄不同的接口,只提供用戶需要的行為,而隱藏用戶不需要的行為。

    作用:
    ?? 避免接口過于臃腫職責(zé)不單一。

    (3) 依賴倒轉(zhuǎn)原則(Dependency Inversion Principle, DIP)
    定義:
    ??高層模塊不應(yīng)該依賴低層模塊,它們都應(yīng)該依賴抽象。抽象不應(yīng)該依賴于細(xì)節(jié),細(xì)節(jié)應(yīng)該依賴于抽象。

    分析:
    ??簡單來說,依賴倒轉(zhuǎn)原則就是指:代碼要依賴于抽象的類,而不要依賴于具體的類;要針對(duì)接口或抽象類編程,而不是針對(duì)具體類編程。
    ??通過面向接口編程,使用接口或者抽象類制定好規(guī)范和契約,而不去涉及任何具體的操作,把展現(xiàn)細(xì)節(jié)的任務(wù)交給他們的實(shí)現(xiàn)類去完成。

    作用:
    ??避免需求變化導(dǎo)致過多的維護(hù)工作。

    注意:
    ??依賴注入,就是將一個(gè)類的對(duì)象傳入另一個(gè)類,注入式應(yīng)該盡量注入父類對(duì)象,而在程序運(yùn)行時(shí)再通過子類對(duì)象來覆蓋父類對(duì)象。
    ??繼承時(shí)遵循里氏替換原則。

    (4) 里氏代換原則(Liskov Substitution Principle, LSP)
    定義:
    ??所有引用基類(父類)的地方必須能透明地使用其子類的對(duì)象。

    分析:
    子類可以實(shí)現(xiàn)父類的抽象方法,但是不能覆蓋父類的非抽象方法;
    子類中可以增加自己特有的方法;
    當(dāng)子類覆蓋或?qū)崿F(xiàn)父類的方法時(shí),方法的前置條件(即方法的形參)要比父類方法的輸入?yún)?shù)更寬松;
    當(dāng)子類的方法實(shí)現(xiàn)父類的抽象方法時(shí),方法的后置條件(即方法的返回值)要比父類更嚴(yán)格。
    如果子類不能完整地實(shí)現(xiàn)父類的方法,或者父類的一些方法在子類中已經(jīng)發(fā)生畸變,則建議斷開繼承關(guān)系,采用依賴,聚合,組合等關(guān)系代替繼承。
    里氏代換原則是實(shí)現(xiàn)開閉原則的重要方式之一,由于使用基類對(duì)象的地方都可以使用子類對(duì)象,因此在程序中盡量使用基類類型來對(duì)對(duì)象進(jìn)行定義,而在運(yùn)行時(shí)再確定其子類類型,用子類對(duì)象來替換父類對(duì)象。

    作用:
    ??避免系統(tǒng)繼承體系被破壞。

    (5) 開閉原則(Open-Closed Principle, OCP)
    定義:
    ??一個(gè)軟件實(shí)體應(yīng)當(dāng)對(duì)擴(kuò)展開放(對(duì)提供方),對(duì)修改關(guān)閉(對(duì)使用方)。也就是說在設(shè)計(jì)一個(gè)模塊的時(shí)候,盡量通過擴(kuò)展軟件實(shí)體的行為來實(shí)現(xiàn)變化,而不是通過修改已有的代碼來實(shí)現(xiàn)變化。

    分析:
    ??設(shè)計(jì)模式前面6大原則以及23種設(shè)計(jì)模式遵循的好,開閉原則自然遵守的好。對(duì)需求的變更保持前瞻性和預(yù)見性,就可以使抽象具有更廣泛適用性,設(shè)計(jì)出的軟件架構(gòu)就能相對(duì)穩(wěn)定。軟件需求中易變的細(xì)節(jié),通過從抽象派生出實(shí)現(xiàn)類來擴(kuò)展。

    作用:
    ??提高擴(kuò)展性、便于維護(hù)。

    (6) 迪米特法則(Law of Demeter, LoD)
    定義:
    又稱為最少知識(shí)原則。
    不要和“陌生人”說話。
    只與你的直接朋友通信。
    每一個(gè)軟件單位對(duì)其他的單位都只有最少的知識(shí),而且局限于那些與本單位密切相關(guān)的軟件單位。

    分析:
    一個(gè)對(duì)象應(yīng)該對(duì)其他對(duì)象保持最少的了解。
    類與類關(guān)系越密切,耦合度越大。
    迪米特法則(DemeterPrinciple)又叫最少知道原則,即一個(gè)類對(duì)自己依賴的類知道的越少越好。也就是說,對(duì)于被依賴的類不管多么復(fù)雜,都盡量將邏輯封裝在類的內(nèi)部。對(duì)外除了提供的 public 方法,不對(duì)外泄露任何信息。
    迪米特法則還有個(gè)更簡單的定義:只與直接的朋友通信。
    直接的朋友:每個(gè)對(duì)象都會(huì)與其他對(duì)象有耦合關(guān)系,只要兩個(gè)對(duì)象之間有耦合關(guān)系,我們就說這兩個(gè)對(duì)象之間是朋友關(guān)系。
    ??耦合的方式很多,依賴,關(guān)聯(lián),組合,聚合等。其中,我們稱出現(xiàn)成員變量,方法參數(shù),方法返回值中的類為直接的朋友,而出現(xiàn)在局部變量中的類不是直接的朋友。也就是說,陌生的類最好不要以局部變 量的形式出現(xiàn)在類的內(nèi)部。

    作用:
    ??降低類與類之間的耦合。

    注意:
    ??迪米特法則的核心是降低類之間的耦合,但是,由于每個(gè)類都減少了不必要的依賴,因此迪米特法則只是要求降低類間(對(duì)象間)耦合關(guān)系, 并不是 要求完全沒有依賴關(guān)系

    (7) 合成復(fù)用原則(Composite Reuse Principle, CRP)
    定義:
    ??盡量使用對(duì)象組合,而不是繼承來達(dá)到復(fù)用的目的。

    分析:
    合成復(fù)用原則就是指在一個(gè)新的對(duì)象里通過關(guān)聯(lián)關(guān)系(包括組合關(guān)系和聚合關(guān)系)來使用一些已有的對(duì)象,使之成為新對(duì)象的一部分;
    新對(duì)象通過委派調(diào)用已有對(duì)象的方法達(dá)到復(fù)用其已有功能的目的。簡言之:要盡量使用組合/聚合關(guān)系,少用繼承。
    在面向?qū)ο笤O(shè)計(jì)中,可以通過兩種基本方法在不同的環(huán)境中復(fù)用已有的設(shè)計(jì)和實(shí)現(xiàn),即通過組合/聚合關(guān)系或通過繼承。
    組合/聚合可以使系統(tǒng)更加靈活,類與類之間的耦合度降低,一個(gè)類的變化對(duì)其他類造成的影響相對(duì)較少,因此一般首選使用組合/聚合來實(shí)現(xiàn)復(fù)用;其次才考慮繼承,在使用繼承時(shí),需要嚴(yán)格遵循里氏代換原則,有效使用繼承會(huì)有助于對(duì)問題的理解,降低復(fù)雜度,而濫用繼承反而會(huì)增加系統(tǒng)構(gòu)建和維護(hù)的難度以及系統(tǒng)的復(fù)雜度,因此需要慎重使用繼承復(fù)用。

    目的:
    ??防止類的體系龐大。

  • 狀態(tài)圖的組成組成元素及畫法(分析題)
    一個(gè)業(yè)務(wù)里有哪些狀態(tài),初態(tài) 終態(tài),狀態(tài)(圓角矩形),轉(zhuǎn)換(狀態(tài)之間有外部干擾時(shí)會(huì)從一種狀態(tài)轉(zhuǎn)換為另一種狀態(tài)
    狀態(tài)圖的概念于1987年由Harel提出,采用狀態(tài)、事件等圖形符號(hào)來描述系統(tǒng)的行為。

    題目:辦公室復(fù)印機(jī)的工作過程大致如下,請(qǐng)畫出復(fù)印機(jī)的狀態(tài)轉(zhuǎn)換圖。
    未接到復(fù)印命令時(shí)處于閑置狀態(tài),信息燈呈黃色,屏幕熄滅;
    當(dāng)接到復(fù)印命令則進(jìn)入復(fù)印狀態(tài),信息燈呈綠色,屏幕點(diǎn)亮;
    完成一個(gè)復(fù)印命令規(guī)定的工作后,10秒內(nèi)沒有收到復(fù)印命令又回到閑置狀態(tài),繼續(xù)等待下一個(gè)復(fù)印命令;
    執(zhí)行復(fù)印命令時(shí)發(fā)現(xiàn)缺紙,則進(jìn)入缺紙狀態(tài),發(fā)出警告聲,等待裝紙,裝滿紙后進(jìn)入閑置狀態(tài),準(zhǔn)備接受復(fù)印命令;
    如果復(fù)印時(shí)發(fā)生卡紙故障,則進(jìn)入卡紙狀態(tài),信號(hào)燈呈紅色,發(fā)出警告聲,等待維修人員排除故障,故障排除后回到閑置狀態(tài)。

  • 用例圖組成元素及畫法(分析題)
    了解參與者期望什么,期望系統(tǒng)干什么,有意義的目標(biāo)為用例
    參與者用小人,用例用橢圓形表示,系統(tǒng)邊界框起來




  • 用例描述的幾種方法(問答題分析題)
    重點(diǎn)是描述用例,參與者是什么,前置條件是什么,操作流程是什么
    文本和圖形兩種方式
    圖形描述用活動(dòng)圖,涉及到多個(gè)參與者泳道圖

    用例圖只是簡單地用圖描述了一下系統(tǒng),但對(duì)于每個(gè)用例,我們還需要有詳細(xì)的說明,這樣就可以讓別人對(duì)這個(gè)系統(tǒng)有一個(gè)更加詳細(xì)的了解,這時(shí)我們就需要寫用例描述。

    對(duì)于用例描述的內(nèi)容,一般沒有硬性規(guī)定的格式,但一些必須或者重要的內(nèi)容還是必須要寫進(jìn)用例描述里面的。用例描述一般包括:簡要描述(說明)、前置(前提)條件、基本事件流、其他事件流、異常事件流、后置(事后)條件等等。下面說說各個(gè)部分的意思:

    簡要描述:對(duì)用例的角色、目的的簡要描述;

    前置條件:執(zhí)行用例之前系統(tǒng)必須要處于的狀態(tài),或者要滿足的條件;

    基本事件流:描述該用例的基本流程,指每個(gè)流程都“正?!边\(yùn)作時(shí)所發(fā)生的事情,沒有任何備選流和異常流,而只有最有可能發(fā)生的事件流;

    其他事件流:表示這個(gè)行為或流程是可選的或備選的,并不是總要總要執(zhí)行它們;

    異常事件流:表示發(fā)生了某些非正常的事情所要執(zhí)行的流程;

    后置條件:用例一旦執(zhí)行后系統(tǒng)所處的狀態(tài);

    題目:家教網(wǎng)站分為前臺(tái)客戶系統(tǒng)和后臺(tái)管理系統(tǒng)

  • 時(shí)序圖的組成及畫(同13類分析出題)
    進(jìn)一步識(shí)別類與類之間的交互關(guān)系,時(shí)序圖描述,強(qiáng)調(diào)的是一個(gè)時(shí)間概念,類與類之間有一個(gè)時(shí)間的先后順序,一種是橫軸類,縱軸時(shí)間,從上之下遞增,虛線是生命線,起始對(duì)象開始,從上至下,從左至右畫消息,那個(gè)對(duì)象和哪個(gè)對(duì)象會(huì)發(fā)送消息,消息要編號(hào)
    消息兩種,正向的消息用實(shí)線,反饋的用虛線

  • 構(gòu)件圖的基本元素及畫法(填空選擇)
    組成元素:構(gòu)件 依賴關(guān)系 需求接口 提供接口
    1,組件圖又稱為構(gòu)件圖(Component Dlagram)。組件圖中通常包括組件、接口,以及各種關(guān)系。組件圖顯示組件以及它們之間的依賴關(guān)系,它可以用來顯示程序代碼如何分解成模塊或組件。一般來說,組件就是一個(gè)實(shí)際文件,可以有以下幾種類型:
    源代碼組件:一個(gè)源代碼文件或者與一個(gè)包對(duì)應(yīng)的若干個(gè)源代碼文件。
    二進(jìn)制組件:—個(gè)目標(biāo)碼文件,一個(gè)靜態(tài)的或者動(dòng)態(tài)的庫文件。
    可執(zhí)行組件:在一臺(tái)處理器上可運(yùn)行的一個(gè)可執(zhí)行的程序單位,即所謂可執(zhí)行程序。
    2,組件圖可以用來顯示編譯、鏈接或執(zhí)行時(shí)組件之間的依賴關(guān)系,以及組件的接口和調(diào)用關(guān)系。
    3,組件間的關(guān)系有兩種:泛化關(guān)系和依賴關(guān)系,如果兩個(gè)不同組件中的類存在泛化關(guān)系或依賴關(guān)系,那么兩個(gè)組件之間的關(guān)系就表示為泛化關(guān)系或依賴關(guān)系。
    4,對(duì)于由多個(gè)組件組成的大系統(tǒng)來說,組件圖非常重要。

  • 軟件測(cè)試的概念、白盒測(cè)試、黑盒測(cè)試的特點(diǎn)?(選擇填空)
    目的:采用行之有效的測(cè)試方案,找出迄今未被發(fā)現(xiàn)的,盡可能多的錯(cuò)誤,并加以糾正
    只能證明是錯(cuò)誤的,不能證明是正確的
    黑盒測(cè)試又叫功能測(cè)試,又叫數(shù)據(jù)驅(qū)動(dòng)測(cè)試
    白盒測(cè)試驅(qū)動(dòng)測(cè)試
    白盒測(cè)試:是通過程序的源代碼進(jìn)行測(cè)試而不使用用戶界面。

    ※ 白盒測(cè)試的優(yōu)點(diǎn)有: 1)幫助軟件測(cè)試人員增大代碼的覆蓋率,提高代碼的質(zhì)量,發(fā)現(xiàn)代碼中隱藏的問題。

    ※ 白盒測(cè)試的缺點(diǎn)有: 2)程序運(yùn)行會(huì)有很多不同的路徑,不可能測(cè)試所有的運(yùn)行路徑;測(cè)試基于代碼,只能測(cè)試開發(fā)人 員做的對(duì)不對(duì),而不能知道設(shè)計(jì)的正確與否,可能會(huì)漏掉一些功能需求;系統(tǒng)龐大時(shí),測(cè)試開銷 會(huì)非常大。

    黑盒測(cè)試:又被稱為功能測(cè)試、數(shù)據(jù)驅(qū)動(dòng)測(cè)試或基于規(guī)格說明的測(cè)試,是通過使用整個(gè)軟件或某種軟件功能來嚴(yán)格地測(cè)試, 而并沒有通過檢查程序的源代碼或者很清楚地了解該軟件的源代碼程序具體是怎樣設(shè)計(jì)的。

    ※ 黑盒測(cè)試的優(yōu)點(diǎn)有: 1)比較簡單,不需要了解程序內(nèi)部的代碼及實(shí)現(xiàn); 2)與軟件的內(nèi)部實(shí)現(xiàn)無關(guān); 3)從用戶角度出發(fā),能很容易的知道用戶會(huì)用到哪些功能,會(huì)遇到哪些問題; 4)基于軟件開發(fā)文檔,所以也能知道軟件實(shí)現(xiàn)了文檔中的哪些功能; 5)在做軟件自動(dòng)化測(cè)試時(shí)較為方便。

    ※ 黑盒測(cè)試的缺點(diǎn)有: 1)不可能覆蓋所有的代碼,覆蓋率較低,大概只能達(dá)到總代碼量的 30%; 2)自動(dòng)化測(cè)試的復(fù)用性較低。
  • 總結(jié)

    以上是生活随笔為你收集整理的软件工程期末总复习的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

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