Ⅰ 軟體工程中常用的需求分析的方法有哪些
一、過濾需求的方法
做後端系統,要學會的第一個技能就是砍需求。也就是過濾需求。
這不是一個貶義詞,反而是體現後端產品價值判斷的基礎。
過濾需求的方法,就是通過一定的手段判斷需求是否是偽需求,應該被過濾掉。
1. 用戶場景模擬法
後端產品的出發點就是幫助業務用戶,因此在調研需求的時候要模擬業務的場景,分析業務用戶提到的需求是否能解決他的問題。
如果不能幫助用戶,那麼這個需求就可能是偽需求。
以下面的案例說明:
背景:「貨到付款」類型的訂單會因為缺貨而無法發出,如果超過一定的時間,客服就會跟顧客溝通,幫顧客取消訂單。
需求:由於這種訂單的數量還是蠻多的,逐個取消太費時間,因此業務用戶要求在「缺貨訂單」列表頁增加「批量取消訂單」按鈕。
分析:調研到業務操作場景,是先找到該類缺貨訂單,然後和顧客溝通,顧客同意刪除,才進行刪除。也就是逐個溝通確認,再逐個取消訂單的,所以「批量取消訂單」無法被有效使用。
因此,該需求是個偽需求,應該被過濾掉。
2. 功能歸屬分析
專門的系統做專職功能,有助於合理的產品體系建設。
因此需求調研的時候,可以通過系統的定位,判斷需求是否應該在該系統完成。
如果不屬於該系統范疇,那麼直接說服需求方更換方案。以
下面的案例說明:
背景:CRM系統(顧客關系管理系統)有一個顧客標簽生成功能,就是根據顧客的消費行為數據,自動對應關聯上標簽,如優質顧客、高潛力顧客、欺詐顧客等。
需求:業務用戶提出需求,除了做上述的基礎標簽之外,還要做出英語版本的標簽(就是把標簽文案翻譯成英文),這樣歐美員工可以在英語版本的系統下使用。
分析:調研到翻譯之後的標簽不是在CRM系統使用的,而是給到SMS(客服系統)使用的。
所以應該由SMS根據CMS提供的基礎標簽數據,自己做二次的衍生。
之所以這樣,首先是為了避免未來更多語言版本的擴展需求或更多系統提出類似的需求;
其次,CRM系統已經完成了「接力賽」的第一棒,創造了基礎數據,那麼其他系統要特殊化使用,完全可以自行進行特殊化處理,無需耦合回CRM系統。
結論:案例的需求本身是真需求,並且實現上也沒難度,但是該功能的定位超出了本系統范疇,專門系統做專職功能,化衍生需求應該在下游執行。
否則,耦合性過高只會增加系統的復雜程度,難以維護和擴展。
二、拆分和聚合的方法
1. 拆分需求法
業務用戶提出一個需求,很可能只是短短的一段話。
但是不要高興太早,可能這一句話暗含了很多線索,因此要善於拆分:
先找他要解決的核心問題,再圍繞核心點,理清前、後、左、右、上、下的旁系需求點。
每個需求點再當做一個子需求進行調研,最後再聚合在一起。
以下面的案例說明:
背景:訂單業務的類型很多,訂單退貨之後需要創建售後單據,但是因為數量大,所以花費很多人力,且手動創建有出錯的風險。
需求:業務提出的需求是「增加退貨訂單自動創建售後單的功能」,這是個一句話需求。
該一句話需求,其實包含了多種具體的訂單類型和場景,那麼我們就要拆分調研,拆分的維度比如:
自營訂單、第三方訂單、貨到付款訂單、先款後貨訂單、部分退貨訂單、完全退貨訂單、服裝事業部訂單、電子事業部訂單等,其中每一個維度就相當於一個小需求。
這里不一一展開。
2. 聚合需求法
拆分法是對單個需求分解成若干小需求進行調研,聚合法相反,是找到許多個相互關聯的小需求的共性,然後統籌成一個大需求去完成。例如:
由於業務用戶分散在不同的部門,各自為政,於是張三、李四可能都對一個業務流程有相同的需求,或者對同一個功能有相同的優化期望,結果倆人分別提了需求過來。那麼產品經理就要找到二者背後的相關性和交叉區。
然後統籌規劃,聚合在一起當作一個需求來調研,最終輸出一個整體的需求調研結果。
三、利用輔助功能調研需求
調研產品現有功能,可以用來確認原有功能的邏輯,或者確定新需求方案是否可行。
比如業務用戶需要更新一個功能,為了避免更新出錯或遺漏,產品經理需要知道修改前和修改後是否會能正常運行。
最基礎的辦法就是自己設計一個測試用例,記錄操作方式、狀態變化、數據流向等。看看下面的例子:
背景:從銷售網站獲取到OMS系統(訂單管理系統)的訂單信息中帶著顧客的郵箱。顧客下完單,可能會在銷售網站修改郵箱,而此時已經獲取到OMS的歷史訂單中的郵箱是不變的。
需求:顧客若在銷售網站修改郵箱,要求已獲取到OMS的該顧客的訂單中的郵箱也要同步修改。
分析:需求是很明白的,也有它的意義,但有風險。
因為我們知道訂單信息貫穿於整個訂單流轉過程中,牽扯到訂單編輯、審核、取消、配貨、發貨等,而這些環節跳轉的觸發條件可能就是某個信息更新(這裡面就可能包括有郵箱更新)。
因此,更新郵箱是否會影響流程中的某些環節,一時間很難准確知道。
於是,我們可以採用預測試的方式,設計測試用例,在測試機運行一些訂單,觀察各個環節郵箱變更的影響,然後收集起來分析對策。
測試法就像是探雷一樣,主要用來解決未知風險點。這個方式的重點是記錄和分析操作前狀態、操作位點、操作後狀態、操作後觸發的連鎖反應、數據流向等。
四、「拔蘿卜帶出泥」的方式調研需求
調研需求時,產品經理要拔蘿卜帶出泥,挖掘用戶沒看到的需求點和價值。
舉例說明:
背景:公司入駐到銷售平台後,銷售平台會對入駐的店鋪的違規行為進行罰款。
需求:業務用戶提出需求,將銷售平台的罰款數據抓取到訂單系統,關聯訂單數據,以便進行人工分析。
分析:
第一步,先拆分需求,確定什麼是罰款數據,總共有哪些罰款種類,需要對接哪些罰款種類,罰款數據與訂單系統關聯方式是什麼,是否都能關聯到,關聯不到怎麼辦,銷售平台是否已經提供了公用的罰款介面,Token(請求許可權)如何獲取,抓取頻率怎麼樣,數據增長幅度多大,獲取之後做哪些展示和搜索,用戶許可權怎麼設置,需要和訂單系統做哪些交互,該需求的價值是什麼……
第二步,挖掘需求:是否需要作分析功能,分析功能的規則是什麼;是否需要做監控和預警,是否需要指派負責人;其他業務人員是否也有類似需求,其他平台是否也有類似需求……
通過「拔蘿卜帶出泥」的方式,連帶出更多需求點。將上述調研結果重新組裝起來,得到一個系統化的完整需求。
羅列出需求要點和對應的驗收目標,這樣使得需求具象化,同時又不會遺漏細節,內部充實,外部閉環,並且進行了價值挖掘,做成控制閾值、預警、責任人分派、趨勢分析、損失分析等高價值的功能,超出業務的預期。
Ⅱ 本人求一個軟體工程課程設計,是完成老師作業那種,下面任一系統都行。誰有發我郵箱,[email protected]。
在網路里搜索一下軟體很多。
Ⅲ 軟體工程的作品目錄
中文版
出版者的話
譯者序
前言
第一部分軟體工程導論
第1章概述
11專業化軟體開發
111軟體工程
112軟體工程的多樣性
113軟體工程和Web
12軟體工程人員的職業道德
13案例研究
131胰島素泵控制系統
132用於心理健康治療的患者信息系統
133野外氣象站
要點
進一步閱讀材料
練習
參考書目
第2章軟體過程
21軟體過程模型
211瀑布模型
212增量式開發
213面向復用的軟體工程
22過程活動
221軟體描述
222軟體設計和實現
223軟體有效性驗證
224軟體進化
23應對變更
231原型構造
232增量式交付
233Boehm的螺旋模型
24Rational統一過程
要點
進一步閱讀材料
練習
參考書目
第3章敏捷軟體開發
31敏捷方法
32計劃驅動開發和敏捷開發
33極限編程
331極限編程中的測試
332結對編程
34敏捷項目管理
35可擴展的敏捷方法
要點
進一步閱讀材料
練習
參考書目
第4章需求工程
41功能需求和非功能需求
411功能需求
412非功能需求
42軟體需求文檔
43需求描述
431自然語言描述
432結構化描述
44需求工程過程
45需求導出和分析
451需求發現
452采訪
453腳本
454用例
455深入實際
46需求有效性驗證
47需求管理
471需求管理規劃
472需求變更管理
要點
進一步閱讀材料
練習
參考書目
第5章系統建模
51上下文模型
52交互模型
521用例建模
522時序圖
53結構模型
531類圖
532泛化
533聚合
54行為模型
541數據驅動的建模
542事件驅動模型
55模型驅動工程
551模型驅動體系結構
552可執行UML
要點
進一步閱讀材料
練習
參考書目
第6章體系結構設計
61體系結構設計決策
62體系結構視圖
63體系結構模式
631分層體系結構
632容器體系結構
633客戶機-伺服器體系結構
634管道和過濾器體系結構
64應用體系結構
641事務處理系統
642信息系統
643語言處理系統
要點
進一步閱讀材料
練習
參考書目
第7章設計與實現
71利用UML進行面向對象設計
711系統上下文與交互
712體系結構的設計
713對象類識別
714設計模型
715介面描述
72設計模式
73實現問題
731復用
732配置管理
733宿主機-目標機開發
74開源開發
要點
進一步閱讀材料
練習
參考書目
第8章軟體測試
81開發測試
811單元測試
812選擇單元測試案例
813組件測試
814系統測試
82測試驅動開發
83發布測試
831基於需求的測試
832情景測試
833性能測試
84用戶測試
要點
進一步閱讀材料
練習
參考書目
第9章軟體進化
91進化過程
92程序進化的動態特性
93軟體維護
931維護預測
932軟體再工程
933通過重構進行預防性維護
94遺留系統管理
要點
進一步閱讀材料
練習
參考書目
第二部分可依賴性和信息安全性
第10章社會技術系統
101復雜系統
1011系統總體特性
1012系統非確定性
1013成功標准
102系統工程
103系統采購
104系統開發
105系統運行
1051人為錯誤
1052系統進化
要點
進一步閱讀材料
練習
參考書目
第11章可依賴性與信息安全性
111可依賴性特徵
112可用性和可靠性
113安全性
114信息安全性
要點
進一步閱讀材料
練習
參考書目
第12章可依賴性與信息安全性描述
121風險驅動的需求描述
122安全性描述
1221危險識別
1222危險評估
1223危險分析
1224風險降低
123可靠性描述
1231可靠性度量
1232非功能性的可靠性需求
1233功能可靠性描述
124信息安全性描述
125形式化描述
要點
進一步閱讀材料
練習
參考書目
第13章可依賴性工程
131冗餘性和多樣性
132可依賴的過程
133可依賴的系統體系結構
1331保護性系統
1332自監控系統體系結構
1333N-版本編程
1334軟體多樣性
134可依賴的編程
要點
進一步閱讀材料
練習
參考書目
第14章信息安全工程
141信息安全風險管理
1411生存期風險評估
1412運行風險評估
142面向信息安全的設計
1421體系結構設計
1422設計准則
1423部署設計
143系統生存能力
要點
進一步閱讀材料
練習
參考書目
第15章可依賴性與信息安全保證
151靜態分析
1511檢驗和形式化方法
1512模型檢測
1513自動靜態分析
152可靠性測試
153信息安全性測試
154過程保證
155安全性和可依賴性案例
1551結構化論證
1552結構化的安全性論證
要點
進一步閱讀材料
練習
參考書目
第三部分高級軟體工程
第16章軟體復用
161復用概覽
162應用框架
163軟體產品線
164COTS產品的復用
1641COTS解決方案系統
1642COTS集成系統
要點
進一步閱讀材料
練習
參考書目
第17章基於組件的軟體工程
171組件和組件模型
172CBSE過程
1721面向復用的CBSE
1722基於復用的CBSE
173組件合成
要點
進一步閱讀材料
練習
參考書目
第18章分布式軟體工程
181分布式系統的問題
1811交互模型
1812中間件
182客戶機-伺服器計算
183分布式系統的體系結構模式
1831主從體系結構
1832兩層客戶機-伺服器結構
1833多層客戶機-伺服器結構
1834分布式組件體系結構
1835對等體系結構
184軟體作為服務
要點
進一步閱讀材料
練習
參考書目
第19章面向服務的體系結構
191服務作為可復用的組件
192服務工程
1921可選服務的識別
1922服務介面設計
1923服務實現和部署
1924遺留系統服務
193使用服務的軟體開發
1931工作流設計和實現
1932服務測試
要點
進一步閱讀材料
練習
參考書目
第20章嵌入式軟體
201嵌入式系統設計
2011實時系統建模
2012實時編程
202體系結構模式
2021觀察和反應
2022環境控制
2023處理管道
203時序分析
204實時操作系統
要點
進一步閱讀材料
練習
參考書目
第21章面向方面的軟體工程
211關注點分離
212方面、連接點和切入點
213採用方面的軟體工程
2131面向關注點的需求工程
2132面向方面的設計和編程
2133檢驗和有效性驗證
要點
進一步閱讀材料
練習
參考書目
第四部分軟體 管理
第22章項目管理
221風險管理
2211風險識別
2212風險分析
2213風險規劃
2214風險監控
222人員管理
223團隊協作
2231成員挑選
2232小組的結構
2233小組的溝通
要點
進一步閱讀材料
練習
參考書目
第23章項目規劃
231軟體報價
232計劃驅動的開發
2321項目計劃
2322規劃過程
233項目進度安排
234敏捷規劃
235估算技術
2351演算法成本建模
2352COCOMO Ⅱ模型
2353項目的工期和人員配備
要點
進一步閱讀材料
練習
參考書目
第24章質量管理
241軟體質量
242軟體標准
243復查與審查
2431復查過程
2432程序審查
244軟體度量和量度
2441產品量度
2442軟體組件分析
2443度量歧義
要點
進一步閱讀材料
練習
參考書目
第25章配置管理
251變更管理
252版本管理
253系統構建
254發布版本管理
要點
進一步閱讀材料
練習
參考書目
第26章過程改善
261過程改善過程
262過程度量
263過程分析
264過程變更
265CMMI過程改善框架
2651分階段的CMMI模型
2652連續CMMI模型
要點
進一步閱讀材料
練習
參考書目
術語表
英文版
CONTENTS
Preface v
Part 1 Introction to Software Engineering 1
Chapter 1 Introction 3
1.1 Professional software development 5
1.2 Software engineering ethics 14
1.3 Case studies 17
Chapter 2 Software processes 27
2.1 Software process models 29
2.2 Process activities 36
2.3 Coping with change 43
2.4 The rational unified process 50
Chapter 3 Agile software development 56
3.1 Agile methods 58
3.2 Plan-driven and agile development 62
3.3 Extreme programming 64
3.4 Agile project management 72
3.5 Scaling agile methods 74
Chapter 4 Requirements engineering 82
4.1 Functional and non-functional requirements 84
4.2 The software requirements document 91
4.3 Requirements specification 94
4.4 Requirements engineering processes 99
4.5 Requirements elicitation and analysis 100
4.6 Requirements validation 110
4.7 Requirements management 111
Chapter 5 System modeling 118
5.1 Context models 121
5.2 Interaction models 124
5.3 Structural models 129
5.4 Behavioral models 133
5.5 Model-driven engineering 138
Chapter 6 Architectural design 147
6.1 Architectural design decisions 151
6.2 Architectural views 153
6.3 Architectural patterns 155
6.4 Application architectures 164
Chapter 7 Design and implementation 176
7.1 Object-oriented design using the UML 178
7.2 Design patterns 189
7.3 Implementation issues 193
7.4 Open source development 198
Chapter 8 Software testing 205
8.1 Development testing 210
8.2 Test-driven development 221
8.3 Release testing 224
8.4 User testing 228
Chapter 9 Software evolution 234
9.1 Evolution processes 237
9.2 Program evolution dynamics 240
9.3 Software maintenance 242
9.4 Legacy system management 252
Part 2 Dependability and Security 261
Chapter 10 Sociotechnical systems 263
10.1 Complex systems 266
10.2 Systems engineering 273
10.3 System procurement 275
10.4 System development 278
10.5 System operation 281
Chapter 11 Dependability and security 289
11.1 Dependability properties 291
11.2 Availability and reliability 295
11.3 Safety 299
11.4 Security 302
Chapter 12 Dependability and security specification 309
12.1 Risk-driven requirements specification 311
12.2 Safety specification 313
12.3 Reliability specification 320
12.4 Security specification 329
12.5 Formal specification 333
Chapter 13 Dependability engineering 341
13.1 Rendancy and diversity 343
13.2 Dependable processes 345
13.3 Dependable system architectures 348
13.4 Dependable programming 355
Chapter 14 Security engineering 366
14.1 Security risk management 369
14.2 Design for security 375
14.3 System survivability 386
Chapter 15 Dependability and security assurance 393
15.1 Static analysis 395
15.2 Reliability testing 401
15.3 Security testing 404
15.4 Process assurance 406
15.5 Safety and dependability cases 410
Part 3 Advanced Software Engineering 423
Chapter 16 Software reuse 425
16.1 The reuse landscape 428
16.2 Application frameworks 431
16.3 Software proct lines 434
16.4 COTS proct reuse 440
Chapter 17 Component-based software engineering 452
17.1 Components and component models 455
17.2 CBSE processes 461
17.3 Component composition 468
Chapter 18 Distributed software engineering 479
18.1 Distributed systems issues 481
18.2 Client–server computing 488
18.3 Architectural patterns for distributed systems 490
18.4 Software as a service 501
Chapter 19 Service-oriented architecture 508
19.1 Services as reusable components 514
19.2 Service engineering 518
19.3 Software development with services 527
Chapter 20 Embedded software 537
20.1 Embedded systems design 540
20.2 Architectural patterns 547
20.3 Timing analysis 554
20.4 Real-time operating systems 558
Chapter 21 Aspect-oriented software engineering 565
21.1 The separation of concerns 567
21.2 Aspects, join points and pointcuts 571
21.3 Software engineering with aspects 576
Part 4 Software Management 591
Chapter 22 Project management 593
22.1 Risk management 595
22.2 Managing people 602
22.3 Teamwork 607
Chapter 23 Project planning 618
23.1 Software pricing 621
23.2 Plan-driven development 623
23.3 Project scheling 626
23.4 Agile planning 631
23.5 Estimation techniques 633
Chapter 24 Quality management 651
24.1 Software quality 655
24.2 Software standards 657
24.3 Reviews and inspections 663
24.4 Software measurement and metrics 668
Chapter 25 Configuration management 681
25.1 Change management 685
25.2 Version management 690
25.3 System building 693
25.4 Release management 699
Chapter 26 Process improvement 705
26.1 The process improvement process 708
26.2 Process measurement 711
26.3 Process analysis 715
26.4 Process change 718
26.5 The CMMI process improvement framework 721
Glossary 733
Subject Index 749
Author Index 767
Ⅳ 軟體工程:用面向對象方法,建立微機的對象模型。
這個自己要多練習啊,介面、實現、繼承、抽象、組合、聚合關系要應用進去
在附件中了,你看看吧,隨便寫的。
Ⅳ 聚合和組合的區別
聚合(Aggregation)關系是關聯關系的一種,是強的關聯關系。聚合是整體和個體之間的關系。例如,汽車類與引擎類、輪胎類,以及其它的零件類之間的關系便整體和個體的關系。與關聯關系一樣,聚合關系也是通過實例變數實現的。但是關聯關系所涉及的兩個類是處在同一層次上的,而在聚合關系中,兩個類是處在不平等層次上的,一個代表整體,另一個代表部分
組合(Composition)關系是關聯關系的一種,是比聚合關系強的關系。它要求普通的聚合關系中代表整體的對象負責代表部分對象的生命周期,組合關系是不能共享的。代表整體的對象需要負責保持部分對象和存活,在一些情況下將負責代表部分的對象湮滅掉。代表整體的對象可以將代表部分的對象傳遞給另一個對象,由後者負責此對象的生命周期。換言之,代表部分的對象在每一個時刻只能與一個對象發生組合關系,由後者排他地負責生命周期。部分和整體的生命周期一樣。
以上關系的耦合度依次增強(關於耦合度的概念將在以後具體討論,這里可以暫時理解為當一個類發生變更時,對其他類造成的影響程度,影響越小則耦合度越弱,影響越大耦合度越強)。由定義我們已經知道,依賴關系實際上是一種比較弱的關聯,聚合是一種比較強的關聯,而組合則是一種更強的關聯,所以籠統的來區分的話,實際上這四種關系、都是關聯關系。
聚合關系是是一種比較強的關聯關系,java中一般使用成員變數形式實現。對象之間存在著整體與部分的關系。例如上例中
classDriver{假如給上面代碼賦予如下語義:車是一輛私家車,是司機財產的一部分。則相同的代碼即表示聚合關系了。聚合關系一般使用setter方法給成員變數賦值。
//使用成員變數形式實現聚合關系
Carmycar;
publicvoiddrive(){
mycar.run();
}
}
publicDriver(Carcar){所以,關聯、聚合、組合只能配合語義,結合上下文才能夠判斷出來,而只給出一段代碼讓我們判斷是關聯,聚合,還是組合關系,則是無法判斷的。
mycar=car;
}
Ⅵ 軟體工程中「高聚集,低耦合」「低聚集,高耦合」用英語怎麼說急急急!!
high conglomeration;low coupling
Ⅶ 高聚合 低耦合...是什麼意思
高內聚低耦合,軟體工程中的概念,判斷軟體設計好壞的標准,主要用於程序的面向對象的設計,主要看類的內聚性是否高,耦合度是否低。
目的使程序模塊的可重用性、移植性大大增強。通常程序結構中各模塊的內聚程度越高,模塊間的耦合程度就越低。
內聚從功能角度來度量模塊內的聯系,一個好的內聚模塊應當恰好做一件事,它描述的模塊內的功能聯系。
耦合軟體結構中各模塊之間相互連接的一種度量,耦合強弱取決於模塊間介面的復雜程度、進入或訪問一個模塊的點以及通過介面的數據。
(7)聚合軟體工程擴展閱讀
耦合性,也叫耦合度,對模塊間關聯程度的度量。耦合的強弱取決於模塊間介面的復雜性、調用模塊的方式以及通過界面傳送數據的多少。
模塊間的耦合度指模塊之間的依賴關系,包括控制關系、調用關系、數據傳遞關系。模塊間聯系越多,其耦合性越強,同時表明其獨立性越差( 降低耦合性,可以提高其獨立性)。
軟體設計中通常用耦合度和內聚度作為衡量模塊獨立程度的標准。劃分模塊的一個准則就是高內聚低耦合。
Ⅷ 軟體工程的題求解答~!
只知道這些:
1.B
2.A
7.A
Ⅸ 系軟體工程用例之間的關系有哪些
泛化(Generalization)
關聯(Association)
依賴(Dependency)
聚合(Aggregation)