軟件開發
【摘要】
【正文】
基於構件的軟件開發,可大大提升軟件項目開發中的可重用性,提升軟件性能,縮短開發時間,減小開發成本,下降程序錯誤數量。
2003年,我參加了公司管理信息系統的開發,擔任了系統分析是和系統架構師的任務。
隨着企業信息話的普及,管理信息系統在企業中已涉及到生產經營、財務、人力資源、決策支持等各個方面,與傳統管理相互***融合,大大提升了企業管理的有效性和及時性,提升了企業服務客戶的方便和快捷。
我在一家上市公司信息中心上班,隨着企業所面臨的市場環境的複雜多變、行業競爭的加重及公司規模的不斷擴張,公司提出了要在一個平臺上實現全部業務的要求,要作到企業資源的統一調度使用。在公司的發展中,各部門和各子公司均有不一樣的信息化規劃,實現了不一樣的信息化管理系統,這些系統的開發沒有統一的標準、沒有統一的接口,系統之間沒法實現信息共享,浪費了巨大的人力物力。爲了從根本上解決公司所面臨的問題,公司領導通過屢次 決定開發一個統一的管理信息系統平臺,實現公司資源的統一調度使用。
隨着公司集團化的推動,單純的C/S架構管理信息系統已經沒法知足企業的要求,所以咱們選擇B/S/S架構,開發工具選擇ASP.NET,用IIS6.0發佈。整個系統分爲三層,數據庫層、應用邏輯層、用戶界面層,數據庫層使用ORACLE數據庫,應用邏輯層負責事務處理,使用c#語言編寫應用邏輯,用戶界面用IE瀏覽器與用戶交互。
咱們依據平臺的主要功能,在項目開發中,若是按照傳統的開發方法,每實現一個功能都要編寫一樣的代碼。爲了節省開發時間和提升維護效率,咱們把共用代碼都作成組件。例如:針對oralce數據庫的查詢、更新、插入、刪除的操做數據庫操做通用組件(dataOPERATION.DLL)、用戶身份認證和用戶類型識別的登陸認證檢查組件(LOGINCHECK.DLL)、用戶操做記錄的審計組件(checkOPERATION.DLL)、用戶操做錯誤和系統出錯記錄及錯誤返回的錯誤處理組件(error.DLL)。在數據庫鏈接方面,採用微軟的ADO.NET技術,使用ORACLECONNECTON的oracle專用鏈接組件提升訪問性能。
在此次開發中,咱們主要設計和實現瞭如下通用組件。
一、
用戶管理組件
咱們開發了用戶管理組件logincheck.DLL進行用戶登陸認證管理。該組件主要完成兩個功能:(1)用戶身份認證,根據用戶登陸時提供的憑據(用戶名、密碼、隨機碼)肯定用戶是否有登陸系統的權限。(2)肯定用戶權限,經過用戶的賬號肯定用戶在系統中的權限,防止用戶越權操做。用戶在打開每一個頁面時,經過COOKIE或session對用戶權限進行檢查,看用戶是否真的擁有該頁面的打開權限,防止用戶經過直接的地址進入頁面越權操做,保證應用程序的安全。
該組件有三個接口,每一個接口表明組件的某個屬性和方法。對用戶登陸請求做出相應的處理,若是是普通用戶則進入業務平臺,並根據用戶權限對菜單進行ENABLE/DISABLE處理。若是是管理員則進入管理員界面。
二、
數據庫操做組件
咱們定製了dataopration.DLL進行數據庫操做的組件,用於與底層數據庫交互,在組件完成如下功能:(1)用於返回用戶查詢的信息。(2)用於對數據庫進行增刪改操做。該組件具備多種接口型式,編寫程序時可用DATASET、DATATABLE、DATAROW等多種形式返回結果集。並對查詢結果做出判斷否成功執行,若是成功則返回信息,若是不成功則調用出錯處理模塊顯示錯誤信息。因爲用戶的查詢條件及查詢域是不肯定的,所以採用多種形式傳入參數,如直接傳入SQL語句,傳入存儲過程及參數,傳入DATASET等多種接口形式,程序執行時,由邏輯層將調用參數傳入數據操做層,由數據操做層負責與數據庫通信,並返回多種形式的結果集或執行結果,並調用信息顯示組件將結果顯示出來。
(3)消息顯示組件
因爲全部的窗口顯示大小和顯示方式是不同的,例如顯示查詢條件的窗口和現實操做是否成功的窗口,所以爲了同類信息的顯示樣式保持一致,給用戶一種統一的感受,咱們設計了此組件,全部彈出的窗口均調用此組件的POPWINDOW或POPWINDOWA兩個函數,這兩個函數只是在大小和外觀上有不一樣,顯示方法是同樣的,調用時將頁面傳入函數,由此函數顯示,保證了界面風格的統一。
(4)錯誤處理組件
咱們開發了error.DLL組件。該組件主要做用是肯定錯誤類集,在catch出錯時,輸出統一的錯誤信息,方便用戶排錯。同時將系統的物理路徑隱藏,方式惡意用戶經過物理路徑***服務器。
(5)樣式表
咱們定義了各類顯示界面和控件的CSS樣式表,主要做用就是在頁面上統一文字樣式,統一DATAGRID樣式,各類菜單、按鈕樣式顏色,給用戶一種統一的界面風格。
在本次開發中,咱們首次使用了基於構件的開發方法,但因爲經驗不足,在開發中也走了不上彎路:(1)咱們將全部的構件組織成文檔,並加入了詳細的說明,可是程序員每每只閱讀說明後,就棄之不理,開發時仍然本身編寫本身須要的東西,咱們獲得的不使用構件的理由就是別人開發的程序讀不懂或太麻煩。爲解決這種問題,咱們將構件的採用超連接的方式進行組織,對構件的調用和功能進行詳細說明,並將構件的源代碼在文檔中公開,方便程序員閱讀和排錯。(2)對構件的修改混亂,出現多個程序員同時修改某個構件以適應本身的應用程序的現象,出現這類現象代表構件的範圍和質量還要進一步提升,咱們採用增強構件的配置管理的方法,容許程序員修改構件代碼,同時要求程序員對修改後的構件代碼及時歸併到構件庫中,對構件的歸併由專門的構件管理人員進行歸併,構件管理人員首先檢查代碼,對可以歸併到通用方法的函數儘可能歸併到通用方法,不能歸併到通用方法的函數另外寫一個方法。
在本次開發中,前期的構件開發與系統開發同時進行,多多少少影響到項目的開發進度,但相信在構件庫成型後,應能大大提升公司開發項目的進度。
在項目開發完成後,相比之前的項目,軟件質量明顯提升,軟件維護量相比之前大大減小,很是利於項目的擴展,程序員更專一於項目邏輯的實現。該軟件在哦國內公司已順利使用了3年,目前已進入相對穩定階段。
我認爲在軟件系統的複雜性不斷增加的狀況下,基於構件的開發能有效提升軟件質量,積累和固化知識財富,並能有效縮短產品開發週期,提升軟件生產效率。