軟體工程學的存在價值:促進軟體專案成功。軟體的概念:
軟體(software):軟體是計算機系統中與硬體相互依存的另一部分。它包括程式、資料及其相關文件的完整集合。
(1)能夠完成預定功能和效能的可執行指令(program)
(2)使得程式能夠適當地操作資訊的資料結構(data)
(3)描述程式的操作和使用的文件(document)
軟體危機:
軟體危機定義:軟體在開發和維護過程中遇到的一系列嚴重問題。
軟體危機包含兩層含義:
如何開發軟體。
如何維護數量不斷膨脹的已有軟體。
軟體工程(software engineering):
是研究和應用功能如何以系統化的、規範的、可度量的方法去開發、執行和維護軟體,即把工程化應用到軟體上。
軟體生存週期:
是指軟體產品從考慮其概念開始到該軟體產品交付使用,直至最終退役為止的整個過程。一般包括計畫、分析、設計、實現、測試、整合、交付、維護等階段。
計畫階段
確定待開發系統的總體目標和範圍。
研究系統的可行性和可能的解決方案,對資源、成本及進度進行合理的估算。
分析階段
分析、整理和提煉所收集到的使用者需求,建立完整的分析模型,將其編寫成軟體需求規格說明和初步的使用者手冊。
設計階段(總體設計和詳細設計)
設計階段的目標是決定軟體怎麼做。
軟體設計主要集中於軟體體系結構、資料結構、使用者介面和演算法等方面。
實現階段(編碼)
實現階段是將所設計的各個模組編寫成計算機可接受的程式**。
測試階段
設計測試用例,對軟體進行測試,發現錯誤,進行改正。
執行和維護階段
應當在軟體的設計和實現階段充分考慮軟體的可維護性。
維護階段需要測試是否正確實現了所要求的修改,並保證在產品的修改過程中,沒有做其他無關的改動。
維護常常是軟體生命週期中最具挑戰性的乙個階段,其費用是相當昂貴的。
軟體工程三要素:工具、方法、開發過程
瀑布模型:
問題定義、可行性研究、需求分析、概要設計、詳細設計、編碼、測試、執行與維護。
特點:1.自上而下、相互銜接的固定次序,如同瀑布流水,逐級下落。
2.上一階段的變換結果是下一階段變換的輸入,相鄰兩個階段具有因果關係。
問題:1.各個階段的劃分完全固定,階段之間產生大量的文件,極大地增加了工作量。
2.開發模型是線性的,使用者只有等到整個過程的末期才能見到開發成果,增加了風險。
3.早期的錯誤可能要等到開發後期的測試階段才能發現,進而帶來嚴重的後果。
rup統一軟體過程(rational unified process)
rup的中心思想是:用例驅動、架構為中心、迭代和增量。
scrum敏捷過程:找到軟體專案的「老大」.
得到「老大」對專案的期望(願景);
描述出願景的度量指標。
業務建模的意義和注意事項
明確為誰服務–找準客戶及其願景,切記不是在為自己做系統。
要改進的組織是什麼現狀–有什麼痛處和不足。
如何改進–新系統的價值就是解決客戶痛楚、改良客戶不足,這才是客戶願意掏腰包的動力。
在業務建模和需求分析階段,忘掉自己是技術專家的身份。
業務建模的步驟
業務建模是從組織的角度來定位系統應該提供的價值。
1 . 明確我們為誰服務(選定願景要改進的組織)。
2 .要改進的組織是什麼現狀(業務用例圖、現狀業務序列圖)。
從外部看:組織是價值的集合,用業務用例圖來建模。
從內部看:組織是系統的集合(人是一種智慧型系統),用業務序列圖來建模。
5. 我們如何改進(改進業務序列圖)。
業務用例圖
組成:業務執行者、業務組織、業務用例
業務執行者:在組織之外和組織互動的人群或組織。
業務用例:組織為業務執行者提供的價值。
業務序列圖:業務序列圖詳細描述業務執行者、業務工人、業務實體之間如何互動、以完成某個業務用例的實現流程。
業務工人:位於組織內部,負責業務流程中某些工作的人員。例如銀行工作人員,醫院醫生。
業務實體:在業務用例的實現流程中,業務工人所使用的「系統」。例如銀行的取款機、點鈔機、學校的校園卡系統。
業務序列圖的作用:
1.識別業務物件:業務執行者、業務工人、業務實體;
2.確定業務物件間的職責、協作及互動順序;
3.通過序列圖來了解現狀,為業務的優化提供依據。
如何採用改進業務序列圖來改進現有業務流程?
1 . 將「新系統」作為乙個業務實體進行整體設計;
2 . 將「新系統」引入組織現有業務流程;
3 . 檢視可以改進的流程;
4 . 評估改進結果;
域建模:
為專案建立乙個屬於表。確保專案中的每個人都能以清晰一致的術語來理解和交流問題領域。
域建模比普通的專案術語表優良的地方體現在:以圖的方式清晰地顯示出不同術語間的關係(減少理解偏差).
描述業務中涉及到的實體及其相互之間的關係,是幫助系統分析人員、使用者認識現實業務的工具。
域模型圖將通過不斷修正完善逐步演化為最終的靜態類圖。
域建模的步驟:
仔細閱讀需求文件,提取出名詞和名詞短語。
排除列表中重複、相似的術語
排除超出系統範圍的術語
畫出第一版域模型圖
整理第一版域模型
域模型之間的關係:
泛化:一般元素和特殊元素的關係。
關聯:兩個類之間存在著某種語義上的聯絡。
系統用例建模的意義:
系統用例建模步驟:
6. 繪製系統用例圖
7. 編寫系統用例描述
8. 更新域模型
用例之間的關係:
軟體產品的典型非功能性需求:
健壯性分析中的三種元素:
健壯性分析中三種元素的互動規則:
執行者只可以和邊界物件通話;
邊界物件和控制器可以互相通話;
控制器可以和另乙個控制器通話;
控制器和實體物件可以互相通話;
關鍵設計主要意義:
就是要通過尋找物件之間的互動關係,進而進行方法(操作或行為)分配。
敏捷軟體開發模式:
理念(敏捷核心思想)
優秀實踐(敏捷的經驗積累)
具體應用(能夠結合自身靈活應用才是真正敏捷)
使用者故事:
使用者故事是乙個用來確認使用者和使用者需求的簡短描述。包含三個要素:角色、功能、價值
例:作為乙個***客用,我需要***功能,能夠帶來***好處。
使用者故事invest標準:
軟體工程期末概念複習
簡答題6道,猜想軟體 軟體工程 軟體危機 軟體過程模型 軟體測試和軟體維護各一道。畫圖題看ppt吧,也可以看這個大佬的總結軟體工程期末總結 其他隨緣了 特點 本質特性 軟體具有複雜度 一致性 可變性和不可見性等固有的內在特性,這是造成軟體開發困難的根本原因。軟體危機 指在軟體的開發和維護過程中所遇到...
軟體工程期末複習2 軟體過程
1.軟體過程概述 軟體的誕生和生命週期是乙個過程,稱為軟體過程。過程定義了運用方法的順序,應交付的文件資料,為保證軟體質量和協調製化所需要採取的管理措施,以及標誌軟體開發各個階段任務完成的里程碑。2.1 軟體生命週期的概念 軟體產品的生命週期是指從設計該產品的構想開始,到軟體需求的確定 軟體設計 軟...
軟體工程期末複習12 軟體測試概述
軟體測試是發現軟體中錯誤和缺陷的主要手段。軟體缺陷的產生是不可避免的,軟體測試的工作是必需的。在軟體開發過程的任何階段都可能引入缺陷。缺陷被引入的階段越早,在軟體開發的後期修復這些缺陷帶來的成本損失就越大。軟體測試工作應該貫穿於整個開發過程。1.1 軟體測試的原則 軟體測試是為了發現錯誤而執行程式的...