持續建模,關注業務抽象,以任務分派執行跟蹤系統為例
前言:我認為,抽象和封裝是物件導向程式設計思想的精華,這在兩年前我已經發過這方面的帖子了。現實中,給無OO建模概念的人員直接交流OO建模是何等困難!他們恪守著資料庫建模,程式碼優先的律令,無論我如何強調關注業務本身,對業務抽象,實現業務軟體模型和現實世界對映的重要都無濟於事。經常發生的現象可能是:我說的理論性強一些,會被視為花架子,難以實現;我說個簡單的需求作為例子,還沒有說出如何抽象建立OO模型,別人就資料建模出來了,表示出資料建模方法的高效率,而對OO建模帶來的參與者溝通的便利、團隊協作開發的保障、應對需求必定變化的優勢等優點視而不見。發生這種尷尬現象來自於我的原因,還是篤定的這套理論系統落地實現案例太少,關注業務變化本身的程式設計思想還不為多數人認同。因此,本人斗膽借用“Just Do It”精神發此貼,將討論重點放在業務上,說明——挖掘業務需求,抽象歸納是如何適應需求的變化。
但是,我並不否認程式導向程式設計方法論,並不否認軟體實現最終還是要資料庫建模。我只是認同罈子裡很多人的觀點:將資料庫建模的戰略地位降低一點,作為物件持久化來看待;將程式碼編寫階段拖後一些,先看看客戶需求,以及應對變化需求的解決方法。
正文:唯一不變的是變化。
需求一:
客戶要求做一個任務分派跟蹤系統,業務流程大致如下:公司經理可以給部門職員分派任務;任務包括任務說明、要求、完成時間等內容;部門職員收到分派的任務之後限期完成,報公司經理辦理情況;系統根據任務限期時間,對於未完成任務的經辦人傳送提醒;系統對於超期完成的任務執行情況進行記錄。
一個具體的例子:部門經理要求所有職員在2013年1月1日之前報一份2012年度工作總結。
資料庫建模可能是這個樣子:任務表(包涵任務Id、任務要求、任務期限、分派人、執行人、完成時間等欄位);任務提醒設定表(包涵Id、任務Id、距離任務限期提醒週期(比如距離任務結束還有1小時、8小時、12小時等)、提醒內容);成員表(包涵Id、成員名、賬戶、密碼、職位(經理和職員))。
由於需求明確、簡單,程式碼部分就是實現以上資料庫模型的crud操作,那些簡單的業務流程完全可以寫入crud操作中,例如判斷當前時間是否到了該傳送提醒未完成任務的經辦人時間。
這樣做出的軟體效率高,同時滿足了需求一,假設這個軟體成為軟體系統一。
但是,我並不否認程式導向程式設計方法論,並不否認軟體實現最終還是要資料庫建模。我只是認同罈子裡很多人的觀點:將資料庫建模的戰略地位降低一點,作為物件持久化來看待;將程式碼編寫階段拖後一些,先看看客戶需求,以及應對變化需求的解決方法。
正文:唯一不變的是變化。
需求一:
客戶要求做一個任務分派跟蹤系統,業務流程大致如下:公司經理可以給部門職員分派任務;任務包括任務說明、要求、完成時間等內容;部門職員收到分派的任務之後限期完成,報公司經理辦理情況;系統根據任務限期時間,對於未完成任務的經辦人傳送提醒;系統對於超期完成的任務執行情況進行記錄。
一個具體的例子:部門經理要求所有職員在2013年1月1日之前報一份2012年度工作總結。
資料庫建模可能是這個樣子:任務表(包涵任務Id、任務要求、任務期限、分派人、執行人、完成時間等欄位);任務提醒設定表(包涵Id、任務Id、距離任務限期提醒週期(比如距離任務結束還有1小時、8小時、12小時等)、提醒內容);成員表(包涵Id、成員名、賬戶、密碼、職位(經理和職員))。
由於需求明確、簡單,程式碼部分就是實現以上資料庫模型的crud操作,那些簡單的業務流程完全可以寫入crud操作中,例如判斷當前時間是否到了該傳送提醒未完成任務的經辦人時間。
這樣做出的軟體效率高,同時滿足了需求一,假設這個軟體成為軟體系統一。
相關文章
- 技術管理之路四、任務管理:如何跟蹤執行?
- Jenkins Android APP 持續整合體系建設二—自動部署、執行測試任務,關聯打包任務JenkinsAndroidAPP
- 以 egg.js 為例的持續整合(CI)、持續部署(CD)JS
- 【逆水寒】多方任務系統的資訊架構與行為引導設計——以懸賞系統為例架構
- Laravel 團隊任務管理系統(持續開發、優化)Laravel優化
- 利用 Screen 保持 VSCode 連線遠端任務持續執行VSCode
- 跟蹤執行命令T
- 《原神》繼續追蹤痕跡任務攻略 繼續追蹤痕跡任務怎麼做
- 第三項任務——用例建模
- 高效的任務跟蹤管理工具
- 網易Q3財報遊戲業務持續破百億,多元新品受關注遊戲
- [全程建模]業務用例到系統用例的變化圖
- 以醫為本驅動行業可持續發展行業
- Windows 檢視系統資訊及持續執行時間 - systeminfoWindows
- 通過Docker容器執行持續整合/持續部署Docker
- 分散式系統的跟蹤系統分散式
- ATC系統跟蹤事項
- 例項後臺執行訓練或任務
- IT系統的業務模型分析與系統建模模型
- 以 Golang 為例詳解 AST 抽象語法樹GolangAST抽象語法樹
- 跟蹤客戶端執行的SQL客戶端SQL
- 使用sqltrace跟蹤session執行的sqlSQLSession
- mysql如何跟蹤執行的sql語句MySql
- [全程建模]系統用例和業務用例的區別以及用例粒度的討論
- 『學了就忘』Linux系統定時任務 — 88、迴圈執行定時任務Linux
- 關機提示 ”task host window任務宿主正在執行關閉任務並且正在停止已執行的任務“我是這樣解決的
- 持續整合之hudson的構建任務排程
- 任務執行順序
- 關於SD業務幾個TCODE操作的SAP表跟蹤
- oracle優化與可持續執行Oracle優化
- Web命令執行筆記(持續更新)Web筆記
- 分散式跟蹤系統zipkin簡介分散式
- 【分散式跟蹤系統Zipkin 介紹】分散式
- Zipkin開源分散式跟蹤系統分散式
- 18款最佳Bug跟蹤管理系統
- EA業務建模實踐之業務用例圖
- 介面的行為抽象和抽象類的行為抽象抽象
- UI 阻塞行為:微任務與宏任務UI