看這玩意復習你還會掛科?《軟件工程篇》

軟件工程:是指導軟件開發和維護的一門工程學科 三要素方法/工具/開發過程 價值:促進項目成功

現代產品開發三原則:功用性、可行性、稱許性 軟件過程是軟件工程的核心組成部分。

迭代 :反復求精? 增量:逐塊建造 ???需求調查手段:研究文檔、訪談、現場觀察、問卷、原型法

經典軟件過程:瀑布模型、RUP統一軟件過程、Scrum敏捷過程、擴展ICONIX過程

瀑布模型:需求分析、需求定義、概要設計、詳細設計、實現、系統測試、驗收測試、維護

UML承載面對象思想。靜態圖:對象圖/類圖/組件圖/部署圖;動態圖:用例圖/序列圖/活動圖/狀態圖/協作圖

需求是軟件成功的基礎,需求工程是解決需求噩夢手段:需求開發/調查/分析/定義/管理/確認/跟蹤/變更控制

需求開發(獲取用戶需求/定義產品需求,找到痛點提出辦法)需求調查需求分析(定義愿景、業務建模、用例分析)需求定義:規格說明書((非)功能需求)需求管理(客戶與開發方需求共同理解,維護與其他成果一致,控制變更)

三類人需求:老板戰略/開源節流/定愿景;經理:簡化管理優化流程 業務建模;業務建模;員工:工作簡單用例分析

ICONIX過程:(開源節流用例驅動)愿景、業務建模(用例/現狀序列圖/改進)需求分析(系統/域)健壯性分析(健壯性圖更新域模型)關鍵設計最終設計(詳細設計)實現(域模型->更新->靜態類圖)

特點:早編碼,縮短設計周期。簡化RUP過程。基于敏捷思想。

與RUP比是輕量級過程。與敏捷比提供充足的需求設計文檔,但不過度分析設計。

?

獲取愿景:找項目老大(最有權力的干系人)得到期望(掏錢的目的)描述度量指標

業務建模步驟明確為誰服務(改進組織)什么現狀從外部看:組織是價值的集合;從內部看是系統的集合。改進

業務建模意義把視角轉向客戶,清晰準確診斷。明確為誰服務,不為自己做;組織現狀/痛處不足;如何改進/解決.

業務用例圖:幫助從高層次了解組織的業務構成。業務執行者:享受價值;業務組織:提供的價值。

業務序列圖(幫助從細節上了解組織的業務流程)用例對應一段流程優勢:以面向對象的思想來看業務流程

作用:識別業務對象:確定業務對象間職責、協作和交互順序;通過業務序列圖了解現狀,為業務的優化提供依據

組成:業務執行者;業務工人;業務實體;調用消息;返回消息 常用分支:循環loop、分支alt、可選opt

改進1新系統作為實體引入現有流程、查看可改進流程、評估改進結果

2了解目的,發現改進點:信息自動流轉、封裝復雜邏輯、職責轉移、操作業務對象(管理系統)

結果復核(所有參與者簽字確認或未達成共識需要返工)目的:完善建模成果,尋找遺漏錯誤的地方,修正,可以迭代回去繼續做業務建模。關鍵干系人在信息和意見上達成一致,簽字確認,下一階段啟動標志。

?

域建模步驟提取名詞短語、排除重復相似、排除系統本身及范圍外、第一版、整理第一版域模型 ?

意義術語表確保清晰一致術語交流。比普通術語:圖示化方式,清晰顯示術語關系3修正完善演化為最終靜態類圖

域模型數據模型關系

域模型:分析模型、認識實體間關系的工具;數據模型:系統設計實現的一部分,描述用戶需求在數據結構的實現

組成系統:主執行者:發起者,為其實現輔執行者:支持者;提供支持(后臺)3系統邊界、系統用例、用例關系

系統用例建模意義把視角轉向新系統,站在最終用戶角度看問題,是對新系統為系統執行者提供的價值的建模

繪制系統用例步驟:1確定系統邊界 2識別系統執行者3識別系統用例,執行動作,生成執行者可觀測價值結果

用例關系包含:封裝一組相似動作以便復用。泛化:繼承。擴展:一段相對獨立且可選的動作

用例≠功能/步驟(用例是執行者愿望,很多步驟)大量用例分包:按執行者、按主題、按開發團隊、按發布情況

系統用例描述干系人利益(客戶:簡單。銀行:安全。法律:保護)基本路徑(客戶最想看到 “名動名” 主語是執行者或系統)擴展路徑(意外分支)業務規則(限額)非功能性需求:做到的程度、功能性需求:做什么

軟件需求規格書:正確性、必要性、優先級、明確性、可測性、完整性、一致性、可修改性

需求評審:

1臨時評審(回顧與用戶日常溝通)2輪查(交叉產物互相提意見)3結對編程/走查/評審/審查4規劃:誰參加/評審什么5總體會議6準備7審查會議:暴露討論問題8返工:防形式主義9跟蹤:解決問題避免再次出現

?

健壯性分析三種元素:邊界類實體類控制器類

規則1執行者只和邊界通話2邊界和控制器3控制器和控制器4控制器和實體

健壯性步驟:創建圖、用例文本、基本路徑,執行者、邊界對象和實體對象、控制器,元素之間的連線、擴展路徑。

健壯性優點:1.用例的對象化圖示,用例和對象鏈接起來2.指出了對象互相如何交互3.確保用例文本正確,提供了健壯性檢查4.幫助確保用例考慮所有必要擴展路徑,提供完整正確檢查5.能夠發現對象6.縮小分析和設計鴻溝

價值:幫助完善用例分析結果。完善域模型,做為需求分析走向系統設計的過度技術

?

關鍵設計意義:尋找對象間交互關系,進行方法分配。包括用例圖、用例描述、健壯性分析圖。

非功能性需求:可靠性、可用性、性能、可支持性

高內聚:一個軟件模塊由相關性強的代碼組成,只負責一項任務,一個好內聚模塊恰好做一件事,單一責任原則

低耦合:度量模塊間直接依賴關系,模塊與模塊間接口應少而簡單,如關系較復雜,模塊劃分,有利于修改與組合

詳細設計(編碼測試部署維護升級)技術架構:開發語言、網絡拓撲安全、體系結構、硬件環境、軟件環境

?

敏捷宣言敏捷=理念+優秀實踐+具體應用(是敏捷起源基礎,揭示更好開發方式,重新思考開發中的價值和如何更好工作,是以人為核心/迭代/循序漸進的開發方法)

1)個體與交互>過程和工具2)可以工作的軟件>面面俱到的文檔3)客戶協作>合同談判4)響應變化>遵循計劃

(軟件:復雜性/一致性/可變性/不可見性)敏捷有改變:管理者的轉變\團隊成員的轉變

好功能列表有DEEP特征:詳略得當、涌現的、做過估算、排列優先級。

Scrum產品負責人、scrum教練、開發團隊

1)產品負責人和開發對產品業務目標形成共識2)產品負責人建立維護需求列表(不斷新增改變),優先級排序3)產品負責人每輪迭代前,篩選高優先級需求本輪開發4)開發團隊細化迭代需求,按照優先級依次迭代完成5)開發團隊每日立會/特性開發/持續集成,使開發進度真正透明(每日立會)6)產品負責人對每輪迭代交付的可工作軟件現場驗收反饋(迭代評審會議)7)團隊內部進行本輪回顧,發現可改進方面指導下一輪迭代(迭代回顧會議)

敏捷管理實踐迭代計劃會議(達成一致確定任務)、迭代執行、每日立會迭代評審會議迭代回顧會議(總結改進)

敏捷工程實踐結對編程、測試驅動開發、持續集成、Code Review、產品發布規則、用戶故事

用戶故事三要素:客戶價值、用戶 級別:史詩故事(1月)、特性故事(1周)、沖刺故事(1天)、任務(小時)

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/444535.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/444535.shtml
英文地址,請注明出處:http://en.pswp.cn/news/444535.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

C++:02---命名空間

一、概念: ①類似于倉庫,空間內存儲代碼,需要用到時調用②也為防止名字沖突提供了更加可控的機制二、命名空間的定義 定義的基本格式如下:namespace 命名空間名 { //一系列聲明與定義 };三、命名空間的注意事項 命名空間定義時最后的分號可有可無只要出現在全局作用域中的…

看這玩意復習你還會掛科?《軟件工程2篇》

第一章: 軟件工程定義: 1968年10月,Fritz Bauer 首次提出了“軟件工程”的概念,并將“軟件工程”定義為:為了經濟地獲得能夠在實際機器上有效運行的可靠軟件,而建立并使用的一系列工程化原則。 1993年IE…

C++:05---命名空間

一、概念: ①類似于倉庫,空間內存儲代碼,需要用到時調用②也為防止名字沖突提供了更加可控的機制二、命名空間的定義 定義的基本格式如下:namespace 命名空間名 { //一系列聲明與定義 };三、命名空間的注意事項 命名空間定義時最后的分號可有可無只要出現在全局作用域中的…

C++:04---內聯函數

1.概念: 內聯類似于宏定義,當程序執行到內聯函數時,相當于復制了一份函數代碼。犧牲代碼空間,贏得了時間 內聯說明只是向編譯器發出一個請求,編譯器可以選擇忽略這個請求 2.關鍵字:inline 聲明時寫了inline,定義時可省略。建議聲明和定義都加上inlineinline int add(int…

leetcode86. 分隔鏈表

給定一個鏈表和一個特定值 x,對鏈表進行分隔,使得所有小于 x 的節點都在大于或等于 x 的節點之前。 你應當保留兩個分區中每個節點的初始相對位置。 示例: 輸入: head 1->4->3->2->5->2, x 3 輸出: 1->2->2->4->3->5…

(十三)nodejs循序漸進-高性能游戲服務器框架pomelo之擴展聊天服務器為機器人自動聊天

聊天服務器擴展 大家在上一篇文章里相信已經學會了pomelo框架的基本用法了,那么我們在上一篇文章的代碼基礎上繼續擴展,豐富系統,另外也熟悉下他的更多的用法,這一節我將擴展它:增加一個機器人自動聊天的功能。 目的…

C++:09---類靜態成員、類常量成員

一、類靜態成員(static) 先介紹一下什么是靜態變量、靜態函數 靜態局部變量:存在域(全局數據區),作用域(塊作用域)靜態全局變量:存在域(全局數據區),作用域(整個文件)靜態函數:存在域(全局數據區),作用域(整個文件)static int a=10;//全局靜態變量 static vo…

C++:08---成員變量初始化方式

成員變量初始化有三種方式: 在構造函數體內賦值初始化在自定義的公有函數體中賦值初始化(一般用于成員變量的初始化)在構造函數的成員初始化列表初始化一、構造函數體內初始化 說明:在構造函數體內的初始化方式,本質是是為成員變量賦值,而不是真正意義上的初始化,這點要…

leetcode1290. 二進制鏈表轉整數 刷新認知,最簡單算法題

給你一個單鏈表的引用結點 head。鏈表中每個結點的值不是 0 就是 1。已知此鏈表是一個整數數字的二進制表示形式。 請你返回該鏈表所表示數字的 十進制值 。 示例 1: 輸入:head [1,0,1] 輸出:5 解釋:二進制數 (101) 轉化為十進…

Redis:02---安裝Redis(Linux+Windows+Docker)

Linux安裝:一、安裝方式1(下載源碼編譯安裝)第一步:從下面的網址中下載Redis最新穩定版本的源代碼sudo wget http://download.redis.io/redis-stable.tar.gz第二步:下載完之后解壓,建立一個軟鏈接指向于red…

C++:10---再議拷貝構造函數

一、概念 使用一個已經存在的對象,去構造(初始化)另一個對象二、格式 參數加上const&,因為拷貝構造函數在幾種情況下都會被隱式地使用,因此拷貝構造函數不應該是explict的const:防止函數內部修改值&:防止無限循環拷貝類名(類名 const& 參數名) { 函數體 }三、…

人的思維謬誤與心理學效應

啟發法 用一個容易的問題代替難以回答的真正問題。這個容易的問題的答案就是對真正問題的啟發,但啟發經常和真正的答案差得很遠,而人卻往往把啟發當成了真正問題的答案。 接下來介紹和啟發法相關的心理效應和謬誤。每一個謬誤都會注明真正的問題是什么…

C++:07---this指針

一、this指針介紹 概念:this指針是成員函數的一個隱式參數,在類中本質上就是對象的指針(常量指針)特點:在成員函數中可通過this指針區別成員變量與形參變量this可以顯式調用示例代碼:class Cperson { private: int age; float height; public: void InitPerson(int age,flo…

Redis :01---Redis簡介和安裝

一、Redis簡介 Redis官網:https://redis.io/ Redis是一種基于鍵值對(key-value)的NoSQL數據庫 與很多鍵值對數據庫不同的是,Redis中的值可以是由string(字符串)、hash(哈希)、 list&…

215. 數組中的第K個最大元素 BFPRT最牛解法

在未排序的數組中找到第 k 個最大的元素。請注意,你需要找的是數組排序后的第 k 個最大的元素,而不是第 k 個不同的元素。 示例 1: 輸入: [3,2,1,5,6,4] 和 k 2 輸出: 5 示例 2: 輸入: [3,2,3,1,2,4,5,5,6] 和 k 4 輸出: 4 說明: 你可以假設 k 總是…

C++: 06---構造函數析構函數

拷貝構造函數: 用一個已經存在的對象來生成一個相同類型的新對象。(淺拷貝)默認的拷貝構造函數: 如果自定義了拷貝構造函數,編譯器就不在生成默認的拷貝構造函數。 如果沒有自定義拷貝構造函數,但在代碼中用到了拷貝構造函數,編譯器會生成默認…

leetcode371. 兩整數之和 不用+號做加法

不使用運算符 和 - ,計算兩整數 ???????a 、b ???????之和。 示例 1: 輸入: a 1, b 2 輸出: 3 示例 2: 輸入: a -2, b 3 輸出: 1 思路:模擬加法器 二進制不考慮進位:000,010,110,是…

C++:05---class和struct

C++被稱為“C with class”,可見在C++中class是多么重要,與class類似的一個結構就是struct了,struct最早是在C語言中出現的,在C++中對struct的功能也進行了擴展。 class : public(公有):在類內外、派生類中都可被訪問protected(保護):希望與派生類共享但是不想被公共…

leetcode34. 在排序數組中查找元素的第一個和最后一個位置

給定一個按照升序排列的整數數組 nums,和一個目標值 target。找出給定目標值在數組中的開始位置和結束位置。 你的算法時間復雜度必須是 O(log n) 級別。 如果數組中不存在目標值,返回 [-1, -1]。 示例 1: 輸入: nums [5,7,7,8,8,10], target 8 輸…

C++:11---友元函數、友元類

一、友元(friend) 概念:通過友元,打破了類的封裝性,可以訪問類內的所有成員分類:友元函數、友元類二、友元函數 概念:友元函數是一個普通函數,不屬于類,但需要在類內表明友元關系 友元函數可訪問類內所有成員,但類不可以訪問友元函數…