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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

软件工程期末复盘

發布時間:2023/12/10 编程问答 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 软件工程期末复盘 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

文章目錄

  • ch.1 軟件工程概述
  • ch.2 軟件過程
    • 2.1 軟件生命周期
    • 2.2 軟件過程
      • 2.2.1 軟件過程模型
        • 傳統
        • 現代
  • ch.3 可行性分析
  • ch.4 需求工程
    • 需求分析的模型概述
    • 功能模型:數據流圖
  • ch5.面向過程(結構化)的軟件設計
    • 軟件設計的基本原則:
    • 數據流圖映射到軟件結構圖
    • 詳細設計
  • ch.6 面向對象方法基礎:介紹和UML
    • UML建模工具
      • 事務:
      • 關系:
    • 用例圖 Use Case Diagram
  • ch.7 面向對象分析
    • 第一步:用例建模
    • 第二步:對象建模
      • 第三步:動態建模
      • 第四步:評審
  • ch.8 軟件體系結構與設計模式
  • ch.9 用戶界面設計與軟件實現
  • ch.10 軟件測試與維護
  • ch.11 敏捷開發

ch.1 軟件工程概述

  • 軟件=程序+數據+文檔
  • 軟件危機:在計算機軟件的開發和維護過程中所遇到的一系列嚴重問題。
  • 軟件工程是 ① 將系統性的、規范化的、可定量的方法應用于軟件的開發、運行和維護,即工程化應用到軟件上;② 對①中所述方法的研究。------IEEE【IEE93】
  • 軟件工程的目標:
  • 軟件工程的基本要素:方法、過程、工具 (前三個成為軟工的三個方面)、范型(構造軟件的特定方法或風格,比如面向服務、面向對象、面向過程等等)
  • 軟件工程的過程:問題定義——需求開發——軟件設計——軟件實現——軟件測試
  • ch.2 軟件過程

    是什么?
    為了獲得高質量軟件所需要完成的一系列任務的框架,它規定了完成各項任務的工作步驟。描述了 who、when、what、how,用以實現某一個特定的具體目標。

    2.1 軟件生命周期

    2.1.1 是什么?從考慮概念開始,到交付使用,到最終退役為止的整個過程。
    2.1.2 各時期的任務:
    (1)軟件定義時期的任務:確定必須完成的總目標;確定工程的可行性;確定完成目標的總策略和必須完成的功能; 估計資源、成本;制定工程進度表。 (分為 3 個階段:問題定義,可行性研究,需求分析);
    (2)軟件開發時期的任務:把用戶的要求轉變為軟件產品。包括:把需求轉換成設計,把設計用代碼實現,測試該 代碼,有時還要進行代碼安裝和交付運行。這些活動可以重疊,執行時也可迭代 (分為 4 個階段:系統設計{總體設計(概要設計),詳細設計},系統實現{編碼和單元測試,綜合測試)};
    (3)運行維護時期的任務:使軟件持久地滿足用戶的需要;


    2.2 軟件過程

    2.2.1 軟件過程模型

    傳統

  • 瀑布模型:理想的線性開發模式,缺乏靈活性

    在軟件開發初期就確定完整的需求很難。

  • 原型模型:做一個“樣機”(也叫原型,軟件早期可運行的版本)給客戶看,征求意見

    用戶參與,風險降低;大型項目的原型難構建。

  • 增量模型:每開發一部分,向用戶展示一部分

    開發周期小,降低風險;

  • 螺旋模型:使用原型及其他方法來盡量降低風險 可看作是在每個階段之前都增加了風險分析過程的快 速原型模型。 強調版本和版本升級。

    適用范圍:主要適用于內部開發的大規模軟件項目。支持 需求不明確的大型軟件系統的開發,并支持面 向規格說明、面向過程、面向對象等多種軟件 開發方法,是一種具有廣闊前景的模型。

  • 噴泉模型:各個開發階段沒有特定的次序要求,并且可以交互進 行,可以在某個開發階段中隨時補充其他任何開發階 段中的遺漏。該模型認為軟件開發過程自下而上周期的各階段是相 互重疊和多次反復的,就像水噴上去又可以落下來, 類似一個噴泉。

    效率高,節約時間;不易于管理。

  • 現代

  • 基于構件:考慮的重點的集成,而非實現構件
  • 統一過程(統一過程 Rational Unified Process,RUP)模型:使用同一建模語言UML( Unified Modeling Language)
  • 敏捷開發
  • ch.3 可行性分析

  • 可行性研究的目的:用最小的代價在盡可能短的時間內研究并確定客戶提出的問題是否有行得通的解決辦法
  • 可行性分析是系統分析師的工作。
  • 可行性研究從以下四個方面進行:
  • ? 技術可行性:做得了嗎?做得好嗎?做得快嗎?
    ? 經濟可行性:這個系統的經濟效益能超過它的開發成本嗎?
    ? 操作可行性:系統的操作方式在這個用戶組織內行得通嗎?
    ? 社會可行性:法律、道德、社會影響力

    ch.4 需求工程

  • 軟件工程的子領域

  • 需求工程的定義:應用已證實有效的技術、方法進行需求分析,確定客戶需求,幫助分析人員理解問題并定義目標系統的所有外部特征的一門學科。

  • 任務:最終形成一份經開發方和用戶認可或達成共識的軟件需求規格說明書

  • 內容

  • 需求分析的模型概述

  • 數據模型:ER圖

  • 功能模型:數據流圖



  • 分層數據流圖:
    step1 頂層圖:系統的輸入和輸出
    step2 0層圖:系統內部
    step3 加工內部

    例子:考試管理系統
    頂層圖

    0層圖:

    加工1(考試報名):

    加工2(統計成績):

    數據字典
    由不同的數據條目組成,而數據條目是對數據流圖中的不同組成元素(源和宿、數據流、加工、文件)的說明

  • 行為模型:狀態轉換圖(STD)

  • ch5.面向過程(結構化)的軟件設計

  • 軟件設計的基本目的是解決 系統應該如何實現 這個問題
  • 結構化開發方法:系統按功能要求分為若干子功能模塊,子模塊又進一步分解為若干個子子模塊,循此進行,從上往下進行功能分解。分解的結果將逐層地產生一系列的功能模塊,隨著分解的層次由高到低的發展,模塊功能是逐層地由抽象變得具休,由綜合變得單一。
  • 過程:結構化分析的結果——>概要設計——>詳細設計——>設計復審——>軟件設計文檔,需求分析模型——>設計模型
  • 軟件分析的目標: 系統分析——做什么?——邏輯模型, 系統設計——怎么做?——物理模型
  • 結構化軟件設計的任務: 體系結構設計(定義軟件模塊間的關系),接口設計,數據設計,過程設計,前兩個稱為概要設計,后兩個稱為詳細設計
  • 概要設計:主要任務是將數據流圖映射為軟件系統結構圖
  • 詳細設計:對概要設計的每一個模塊進行數據設計和過程設計
  • 軟件設計的基本原則:

  • 模塊化
    (1)概念:解決一個復雜問題時,自頂向下逐層把軟件劃分成若干模塊的過程
    (2)目標:模塊獨立性
    (3)衡量模塊獨立性的兩個準則:
    內聚: 模塊內部各成分之間的聯系,也稱塊內聯系或模塊強度
    耦合: 一個模塊與其它模塊之間的聯系,也稱為塊間聯系
    🔥內聚性最高的是功能內聚非直接耦合的模塊獨立性最強!
    (4)模塊的獨立性高:塊內聯系強,塊間聯系弱,追求高內聚,低耦合
    (5)好處:每一模塊的設計、測試和維護相對獨立。模塊間的聯系少,錯誤的傳播也少。耦合增加了系統的可理解性、可測試性、可靠性和可維護性。
  • 抽象
    忽略細節,分層理解問題,自頂向下層層細化,包括對過程、數據和控制的抽象。
  • 逐步求精
    求精實際是一個詳細描述的過程。
  • 信息隱蔽
    在設計和確定模塊時,使得一個模塊內包含的信息(過程和數據)對于不需要這些信息的模塊來說,是不可訪問的。
  • 數據流圖映射到軟件結構圖

  • 結構化設計方法把數據流圖映射為軟件結構圖,數據流的類型決定了映射的方法.數據流有兩種類型:變換型,事務型.
  • 變換性:由輸入、變換中心、輸出組成。
  • 事務型:數據沿輸入通路到達一個處理 T,這個處理根據輸入數據的類型在若干個動作序列中選出一個來執行。處 理 T 稱為事務中心,它完成以下任務:
    (1) 接收輸入數據(輸入數據又稱為事務)。
    (2) 分析每個事務以確定它的類型。
    (3) 根據事務類型選取一條動作路徑。

  • 模塊分解的啟發式規則
    4. 模塊大小適當:經驗表明,一個模塊的規模不應過大,通常規定其語句行數為50~100 行,最多不超過500 行。
    5. 深度、寬度、扇入、扇出適當

    6. 盡可能減少高扇出結構,隨著深度增大扇入。如果一個模塊的扇出數過大,就意味著該模塊過分復雜,需要協調和控制過多的下屬模塊。應當適當增加中間層次的控制模塊。
    7. 模塊的作用域應在控制域之內
    (1)模塊的作用域:受該模塊內一個判定影響的所有模塊的集合。
    (2)模塊的控制域:這個模塊本身以及所有直接或間接從屬于它的模塊的集合。

    詳細設計

  • 詳細設計就要對軟件結構中的每一個模塊確定使用的算法或塊內數據結構,并用某種選定的表達工具給出清晰的描述。
  • 詳細設計的表達工具
    ?程序流程圖
    ?盒圖
    ? PAD 圖
    ? PDL
    ? IPO 圖
  • ch.6 面向對象方法基礎:介紹和UML

  • 面向對象=對象 + 類 + 消息 + 繼承 + 多態

  • 比較面向對象對象開發方法與結構化開發方法(面向過程)的異同:
    面向過程:“怎樣做”,著重功能分解,面向對象:“是什么”,著重建立對象模型。面向過程側重線,面向對象側重點。面向過程優點是簡單、實用,適合于數據處理領域,缺點是不適應大型規模、復雜的項目,難以解決軟件重用,難以適應需求變化,難以解決維護問題。面向對象方法更容易獲得符合用戶需求、可靠的、適應性強的系統。

  • 三大特性是:封裝,繼承,多態

  • 五大基本原則

  • 單一職責原則SRP(Single Responsibility Principle)
    是指一個類的功能要單一,不能包羅萬象。如同一個人一樣,分配的工作不能太多,否則一天到晚雖然忙忙碌碌的,但效率卻高不起來。
  • 開放封閉原則OCP(Open-Close Principle)
    一個模塊在擴展性方面應該是開放的而在更改性方面應該是封閉的。比如:一個網絡模塊,原來只服務端功能,而現在要加入客戶端功能,
    那么應當在不用修改服務端功能代碼的前提下,就能夠增加客戶端功能的實現代碼,這要求在設計之初,就應當將服務端和客戶端分開,公共部分抽象出來。
  • 替換原則(the Liskov Substitution Principle LSP)
    子類應當可以替換父類并出現在父類能夠出現的任何地方。比如:公司搞年度晚會,所有員工可以參加抽獎,那么不管是老員工還是新員工,
    也不管是總部員工還是外派員工,都應當可以參加抽獎,否則這公司就不和諧了。
  • 依賴原則(the Dependency Inversion Principle DIP) 具體依賴抽象,上層依賴下層。假設B是較A低的模塊,但B需要使用到A的功能,
    這個時候,B不應當直接使用A中的具體類: 而應當由B定義一抽象接口,并由A來實現這個抽象接口,B只使用這個抽象接口:這樣就達到
    了依賴倒置的目的,B也解除了對A的依賴,反過來是A依賴于B定義的抽象接口。通過上層模塊難以避免依賴下層模塊,假如B也直接依賴A的實現,那么就可能造成循環依賴。一個常見的問題就是編譯A模塊時需要直接包含到B模塊的cpp文件,而編譯B時同樣要直接包含到A的cpp文件。
  • 接口分離原則(the Interface Segregation Principle ISP)
    模塊間要通過抽象接口隔離開,而不是通過具體的類強耦合起來
  • UML建模工具

    Unified Modeling Language(統一建模語言)是對象管理組織(OMG)制定的一個通用的、可視化的建模語言標準,可以用來可視化(visualize) 、描述(specify)、構造(construct)和文檔化(document)軟件密集型系統的各種工件(artifacts,又譯制品)。

    事務:

  • 結構事物:類,接口,協作,用例,活動類,組件,節點
  • 行為事物:交互,狀態機
  • 分組事務:包
  • 注釋事務:注釋
  • 關系:

  • 關聯:關聯兩端的類可以某種角色參與關聯,關聯有二元關聯(binary)、三元關聯
    (ternary)、多元關聯(higher order)。
    關聯類(不重要):OO建模的一個普遍問題是,當類之間具有多對多關系時,一些屬性不能容易地放人任何一個類中。例如,下圖所示的公司與員工的類關系。
  • 依賴

    在UML2.0中的依賴種類如下:Access(訪問), bind(綁定 ) , call( 調 用 ) , create( 創 建 ) , derive( 派 生 ) ,instantiate( 實例化 ) , permit( 允 許 ) , realize( 實 現 ) ,refine(精化),send(發送),substitute(替換),trace(追蹤依賴),use(使用)。
  • 聚合和組合
    聚合(Aggregation)是一種特殊形式的關聯,它表示類之間的整體與部分的關系,組合(Composition)是一種特殊形式的聚集,組合關系中的整體與部分具有同樣的生存期。
  • 泛化:泛化指出類間的“一般——特殊關系”

  • 5. 實現


  • 用例圖 Use Case Diagram

  • (1)是什么?說明和定義軟件系統的功能需求,從系統外部觀看系統功能,并不描述系統內部對功能的具體實現,展現一組用例、參與者及其它們之間的關系。

    (2)用例之間的關系:

    泛化:一個用例描述的執行場景是另一個用例描述的執行場景的特例;

    包含:一個用例描述的執行場景是另一個用例所描述的場景中的一步;

    擴展:一個用例描述的執行是對另一用例所描述的執行場景的擴展;
    用例之間的包含關系:一個用例是對另一個用例描述的活動序列的某個活動
    的細化

  • 類圖
    展示系統中的類、類的屬性和操作、以及類與類之間的關系(關聯、依賴、聚合等)

    類圖怎么畫?名稱、屬性、操作
    類圖的可視性標記:“+”:公共,可以被外部對象訪問。“#”:保護,可以被本類或子類的對象訪問。“-”:私用:不可以被外部對象訪問,只能為本類的對象使用
    派生:另一種可以為屬性提供的信息是派生值,它可以使用數學函數、字符串函數或者將要在應用程序中實現的其他商務邏輯。 要想指出一個屬性是派生的,需要在屬性名之前添加一個前斜線(/), 并且要附加一個注釋,其中包含了派生屬性值的指令。

  • 序列圖:

  • ch.7 面向對象分析

  • 是什么?找出并規定該問題域中根據系統各項要求而行動并相互作用的對象,并依據這些對象及其關系建立問題域模型。

  • 步驟:

  • 第一步:用例建模

    建立軟件系統的用例模型,用例圖+用例描述
    用例圖:(用例圖詳細內容看ch.6)

    用例描述:

    第二步:對象建模

  • 理解用例描述

  • 識別類和類的屬性(怎么識別?分析類)
    三種分析類
    👌邊界類:描述與參與者直接打交道的對象,一般是一些UI界面
    👌控制類:描述系統的行為,即系統做什么
    👌實體類:描述系統的中的數據信息(有些數據是實體類,而有些是實體類的屬性)

  • 識別類的操作(怎么識別?為用例建立順序圖)

  • 確定類與類之間的關系

  • 評審
    建立軟件系統的靜態結構模型,類圖

  • 第三步:動態建模

    描述系統的行為

    第四步:評審

    面向對象建模考試不會考,暫時停滯在這里,以后有機會的話再來補充。

    ch.8 軟件體系結構與設計模式

    不考,不總結了
    上課pdf

    🔥
    設計模式是一套被人反復使用、多數人知曉、經過分類編目的、代碼設計經驗的總結,描述了軟件系統設計過程中常見問題的一些解決方案,通常是從大量的成功實踐中總結出來的且被廣泛公認的實踐和知識,描述了一個在我們周圍不斷重復發生的問題,以及該問題的解決方案
    使用設計模式,我們就能一次一次地利用已有方案而不必做重復勞動
    更重要的是可以使我們更加深刻地理解面向對象的設計思想,非常有利于我們更好地使用面向對象語言解決設計中的問題。

    ch.9 用戶界面設計與軟件實現

    本節所處的地位:

    不考,不總結了
    上課pdf

    ch.10 軟件測試與維護

  • 測試技術:關注于如何測試,即采用什么方法測試軟件;測試策略:關注于如何組織測試,即采用了某一個技術之后,應該采取了什么樣的過程來測試
  • 測試技術:
    從是否關心軟件內部結構和具體實現的角度:
    黑盒測試、白盒測試
    從是否執行程序的角度:
    靜態測試、動態測試
  • 黑盒測試: 完全不考慮程序的內部結構和處理過程,只知道軟件產品應該具有的功能,通過測試檢驗每個功能是否都能正常使用。又稱為功能性測試或行為測試。
  • 白盒測試: 有時稱為透明盒測試,已知產品內部工作過程,通過測試檢驗產品內部動作是否按照產品規格說明的規定正常進行。
  • 靜態測試:是指不運行被測程序本身,僅通過分析或檢查源程序的語法、結構、過程、接口等來檢查程序的正確性。
  • 動態測試:是指通過運行被測程序,檢查運行結果與預期結果的差異,并分析運行效率和健壯性等性能。
  • 什么是維護
    在軟件交付使用后對其進行的修改,以糾正故障,改善性能,使產品適應改變了的環境。
    目的:就是保證軟件系統能持續地與用戶環境、數據處理操作相協調,最終使系統穩定運行。
  • 軟件維護的分類:糾錯性維護、適應性維護、完善性維護、預防性維護
  • 面向對象的集成測試重點在于發現不同類之間的協作錯誤。
  • 確認測試目的:驗證軟件的有效性,即驗證軟件的功能和性能及其他特性是否符合用戶要求。
  • 系統測試:測試軟件系統是否能與硬件協調工作,測試與其他軟件協調運行的情況。
  • 單元測試:單元測試也稱模塊測試,是針對軟件設計的最小單元程序模塊進行測試的工作。其目的是發現模塊內部的軟件缺陷,修改這些缺陷使其代碼能夠正確運行。
  • 代碼覆蓋技術
    (1)是什么?屬于動態白盒的測試內容。測試程序的狀態以及程序流程,設法進入和退出每一個模塊,執行每一行的代碼,進入軟件的每一條邏輯和決策分支。
    (2)包括:語句覆蓋,分支覆蓋,條件覆蓋
    (3)滿足分支覆蓋一定滿足語句覆蓋。
  • ch.11 敏捷開發

    不考,不總結了
    上課pdf

    總結

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

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。