1. 程式人生 > >對專案開發流程的思考和小結

對專案開發流程的思考和小結

最近在專案開發中遇到的問題

1、對要開發的產品的最終形態沒有明確的瞭解,沒有明確的目的性,導致多次返工,重新設計 2、沒有明確的開發順序,開發的模組東一塊西一塊不流暢不連貫,導致模組之間耦合太高,程式碼散落多處難以繼續開發和維護, 3、沒有系統設計結構圖,沒有區分資料層面、控制層面、業務層面、展示層面、互動層面、介面層面,不能隨時瞭解當下的開發位置和進度,無法預計後續開發的時間和下一個合適的開發位置。 4、程式碼寫的過分冗餘,不夠優美,主要是因為沒有寫虛擬碼來說明一個函式中每一部分的邏輯以及邏輯上下的關係 5、程式碼寫的過分硬編碼,不夠抽象,當發現要抽象的時候,需要重新修改之前的編碼 6、沒有考慮資料互動的結構設計,資料結構設計應該單獨拎出來作為單獨函式封裝以便後續擴充套件 7、花過多的時間在介面設計上,時間浪費在過多的樣式調整上。 8、每次編碼沒有寫上測試的內容,開發進度被多次延誤,不能保證程式碼的正確性,基礎性的bug過多。 仔細的梳理流程後,大致整理了如下幾個步驟。

第一部分、分析和規劃設計

如下2步,需要畫圖、筆記、文字記錄、演算、推理、畫流程圖、畫架構圖

1、選型、明確產品介面、互動設計、功能設計、模組區分,尋找相仿的產品上手體驗、操作,感知功能的使用和互動的體驗,目的是為了瞭解即將要做的產品有大致的模型,對產品模型瞭解的越細緻越好

2、分離架構,對產品從各個維度分離架構,從功能,目錄,邏輯拆分,抽象,業務流的明確,資料流的流向,互動體驗的設計,從整體拆分成區域性,針對每個區域性再繼續拆分,從區域性整合成系統,考慮整體和區域性之間的相互影響關係

迴圈這2步,最終得到一個產品系統,應該對產品系統非常瞭解,從整體到區域性,從需求到邏輯,端到端的資料流向,互動體驗設計,資料庫表結構設計

第二部分、實施

3、文件編寫,按照系統的各個區域和子系統,編寫對應的文件註釋,說明此子系統的功能、大致邏輯、含有的介面。 此外,流程應該按照先資料庫層面 --> 邏輯控制層面 --> 資料展示層面 --> 互動體驗層面 --> 介面設計層面的順序來規劃和思考。 同時考慮擴充套件性的問題,子系統是否可插拔,元件之間是否強依賴,必要的時候完成架構層面大的抽象。 文件需要大概明確此子系統模組的測試結果是什麼,提前演算模組的測試步驟和結果,後續細化的程式碼必須要通過此測試要求。

4、明確每一個子系統和元件需要使用到的工具、框架、第三方庫、以及重要的語法或者類設計、或者程式設計技巧、或者設計模式等等。

5、開發順序確認,明確這個系統的各個部分的開發順序,獨立的子系統先開發,耦合依賴強烈的系統最後開發,簡單的先開發,難的後開發。 規劃好開發進度計劃。 先開發資料庫層面的程式碼,再開發資料控制層面,再開發資料互動層面,再是資料展示,互動體驗設計,介面開發應該放到最後,介面開發最花時間。

6、虛擬碼編寫,使用中文表達邏輯,加上必要的程式設計語法混合表達。 虛擬碼的編寫是必須的,而且虛擬碼要寫到可以直接演算出程式碼結果的程度,即可以通過編寫虛擬碼來幾乎100%的確定是否符合模組測試的要求。 虛擬碼必須要完成資料互動的結構設計 虛擬碼必須要對函式有明確的定義和解釋,可以說明此函式的作用

7、編碼,編碼必須符合虛擬碼的邏輯,編碼應該多次測試,慢步前進。 注意編碼的版本控制 編碼應該儘量保持優美的邏輯和語法使用 編碼的變數命名應該特別注意 每一次的編碼應該最低按照一個函式單元,即最小編碼單位是一個函式,一旦決定編碼,就至少完成一個函式單元,或者取消本次函式的編寫。 每個函式的完成,都必須要達到虛擬碼對此函式的定義和解釋,注意高內聚和低耦合的問題。 如果沒有高內聚,要適當拆分邏輯和程式碼 如果沒有低耦合,要適當抽象程式碼,合併其他同類函式

8、程式碼review,優化程式碼

以上每一步,如果出現重大問題和困難,應該向上返回尋找解決方案,因為這些順序有強烈的依賴性,所以向上找到源頭重新設計規劃。 也正因為步驟之間的順序強依賴性,後一步都強烈依賴於前一步,所以前面的步驟必須打好基礎,才可以減少返工重新設計和規劃的問題。 不是每一步都必須要做到完美,也不是每一個專案都需要使用到每一步,就像PMP一樣,是一個套路,需要合理按需使用,但是整體的規劃到實施的邏輯是要保證的。 多按照這種套路來完成目的,大部分的事件都在鍛鍊思考和規劃設計能力,編碼只是最後實現的一塊而已。

總結

1、開發最小單元應該是一個函式 2、慢步前進,多做測試 3、先有資料,再有邏輯 4、不要花太多時間在介面上 5、虛擬碼非常重要,必須要寫 6、文件註釋非常重要,必須要寫 7、資料庫設計永遠是第一步,每次修改、規劃設計、增加功能、維護、都首先考慮資料庫 所有的程式碼都圍繞著資料庫的資料進行設計、開發 8、編碼應該是最後的實現手段,應該是最後的環節 9、多思考,少編碼,思考的越多,錯誤越少。 10、適當的冗餘和抽象