軟體工程學習筆記一

2022-02-10 07:04:42 字數 3094 閱讀 3405

軟體工程學習筆記一

我很小的時候就有夢想,想要當乙個極為優秀的程式設計師,因為覺得程式設計師非常的酷、非常帥,能操縱虛擬的世界,執行如此完美的邏輯,並造福他人,是一種高尚有趣的職業。現在這種嚮往,並沒有因為外界的許多因素而改變。

最近開始學習軟體工程,其實較早的時候就自學過,有許多知識都忘了,現在再正式來學,感覺還是做一些筆記比較好,軟體工程學是對軟體設計反思的結晶,要設計好的軟體,一定要吃透。現在拿出來分享,主要是記錄和筆記形式,並不一定非常的全面,請見諒,僅丟擲一些磚頭。

軟體的生命週期:

1、問題的定義:問題定義階段要回答的關鍵問題是:「要解決的問題是什麼?」儘管確切的定義問題的必要性是非常明顯的,但是在實踐中它卻是常常被忽略的。通過對客戶的訪問調查,系統分析員扼要的寫出關於問題的性質、工程目標和工程規模的書面報告,經過討論和必要的修改之後這份報告應該得到客戶的確認。

2、可行性研究:這個階段要回答的關鍵問題是:「對於上乙個階段所確定的問題有行得通的解決辦法嗎?」可行性研究應該比較簡短,這個階段的任務不是具體解決問題,而是研究問題的範圍,探索這個問題是否值得去解,是否有可行的解決辦法。

可行性研究的結果是客戶做出是否繼續進行這項工程的決定的重要依據。

3、需求分析:這個階段的任務仍然不是具體的解決問題,而是準確的確定「為了解決這個問題,目標系統必須做什麼?」主要是確定目標系統必須具備哪些功能。

在需求分析階段確定的系統邏輯模型是以後設計和實現目標系統的基礎,因此必須準確完整地體現使用者的需求。這個階段的一項重要任務,是用正式文件準確的記錄對目標系統的需求,這份文件通常稱為規格說明書。

4、總體設計:這個階段必須回答的關鍵問題是:「概括的說,應該怎樣實現目標系統?」總體設計又稱概要設計。

首先,應該設計出實現目標系統的幾種可能的方案,通常至少應該設計出低成本、中成本和高成本3

種方案。軟體工程師應該用適合的表達工具描述各種方案,分析每種方案的優缺點,並在充分權衡各方面利弊的基礎上,推薦乙個最佳方案,如果使用者接受所推薦的方案,則應該進一步完成接下來的任務。

軟體設計的一條基本原理就是,程式應該模組化,也就是說,乙個程式應該由若干個規模適中的模組按照合理的層次結構組織而成。因此,總體設計的另一項主要任務就是設計程式的體系結構,也就是確定程式由哪些模組組成以及模組間的關係。

5、詳細設計:詳細設計的任務就是把解法具體化,也就是回答了下面的關鍵問題:「應該怎樣具體地實現這個系統呢?」這個階段還不是編寫程式,而是設計出程式的詳細規格說明,這種規格說明的作用很萊斯與其他工程領域中工程師的工程藍圖,它們應當包含具體的細節,程式設計師可以根據它們寫出實際的程式**。

6、編碼和單元測試:這個階段的關鍵任務是寫出容易理解、容易維護的程式模組。並且仔細測試編寫的每乙個模組。

7、綜合測試:這個階段的關鍵任務是通過各種型別的測試(及相應的除錯)使軟體達到預定的要求。

最基本的測試是整合測試和驗收測試。整合測試是根據設計的軟體結構,把經過單元測試的檢驗的模組按某種選定的策略裝配起來,在裝配過程中對程式進行必要的測試。所謂驗收測試則是按照規格說明書的規定(通常在需求分析階段確定),由使用者(或在使用者積極參與下)對目標系統進行驗收。

必要時,還可以再通過現場測試或平行執行等方法對目標系統進一步測試檢驗。

應當用正式的文件資料把測試計畫、詳細測試方案以及實際測試結果儲存下來,作為軟體配置的乙個組成部分。

8、軟體維護:維護階段的關鍵任務是,通過各種必要的維護活動使系統持久地滿足使用者的需求。

通常有4

類維護活動:

1、改正性維護,也就是診斷和改正在使用過程中發現的軟體錯誤

2、完善性維護,即根據使用者的要求改進或擴充軟體使它更完善

3、預防性維護,即修改軟體,為將來的維護活動預先做準備

4、適應性維護,即修改軟體以適應環境的變化。

實際上每一項維護活動都應該經過提出維護要求(或報告問題),分析維護要求,提出維護方案,審批維護方案,確定維護計畫,修改軟體設計,修改程式,測試程式,複查驗收等一系列步驟,因此實質上是經歷了一次壓縮和簡化了的軟體定義和開發的全過程。

每一項維護活動都應該準確的記錄下來,作為正式的文件資料加以儲存。

在實際從事軟體開發工作時,軟體規模、種類、開發環境及開發時使用的技術方法等因素,都影響階段的劃分。事實上,承擔的軟體專案不同,應該完成的任務也有差異,沒有乙個適用於所有軟體專案的任務集合。

畫資料流圖的一般步驟:

1、確定資料來源點和終點

2、確定系統的輸入輸出資料流

3、保證輸入流、輸出流一致前提下,由頂向下進行逐層分解(一般不超過9

層)4、將必要的儲存與加工(處理)相匹配

5、畫出錯誤及例外條件處理情況

6、避免線條的交叉(必要時使用重複的外部項(源點、終點)或資料儲存符號)

資料流圖的基本目的是利用它來作為交流資訊的工具。絕大多數的使用者都可以理解和評價它。資料流圖的另乙個主要用途是作為分析和設計的工具。

資料流圖上畫出的許多自動化邊界,每組自動化邊界可能意味著乙個不同的物理系統,因此可以根據系統的邏輯模型考慮系統的物理實現。

資料字典:是關於資料的資訊的集合。對資料流圖中包含的所有元素的定義的集合。

資料字典的內容一般分類為4類:1

、資料流

2、資料流分量

3、資料儲存

4、處理

資料字典最重要的用途是作為分析階段的工具,消除分析員與使用者之間可能產生的誤解。

需求分析:對目標系統提出完整、準確、清晰、具體的要求。

在需求分析階段結束之前,系統分析員應該寫出軟體需求規格說明書,以書面形式準確的描述軟體需求。

這裡指出需求分析容易犯的錯誤:

個人觀點,在功能需求分析階段,一般易於漏掉安全需求的分析,所以建議將需求分析分為:一般功能、安全功能,一般功能又分為:常規功能、擴充套件功能(可能新增的一些功能)。

例如我們考慮對於銀行訪問款機的功能需求分析:

一般功能:身份驗證、語音提示功能、發布公告(廣告)、修改密碼、轉賬功能、存款功能、取款功能、紙幣驗證(存款必須)、查詢餘額和賬戶資訊、列印憑票

擴充套件功能:繳納水電費、**費充值等

安全功能:密碼輸入錯誤限制(例如三次吞卡)、使用者操作日誌、攝像頭監視(取款機內部攝像頭)、吞卡功能、鎖死賬戶功能、系統執行及故障報告。

這是一些簡單的記錄,認為以上資訊相對比較重要。

軟體工程學習筆記一

軟體工程學習筆記一 我很小的時候就有夢想,想要當乙個極為優秀的程式設計師,因為覺得程式設計師非常的酷 非常帥,能操縱虛擬的世界,執行如此完美的邏輯,並造福他人,是一種高尚有趣的職業。現在這種嚮往,並沒有因為外界的許多因素而改變。最近開始學習軟體工程,其實較早的時候就自學過,有許多知識都忘了,現在再正...

軟體工程學習筆記

1 軟體工程的基本概念 軟體的概念 軟體 程式 文件 軟體是能夠完成預定義功能的可執行的電腦程式和使程式正常執行所需要的資料,加讓描述程式的操作和文件。程式 適合計算機處理的語句序列 它的目的是啥呢?是為了解決某個特殊的問題 文件 開發活動的記錄 用於通訊和交流,開發過程的管理和執行階段的維護 軟體...

《軟體工程》學習筆記2

1.軟體工程的概念 1.背景 為了克服軟體危機,1968年10月在北大西洋公約組織 nato 召開的電腦科學會議上,fritz bauer首次提出 軟體工程 的概念,試圖將工程化方法應用於軟體開發。2.定義 軟體工程是指導計算機軟體開發和維護 的工程學科。採用工程的概念 原理 技術和方法來開發與維護...