窮舉、分類、分層、抽象是我推薦的4種分析問題的方法,即可以用於需求的分析,也可以用於其它的方面。
窮舉就是羅列出所有可能的情況。當知道某一種可能的時候,要舉一反三,列出所有的可能,針對問題的全集考慮解決方案。假如你考慮開發乙個庫存管理系統,有入庫單、出庫單、損溢單等3種型別的單據,有2種帳本:庫存流水帳、庫存成本帳。當考慮記帳的演算法時就要考慮3*2=6種情況,也就是說要考慮6種演算法,這就是窮舉。在做軟體需求分析時,尤其需要窮舉的方法,確保需求的完備性。採用窮舉的方法往往能夠發現容易遺漏的非正常的一些情況,而這些情況往往對問題的解決方法產生重要的影響。頭腦風暴的方法往往是窮舉的一種有效方法。當然,有些問題是無法窮舉盡的,此時可以採用分類的方法。
分類:分類是人們認識事物的最自然的方法之一。通過分類的方法可以將事物進行結構化,將繁雜的問題條理化。分類也可以幫助進行窮舉。窮舉出來後,可以採用分類的方法將問題進行有效的組織,尋找事物之間的共性。對同樣的問題集合,可以從多個方面進行分類,實際上是對問題的屬性進行深入的分析。在需求開發時,可以對需求從多個方面分類,如:按是否是功能需求分為:功能需求、效能需求、介面需求,其他需求;還可以按需求的優先順序分為必需的、期望的、裝飾性等等。對於軟體專案,應該採用分類的思想,不同型別的專案管理的方法是不同的,比如對於專案按規模可以劃分為大中小類,按型別可以分為嵌入式軟體開發、應用系統開發、混合系統開發,按開發的產品的型別分為產品類、訂單類等等。大類下面可以繼續劃分更細的類別,對於不同的類別在處理規則,儲存方式等等各方面可能是不同的,比如:
專案分類
專案形式
立項流程
工程類
有合同的專案
不需要立項
無合同,但是有意向的客戶
執行立項流程a
研發類
自主研發的專案
執行立項流程
b 基於同乙個刻面分類時,類別之間沒有交叉,而且類別的集合構成了全集。
在cmmi的模型中,將軟體工程的實踐劃分了過個pa,實際上就是對實踐進行了分類。
分層:網路的7層協議,軟體3層體系結構,馬斯洛的需求層次論都是很經典的分層的思想。分層其實也是分類的一種,只不過分類時,類別之間是沒有關聯關係的,而分層時,層與層之間是有一種關聯關係,如層a為層b提供服務,層b是建立在層a的基礎上等等。在乙個官僚體制內,組織結構常常表現為樹狀結構,上下級之間存在著領導與被領導的關係。cmmi的5個等級也是分層思想的一種體現。在需求開發時,往往對需求劃分為3個層次:目標層需求、作業層需求、操作層需求,其中每個下層的需求必須滿足上層的需求。在配置管理中,對於不同程度的變更控制的嚴格程度是不同的,比如:
變更等級
等級的劃分
批准責任人
a 級
沒有受控的文件
作者本人
b 級
未納入基線管理的受控文件
專案經理
c 級
( 1
)納入基線管理的文件
( 2
)單次變更估算的規模小於專案總體規模估算的5%(
3)單次變更導致的工作量小於
1人周
( 4
)專案總體累計變更規模小於於專案總體規模估算
30%專案經理
d 級
非上述情況
ccb
抽象:抽象的目的是提取出問題中最本質的方面,找出其最穩定的方面。抽象時,往往忽略了細節,而抓住其主要方面,忽略其次因素,抓住主要因素。也可以從不同的角度來抽象,從不同的角度抽象時,結論是不同的。軟體開發的方法經歷了結構化方法,面向資料流的方法,物件導向的方法等等的演變,結構化的方式認為軟體中功能處理時最穩定的,面向資料流的方法認為資料是最穩定的,物件導向的方法認為物件是最穩定的,其實也是在從不同的角度對軟體開發的過程進行抽象,在尋找軟體開發中最本質的東西。
以上對窮舉、分類、分層、抽象的八字要義略微說明,總有辭不達意,只可會意不可言傳的感覺。
Flink API的抽象分層
flink中提供了4種不同層次的api,如下圖所示 低階api stateful stream processing 提供了對時間和狀態的細粒度控制,簡潔性和易用性較差,主要應用在對一些複雜事件的處理邏輯上。核心api datastream dataset api 主要提供了針對流資料和離線資料的處...
分層 抽象 複雜 認知
抽象與分層是電腦科學中的一種基本思想方法,是降低計算機系統複雜度的有效方法。抽象,本質上是一種泛化與概括的思維方式。在計算機中核心資源就是cpu和記憶體,我們對cpu計算過程抽象的就是函式,函式是計算過程的泛化。而對記憶體中資料的抽象就是資料結構,資料結構是資料組織方式的泛化,而物件的本質就是二者的...
eCognition SVM 分層分類心得
ecognition svm 分層分類心得 好久沒有碼 最近都在做影象,新用了一款軟體,ecognition,業界小有名氣 整體的構建工程框架很完備,不是單純輸出的影象處理工具,很讚。新上手就用svm做分類,還做成分層分類,聽起來難,不過都過了,也就好了。主要解決的是svm方法,和分層分類的關係構建...