概述
我們的客戶是一家咨詢管理公司,總部位于美國,主要為一些公司或者組織機構提供咨詢服務和能夠促進生產力發(fā)展的軟件解決方案。
客戶想要開發(fā)一個綜合業(yè)務管理系統(tǒng),能夠將可定制的在線學習、調查、考試和檢查等內容系統(tǒng)地結合起來,可用來授課、調查信息或者對人員進行培訓等。用戶可以自己設計一個內容包(Package),內容包中可定制試卷(Exam)、調查問卷(Survey)、檢查表(Inspection)、課程(Course)等不同的內容,然后通過系統(tǒng)創(chuàng)建任務(Assignment)并指派給不同組別的人去完成。此外,用戶還可以定制培訓計劃(Training Plan)給指定的人去完成,被指派任務的人可以通過通知郵件中的鏈接或者直接登錄Web系統(tǒng)去完成相應的任務,然后,系統(tǒng)將自動對結果進行評分并作分析,最后生成報表供任務指派者進行統(tǒng)計分析。
需求
- 系統(tǒng)可創(chuàng)建用戶角色,一個用戶可獲得一個或者多個角色,用戶只可訪問其角色所配置的模塊集合;
- 系統(tǒng)可對用戶進行分組管理,分組可按組織或者區(qū)域中的等級進行劃分,也可以按照職位的高低進行劃分;
- 用戶可以自己設計內容包(Package)的信息,也可以從咨詢公司在線購買或者從其它類型的文件中導入。系統(tǒng)支持顯示/播放一些常見格式的多媒體文件,如圖像、聲音和視頻文件;
- 系統(tǒng)通過郵件或提示信息來通知/提示用戶。在系統(tǒng)內部,用戶可以通過設定的提示信息來獲取消息,在系統(tǒng)外部,用戶可以通過郵件來獲取相應的信息;
- 為了方便用戶設計內容包的信息,系統(tǒng)設計了不同的模版供用戶使用,且內容包中設計的內容及樣式與完成任務的界面完全一致;
- 系統(tǒng)支持設計可視化的圖形鏈接任務(Diagram)并指派人去完成;
- 系統(tǒng)支持在完成任務的過程中插入審核流程,即指派任務—被指派任務者完成任務—發(fā)送給指定的人審核—請完成任務者修改—結論統(tǒng)一,將任務標記為完成;
- 用戶可以通過Windows應用程序或者Web服務來完成相應的任務(Assignment);
- 系統(tǒng)可以監(jiān)控任務的完成情況,并通過郵件提醒用戶及時完成任務;
- 系統(tǒng)設置多個應用程序編程接口(API),支持從其余的數(shù)據(jù)管理系統(tǒng)導入數(shù)據(jù)并使用;
- 系統(tǒng)能夠對完成任務的結果進行分析,并產生分析報表。
系統(tǒng)截圖
動態(tài)統(tǒng)計圖表(Dashboard):

內容包(Organize Package):

培訓計劃(Organize Training Plan):

繪制任務圖形(Draw the Diagram):

計劃表(Schedule):

分析報告(Analysis Report):

系統(tǒng)設置(Option Setting):

解決方案
涉及的技術
- .NET Framework 4.0
- IIS6/IIS7/IIS8
- WCF 4.0
- Dev Express Controls 13.1.5
- Microsoft SQL Server 2008 R2
- Visual Studio 2010
- ASP.NET
- Updater Application Block
系統(tǒng)架構
諾懷參與了整個項目的需求分析、設計、開發(fā)、完善和測試幾個階段。根據(jù)客戶的需求,系統(tǒng)需具備各種良好的特性,如良好的用戶體驗、迅捷的響應速度、強大的性能、豐富多樣的分析能力、實時的跟蹤監(jiān)控能力等。此外,用戶還能夠通過登錄Web應用程序或者電子郵件中的鏈接瀏覽系統(tǒng)指派的任務。

Web應用程序
實際上,該系統(tǒng)的Web部分可以被認為是富互聯(lián)網應用,因此,DHTML & AJAX 被用來實現(xiàn)主要的功能以使系統(tǒng)獲得更好的可拓展性和可維護性。我們使用的DevExpress控件不僅為系統(tǒng)提供了一致且令人愉悅的用戶界面,而且提供了強大的軟件功能,提升了開發(fā)的質量。此外,由于采用了ASP.NET AJAX開發(fā)框架,使得該系統(tǒng)有了更加豐富的用戶體驗。
Windows應用程序
對于Windows應用程序,為了使系統(tǒng)擁有良好的可擴展性和合理的體系結構,我們采用智能客戶端工廠(Smart Client Software Factory)去構建系統(tǒng)的整個架構。為了克服Windows應用程序部署困難的難題,我們專門采用了ClickOnce技術來部署程序,ClickOnce技術的使用,使得部署Windows應用程序與Web程序一樣簡單。
Web服務
Web服務是在WSE3.0上建設的,后來我們成功地將它遷移到WCF,從而增強了系統(tǒng)的安全性和穩(wěn)定性。此外,我們壓縮了所有的數(shù)據(jù)來提升了服務器與客戶機之間的傳輸能力。
開發(fā)過程中遇到的困難
困難一:該軟件已經被推向市場,因此,每一次版本的發(fā)布都要求質量高,性能好,穩(wěn)定性好,并且容易維護。
改善措施:我們謹慎地處理系統(tǒng)的每一個變化,尤其是對那些風險較高的變更。首先,我們會做一個原型來消除不確定的內在因素,然后再撰寫詳細的設計文檔,文檔的內容包括系統(tǒng)中每一個涉及模塊的變更需求、詳細的設計界面圖以及數(shù)據(jù)結構和數(shù)據(jù)邏輯的變更。設計文檔經過項目內部開發(fā)人員和測試人員的反復審核與修改之后,會發(fā)送給客戶進行審核。只有當客戶審核并確認通過了開發(fā)文檔之后,我們才會著手去實現(xiàn)。在實現(xiàn)的過程中,我們會不斷地重構系統(tǒng)并相互檢查代碼,以保證軟件開發(fā)的質量。每一期開發(fā)任務結束之后,我們都會與客戶商定安排一次全面的回歸測試,防止新功能的添加對系統(tǒng)相鄰模塊的正常工作造成了影響,以保證新版本軟件的質量。此外,我們還得益于軟件智能客戶端的架構,它為我們的系統(tǒng)提供了高度的靈活性和可伸縮性。我們的開發(fā)人員都熟悉面向對象的開發(fā)理念并充分運用面向對象的設計模式。我們的代碼干凈、可讀性強、高內聚低耦合,保證了系統(tǒng)的可維護性。
困難二:由于系統(tǒng)已經持續(xù)開發(fā)8年多的時間,隨著時間的推移,新的功能和邏輯不斷地被添加,系統(tǒng)變得越來越復雜,此外,開發(fā)人員一般都只專注于自己對系統(tǒng)的更改,而不了解別人添加的功能,長時間之后,開發(fā)人員和測試人員都不能夠準確地說出部分模塊的工作機制,有時候不得不通過查看代碼來進行確認,這樣就使系統(tǒng)維護變得更加困難。
改善措施:項目內部會定期召開“新功能展示”會議,將系統(tǒng)發(fā)生的新的變更展示給大家。通常情況下,由項目中的測試人員主持會議,測試人員將項目中的開發(fā)人員召集到一起,將系統(tǒng)變更之前及變更之后的圖片展示給所有的開發(fā)人員觀看,開發(fā)人員通過提問或者與其他人員進行討論的方式重新認識系統(tǒng)。項目內部還會整理一些系統(tǒng)邏輯相關的文檔,以便查閱。
困難三:所有需求都是客戶從最終用戶那里收集到得,因此,開發(fā)團隊只能夠從客戶那里知道需要實現(xiàn)哪些功能,而不能夠清楚地知道實現(xiàn)新功能的目的,這樣,開發(fā)人員就不能夠從最終用戶的角度提出一些優(yōu)化設計的意見或者建議。
改善措施:為了彌補這個缺失,我們讓開發(fā)人員負責撰寫開發(fā)文檔,然后測試人員和開發(fā)人員共同審核,如此,每個人都能夠從最終用戶的角度去理解需求。此外,我們還在每日的站立會議中討論實現(xiàn)需求過程中遇到的問題,在這種情況下,我們的開發(fā)人員通過調研提出一些可能的解決方案提供給客戶參考??蛻艚涍^一番思考之后,如果認為我們的方案可行,就會將我們的建議放到以后的需求變更列表中。
客戶收益:
- 最新版本的系統(tǒng)實現(xiàn)了客戶的所有需求,包括新增加的功能和修復的系統(tǒng)漏洞,強大的功能和優(yōu)秀的性能讓產品在市場上獲得了廣泛的好評;
- 需求說明書的內容是諾懷的開發(fā)人員與客戶共同商討并確定的,因此,客戶不用擔心開發(fā)出的產品與需求不一致;
- 由于該項目是由經驗豐富的開發(fā)人員基于成熟的框架開發(fā),因此該系統(tǒng)擁有良好的可拓展性和可維護性,客戶可以在任何一個迭代添加新的功能;
- 諾懷建立了嚴格的開發(fā)流程規(guī)范,出色的質量控制流程和進度控制流程,保證新版本能夠及時地發(fā)布與部署,從而不會影響客戶的業(yè)務;
- 基于成熟的系統(tǒng)架構,我們對系統(tǒng)進行了重構和完善,系統(tǒng)被賦予了高可擴展性,可支持未來業(yè)務邏輯擴展;
- 諾懷獲得了客戶完全的信任,現(xiàn)在,客戶只需要集中精力進行營銷,不用擔心軟件開發(fā)和團隊管理。
