開發,從需求出發 之五 麥克斯韋妖

2021-06-22 21:45:22 字數 2009 閱讀 2804

麥克斯韋妖(maxwell's demon),是在物理學中假想的妖,能探測並控制單個分子的運動,於2023年由英國物理學家詹姆斯·麥克斯韋為了說明違反熱力學第二定律的可能性而設想的。

好吧,讓我們充當一次麥克斯韋妖,探測和控制單個模組/方法的工作~~~

先上三張圖:

傳統狀態:

1 由於上層介面依賴於下層介面的實現,因此,開發順序是自下而上開發,底層介面沒有實現,上層無法進行有效的開發;

2 searchservice 的測試工作依賴於底層介面的實現,獲得的輸入不可控,因此在輸出存在異常的情況下,無法界定是內部邏輯問題還是輸入異常

3 確定輸入異常的情況下,需要逐個排查底層介面

模擬狀態:

1 由於我們確定 lucenedaomock 和 mysqldaomock 的執行是正確的,

2 因此lucenedao 和 mysqldao 的輸出也是正確的,

3 searchservice如果邏輯是正確的,那麼,其輸出也必定是正確的,

4但是,如果輸出不是預期的數值,那麼說明,searchservice的實現類 searchserviceinrealbiz 必定有問題,而且,必定是自身的問題造成的。

5 searchservice介面的實現工作室完全可以和 它所依賴的下一層分離並行的,

6這種模式下是支援自上而下的開發的——亦即我所說的「從需求出發」

混合狀態:

1 混合狀態是模擬狀態的進行時狀態

2 開發過程中,保持其他模組的模擬狀態,只選取乙個模組進行真實業務邏輯的實現

3 在多個粒度和層面上進行針對該模組的測試

4 將該模組切換為模擬狀態,挑選另乙個模組重複2-3的開發和測試工作。

5 所有模組實現完畢,同時,也測試完畢。

至此,麥克斯韋妖成功完成了它的工作~~~~

那麼,我前面實現的beanfactory 或者spring 的 依賴注入的作用體現在**呢?

——就是 模擬模組和真實模組的注入和切換。

我基於spring.xml的形式說明:

step 1,開發和測試 searchservice

searchservice 的實現類: searchserviceinrealbiz

<?xml version="1.0" encoding="utf-8"?>

//模擬

//模擬

step 2, 開發和測試lucenedao

<?xml version="1.0" encoding="utf-8"?>

//開發測試

//模擬

//模擬

step 3,開發和測試mysqldao

<?xml version="1.0" encoding="utf-8"?>

//模擬

//開發測試

//模擬

開發測試同步完成。

不僅僅開發如此,在以後的系統維護過程中,一旦發生異常,是比較容易排查錯誤的原因的,如果你能獲得真實環境下的異常輸入,那麼,debug將會相當快速高效。

你所要做的只不過是像麥克斯韋妖一樣——把不同的分子放到不同的格仔裡面去

我確信,當我啟動tomcat,開啟頁面,並進行查詢操作的時候,得到的頁面展示內容是正確的,符合預期的:)

ok了:)

基於sitefromscratch這個搜尋**專案的討論到此結束,在接下來的章節裡,我打算引申到更廣泛的領域裡面去。

to be continued.............

從需求出發 差異化讓雲計算走得更遠

從需求出發 差異化讓雲計算走得更遠 最近,友友ceo姚巨集宇談到如何選擇雲計算產品時表示,在選擇雲計算之前,第乙個看你是不是需要,是不是需要自己蓋棟樓的。選擇的前提是看自己的需求。第二假如自己確實有這個必要,就要看看自己的實力,通常很大的公司很大的企業,並且自己營銷力量很強,像這種企業可能會選擇自己...

《安防解決方案》 從需求出發,重塑道路交通智慧型監控

瀏覽數 1124 整編 編輯 張磊 一 智慧型交通技術交叉與融合趨勢明顯 在城市化程序中,國內多數城市的道路交通現階段都面臨著 路口事故 交通擁堵 停車難 等一系列問題。如何強化交通管理,解決 緩解這些交通 疑難雜症 為公眾提供準確 及時 可靠出行資訊服務,是擺在交通管理部門的核心課題,包括現場執法...

從需求開發會議談起

今天專案組進行了乙個小時的需求討論,由於剛進入專案組不久,對系統了解不多,幾乎沒有發言一直在旁聽。此次會議得出一點心得 系統開發中最重要的就是解決方案的敲定,解決方案選擇對的話,就算沒有達到事半功倍的效果,開發人員開發起來也能輕鬆很多。怎麼才能產生乙個好的解決方案,這就與對系統 需求 技術的掌握程度...