項目經驗總結---網頁在線聊天

       已經好久好久沒有發博客了,自從上次解決完實習招聘的事以後,就一直忙於學習上的事了,最近考完了最噁心的算法分析與設計,總算是有點時間來寫寫有關於技術,項目的事了。在這一個月左右的時間了,我作了兩個很小的,至關於課程設計的大做業,兩個都是B/S結構,一個是物品銷售的系統,實現銷售商和生產商在網頁上操做數據,由於是軟件質量保證和測試的大做業,因此咱們還用了qunit和loadui進行了代碼測試,這會在我另一篇文章。另外一個就是我要說的網頁在線聊天的大做業,這裏主要用到了websocket實現雙向通訊,百度地圖API實現位置定位這兩門技術,不難。css

       這裏主要是和你們分享一下作這個大做業的感悟,固然不能和大公司,或者一個大項目相提並論,畢竟仍是一個學生,對於項目開發和管理的經驗就那麼點,因此若是要噴,請就事論事,勿涉及雙方的父母。前端

       之前我一直以爲,技術第一,我掌握了不少的技術,我就能開發好一個項目,請原諒我這種想法,我也上過不少有關於項目管理,項目開發,軟件工程的課,老師也會一直指出要分需求分析,概要設計,詳細設計,編碼,發佈這五部驟,可是從沒有重視過,開發麼,實現功能就能夠了。可是真的不同,只有本身真的做爲一個leader開始開發一個項目的時候纔會有所感悟。先說說這個項目開發的基本狀況,咱們是三我的,其中一我的是醬油,對於編碼不太會,能夠偶爾負責寫一些文檔(你們都懂的),另外一我的會一些後臺開發,可是也不是很靠譜,還有一個我。程序員

       大做業的題目是我定的,由於我以爲會比較有趣,並且難點都在前端,我是負責前端開發的,這樣保證起碼這個做業能夠作完。在分工上,我定義了那位醬油同窗X負責寫文檔,實際上到後來,文檔都是有我和另外一個同窗Z寫完的,這是後話了。另外一個同窗負責創建數據庫和編寫後臺基礎代碼(enity,DAO),而後我負責前臺開發,當時我估摸着最後也會是我來負責先後臺的交互,即編寫action類。事實上也是如此。web

       定義完分工以後,我開始估算這個大做業的大小,這時候,實際上是初略的估計大做業的功能模塊。當時初步構想是好友管理,聊天,地圖,管理員管理四個主要的模塊。算法

       而後分析技術難點,好友管理那塊若是時間來不及,就直接拖一個表格控件,技術都已經成熟了,應該沒有問題;數據庫

       聊天那塊,websocket交互沒有作過,可是聽室友說挺簡單的,這裏定義一個優先解決的困難點,由於這時基礎模塊;api

       地圖那塊,百度地圖api用過一次,基本的流程都還有點印象,並且寫過一些demo,正好能夠用上,實現的時候,可能有些困難,可是應該均可以解決,劃分爲第二須要解決的困難點;tomcat

       管理員管理那塊,懶一點就相似於好友管理,直接拖datatable控件解決;websocket

       通過上面的一陣分析,估計到我的的能力,以爲這個大做業是可行的,就是可能到時候本身要累一些。接下來就開始正式的需求分析階段架構

       需求分析,其實說白了,就是寫文檔,寫需求分析文檔,在和同窗Z討論了一下,一塊兒分析設計了大做業的功能模塊,用戶功能(用戶基礎功能,用戶核心功能,用戶附近功能),開發順序也是依次。管理員功能(用戶管理,公告管理)。

 

      

        在定義完需求以後,咱們又立刻開始定義概要設計和詳細設計了,這其中包括數據庫設計,項目總的文檔結構,所用的技術,而後開始寫文檔,這裏要說一下,不要太急着開始詳細設計,極可能需求還會變,這會付出慘重的代價的,此次大做業我深入的體會了爲何程序員討厭寫文檔,實在是由於寫文檔可能會耽誤不少的開發時間,咱們這個大做業最後的文檔有70多頁,20000左右的字數,幸虧有些地方是複製粘貼的,可是那也是很蛋疼的一件事,由於實在是分不開身再寫文檔了,說一句哦,本人其實不討厭寫文檔,相反仍是以爲寫文檔很好,有利於理清思路,可是在特殊狀況下,實在是以爲有些討厭了。

        在偷懶以及直接忽略概要設計文檔和詳細設計文檔以後,我直接開始了前端頁面的開發,Z同窗也是不久以後就直接開始創建數據庫,而後開始寫enity,dao層。在網上找到了一個不錯的開源的desktop模版,而後試着將所須要的頁面集成進去,這樣能夠省去本身設計的一些時間,主要是設計這塊不太會,css寫的也很差,讓我寫出漂亮的頁面不太現實,因此只有直接套用現有的,而後再此基礎上改,相信不少同窗也是這樣的,可是帶來的一個問題是,有時候你可能根本找不到應該在哪裏改樣式,哪裏改js代碼。這可能跟經驗相關了,看你的直覺了,通常css代碼,能夠選擇用chorme打開,按f12,而後放大鏡,選中頁面的某一模塊,而後你就能夠在調試器中看到css代碼了。

          回到正題,這樣咱們的項目提早開始了,由於只有兩我的,並且時間也比較緊了,開始開發,留給咱們的時間只有5天了,其中包括一個週末,這時候,我開始首先解決個人技術難點,實現websocket,在網上找了一份代碼,調試更改以後,在tomcat7下運行成功了,而後分析源碼,找到了到時候須要更改的部分,這樣第一個核心技術解決了,而後開始第二個技術難點,地圖,經過查看官網上的demo,而後本身的demo,功能都差很少實現了,到時候只須要從後臺讀取數據,而後顯示出來就能夠了,這時候就發現,當初的數據庫設計有些問題,須要改,老實說,這時候代價已經挺大的,好吧,解決完上述兩個最主要的問題,基本上內心已經有底了,這時候已是星期六的晚上了,還有三天,星期天,我就開始整合階段了,將Z同窗已經寫的東西和起來,而後本身開始actio層的編碼,固然不用想,dao層確定須要更改的,這時候項目的開發人員就已經只剩一個了。我開始集中代碼開發階段了。最終項目怎麼樣其實就取決於我一我的了,我不是想說本身有多厲害,其實我一直以爲每一個人都是能夠在一個項目中找到本身的位置的,關鍵在於leader怎麼管理,這裏就是我管理的一個問題,爲何不能定義好統一的數據交互接口,爲何剛開始的分析設計的時候不詳細一些,這時候也不須要將全部的重任都壓於一我的身上。這就是個bug。

           雖然最後項目差很少完成了,效果也還不錯,有關於項目的技術總結,看狀況吧,其實也沒什麼好說的,都是一些簡單的技術,稍微學一下,研究一下就會了。關鍵在於項目的管理。經過這個項目我有一些體會,與各位共勉:

           1. 需求分析階段,儘可能慢一些,和概要設計,詳細設計有必定的間隔,這樣能夠有時間反映,修改需求分析,不至於讓概要設計和詳細設計作出太大的變動

           2. 應該分配合適的工做給合適的人,每一個人在項目中都是能夠有所做爲的,關鍵在於你怎麼去管理他。

           3. 定義統一的數據交互接口很重要,你們有一份接口文檔,就差很少能夠實現先後臺分離開發,我相信一些真正的項目也確定是這麼作的

           4. 通常晚上,夜深人靜的時候,頭腦比較清楚,適合進行需求分析,詳細設計,還有一我的永遠是想不全的,須要集思廣益。

           5. 寫代碼最好的就是在先解決完全部的技術難點以後,進行集中開發,一天,兩天就一直在開發代碼,效率不錯,bug也少。

           6. leader必須適當的關注一下小組內各個成員的進度,還有不要催的太嚴,注意交流和處理問題,矛盾,分歧,其實主要是作人了。

           7. 小的項目能夠先從頁面開發開始,先進行頁面原型設計,由於一旦頁面肯定,基本上的功能也就肯定了,因此誰說web前端不適合項目架構,其實前臺分析的好,對於整個項目的架構是頗有好處的。我就想成爲這樣的人,由前臺轉向項目架構,固然我不只僅會web前端,後臺也會一些。

           8. 項目管理真的是一門學問。

相關文章
相關標籤/搜索