持續一個月的資料庫實訓,讓我參與了軟體工程化的開發過程。其中體會最深的便是我們這個實訓網的幾個之最:
一.項目最大:項目大是因為我們這個事業起點網站涉及到使用者眾多-高校,企業,學生,老師,專家,第二個原因是網站的功能多-使用者管理,網上實習,網上競賽,畢業實習設計,專案管理,人才庫管理,人才推薦,搜尋 ... 項目大很容易造成系統範圍的泛濫,在我們的開發初期,由於需求不太明確,功能實現沒有重點,造成了需求範圍的擴大,給項目開發進度造成了嚴重的滯後性。然後我們召開了會議討論了這個問題,一致認同先把項目的準系統實現,將網站的基本架構搭建起來,最後再在這個基礎上繼續增加我們網站的其他功能。因此在這個過程中,我深刻體會到了軟體工程初期階段的需求分析以及概要設計的重要性,這兩個文檔是指導我們後期開發的最重要的依據。
二.資料庫表最多:如此龐大的系統,就需要龐大的資料庫來支援,所以項目大的直接後果就是我們的資料庫表特別多,而且表與表之間的依賴關係也複雜,實體類之間的關係眾多,設計起來有一定的難度。資料庫的另外一個問題是-資料表的屬性,資料表屬性的設計完全是依賴於我們剛開始做的需求分析文檔,如果需求分析不完整的話,就會造成資料庫表屬性的缺失,從使用者的角度看,就會覺得你的系統提供的資料不夠全面,資訊量小。
三.Team Dev最大:我們團隊一共有十四個人,這個對於我們的專案經理來說,是一個相當嚴峻的問題,畢竟十四個人的團隊相當於其他幾個小組加起來的人數總和,管理起來有相當大的難度。對於我們這些小組成員來說,由於溝通渠道太多,造成了我們項目中遇到問題,不知道去跟哪個小組成員溝通。為瞭解決這個問題,我們在團隊中又選出了三個小組長,小組成員遇到問題,先去諮詢小組長,然後小組長提供反饋資訊。
四.項目各個模組間藕合度高:網站涉及的各個功能模組之間的聯絡緊密,模組之間的介面設計的好壞是項目最終整合成功與否的最重要因素。使用者管理這一個部分要為每個模組提供介面,主要是使用者的編號以及使用者的類型等。每個頁面之間的連結也是其中重要的模組介面。這個問題由於我們前期做好了充分的溝通以及按照概要設計中的介面說明去設計自己的模組,所以後期的模組整合沒有遇到什麼太大的不相容性等問題。
接下來就談談我這一個月中的工作:
需求分析階段:需求分析階段我完成了網上競賽模組的需求分析,其中遇到的主要問題是閱讀材料後發現網上實習,網上競賽,畢業設計指導這幾個模組的功能是類似的,提取需求分析後不夠明確,經過幾次跟湯老師的交流後,確定了這幾個模組之間的具體差別,網上競賽模組的基本需求也大致確定了,網上競賽模組的準系統就是學生通過網站報名參加競賽,企業審核通過後,專家對作品進行評分,排名。
概要設計階段:在需求分析的基礎上,對網上競賽模組進行了比較具體的概要設計,流程圖(IPO圖以及使用案例圖);這個階段的主要痛點是對網上競賽商務程序的描述,如何?學生報名,企業發布,專家評審的步驟操作,與及跟其他模組對該模組的限制。
資料庫設計階段:我負責整合初步資料庫設計說明書,分配組員按照各自的功能模組的具體需求設計自己模組需要的資料表,然後對這些資料表進行整合。在這個過程中遇到的問題就是資料庫實在是太大了,最後下來一共有30多張表,表與表之間的關係複雜,關聯性大,需要設定的外鍵較多,很難將所有的屬性欄位給提取出來,屬性的類型設定也是一個問題,採用數值型還是採用字串性在資料庫設計中尤為重要,因為在後台搜尋方面,數值型比較快捷,而在資料顯示方面,字串型又有直接讀出不用轉換的好處。每個表的主鍵我們採用了用實體的編號去標記它,因為這樣實體間關聯起來會更加簡單。資料庫的設計關鍵是要對整個項目的整體的把握,並且要細化對每個實體類的具體屬性要求。
詳細設計階段:我覺得是最重要的一個方面,一個完整的詳細設計說明應該可以協助程式員完成具體的實現,程式員可以不用考慮模組之間的耦合問題,只需要將單一的功能按照邏輯順序編寫出來就可以了。網站整體構架搭好了,我們就可以在裡面填充自己的功能了。但是因為時間太倉促了,我們這個階段也就縮水了,帶來後面的問題就是後期代碼編寫的時候比較混亂,函數介面較難統,介面風格多樣化。這個階段,我的主要工作是跟隊友一起設計出了網上競賽模組的學生,企業,管理員,高校以及專家的介面。
編碼階段:我們是用ASP.net開發的,主要任務就是從工具中選出你想要的控制項,然後在控制項響應函數中填充代碼,完成相應的事件響應。這裡遇到的最大問題是頁面的排版問題,因為自己是第一次開發網站,造成了自己設計的介面風格單調,不太美觀,現在就盡量做到頁面的整齊。這個階段主要做的就是:寫代碼→編譯→調試→寫代碼。
這一個月中我學到了很多東西,技術方面就是學會了用ASP.Net編寫網站,最重要的是讓我經曆了軟體工程化的所有階段,讓我對整個軟體工程有了感性的認識,而且將大學三年所學到的知識進行了一次系統的串聯,更重要的是學會了如何跟項目團隊中的成員溝通問題,這是一個寶貴的實踐經驗。