《軟體方法》潘加宇 讀書筆記

来源:http://www.cnblogs.com/icebeanseven/archive/2017/06/07/6956458.html
-Advertisement-
Play Games

設計源於需求卻高於需求。 《軟體方法》上冊(五章)所表述的邏輯: 願景 業務建模 需求 分析 設計 1. 願景: 明白軟體的意義是什麼,幫助或者提高了現有系統的那些方面,減少了那些成本。 利潤 = 需求 - 設計 這個公式成立的前提是需求都已經實現,不同的設計會花費不同的成本。但看完上篇,我覺得應該 ...


設計源於需求卻高於需求。   《軟體方法》上冊(五章)所表述的邏輯: 願景 ------ 業務建模 ------ 需求 ------ 分析 ------ 設計   1. 願景: 明白軟體的意義是什麼,幫助或者提高了現有系統的那些方面,減少了那些成本。                                                                 利潤 = 需求 - 設計 這個公式成立的前提是需求都已經實現,不同的設計會花費不同的成本。但看完上篇,我覺得應該改一改:  利潤 = 業務 - 設計。  整個軟體製作的過程中,真正的價值和輸出是業務,對業務有什麼幫助、提高或者減少業務成本。從業務的分析、願景再到需求的分析之間有一定的距離和不同的理解方式,這一點也很重要。   2. 業務建模:研究 業務用例和業務對象。 業務建模主要是研究這個組織,描述現在的業務事實,劃分業務的邊界,分析出各個參與方的現象及狀況。 反過來給組織一個購買系統的理由,給系統賦予實際的價值。   註:業務和需求分析是兩個方面,業務註重對現實的描述,需求是針對於系統的分析。業務不一定和需求是一一對應的關係。業務是現實的描述,一般是不會變化的;但需求可以用不同的方式實現,並且從不同的角度出發看業務時,看到的需求也是不一樣的。   3. 需求 : 研究系統系。統執行者,是指系統外與該系統發生功能性交互的其他系統。 系統用例,系統為執行者提供的、渉眾可以接受的價值。 系統用例的粒度,從業務的角度出發去思考這個問題,用例就是為了給系統的執行者用。        
  • 第一章 建模和UML

  1. 該章主要講軟體方法的價值和思路,然後確定本書的觀點:建模和軟體開發完美的工作流【業務建模-需求-分析-設計】     2. 各個義務模塊思考的焦點不一樣,從上到下是有嚴格先後順序的。    
  • 第二章 願景

  1. 回答問題,“在老大看來,為什麼要引進這樣的系統?” 2. WHO的問題:分析清楚相關的涉方,涉及到的組織和系統,利益相關方。 3. WHY的問題:為什麼要做這些,現在遇到的問題是什麼,系統需要提高那一部分,或者減少那一部分的開銷。 4. 設定可度量的目標,量化系統的指標和價值。 5. 分析利益相關方,從不同的涉方去看待系統,明確系統的定位。    
  • 第三章 業務建模 之 業務用例圖

  1. 中心思想:軟體是組織的零件。書中認為組織和人都可以當做是一個系統,而有沒有軟體組織都可以進行下去。所以軟體就是組織的零件,在業務建模和描述業務的過程中找到組織的弱點,可以改進的地方和可以用系統來代替的地方。然後確定系統的作用,進而分析和設計系統。 2. 用例分析對象是現存的組織,分析流程:  選定要改進的組織--組織的業務用例圖 3. 選定要改進的組織:     a). 分析現有的業務組織,列出現有相關業務的參與方;     b). 通過願景的分析,將涉方畫在一個圈裡作為研究對象, 這裡的涉方有可能是系統,也有可能是組織,也有可能是一個人;      c). 從客戶的角度分析現有各個組織的功能,可以利用時序圖和用例圖分析,搞清楚面對客戶和提供某一項服務時,各個系統之間的協作狀況;      d). 尋找可以改進的地方和系統的價值所在,在時序圖的分析完成之後可以觀察時序圖,找到系統所要實現的業務模塊。 4. 組織業務用例:     a). 業務的執行者:選定要改進的組織之後需要分析系統所承擔的業務。第一就是要找到業務的執行者,業務的執行者可以是其他的組織,個人。【肯定是相關組織,業務的分析都是從組織層面的分析】     b). 業務工人和業務實體。業務工人不是系統的執行者,不能和組織內的人混淆,是在組織中的人肉系統。業務執行者喝業務工人,一個在系統的外部一個在系統的內部。但這種的關係隨著業務的邊界有可能變化,如果包含在業務邊界內部,就是業務工人,如果在業務系統的外部就有可能是業務的執行者。業務實體也是在業務邊界以內充當著一定的職能,有可能是從業務工人中分離出來的機器,比如銀行業務員和點鈔機,銀行業務員就是業務工人,點鈔機就是業務實體,點鈔機一定程度承擔和業務工人的一部分責任,是從業務工人中分離出來的。     c). 業務用例圖: 通過業務時序圖來抽象系統的用例,將業務的時序圖簡化為用系統零件代替。用新流程替代舊流程,明確業務執行者對相關的組織的期望是什麼,是具體對哪個組織的期望。 5. 業務用例的分析目的:明確系統的價值和系統對外提供的功能,以及系統會不會達到第一點所提到的願景。      
  • 第四章  業務建模 之 業務序列圖

  1. 中心思想: 在業務用例分析清楚以後,開始描述業務用例的實現,系統所承擔的業務流程是怎麼樣的,以便之後推導出有待開發的系統用例圖是什麼樣的。 2. 業務流程描述的方法: a). 文本; b). 活動圖,泳道圖,分清楚各個業務組織之間的邊界; c). 序列圖,時序圖:只涉及相關的組織和人,分析清楚交互的動作是什麼,交互的內容是什麼。 3. 業務序列圖的要點: a). 序列圖中的箭頭消息代表責任而不是數據流,代表承擔的功能業務是什麼; b). 重點聚焦於系統之間的協作是什麼,系統之間的交互是怎樣的; c). 只需要關心核心模塊的相關的分析; c). 可以把時間作為系統的特殊業務實體。 4. 業務建模的步驟:                                       現狀業務序列圖----改進業務序列圖     a). 現狀業務序列圖: 現狀不是純手工,現狀不是規範,根據業務序列圖要點畫出現狀業務序列圖,瞭解認識現狀,但不能以要分析的業務系統為中心拼湊。     b). 改進業務序列圖: 分析清楚現狀之後尋找業務改進的地方。思考的點:信息化、模塊劃分、職責劃分、流程簡化、信息流改善、封裝領域邏輯。【阿布思考法:假設有充足的資源解決問題,得到一個完美方案;用手上現有的資源得到一個完美的方案】    
  • 第五章 需求 之 系統用例

  1. 需求研究的對象是系統,業務研究的對象是組織。他們之間的研究對象不一樣,分析的目的不同。 2. 系統執行者:在所研究的系統之外,能夠與該系統發生功能性交互的其他系統。     a). 特點是:系統外、交互、功能性交互、系統。系統外:通過業務用例和業務序列圖的分析,明確系統的邊界,系統邊界之外的都是系統外。交互:系統的執行者除了是系統之外的還必須與系統發生交互,也通過業務用例分析的涉眾來明確是否與系統發生交互。功能性交互:系統的執行者喝系統之間發生的交互是系統的功能性需求,從系統執行者來看是執行的利益點。系統:系統可以是一個人肉系統,也可以是一個非人智能系統,甚至是一個特別的外部系統(時間)。     b). 如何識別系統的執行者:通過業務建模,識別系統的交互對象。從業務的序列圖種映射系統的執行者。     c). 用例的主執行者和輔助執行者:箭頭的指向是主動的訪問和消息。從用例指向的外部執行者就是輔助執行者。 3. 系統用例:系統能夠為執行者提供的、涉眾可以接受的價值。從執行者出發,是執行者的利益訴求點;從系統出發,是系統對相關組織的價值意義。用例思考的過程就是發現價值的過程,從兩方面考慮,業務執行者的利益訴求點是什麼,系統能夠提供的功能是什麼。     a). 用例的粒度問題:把握住用例是面向系統,提供給執行者的用例,需要滿足執行者的訴求點。     b). 用例是執行者的動作,並不是面向資料庫的CURD。用於和動詞也必須是執行者能夠理解的,在業務序列圖種的交互動作。     c). 如何識別系統用例:在業務序列圖中,從外部指向系統的交互消息,可以映射為該系統的用例。需要明確系統的邊界在哪裡。 4. 需求分析中的系統用例可以直接由業務的分析而來,通過業務用例分析,到業務序列圖,然後從業務序列圖映射到系統的用例。      
  • 總結

  面向對象是一種方法論,怎麼去認識真實的世界,是一種思想理論。 UML是用面向對象的思想,分析真實世界的工具和交流的語言,將真實世界翻譯成與軟體行業交互的語言。《軟體方法》中講述了怎麼去按照面向對象的思想,用UML分析真實世界,指導幫助開發軟體的方法。                  



null




您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 通常我們的做法是(尤其是在學習階段):定義一個新的變數,藉助它完成交換。代碼如下: int a,b; a=10; b=15; int t; t=a; a=b; b=t; 這種演算法易於理解,特別適合幫助初學者瞭解電腦程式的特點,是賦值語句的經典應用。在實際軟體開發當中,此演算法簡單明瞭,不會產生歧義, ...
  • 一、編程規約 (一) 命名規約 1. 【強制】 代碼中的命名均不能以下劃線或美元符號開始,也不能以下劃線或美元符號結束。 反例: _nam / __name / $Object / name_ / name$ / Object$2. 【強制】 代碼中的命名嚴禁使用拼音與英文混合的方式,更不允許直接使 ...
  • 網上有很多人探討Java中異常捕獲機制try...catch...finally塊中的finally語句是不是一定會被執行?很多人都說不是,當然他們的回答是正確的,經過我試驗,至少有兩種情況下finally語句是不會被執行的: (1)try語句沒有被執行到,如在try語句之前就返回了,這樣final ...
  • jdk1.7.0_79 HashMap可以說是每個Java程式員用的最多的數據結構之一了,無處不見它的身影。關於HashMap,通常也能說出它不是線程安全的。這篇文章要提到的是在多線程併發環境下的HashMap——ConcurrentHashMap,顯然它必然是線程安全的,同樣我們不可避免的要討論散 ...
  • 1.什麼是生成器 通過列表生成式,我們可以直接創建一個列表。但是,受到記憶體限制,列表容量肯定是有限的。而且,創建一個包含100萬個元素的列表,不僅占用很大的存儲空間,如果我們僅僅需要訪問前面幾個元素,那後面絕大多數元素占用的空間都白白浪費了。所以,如果列表元素可以按照某種演算法推算出來,那我們是否可以 ...
  • __doc__ 查看尖的描述信息 __module__表示當前操作的對象所在的模塊 __class__表示當前操作的對象所屬的類 __init__構造方法 通過類創建對象自動執行 __del__析構方法,當前對象在記憶體中被釋放自動斬妖執行 __call__對象後面加括弧觸發執行 __dict__查看 ...
  • 初學時,對不太熟悉的markdown語法,有個簡單記錄 [公式][1] 公式一般用Latex書寫,線上[Latex編輯器][2]可以使用,有以下幾種方法供選擇 有然後保存為圖片gif格式,使用img標簽進行引用。 使用Google Chart的伺服器 `` 給個例子, 顯示結果為(博客園的markd ...
  • 怎麼樣的SDK算是一個好的SDK? 在做SDK的過程中我們走過非常多的彎路,是一個難以想象的學習過程,我們總結一個好的SDK應該具備的特質: 易用性,穩定性,輕量,靈活,優秀的支持. 一、易用性 因為工作的關係我接觸了很多的開發者,其中有行業知名的公司的開發者,也有極小的個人開發者.有一個現象很有意 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...