程序員開發思考-1
今天對突然對自己平時的開發凡是思考了一下,出於以下兩個原因:
1.自己對自己負責的需求的開發時間評估總是不準或者說壓根就沒有認真評估過,導致一直都沒思考這個主題的內容。
2.覺得自己對某個功能的開發周期太長,或者說是開發出來了,總是記不住自己的開發思路,老大問起的時候,總是解釋不全,要重新翻看自己的代碼才知道自己的邏輯,有點可笑。
3.自己開發出來之後,bug總是比較多。
基於以上原因,自己回顧了一下軟件開發過程,如下。覺得任何一個功能,都要按照軟件開發流程的模式去執行才符合一個高級工程師或者說架構師的風格。根據自己的思考,手繪了以下圖(ps.哪位朋友有比較好的關於畫圖這方面的軟件,希望可以介紹幾個,下次我就不用手工畫圖了,嘿嘿~)
問題1:
開發需求,只有每次都自己主動去評估開發周期,自己才會對自己更了解,同時對需求的開發周期評估才會更準確,更有經驗。——這樣你才有膽量去做項目經理或者說“老大”。至於說如何去評估開發周期,我個人認為有兩個參考點:①業務復雜度;②算法復雜度;
這裏附帶個連接,挺有意思的:人生經驗——如何在三分鐘內完成開發周期評估
問題2:
軟件開發,任何時候思考都比編碼更重要。思考過的編碼才更清晰更少bug。大牛都是90%的時間思考,然後10%的時間用於編碼的。如果思考好了,編碼真的是個簡單的事情。關於如何思考,在軟件開發這方面,當然是按照工業的軟件開發流程啦,認真想想,這個流程真的是很有道理的,按照流程去開發(也不用嚴格按照要求每一步都做完,但是思路上得是這樣),開發出來系統(功能),才更具可擴展性,可用性以及可伸縮性。軟件開發就是要求開發系統要考慮以下幾個特性:①可擴展性;②可伸縮性;三高性能;④可用性。至於這幾個詞是什麽意思,這裏我就根據自己的理解大概說一下:
可擴展性:能適應需求的變化,以及後面軟件的擴大,達到改動最小;
可伸縮性:單機性能達到瓶頸的時候,可以方便的通過橫向擴展,增加機器就可以承載更大的請求;
可用性:其實就是容錯性,在系統正常處理的過程中,出現異常的時候,也能保證系統整理邏輯正常的,最簡單的例子就是:數據庫的事務,等等~
高性能:這個就不用說啦,就是讓系統的處理能更加高效,更少的資源占用或者說處理邏輯更加簡單等等~
問題3:
其實答案和問題2一樣,只是開發出來之後,自己要認真地做單元測試走一遍流程。在臨界值的地方,要認真度量好,最好也做一下臨界值測試~
下面是關於上面這樣圖的以下思考總結:
1.其實軟件開發流程,就是跟哲學一樣解決幾個問題:可以做?-》做什麽-》怎麽做-》怎麽樣
可行麽:
可行性分析:經濟可行性+法律政策可行性...
做什麽:
需求分析:功能+性能+硬件環境條件
怎麽做:
概要設計:建立系統的邏輯模型,與計算機無關;架構(分模塊等)+數據庫(那些表,不用具體到表字段)
詳細設計:物理模型,可以直接翻譯成代碼;算法+數據庫(表字段)
編碼:根據詳細設計,把詳細設計的文字翻譯成具體的編程語言而已~
怎麽樣:
測試:單元測試+回歸測試+系統測試
2.概要設計階段要認真考慮以下幾個特性(各個特性的含義以上已經有解釋):
可擴展性,可伸縮性,可用性,高性能
3.平時說的電商網站有以下幾個特性:
高並發,高可用,高性能
即所謂的三高。這只是電商網站或者說是一些軟件的特性而已。而我們平時說,設計一個系統的時候,要考慮的是不一樣的概念來的,比如說,我們設計一個系統,要考慮:可擴展性,可伸縮性,可用性,高性能~
程序員開發思考-1