天天看點

軟體設計基本流程01 軟體設計的靜态視角02 為軟體降生而設計03 為軟體生存發展而設計04 總結

The only way to do great work is to love what you do. If you haven't found it yet, keep looking. Don't settle.

随着資訊化和數字化的持續推進,越來越多企業和人員會涉及到軟體開發業務中。了解軟體設計流程成為了IT和OT、業務之間有效協作的關鍵基礎背景知識。本文旨在讓産業界的朋友對軟體設計的基本流程有所了解,一是鑒别合作方的業務能力,二是便于和合作方有效協作。

01 軟體設計的靜态視角

好的軟體設計需要三個階段遞進,我們先講第一個階段:靜态視角或者藍圖視角。

很多軟體設計是從功能讨論開始,期望有亮點、有特色,結果很有可能是可彙報,不可使用。還有一些軟體設計是從對标參考對象開始,期望有更多的功能,結果很有可能是功能比哪個都多,但員工抱怨不斷。第三類常見的軟體設計着手點是單個問題的拆解,結果很有可能是某個上帝可以正常使用,但在推廣時各方阻力很大。建議軟體設計先從人入手。

第一步:梳理業務的相關角色

  • 角色的基本資訊
  • 角色的代表人員的簡要資訊
  • 角色的訴求

第二步:梳理角色的工作

用一句話(10 個字以内)描述每個工作。然後描述每個工作的流程,流程中的節點具有幾個特性:a、有外界的資訊輸入;b、向其角色、系統輸出資訊、檔案;c、與其他角色、系統有互動。

第三步:基于 IT技術的能力重新設計流程

這個環節即使選做,也是必做。選做是因為變革需要契機,有時隻能把一步拆成兩步,先把線下搬到線上,之後再逐漸優化。必竟是這是一次難得機會,有可能讓既有的工作有質的飛躍。

第四步:整理功能清單并分類組合形成系統邏輯架構圖

此時的功能需求相對清晰,将耦合性強的功能組合到一起,将獨立性強的功能隔離開。整體思路與企業組織設計的思路相似。低耦合高内聚是一種追求和目标。

第五步:将邏輯架構落實為真正的軟體子產品架構

這時要考慮軟體工程的技術問題,屬于純軟體的技術領域。包括微服務、隊列、資料庫、緩存、容器等等軟體成型元件都會被考慮進來,一起為系統添磚加瓦。

第六步:設計出部署架構、實體架構

将軟體與實物部署相結合,包括網絡規劃、伺服器規劃、資料庫規劃、容災備份等等。

至此,軟體的靜态視角設計完成,我們就擁有了軟體的宏偉藍圖,就可以撸起袖子開發了。産品、UI、前端、後端、硬體、質控、質保等等一群人不亦樂乎地忙乎起來。

02 為軟體降生而設計

在獲得了軟體藍圖之後,還需要為軟體降生而設計。也就是要為軟體傳遞、部署、上線等進行設計。包括但不限于要解決的問題如下:

  • 如何将軟體分發到需要它的地方?
  • 如何讓實施人員更高效地完成安裝調試?
  • 如何将初始資料導入到系統中,包括使用者賬号、組織架構、業務流程、基礎業務資料、老系統中的資料?
  • 如何提供教育訓練讓使用者真正能把軟體用起來?
  • ……

隻有這些問題得到提前設計與做好應對設計和開發,才不至于讓軟體姗姗來遲,甚至錯過了降生的機會。

03 為軟體生存發展而設計

軟體所處的環境是持續變化的。是以行業内一般認為一套業務系統用幾年被淘汰掉是正常的。為什麼?因為之前傳遞的軟體是靜态的!

為了讓軟體發展,需要讓它能像孩子一樣,不斷了解世界,不斷學習,不斷改造更新自己,才能跟上企業的發展。需要做的設計包括但不限于:

  • 對既有功能測量、跟蹤的能力
  • 适應通路壓力增長的能力
  • 适應資料量不斷增加而不被拖累的能力
  • 适應新業務變化發展的适配、擴充能力
  • 将數字化的思想引入到軟體設計中

04 總結

好的軟體設計剛開始會感覺有些慢。因為一開始并沒有噼裡啪啦的敲代碼。好的軟體設計在開始階段會不斷深入談論業務。因為失之毫厘謬以千裡。軟體後期修改的成本極高,包括人力成本、工期延期的風險、品質下滑的成本等。

建議

  • 讓業務骨幹來參與到軟體的需求調研和業務設計,與供應商軟體架構師們一起設計;而不是讓一些“閑人”來湊熱鬧。
  • 主動幫助供應商了解業務,因為即使再老練的供應商也不會懂多少你企業的水深水淺。
  • 軟體前期多聽聽階段彙報,将上線時的一次性驗收拆解成很多個小驗收。将壓力提前分解,讓軟體品質更健康。