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

歡迎訪問(wèn) 生活随笔!

生活随笔

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

编程问答

《软件工程》 课后思考题

發(fā)布時(shí)間:2023/12/9 编程问答 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 《软件工程》 课后思考题 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

第一章 軟件工程概述

1. 結(jié)合你之前的工程經(jīng)驗(yàn)以及任正非致員工信,談?wù)勀銓?duì)軟件工程的看法。

隨著科技的發(fā)展,軟件開(kāi)發(fā)的需求量以及開(kāi)發(fā)規(guī)模都在不斷地增大,規(guī)模越大的軟件工程,各方面需要考慮的問(wèn)題就越多,所耗費(fèi)的人力物力就越大。我認(rèn)為軟件工程的作用就是運(yùn)用一系列科學(xué)的方法,在滿足各方面需求并保證軟件效率的前提下,統(tǒng)籌管理好開(kāi)發(fā)過(guò)程的每一步,以最少的人力物力耗費(fèi)來(lái)實(shí)現(xiàn)期望的目標(biāo)。

2.軟件開(kāi)發(fā)就是編碼么?談?wù)勀銓?duì)軟件開(kāi)發(fā)的本質(zhì)的認(rèn)識(shí)。

編碼是軟件開(kāi)發(fā)的一部分,也是程序員們的工作。我認(rèn)為軟件開(kāi)發(fā)的過(guò)程中除了編碼以外,更重要的是開(kāi)發(fā)人員和客戶的一個(gè)不斷地交流,隨著開(kāi)發(fā)過(guò)程的進(jìn)行,客戶的需求也許會(huì)發(fā)生變化,弄清楚了為什么要寫代碼,要寫怎樣的代碼,實(shí)現(xiàn)怎樣的功能,才能夠更好地實(shí)現(xiàn)預(yù)期的目標(biāo)。

3.舉例說(shuō)明軟件的特點(diǎn)有哪些?

  • 軟件開(kāi)發(fā)與硬件研制相比,更依賴于開(kāi)發(fā)人員的業(yè)務(wù)素質(zhì)、智力、人員的組織、合作和管理。
  • 大型軟件仍然存在著潛伏的錯(cuò)誤。
  • 軟件產(chǎn)品開(kāi)發(fā)成功后,只需對(duì)原版軟件進(jìn)行復(fù)制,即可生產(chǎn)出任意多的同樣的產(chǎn)品。
  • 還有,軟件在使用過(guò)程中的維護(hù)工作比硬件要復(fù)雜得多。
  • 由于軟件不是物理產(chǎn)品,所以它不會(huì)磨損和老化
  • 4.什么是軟件危機(jī)?軟件危機(jī)出現(xiàn)的原因及解決手段有哪些?

    軟件危機(jī)是指落后的軟件生產(chǎn)方式無(wú)法滿足迅速增長(zhǎng)的計(jì)算機(jī)軟件需求,從而導(dǎo)致軟件開(kāi)發(fā)與維護(hù)過(guò)程中出現(xiàn)一系列嚴(yán)重問(wèn)題的現(xiàn)象。

    出現(xiàn)軟件危機(jī)的原因主要有:

  • 軟件本身獨(dú)有的特點(diǎn)確實(shí)給開(kāi)發(fā)和維護(hù)帶來(lái)了困難
  • 軟件開(kāi)發(fā)和維護(hù)過(guò)程不規(guī)范
  • 缺乏軟件開(kāi)發(fā)的經(jīng)驗(yàn)和有關(guān)軟件開(kāi)發(fā)數(shù)據(jù)的積累
  • 輕視,人們?cè)谥贫ㄓ?jì)劃時(shí)總會(huì)有一些天馬行空的想法和要求,輕視是一個(gè)最大的錯(cuò)誤。
  • 忽視軟件需求分析的重要性、忽視軟件的可理解性、文檔不完備、輕視軟件的可維護(hù)性、過(guò)分強(qiáng)調(diào)編碼技巧等等方面。
  • 用戶與開(kāi)發(fā)人員的溝通問(wèn)題,從而技術(shù)人員獲取的需求不夠全面。
  • 解決手段:
    ??在軟件工程理論的指導(dǎo)下,建立起較為完備的軟件工業(yè)化生產(chǎn)體系,形成強(qiáng)大的軟件生產(chǎn)能力 。軟件標(biāo)準(zhǔn)化與可重用性得到了工業(yè)界的高度重視,在避免重用勞動(dòng),可以緩解軟件危機(jī)。

    5.軟件工程的要素有哪些,各有什么作用?

    軟件工程的三種基本要素是方法、工具過(guò)程

  • 軟件工程方法(method)為建造軟件提供技術(shù)上的解決方法(“如何做”)。目前使用得最廣泛的方法是傳統(tǒng)方法(結(jié)構(gòu)化方法)和面向?qū)ο蠓椒ā?/li>
  • 工具為方法的運(yùn)用提供自動(dòng)的或半自動(dòng)的軟件支撐環(huán)境。
  • 過(guò)程是為了獲得高質(zhì)量的軟件所需要完成的一系列任務(wù)的框架,它規(guī)定了完成各項(xiàng)任務(wù)的工作步驟。
  • 第三章 軟件過(guò)程模型

    1.簡(jiǎn)述軟件過(guò)程、軟件生存周期、軟件過(guò)程模型(軟件生存周期模型)三者之間的概念區(qū)別。

  • 軟件過(guò)程:軟件過(guò)程為一個(gè)為建造高質(zhì)量軟件所需完成的任務(wù)的框架,即形成軟件產(chǎn)品的一系列步驟,包括中間產(chǎn)品、資源、角色及過(guò)程中采取的方法、工具等范疇。
  • 軟件生存周期:指軟件的產(chǎn)生直到報(bào)廢的生命周期,周期內(nèi)有問(wèn)題定義、可行性分析、總體描述、系統(tǒng)設(shè)計(jì)、編碼、調(diào)試和測(cè)試、驗(yàn)收與運(yùn)行、維護(hù)升級(jí)到廢棄等階段。
  • 軟件過(guò)程模型:是一種開(kāi)發(fā)策略,該策略針對(duì)軟件工程的各個(gè)階段提供了一套范形,使工程的進(jìn)展達(dá)到預(yù)期的目的。
  • 2.軟件過(guò)程就是軟件開(kāi)發(fā)過(guò)程么?為什么?

    不是,軟件過(guò)程是指軟件整個(gè)生命周期,從需求獲取、需求分析、設(shè)計(jì)、實(shí)現(xiàn)、測(cè)試、發(fā)布和維護(hù)一個(gè)過(guò)程模型。一個(gè)軟件過(guò)程定義了軟件開(kāi)發(fā)中采用的方法,但軟件過(guò)程還包含該過(guò)程中應(yīng)用的技術(shù)——技術(shù)方法和自動(dòng)化工具。

    3.請(qǐng)選擇兩個(gè)常見(jiàn)的軟件過(guò)程模型,談?wù)勀銓?duì)他們的理解?并進(jìn)行比較

  • 瀑布模型:就像是瀑布從上往下流一樣,必須等前一階段的工作完成之后,才能開(kāi)始后一階段的工作。并且每一個(gè)階段的輸出文檔就是就是后一階段的輸入文檔,因此,只有前一階段的輸出文檔正確后,后一階段的工作才能得到正確結(jié)果。同時(shí),早期犯下錯(cuò)誤后改正錯(cuò)誤的代價(jià)更低,越到后期,改正錯(cuò)誤的代價(jià)就越高。適用于需求確定,無(wú)大的需求變更,工作能夠采用線性的方式完成的軟件。
  • 增量模型:融合了瀑布模型的基本成分和原型實(shí)現(xiàn)的迭代特征,軟件開(kāi)發(fā)過(guò)程中,將軟件系統(tǒng)按功能分解為許多增減構(gòu)件,并以構(gòu)件為單位逐個(gè)地完成,并都被集成到系統(tǒng)之中。客戶對(duì)每個(gè)增量的使用和評(píng)估都作為下一個(gè)增量發(fā)布的新特性和功能。適用于既定的商業(yè)要求期限之前不可能找到足夠的開(kāi)發(fā)人員的情況。
  • 瀑布模型的優(yōu)點(diǎn)

    • 有利于大型軟件開(kāi)發(fā)過(guò)程中人員的組織、管理。
    • 有利于軟件開(kāi)發(fā)方法和工具的研究,從而提高了大型軟件項(xiàng)目開(kāi)發(fā)的質(zhì)量和效率。

    瀑布模型的缺點(diǎn)

    • 開(kāi)發(fā)過(guò)程一般不能逆轉(zhuǎn),否則代價(jià)太大;
    • 實(shí)際的項(xiàng)目開(kāi)發(fā)很難嚴(yán)格按該模型進(jìn)行;
    • 客戶往往很難清楚地給出所有的需求,而該模型卻要求如此。
    • 軟件的實(shí)際情況必須到項(xiàng)目開(kāi)發(fā)的后期客戶才能看到,這要求客戶有足夠的耐心。

    瀑布模型的使用范圍

    • 用戶的需求非常清楚全面,且在開(kāi)發(fā)過(guò)程中沒(méi)有或很少變化;
    • 開(kāi)發(fā)人員對(duì)軟件的應(yīng)用領(lǐng)域很熟悉;
    • 用戶的使用環(huán)境非常穩(wěn)定;
    • 開(kāi)發(fā)工作對(duì)用戶參與的要求很低。

    增量模型的優(yōu)點(diǎn)

    • 采用增量模型的優(yōu)點(diǎn)是人員分配靈活,剛開(kāi)始不用投入大量人力資源;
    • 如果核心產(chǎn)品很受歡迎,則可增加人力實(shí)現(xiàn)下一個(gè)增量;
    • 可先發(fā)布部分功能給客戶,對(duì)客戶起到鎮(zhèn)靜劑的作用。

    增量模型的缺點(diǎn)

    • 并行開(kāi)發(fā)構(gòu)件有可能遇到不能集成的風(fēng)險(xiǎn),軟件必須具備開(kāi)放式的體系結(jié)構(gòu);
    • 增量模型的靈活性可以使其適應(yīng)這種變化的能力大大優(yōu)于瀑布模型和快速原型模型,但也很容易退化為邊做邊改模型,從而是軟件過(guò)程的控制失去整體性。

    增量模型的使用范圍

    • 進(jìn)行已有產(chǎn)品升級(jí)或新版本開(kāi)發(fā),增量模型是非常適合的;
    • 對(duì)完成期限嚴(yán)格要求的產(chǎn)品,可以使用增量模型;
    • 對(duì)所開(kāi)發(fā)的領(lǐng)域比較熟悉而且已有原型系統(tǒng),增量模型也是非常適合的。

    4.根據(jù)你當(dāng)前所在的團(tuán)隊(duì)項(xiàng)目,你更傾向于選擇哪一種軟件過(guò)程模型?為什么?

    瀑布模型,項(xiàng)目規(guī)模比較小,項(xiàng)目的需求也比較清晰,開(kāi)發(fā)過(guò)程對(duì)用戶的依賴較小。

    第五章 軟件需求分析

    1.需求分析的目的是什么,有什么作用?

    需求分析的目的:是要求開(kāi)發(fā)人員準(zhǔn)確地理解用戶需要什么,進(jìn)行細(xì)致地調(diào)查分析,將用戶的需陳述轉(zhuǎn)化為完整的需求定義,再由需求定義轉(zhuǎn)化為相應(yīng)的軟件需求規(guī)格說(shuō)明。

    需求分析的作用:通過(guò)需求分析,可以使開(kāi)發(fā)人員深入細(xì)致地調(diào)研和分析項(xiàng)目,準(zhǔn)確理解用戶對(duì)項(xiàng)目的功能、性能、可靠性等具體要求,從而確定軟件開(kāi)發(fā)的方向而少走彎路。

    2.需求分析有哪些分類,請(qǐng)舉例說(shuō)明?

    • 業(yè)務(wù)需求:業(yè)務(wù)需求就是系統(tǒng)目標(biāo),它必須是業(yè)務(wù)導(dǎo)向、可度量、合理、可行的。業(yè)務(wù)需求描述了組織為什么要開(kāi)發(fā)一個(gè)系統(tǒng),即組織希望達(dá)到的一個(gè)什么樣的目標(biāo)。通常來(lái)自項(xiàng)目投資人、購(gòu)買產(chǎn)品的客戶、實(shí)際用戶的管理者、市場(chǎng)營(yíng)銷部分或產(chǎn)品策劃部門,比如房地產(chǎn)市場(chǎng)的開(kāi)發(fā)商。
    • 用戶需求:用戶要求系統(tǒng)必須實(shí)現(xiàn)的功能,從產(chǎn)品使用者的用戶角度考慮,比如買房的人。
    • 功能需求:開(kāi)發(fā)人員必須在產(chǎn)品中實(shí)現(xiàn)的軟件功能,用戶使用這些功能來(lái)滿足業(yè)務(wù)需求。比如房子
    • 非功能需求:非功能需求主要與系統(tǒng)的總體特征有關(guān),是一些限制性要求,是對(duì)實(shí)際使用環(huán)境所做的要求。如一個(gè)網(wǎng)站完全加載出來(lái)的時(shí)間必須在1s中之內(nèi)。

    3.需求分析過(guò)程有哪些步驟?

  • 溝通:業(yè)務(wù)領(lǐng)域的共利益者(如業(yè)務(wù)管理人員、市場(chǎng)營(yíng)銷人員、產(chǎn)品管理人員)定義業(yè)務(wù)用例、確定市場(chǎng)的范圍、初略的進(jìn)行可行性分析、確定項(xiàng)目范圍的工作說(shuō)明。
  • 導(dǎo)出需求:該步驟中應(yīng)該分析和理解三個(gè)問(wèn)題——范圍問(wèn)題、理解問(wèn)題、易變問(wèn)題。可采用會(huì)談、調(diào)查、場(chǎng)景分析、快速原型法等多種方法來(lái)導(dǎo)出目標(biāo)系統(tǒng)的高層邏輯模型。
  • 與客戶和用戶協(xié)商:通過(guò)協(xié)商來(lái)調(diào)節(jié)沖突和問(wèn)題,對(duì)需求進(jìn)行排序,識(shí)別和分析每項(xiàng)需求相關(guān)的風(fēng)險(xiǎn),開(kāi)發(fā)工作量、成本和交付時(shí)間。
  • 可行性研究:輸入一個(gè)框架描述和高層邏輯模型,輸出一份可行性研究報(bào)告。
  • 精化需求:開(kāi)發(fā)一個(gè)精確地技術(shù)模型,用以說(shuō)明軟件的功能、特征和約束,該模型定義了問(wèn)題的信息域,功能域和行為域。可以使用結(jié)構(gòu)化分析方法和面型對(duì)象分析方法來(lái)構(gòu)建模型。
  • 編寫軟件需求規(guī)格說(shuō)明:軟件需求規(guī)格是需求分析任務(wù)的最終產(chǎn)品,是客戶、管理者、分析工程師、測(cè)試工程師、維護(hù)工程師交流的標(biāo)準(zhǔn)和依據(jù)。軟件需求規(guī)格說(shuō)明描述了系統(tǒng)的數(shù)據(jù)、功能、行為、性能需求、設(shè)計(jì)約束、驗(yàn)收標(biāo)準(zhǔn)、以及其他需求相關(guān)的信息。
  • 驗(yàn)證需求:驗(yàn)證需求對(duì)需求分檔和制品進(jìn)行質(zhì)量評(píng)估,確保需求說(shuō)明準(zhǔn)確、完整。包括正確性、一致性、完整性、可行性、必要性、可檢驗(yàn)性、需求的可跟蹤性,最后確認(rèn)簽字。
  • 管理需求:需求一般會(huì)發(fā)生變更,可以通過(guò)建立需求跟蹤矩陣來(lái)保存需求和后繼工作成果的對(duì)應(yīng)關(guān)系,建立和維護(hù)“需求-設(shè)計(jì)-編程-測(cè)試”之間的一致性,確保所有的工作成果符合用戶需求。
  • 4.需求獲取方法有哪些?

    • 會(huì)談技術(shù):分為非正式會(huì)談和正式會(huì)談,提出一些可自由回答的問(wèn)題和事先準(zhǔn)備好的議題,從不同的角度,與不同的角色進(jìn)行會(huì)談,以了解不同用戶的需求。
    • 調(diào)查技術(shù):通過(guò)非正式會(huì)談、調(diào)查問(wèn)卷等調(diào)查方式來(lái)獲取用戶需求,注意檢驗(yàn)調(diào)查結(jié)果的可信度。
    • 場(chǎng)景分析技術(shù):分析用戶和軟件系統(tǒng)交互的過(guò)程,捕獲這些場(chǎng)景的細(xì)節(jié)。
    • 快速原型法:快速建立軟件原型的核心是用交互的、快速建立起來(lái)的原型取代了形式的、僵硬的(不易修改的)規(guī)格說(shuō)明,用戶通過(guò)在計(jì)算機(jī)上實(shí)際運(yùn)行和試用原型而向開(kāi)發(fā)者提供真實(shí)的反饋意見(jiàn)。

    第六章 結(jié)構(gòu)化分析

    1.結(jié)構(gòu)化分析的特點(diǎn)是什么?

    • 采用自頂向下、逐層分解的方法求解復(fù)雜問(wèn)題。
    • 方法簡(jiǎn)單、清晰,易于學(xué)習(xí)掌握和使用。
    • 結(jié)構(gòu)化分析的實(shí)施步驟是先分析當(dāng)前環(huán)境中已存在的人工系統(tǒng),在此基礎(chǔ)上再構(gòu)思即將開(kāi)發(fā)的目標(biāo)系統(tǒng),這符合人們認(rèn)識(shí)世界改造世界的一般規(guī)律,從而大大降低了問(wèn)題的復(fù)雜程度。
    • 結(jié)構(gòu)化分析采用了圖形描述方式,用數(shù)據(jù)流圖為即將開(kāi)發(fā)的系統(tǒng)描述了一個(gè)可見(jiàn)的模型,也為相同的審查和評(píng)價(jià)提供了有力的條件,才上到下把大問(wèn)題分解成若干個(gè)小問(wèn)題,然后分別解決問(wèn)題。

    2.數(shù)據(jù)流圖的建模元素有哪些?如何構(gòu)建數(shù)據(jù)流圖?有哪些注意事項(xiàng)?

    2.1 數(shù)據(jù)流圖有以下幾種主要元素

    • 數(shù)據(jù)流:數(shù)據(jù)流是數(shù)據(jù)在系統(tǒng)內(nèi)傳播的路徑,因此由一組成分固定的數(shù)據(jù)組成。如訂票單由旅客姓名、年齡、單位、身份證號(hào)、日期、目的地等數(shù)據(jù)項(xiàng)組成。由于數(shù)據(jù)流是流動(dòng)中的數(shù)據(jù),所以必須有流向,除了與數(shù)據(jù)存儲(chǔ)之間的數(shù)據(jù)流不用命名外,數(shù)據(jù)流應(yīng)該用名詞或名詞短語(yǔ)命名。
    • 數(shù)據(jù)源或宿(“宿”表示數(shù)據(jù)的終點(diǎn)):代表系統(tǒng)之外的實(shí)體,可以是人、物或其他軟件系統(tǒng)。
    • 對(duì)數(shù)據(jù)的加工(處理):加工是對(duì)數(shù)據(jù)進(jìn)行處理的單元,它接收一定的數(shù)據(jù)輸入,對(duì)其進(jìn)行處理,并產(chǎn)生輸出。
    • 數(shù)據(jù)存儲(chǔ):表示信息的靜態(tài)存儲(chǔ),可以代表文件、文件的一部分、數(shù)據(jù)庫(kù)的元素等。

    2.2 構(gòu)建數(shù)據(jù)流圖的步驟

  • 先確定系統(tǒng)的輸入輸出,構(gòu)建頂層DFD。
  • 對(duì)頂層DFD細(xì)化,構(gòu)建0層DFD。
  • 對(duì)0層DFD的每個(gè)加工進(jìn)行細(xì)化,分別構(gòu)建1層DFD,依次類推,逐層精化,紙質(zhì)構(gòu)建出底層圖。
  • 2.3 注意事項(xiàng)

  • 注意數(shù)據(jù)流圖中每個(gè)元素命名合理。
  • 數(shù)據(jù)流圖需要反映系統(tǒng)“做什么”而不是“如何做”。
  • 每個(gè)加工至少有一個(gè)輸入數(shù)據(jù)流和一個(gè)輸出數(shù)據(jù)流,反映出此加工數(shù)據(jù)的來(lái)源于加工的結(jié)果。
  • 按層給加工編號(hào)。
  • 保持父圖和子圖的平衡
  • 3.數(shù)據(jù)字典有哪些要素(條目)定義?

    • 數(shù)據(jù)流條目:通常列出該數(shù)據(jù)流的各組成數(shù)據(jù)項(xiàng)
    • 數(shù)據(jù)項(xiàng)條目:數(shù)據(jù)流的組成成員是數(shù)據(jù)項(xiàng),數(shù)據(jù)項(xiàng)條目是不可再分解的數(shù)據(jù)單位。
    • 數(shù)據(jù)存儲(chǔ)條目:與數(shù)據(jù)流條目一樣。對(duì)存儲(chǔ)數(shù)據(jù)的定義用數(shù)據(jù)存儲(chǔ)條目。
    • 加工處理?xiàng)l目:通常采用輸入——處理——輸出(IPO,Input-Progress-Output)視圖描述。

    第七章 軟件設(shè)計(jì)

    1.軟件設(shè)計(jì)的目標(biāo)及主要任務(wù)有哪些?

    軟件設(shè)計(jì)的目標(biāo):軟件系統(tǒng)設(shè)計(jì)是把軟件需求“變換”為用于構(gòu)造軟件的藍(lán)圖,“輸入”是需求分析各種模型元素,“輸出”是軟件設(shè)計(jì)模型和表示,軟件設(shè)計(jì)階段的基本目標(biāo)是構(gòu)造系統(tǒng)“怎么做”的模型描述 ,“設(shè)計(jì)先于編碼”,這是軟件工程“推遲實(shí)現(xiàn)”的基本原則。

    主要任務(wù):主要有以下幾類設(shè)計(jì)活動(dòng)

    • 總體設(shè)計(jì):也稱為概要設(shè)計(jì),軟件結(jié)構(gòu)設(shè)計(jì),或高層設(shè)計(jì)。
    • 體系結(jié)構(gòu)設(shè)計(jì):定義軟件模塊(構(gòu)件)及模塊之間的關(guān)系。
    • 接口設(shè)計(jì):包括用戶接口(界面),外部接口,內(nèi)部接口。
    • 數(shù)據(jù)設(shè)計(jì):軟件涉及的數(shù)據(jù)結(jié)構(gòu),文件系統(tǒng)結(jié)構(gòu),數(shù)據(jù)庫(kù)的表結(jié)構(gòu)等。
    • 軟件詳細(xì)設(shè)計(jì):也稱為模塊過(guò)程設(shè)計(jì),或低層設(shè)計(jì)。
    • 模塊內(nèi)部細(xì)節(jié)設(shè)計(jì):包括模塊所需的算法和數(shù)據(jù)結(jié)構(gòu)等。

    2.什么是模塊(構(gòu)件)化設(shè)計(jì)思想

    • 模塊是一個(gè)獨(dú)立命名的,擁有明確定義的輸入、輸出和特性的程序?qū)嶓w。
    • 把一個(gè)大型軟件系統(tǒng)的全部功能,按照一定的原則合理地劃分為若干個(gè)模塊,每個(gè)模塊完成一個(gè)特定的子功能,所有的這些模塊以某種結(jié)構(gòu)形式組成一個(gè)整體,這就是軟件的模塊化設(shè)計(jì)。
    • 軟件模塊化設(shè)計(jì)可以簡(jiǎn)化軟件的設(shè)計(jì)和實(shí)現(xiàn),提高軟件的可理解性和可測(cè)試性,并使軟件更容易得到維護(hù)。
    • 分解、抽象、逐步求精、信息隱蔽和模塊獨(dú)立性,是軟件模塊化設(shè)計(jì)的指導(dǎo)思想。

    3.模塊獨(dú)立性的兩個(gè)度量標(biāo)準(zhǔn)是什么?

  • 模塊自身的內(nèi)聚:也稱為模塊內(nèi)聯(lián)系,指一個(gè)模塊內(nèi)部元素彼此結(jié)合的緊密程度。
  • 模塊之間的耦合:也稱為塊間聯(lián)系。
  • 模塊獨(dú)立性愈高,則塊內(nèi)聯(lián)系越強(qiáng),塊間聯(lián)系越弱,即高內(nèi)聚,低耦合。

    4.內(nèi)聚和耦合的含義是什么?各有哪些種類?請(qǐng)舉例說(shuō)明每一類型。

  • 內(nèi)聚的含義:內(nèi)聚性是從功能的角度對(duì)模塊內(nèi)部聚合能力的量度。高內(nèi)聚是模塊獨(dú)立性追求的目標(biāo)。

  • 內(nèi)聚的種類(從上到下內(nèi)聚性依次減弱):

    1.功能性內(nèi)聚:模塊各個(gè)成分結(jié)合在一起,完成一個(gè)特定的功能,功能性模塊具有內(nèi)聚性最強(qiáng),與其它模塊聯(lián)系少的特點(diǎn)。例如:解析XML文檔模塊(解析XML元素,解析XML屬性,解析XML注釋等)。

    2.順序性內(nèi)聚:模塊內(nèi)的各個(gè)任務(wù)是順序執(zhí)行的。通常,上一個(gè)任務(wù)的輸出是下一個(gè)任務(wù)的輸入。例如:規(guī)則引擎:一個(gè)任務(wù)讀配置,輸出執(zhí)行計(jì)劃,另一個(gè)任務(wù)以執(zhí)行計(jì)劃為輸入,執(zhí)行該計(jì)劃。

    3.通信性內(nèi)聚:模塊內(nèi)部的各個(gè)任務(wù)靠公用數(shù)據(jù)聯(lián)系在一起,即都使用同一個(gè)輸入數(shù)據(jù),或者產(chǎn)生同一個(gè)輸出數(shù)據(jù)。例如:學(xué)生管理系統(tǒng)的數(shù)據(jù)庫(kù)CRUD操作,都對(duì)學(xué)生信息進(jìn)行增刪改查操作。

    4.過(guò)程性內(nèi)聚:模塊內(nèi)個(gè)各個(gè)任務(wù)必須按照某一特定次序執(zhí)行。例如:讀/寫文件操作:判斷文件是否存在,判斷文件是否有相應(yīng)權(quán)限,打開(kāi)文件,讀,寫文件。

    5.時(shí)間性內(nèi)聚:模塊內(nèi)的各個(gè)子任務(wù)由相同的執(zhí)行時(shí)間聯(lián)系在一起。例如:初始化模塊,異常處理模塊,某個(gè)異常處理模塊封裝了“釋放資源”,“記錄日志”,“通知用戶”等幾個(gè)任務(wù)。

    6.邏輯性內(nèi)聚:模塊通常由若干個(gè)邏輯功能相似的任務(wù)組成,通過(guò)模塊外引入的一個(gè)開(kāi)關(guān)量選擇其一執(zhí)行。這種內(nèi)聚增大了模塊間的耦合。例如:一個(gè)輸出設(shè)備模塊將打印機(jī)類和顯示器類封裝到同一個(gè)包里,該包即輸出設(shè)備模塊。打印機(jī)類和顯示器類雖然都具有輸出功能,但是具有不同的職責(zé)。

    7.偶然性內(nèi)聚:模塊內(nèi)的各個(gè)任務(wù)在功能上沒(méi)有實(shí)質(zhì)性聯(lián)系,純屬“偶然”因素組合子塊內(nèi)各個(gè)互不相關(guān)的任務(wù)。例如:一個(gè)處理正方形的模塊有兩個(gè)功能,計(jì)算面積,畫出這個(gè)正方形。

    內(nèi)聚性總結(jié):在軟件設(shè)計(jì)中,應(yīng)力求做到高內(nèi)聚、盡量少用中內(nèi)聚,不用低內(nèi)聚。一般來(lái)說(shuō),在系統(tǒng)較高層次上的模塊功能復(fù)雜,內(nèi)聚要低一些;而較低層次上的模塊內(nèi)聚程度較高,達(dá)到功能內(nèi)聚的可能性比較大。

  • 耦合的含義:耦合性是對(duì)一個(gè)軟件結(jié)構(gòu)內(nèi)不同模塊之間的互連程度的度量。耦合性的強(qiáng)弱取決于模塊間接口的復(fù)雜程度,以及通過(guò)接口的數(shù)據(jù)類型和數(shù)目。弱耦合是模塊獨(dú)立性追求的目標(biāo)。

  • 耦合的種類(從上到下耦合性依次增強(qiáng)):

    1.非直接耦合:同級(jí)模塊相互之間沒(méi)有信息傳遞,即沒(méi)有耦合。非常底層的模塊,自給自足,可以無(wú)耦合。較高層的模塊,通常需要重用其他模塊的功能,產(chǎn)生耦合。

    2.數(shù)據(jù)耦合:調(diào)用下屬模塊時(shí),如果交換的都是簡(jiǎn)單變量,便構(gòu)成數(shù)據(jù)耦合。

    3.特征耦合(數(shù)據(jù)結(jié)構(gòu)耦合):調(diào)用下屬模塊時(shí),如果交換的是數(shù)據(jù)結(jié)構(gòu),便構(gòu)成數(shù)據(jù)特性耦合。由于傳遞的是數(shù)據(jù)結(jié)構(gòu),不僅數(shù)據(jù)量增加,而且會(huì)使模塊的相關(guān)性增加。

    4.控制耦合:模塊間傳遞的信息不是一般的數(shù)據(jù),而是作為控制信息的開(kāi)關(guān)值或標(biāo)志量。

    5.外部耦合:若允許一組模塊訪問(wèn)同一個(gè)全局變量,可稱他們?yōu)橥獠狂詈稀?/p>

    6.公共耦合:若允許一組模塊訪問(wèn)同一個(gè)全局性的數(shù)據(jù)結(jié)構(gòu),則稱他們?yōu)楣柴詈稀H中缘臄?shù)據(jù)結(jié)構(gòu)可以是共享的通信區(qū),公共的內(nèi)存區(qū)域,任何存儲(chǔ)介質(zhì)文件,物理設(shè)備等。

    7.內(nèi)容耦合:若一個(gè)模塊可以直接訪問(wèn)為另一個(gè)模塊中的內(nèi)部數(shù)據(jù),或者一個(gè)模塊直接轉(zhuǎn)到另一個(gè)模塊的內(nèi)部,或者一個(gè)模塊有多個(gè)入口,則稱為內(nèi)容耦合。

    耦合性總結(jié):耦合是影響模塊結(jié)構(gòu)和軟件復(fù)雜程度的一個(gè)重要因素,應(yīng)該遵循如下的設(shè)計(jì)原則:盡量使用數(shù)據(jù)耦合,少用控制耦合,限制公共耦合,完全不用內(nèi)容耦合。

  • 5.為什么要高內(nèi)聚低耦合?高內(nèi)聚低耦合是否意味著內(nèi)聚越高越好,耦合越低越好?

    高內(nèi)聚,低耦合的好處體現(xiàn)在系統(tǒng)持續(xù)發(fā)展的過(guò)程中,高內(nèi)聚,低耦合的系統(tǒng)具有更好的重用性,維護(hù)性,擴(kuò)展性,可以更高效的完成系統(tǒng)的維護(hù)開(kāi)發(fā),持續(xù)的支持業(yè)務(wù)的發(fā)展,而不會(huì)成為業(yè)務(wù)發(fā)展的障礙。

    1.并不是內(nèi)聚越高越好,耦合越低越好,真正好的設(shè)計(jì)是在高內(nèi)聚和低耦合間進(jìn)行平衡,也就是說(shuō)高內(nèi)聚和低耦合是沖突的。

    2.最強(qiáng)的內(nèi)聚莫過(guò)于一個(gè)類只寫一個(gè)函數(shù),這樣內(nèi)聚性絕對(duì)是最高的。但這會(huì)帶來(lái)一個(gè)明顯的問(wèn)題:類的數(shù)量急劇增多,這樣就導(dǎo)致了其它類的耦合特別多,于是整個(gè)設(shè)計(jì)就變成了“高內(nèi)聚高耦合”了。由于高耦合,整個(gè)系統(tǒng)變動(dòng)同樣非常頻繁。

    3.對(duì)于耦合來(lái)說(shuō),最弱的耦合是一個(gè)類將所有的函數(shù)都包含了,這樣類完全不依賴其它類,耦合性是最低的。但這樣會(huì)帶來(lái)一個(gè)明顯的問(wèn)題:內(nèi)聚性很低,于是整個(gè)設(shè)計(jì)就變成了“低耦合低內(nèi)聚”了。由于低內(nèi)聚,整個(gè)類的變動(dòng)同樣非常頻繁。

    4.真正做到高內(nèi)聚、低耦合是很難的,很多時(shí)候未必一定要這樣,更多的時(shí)候“最適合”的才是最好的,不過(guò)、審時(shí)度勢(shì)、融會(huì)貫通、人盡其才、物盡其用,才是設(shè)計(jì)的王道。

    第八章 結(jié)構(gòu)化設(shè)計(jì)

    1. 軟件結(jié)構(gòu)圖的形態(tài)特征有哪些指標(biāo)?各有什么含義?

    深度:指結(jié)構(gòu)圖控制的層次,即模塊的層數(shù)。

    寬度:指一層中最大的模塊個(gè)數(shù)。

    扇出:指一個(gè)模塊直接下屬模塊的個(gè)數(shù)。

    扇入:指一個(gè)模塊直接上屬模塊的個(gè)數(shù)。

    2. 軟件結(jié)構(gòu)有哪些優(yōu)化原則?

  • 模塊獨(dú)立性準(zhǔn)則:劃分模塊時(shí),盡量做到高內(nèi)聚低耦合,保持模塊相對(duì)獨(dú)立性,以此原則優(yōu)化初始的軟件結(jié)構(gòu)。
  • 軟件結(jié)構(gòu)的形態(tài)特征準(zhǔn)則:軟件結(jié)構(gòu)的深度、寬度、扇入數(shù)和扇出數(shù)都要適當(dāng)。
  • 模塊的大小準(zhǔn)則:按模塊的獨(dú)立性,即根據(jù)模塊的功能來(lái)決定模塊的大小,過(guò)大的模塊應(yīng)進(jìn)行分解,過(guò)小的模塊應(yīng)適當(dāng)合并,但不應(yīng)降低模塊的獨(dú)立性。
  • 控制域和作用域之間的準(zhǔn)則:一個(gè)模塊的作用域應(yīng)在其控制范圍之內(nèi),且條件判定所在的模塊應(yīng)與受其影響的模塊在層次上盡量靠近。
  • 模塊的接口準(zhǔn)則:模塊的接口要簡(jiǎn)單、清晰、力求降低模塊接口的復(fù)雜程度,設(shè)計(jì)單入口,單出口的模塊。
  • 3. 數(shù)據(jù)流模型的類型有哪些?各有什么特點(diǎn)?

  • 變換流:整個(gè)數(shù)據(jù)流體現(xiàn)了以輸入、變換、輸出的順序方式,沿一定路徑前行的特征,這就是變換型數(shù)據(jù)流,簡(jiǎn)稱變換流。
  • 事務(wù)流:當(dāng)數(shù)據(jù)經(jīng)過(guò)一個(gè)具有“事務(wù)中心”特征的數(shù)據(jù)處理時(shí),它可以根據(jù)事務(wù)類型從多條路徑的數(shù)據(jù)流中選擇一條活動(dòng)通路,這種根據(jù)條件選擇處理不同事務(wù)的數(shù)據(jù)流,就是事務(wù)型數(shù)據(jù)流。
  • 混合流:將事務(wù)流和變換流組合出現(xiàn),就是混合型數(shù)據(jù)流。
  • 4. 簡(jiǎn)述面向數(shù)據(jù)流的變換以及事務(wù)設(shè)計(jì)方法的步驟。

    變換設(shè)計(jì)方法

  • 確定數(shù)據(jù)流圖中的變換中心,邏輯輸入和邏輯輸出。
  • 設(shè)計(jì)軟件結(jié)構(gòu)的頂層和第一層。
  • 設(shè)計(jì)中、下層模塊。
  • 設(shè)計(jì)的優(yōu)化。
  • 事務(wù)設(shè)計(jì)方法

  • 確定數(shù)據(jù)流圖中事務(wù)中心和加工路徑。
  • 設(shè)計(jì)軟件結(jié)構(gòu)的頂層和第一層——事務(wù)結(jié)構(gòu)。
  • 進(jìn)行事務(wù)結(jié)構(gòu)中、下層模塊的設(shè)計(jì)、優(yōu)化等工作。
  • 5. 結(jié)構(gòu)化詳細(xì)設(shè)計(jì)工具有哪幾種?各有什么特點(diǎn)?

  • 圖形工具:把過(guò)程的細(xì)節(jié)表示成一個(gè)圖的組成部分,在這個(gè)圖上,邏輯構(gòu)造用具體的圖形來(lái)表示。

    流程圖、盒圖、PAD圖

  • 列表工具:用一個(gè)表來(lái)表示過(guò)程的細(xì)節(jié),這個(gè)表列出了各種操作及其相應(yīng)的條件,即描述了輸入、處理和輸出信息。

    判定表、判定樹

  • 語(yǔ)言工具:用偽代碼來(lái)表示過(guò)程的細(xì)節(jié),這種偽代碼很接近于編程語(yǔ)言。

    PDL語(yǔ)言

  • 第十一章 面向?qū)ο笤O(shè)計(jì)

    1. 面向?qū)ο蟮姆治雠c設(shè)計(jì)方法與結(jié)構(gòu)化的分析設(shè)計(jì)方法有什么不同?

  • 結(jié)構(gòu)化方法首先關(guān)心的是功能,強(qiáng)調(diào)以模塊(即過(guò)程)為核心,采用模塊化、自頂向下、逐步求精設(shè)計(jì)過(guò)程,系統(tǒng)是事項(xiàng)模塊功能的函數(shù)和過(guò)程的集合,結(jié)構(gòu)清晰,可讀性好,是條軟件開(kāi)發(fā)質(zhì)量的一種有效手段。結(jié)構(gòu)化設(shè)計(jì)從系統(tǒng)的功能入手,按照工程標(biāo)準(zhǔn)和嚴(yán)格規(guī)范將系統(tǒng)分解為若干功能模塊。然而,由于用戶的需求和軟、硬件技術(shù)的不斷發(fā)展變化,作為系統(tǒng)基本成分的功能模塊很容易受到影響,局部修改甚至?xí)鹣到y(tǒng)的根本性變化。開(kāi)發(fā)過(guò)程前期入手快而后期頻繁改動(dòng)的現(xiàn)象比較常見(jiàn)。
  • 面向?qū)ο蠓椒▌t從所處理的數(shù)據(jù)入手,以數(shù)據(jù)為中心來(lái)描述系統(tǒng),數(shù)據(jù)相對(duì)于功能而言,具有更強(qiáng)的穩(wěn)定性,這樣設(shè)計(jì)出的系統(tǒng)模型往往能較好地映射問(wèn)題域模型。對(duì)象、類、繼承性、多態(tài)性、動(dòng)態(tài)定連概念和設(shè)施的引入使用,顯然另面向?qū)ο蟮脑O(shè)計(jì)方法具有一定的優(yōu)勢(shì),能為生產(chǎn)可重用的軟件構(gòu)建和解決軟件的復(fù)雜性問(wèn)題提供一條有效的途徑。面向?qū)ο蟮脑O(shè)計(jì)過(guò)程就是指通過(guò)建立一些類以及它們之間的關(guān)系來(lái)解決實(shí)際問(wèn)題,這就需要對(duì)問(wèn)題域中的對(duì)象作整體分析,類和類間關(guān)系的設(shè)計(jì)要求較高,否則設(shè)計(jì)出的并不是真正意義上的面向?qū)ο蟮能浖到y(tǒng),而只是一些類的堆砌而已,不能體現(xiàn)出面向?qū)ο笤O(shè)計(jì)方法的優(yōu)勢(shì)之處。
  • 同時(shí),系統(tǒng)的分析設(shè)計(jì)是一個(gè)注重實(shí)踐的領(lǐng)域,不僅僅依賴于一整套核心的概念與原理,要想設(shè)計(jì)出一個(gè)成功的系統(tǒng)來(lái),還需要相應(yīng)的語(yǔ)言、工具和技術(shù)的有力支持。在這方面,經(jīng)過(guò)多年的實(shí)踐和發(fā)展,適應(yīng)結(jié)構(gòu)化方法的技術(shù)和開(kāi)發(fā)環(huán)境已經(jīng)相當(dāng)穩(wěn)定成熟,而面向?qū)ο蠓椒ǘ?#xff0c;雖然近時(shí)期涌現(xiàn)了大量的新工具和新技術(shù),但仍有待于不斷的完善和改進(jìn),特別是面向?qū)ο蟮臄?shù)據(jù)庫(kù)技術(shù)。
  • 2. 面向?qū)ο蟮姆治雠c設(shè)計(jì)之間有什么樣的聯(lián)系?

    面向?qū)ο蠓治龅妮斎胧怯脩舻墓δ苄枨?#xff0c;輸出是簡(jiǎn)單的、理性化的分析模型,此階段的工作更多側(cè)重于如何了理解軟件的功能需求。

    面向?qū)ο笤O(shè)計(jì)的輸入是面向?qū)ο蠓治龅慕Y(jié)果,輸出最終的細(xì)化后的設(shè)計(jì)模型,此階段的工作更多側(cè)重于如何得到一個(gè)合適的、完整的解決方案。

    主要區(qū)別:

  • 在側(cè)重點(diǎn)上,面向?qū)ο蠓治鰝?cè)重于理解問(wèn)題,描述軟件要做什么,而面向?qū)ο笤O(shè)計(jì)側(cè)重于理解解決方案,描述軟件要如何做。
  • 面向?qū)ο蠓治鲆话阒豢紤]架構(gòu)設(shè)計(jì),不關(guān)心技術(shù)和實(shí)現(xiàn)層面的細(xì)節(jié),而面向?qū)ο笤O(shè)計(jì)需要得到更具體、更詳盡、更接近于真實(shí)的代碼的設(shè)計(jì)方案。
  • 在設(shè)計(jì)結(jié)果的描述方式上,面向?qū)ο蠓治鲭A段側(cè)重于描述對(duì)象的行為,而面向?qū)ο笤O(shè)計(jì)側(cè)重于描述對(duì)象的屬性和方法。
  • 面向?qū)ο蠓治鲋魂P(guān)注功能性需求,而面向?qū)ο笤O(shè)計(jì)既關(guān)注功能型需求,也關(guān)注非功能性需求。
  • 面向?qū)ο蠓治霎a(chǎn)生的系統(tǒng)模型通常規(guī)模較小,而面向?qū)ο笤O(shè)計(jì)產(chǎn)生的系統(tǒng)模型規(guī)模較大,內(nèi)容也比較詳盡、完整。
  • 參考書籍:《軟件工程方法與實(shí)踐》 竇萬(wàn)峰

    總結(jié)

    以上是生活随笔為你收集整理的《软件工程》 课后思考题的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

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