軟體工程 筆記(一)

2021-10-22 17:39:24 字數 2771 閱讀 5826

​ 知道計算機開發和維護的工程學科。採用工程的概念、原理、技術和方法來開發和維護軟體,把經過時間考驗而證明正確的管理技術和當前嫩個夠得到的最好的技術方法結合起來,經濟的開發出高質量的軟體並且有效的維護它。

包括了

軟體工程概述

結構化分析、設計與實現

物件導向方法概述和分析

物件導向軟體設計與實現

軟體計畫、組織和控制

軟體維護和軟體文件

形式化方法和軟體重用

計算機軟體開發中的問題。軟體數量急劇增加,硬體或作業系統更新通常導致程式修改。

導致問題:軟體維護耗費資源,甚至導致軟體不可維護

對然間開發成本和進度的估計常常很不準確

使用者對已完成的軟體系統不滿意的現象經常發生

軟體產品的質量往往靠不住

軟體常常是不可維護的

軟體常常沒有適當的文件資料

軟體成本在計算機系統總成本中的比例逐年上公升

軟體開發生產率提高的速度,跟不上硬體的發展速度也跟不上計算機應用迅速普及深入的趨勢

軟體危機產生的原因

軟體本身的特點:

軟體開發和維護:

消除軟體危機的途徑

對軟體有正確清楚的認知

認清什麼是軟體開發

開發使用更好的軟體工具

軟體統一過程

軟體需求:軟體需求表達了為解決某些真實世界的問題而示愛在產品上的要求和約束。

軟體設計:軟體設計是乙個過程和這個過程的結果,此過程對乙個系統或者組建定義架構、組建、介面以及其他的特徵。

軟體構建:軟體構建指的是如何建立產生軟體的詳細步驟。

軟體測試:軟體測試是乙個標識產品的缺陷和問題的活動,目的是為了評估和改進產品的品質。

軟體維護:針對軟體開發中對應的問題進行相應的修改或者演化。

軟體配置管理:是一項跟蹤和控制軟體變更的活動。

軟體工程過程:可以從生命週期過程和元層次來考慮。

軟體工程工具和方法:工具是輔助,方法更高效。

軟體質量:一組內在特徵滿足需求的程度。

軟體生命週期的基本任務:

​ 軟體生命週期由軟體定義、軟體開發、執行維護三個階段。軟體定義週期又分為:問題定義,可行性研究,需求分析。軟體開發時期分為了概要設計、詳細設計、編碼和單元測試、綜合測試。執行維護時期:主要任務使軟體持久的滿足使用者的需要。

收集需求->分析->設計->編碼->測試->維護。

階段間具有順序性和依賴性:如果後階段出問題往往要追溯到前面階段的問題重新開始。

推遲實現的觀點

質量保證的觀點:每個階段都要提交文件,對文件進行分析評分等。

優點

可以強迫開發人員採用規範的方法。

嚴格的規定了每個階段必須提交的文件。

要求每個極端交出的產品都必須經過質量保證小組的仔細檢查。

缺點

正是因為文件驅動的,所以這也造就了它的缺點,可執行的軟體交付給使用者致歉,使用者只能通過文件來了解產品是什麼樣子的。

收集需求->快速原型->構建->移交部署,移交部署後又再收集需求。(軟體產品和使用者的互動比較好)

軟體一旦交付之後,維護就開始了。根據使用者使用過程中的反饋,可能需要返回到收集需求階段。快速原型模型本質是「快速」,所以開發人員應該盡可能快的建造出原型系統,加快軟體的開發過程,節約軟體開發成本。

也叫做漸增模型。使用增量模型開發軟體時,把軟體產品作為一系列的增量構建來設計、編碼、整合和測試。每個構建由多個相互作用的模組構建成,並且能夠完成特定的功能。

步驟為:不斷地 分析-> 設計-> 編碼-> 測試。

對比和區別快速原型模型:快速原型是一次**付給使用者,再多次修改,增量模型則是分批次的交付。

優點

能在較短的時間內向使用者提交可完成一些有用的產品。

逐步增加產品功能可以使使用者有充裕的時間學習和適應新的產品,從而減少乙個全新的軟體可能給使用者組織帶來的衝擊。

缺點

在把每個新的增量構建繼承到現有的軟體體系結構中時,必須破壞原來已經開發的產品。

軟體體系結構必須是開放的,從長遠看的話也擁有真正的課維護性的優勢。

使用原型及其他的方法來盡量減低風險(可以它看作是每個階段都加入了風險分析過程的快速原型模型)

優點:對於可選方案和約束條件的強調有利於已有軟體的重用,也助於把軟體質量作為軟體開發的乙個重要目標;減少了過多的測試(浪費資金)或者測試不足(產品故障多)所帶來的風險;更重要的是,在螺旋模型中維護知識模型的另乙個週期,在維護和開發之間並沒有本質的區別。

缺點:除非軟體開發人員具有豐富的風險評估經驗和這方面的專門的知識,否則將出現真正的風險:當專案實際上正在走向災難時,開發人員可能還認為一切正常。

噴泉體現的是物件導向的軟體開發過程中的迭代和無縫的特性,噴泉模型是典型的物件導向宣告週期模型。

主要包括以下幾個部分:

極限程式設計是敏捷過程中最有名的乙個,其名字中的極限二字含義是指把好的開發實踐運用到極致。目前,極限程式設計已經成為了一種典型的開發方法,廣泛應用於需求模糊且經常改變的場合。

敏捷開發:簡單地來說,敏捷開發並不追求前期完美的設計、完美編碼,而是力求在很短的週期內開發出產品的核心功能,盡早發布出可用的版本。然後在後續的生產週期內,按照新需求不斷迭代公升級,完善產品。

軟體工程筆記

初級階段 建立商業案例並確定專案邊界 生命週期目標里程碑 精華階段 分析問題領域,建立健全的體系結構 生命週期結構里程碑 建立階段 被開發並整合成產品,所有功能都被詳細測試 初始化功能里程碑 移交階段 基於使用者反饋做少量的調整 產品發布里程碑 每四個階段就產生乙個中間版本,中間版本再次經歷這四個階...

軟體工程筆記

1模型 瀑布模型 需求分析,規格說明,設計,編碼,綜合測試,維護 規範方法,嚴格規定每個階段提交的文件,要求每個階段必須經過驗證!相鄰環節會有檢驗 快速原型模型 帶反饋環,基本上是線性順序進行 沒有檢驗環節,一開始就是快速原型 增量模型 需求分析,規格說明,概要設計,針對每個構件,完成詳細設計,編碼...

軟體工程筆記

a abc 時 python直譯器幹了兩件事情 1.在記憶體中建立來了乙個 abc 的字串 2.在記憶體中建立乙個名為a的變數,並把它指向 abc 也可以把乙個變數a賦值給另乙個變數b,這個操作實際上是吧變數b指向變數a所指向的資料,例如下面的 我們一行一行的執行 就可以看到發生什麼事 執行a ab...