計算機硬件和計算機軟件共同構成了計算機系統。隨著硬件的不斷進步,計算機軟件也得到了飛速的發展,積累了豐富的軟件資源。在軟件開發過程中,逐漸建立了有關軟件開發的方法理論,如《軟件工程學》等,為計算機軟件開發奠定了理論基礎,并提出了軟件開發公司協作開發的方法及建議。
一 軟件協作開發的必要性
1、為縮短軟件開發周期,必須進行協作開發。計算機軟件開發有時間上的要求。一個軟件的開發是為了解決一定的實際問題,因此軟件越早完成越好,否則很可能由于軟件開發周期過長,開發出的軟件已經不能適應新時期下的問題而被淘汰。這就要求軟件的開發周期不能過長。
隨著計算機技術飛速發展和廣泛應用,計算機已經不是少數專業人員的專用品,越來越成為各行各業的各類人員的日常工作和生活中必不可少的工具。因此,要求計算機軟件更易用和所實現的功能更全面。程序員除了要完成基本功能的編碼外,還要完成包含界面、異常處理、聯機幫助等其它方面的大量編碼工作,軟件的開發工作量隨之越來越大。對于一個較大的軟件,其開發工作量無法由一個人來完成。因此,從縮短軟件的開發周期方面考慮,一個使用方便和功能全面的軟件開發,要一個項目組或以其它組織形式的團隊來協作開發完成。
2、為實現軟件開發人員知識互補,必須進行協作開發。隨著計算機技術的發展,技術體系不斷增大,分類也越來越細,各種具體技術如網絡、多媒體、數據庫等都在包含一系列的理論和標準。每一門技術都有著大量的知識,由于人的能力的局限性,一個人不可能在計算機技術的每個領域都成為專家,使得一個人不可能全部精通計算機領域內的知識。而現今的一個軟件項目往往同時涉及到網絡通信、網絡安全、數據庫管理、多媒體的界面等內容。因此在開發一個軟件時,需要組織具有不同知識結構的人參加到一個項目組來,共同協作,完成軟件的開發工作。
3、為實現開發工具的優勢互補,必須進行協作開發。不同的軟件開發工具有著不同的優勢和特點,例如VB制作界面很方便,如果要進行底層操作,用VC++更方便靈活一些,如果主要是對數據庫的操作管理,目前的PB則較其它產品有著獨到的優勢。因此在一個軟件開發過程中,程序員各自采用自己熟悉的開發工具完成所擅長的工作,如此協作開發,將會事半功倍,形成不同開發工具的優勢互補。
4、為實現資源共享,必須進行協作開發。軟件的協作開發也是資源共享的一種要求。在軟件的開發過程中,經常遇到一些功能模塊與他人的工作有重復,即多個程序員所解決的具體問題雖然不同,但可能都同時用到具有相同功能的模塊。假如每個人都自己完成,則會形成資源浪費。如果軟件協作開發,就可以省掉這部分的工作量,這也是軟件資源的一種共享,提高了軟件資源的利用率。目前國際上就有專門做中間件的軟件公司,提供一些通用的軟件模塊,這也是軟件協作開發的一種有效形式。
二 軟件協作開發的實現方法
1、面向對象的編程方法。該方法是目前用來指導軟件開發的理論。目前流行的軟件開發工具和語言大部分都支持面向對象的編程方法,如VB、VC++、PB、Delphi、Visual Age for Java等。面向對象的編程方法主要有四個特性:抽象性、封裝性、多態性、可繼承性。該特性使得軟件開發過程中可以通過類的繼承和派生,對已有的部件重用。這樣,不只是自己重用開發好的類,還可以提供給他人,使他人在已有的基礎上繼續開發。這編程方法為軟件的協作開發打下了堅實的基礎。
2、從動態鏈接庫到OLE技術。對于Windows程序來說,DLL(動態鏈接庫)是一種比較常用的計算機技術,它將完成一定任務的功能模塊封裝在動態鏈接庫中,提供入口點和出口點,在程序運行時動態的調用和銷毀。動態鏈接庫可由多種語言開發完成,同時,也能被多種編程語言調用。這樣,同一個項目組的技術開發人員可以通過提供動態鏈接庫的形式來協作開發,對每個開發人員所用的開發工具和編程語言沒有其他限制。OLE技術則更進步,按照此技術所生成的組件,在系統中注冊后,其功能不只是在同項目中可以互用,而且可以被其他軟件調用其功能。例如,支持OLE功能的Word軟件和PowerPoint軟件,在Word文檔中可以嵌入幻燈片,在PowerPoint中也可以嵌入Word文檔。
三 存在問題及建議
1、軟件開發的規模小??偨Y某軟件開發公司的經驗發現,有相當部分的軟件是單兵作戰完成的。規模較小,難以開發出一個較高質量的軟件。當前的計算機軟件,除了要具有基本功能外,在使用方便程度、界面的設計聯機幫助等方面要求也越來越高。如果一個項目只有一個人來做的話,將很難考慮周全,或者沒有精力來完成所有的工作量。
2、計算機人員與專業技術人員協作不夠。某軟件開發公司開發項目所要完成的計算機應用軟件,大多數都是由開發人員自己提出的項目,軟件開發人員與專業人員的溝通是一個請教的過程。軟件開發人員因對專業不熟,很可能抓不著重點,不知應該問些什么,結果往往是在軟件的設計時就存在了疏漏或不足的問題。從軟件協作開發的思想來看,某公司軟件的開發,應由負責具體業務的專業技術人員提出需求,然后由計算機專業人員參與,看是否能夠研制或編制出此軟件及預算所需費用,待確立項目后,由專業技術人員與計算機人員組成項目組,由專業技術人員負責完成軟件在功能上和邏輯上的總體設計,提供必要的算法,解釋基礎數據的意義,由計算機專業人員負責完成軟件功能模塊的劃分和設計和編碼,最后由專業人員參與項目的測試工作及最后的驗收。計算機人員和專業技術人員應該是互相協作的關系,而不是請教和被請教的關系。
3、計算機專業人員之間要具有相互協作性。由于計算機技術的飛速發展,出現了許多新技術,如網絡、多媒體等。針對某一領域,由于各種各樣原因,其產品也是多種多樣的。如數據庫,實際的產品就有Fox Base、FoxPro、Access、Oracle、5QLServer、DB2等不同的數據庫,所以不可能讓一個人掌握所有的計算機技術。在實際工作中,一個軟件開發項目很可能要涉及到許多方面的計算機知識,因此,應該按照需要將具有不同特長的計算機專業人員組織在一個項目組中,相互協作,取長補短。
四 結束語
目前,已形成了許多基于這種協作開發思想的計算機技術,如由面向事件發展到面向對象的編程方法,DCOM、CORBA、OLE、ActiveX、JavaBeans等技術,不斷豐富軟件開發工具,軟件開發公司應加強具體負責專業技術人員與計算機人員之間的協作性,同時也促進了計算機人員之間的協作,保證開發出的應用軟件具有易用、實用、高質量的特點,充分發揮計算機在各行各業中的重要作用。