Internet軟件項目研討

時間:2022-07-19 10:36:03

導語:Internet軟件項目研討一文來源于網(wǎng)友上傳,不代表本站觀點,若需要原創(chuàng)文章可咨詢客服老師,歡迎參考。

Internet軟件項目研討

1前言

internet的高速發(fā)展給現(xiàn)代生活帶來巨大的變化,信息革命不僅影響著生活的方方面面,也給各個社會行業(yè)帶來很多新變化。軟件工程是是一門年輕的學科,并且已經(jīng)在軟件發(fā)展的過程中承擔了重要作用,如何立足于現(xiàn)有條件,面對新機遇,新挑戰(zhàn)成長壯大不僅對于軟件行業(yè)有重要意義,對于整個信息產(chǎn)業(yè)也有十分重要的意義。本文將站在軟件開發(fā)者和研究者的立場,分析Internet下的軟件工程,文中的觀點是Internet不僅給軟件工程的發(fā)展帶來很多新的機遇,新的便利,同時也給軟件工程的發(fā)展帶來了新的挑戰(zhàn),下文將從這兩方面進行分析。

2Internet對于軟件工程發(fā)展的推動

Internet的迅速發(fā)展給對軟件工程有很多積極的影響,大致可以歸結(jié)為如下幾個方面。

2.1技術(shù)交流軟件開發(fā)的流程大致可以分為產(chǎn)品需求、開發(fā)和測試3個環(huán)節(jié),其中各個環(huán)節(jié)是由不同的人來負責的。軟件項目人員用于相互之間的通信交流通常要大量時間,準確和及時的技術(shù)經(jīng)驗交流對于維護項目組之間的進度同步以及允許對于精通核心技術(shù)的個人在需要時充分發(fā)揮其作用都是十分必要的。比如開放軟件社區(qū)一個潛移默化的規(guī)則是技術(shù)交流應(yīng)該以帖子的形式在論壇相關(guān)板塊中進行,另外,開放軟件項目通常要在技術(shù)的精確細節(jié)和項目管理決策方面得到支持。很多軟件項目的失敗是由于經(jīng)驗不足或者技術(shù)積累不夠,并且很多相似項目重蹈覆轍,Internet給技術(shù)人員提供了方便的交流手段,可以快速地傳播新技術(shù)及相關(guān)問題的解決方案,并且同時相關(guān)技術(shù)陷阱可能發(fā)生的地方,避免相同的錯誤重復出現(xiàn)。

2.2跨地域軟件開發(fā)項目中的版本控制通常很多軟件項目是大型的,需要幾個幾十個甚至成百上千人的參與,這些開發(fā)人員在地域上很有可能是分散的,甚至可能相隔千里,這些人員之間的協(xié)調(diào)合作就變的十分重。比如項目中的一個文件也許幾個模塊都需要關(guān)聯(lián),并且各個模塊的開發(fā)人員都可能會對這個文件進行開發(fā),如何保證各個模塊中的對這個文件引用的一致性就需要用到軟件項目的版本控制。常用的版本控制軟件有SVN,CVS等軟件,拿SVN來說,會有一個專門的SVN服務(wù)器,每個人在開發(fā)的時候都需要從SVN服務(wù)器上把最新的代碼checkout出來,并且用branch進行開發(fā),這時候他的開發(fā)不會影響到其他人的代碼,開發(fā)完成后需要合并到trunk上,合并的過程需要處理沖突,通過這樣的版本控制器和Internet的結(jié)合,開發(fā)人員可以分散在不同的地區(qū),只要有Internet連接,就可以實現(xiàn)完美的版本控制。由圖1可以看出,client1到clientn對應(yīng)的是現(xiàn)實中的一個個的開發(fā)人員,他們可以不在一起,甚至可以不認識,但是卻可以通力合作,每一個人都和SVN服務(wù)相連,每個人把自己的最新代碼提交上去,別人開發(fā)的時候下載一份最新的代碼,在其基礎(chǔ)之上進行開發(fā)。

2.3構(gòu)件復用軟件工程的發(fā)展方向是構(gòu)件化,提供構(gòu)件的復用率可以顯著提升軟件的開發(fā)速度和質(zhì)量,Internet的發(fā)展給了構(gòu)件復用極大的支持,可以通過在相關(guān)的技術(shù)社區(qū)或搜索引擎查找到需要的構(gòu)件,避免重復造成的悲劇。在軟件開發(fā)過程中,遇到一個新功能和新需求,首先不要想著自己去開發(fā),而是去查找是不是已有相關(guān)的構(gòu)件或類似的軟件庫,一般來說,第三方提供的構(gòu)件或庫都是經(jīng)過實踐檢驗的,功能和性能都比較有保證,多多使用現(xiàn)有構(gòu)件,不僅可以加快項目進度,通常還可以降低開發(fā)成本,比如在互聯(lián)網(wǎng)軟件開發(fā)過程中經(jīng)常用到的jquery庫,提供了一些很方便的js函數(shù)和瀏覽器兼容性的解決方案。

2.4進度管理任何軟件項目都需要有需求、執(zhí)行、控制、運營幾個步驟。一般來說小型項目的團隊成員比較少,可能在空間上會都在一起,但對于大型項目,通常需要進行一些外部合作,需要幾個公司協(xié)同開發(fā),有時甚至同一個公司的團隊成員在地理上都相距很遠,這時候的進度管理就需要Internet的支持,常見的基于Internet的進度管理是依靠管理平臺或郵件,通過兩種途徑對于每個項目成員分配TO-DO列表,并且實時追蹤TO-DO列表的完成情況并且更新,另外需要設(shè)置里程碑列表來標記項目的關(guān)鍵時期和關(guān)鍵點。

2.5質(zhì)量保證Internet的發(fā)展催生了開源軟件項目的發(fā)展,開源軟件項目自出現(xiàn)到現(xiàn)在取得了十分輝煌的成就,主要體現(xiàn)在起軟件質(zhì)量上,這也是開源軟件項目相比于傳統(tǒng)封閉的軟件開發(fā)最大的優(yōu)勢。開源軟件的質(zhì)量保證主要基于3點,一是開發(fā)人員可以在Internet上根據(jù)自己的興趣和知識尋找相關(guān)的項目;二是很多開發(fā)人員自己同時也是需求人員和測試人員;第三點是所有項目過程中的技術(shù)交流和程序邏輯都是公開的,把代碼呈現(xiàn)在更多人的視野中,可以接受更為嚴格的檢驗。此外,由于Internet上的用戶來自社會的各個領(lǐng)域和階層,不同的背景和知識早就了更高的質(zhì)量。

3Internet環(huán)境下軟件工程所表現(xiàn)出的問題

在Internet給軟件工程帶來極大便利的同時,附帶而來的很多問題同樣需要引起足夠的重視,正確對待和處理這些問題有重要意義。這些問題主要表現(xiàn)在如下幾個方面。

3.1安全問題自從互聯(lián)網(wǎng)誕生之日起,安全問題就一直伴隨左右,各種各樣的病毒及其變種,各種各樣的攻擊手段都令人防不勝防,凡是與Internet相關(guān)的東西都不得不重視安全問題,軟件工程也不例外,如何防止流傳于網(wǎng)上的相關(guān)項目信息被惡意人員竊取,以及如何建立防護措施,是軟件工程在Internet環(huán)境中需要引起高度重視的一個問題。Internet環(huán)境下的軟件工程由于其相對開放性,安全問題更為嚴重,新的安全問題主要有兩個來源,一是開發(fā)人員在自己寫的代碼中留后門;二是由于開發(fā)人員技術(shù)原因?qū)е?。有關(guān)統(tǒng)計顯示,互聯(lián)網(wǎng)上有超過70%的攻擊是由于人為原因造成的,在當前,由于很多軟件項目的組成人員不僅僅通過Internet聯(lián)系,在開發(fā)項目過程中,由于金錢利益、個人情感、自律性等問題一些開發(fā)人員可能會在自己的代碼中留下某種后門,當軟件投入使用后,通過這些后門可以對軟件或服務(wù)器進行各種各樣的攻擊,帶來嚴重后果,與傳統(tǒng)軟件不同的是,由于開發(fā)人員的分散性和虛擬性,導致管理很困難,這個問題比較難避免。另外,現(xiàn)實中很難保證開發(fā)人員的技術(shù)水平都達標,有些新手提交的代碼可能是存在明顯漏洞的,當軟件投入使用之后,存在的漏洞很有可能被攻擊者利用。所以,在新的形勢下,軟件工程不僅要面對傳統(tǒng)的安全問題,還要面對新的安全問題。

3.2需求和開發(fā)之間的矛盾這個問題常見的有兩種情況,一種是新技術(shù)和新理念的發(fā)展和現(xiàn)有標準之間的矛盾,另一種是新的標準和現(xiàn)有技術(shù)之間的矛盾,造成這種局面的原因之一是Internet的迅猛發(fā)展總會提出一些新的需求或者發(fā)現(xiàn)一些新的缺陷,如何制定出能夠普遍適用、合理的持久的標準或者如何在新技術(shù)出現(xiàn)的時候既能滿足新需求又能兼容既有標準是我們需要努力的。目前Internet的高速發(fā)展使得互聯(lián)網(wǎng)的入口瀏覽器的競爭愈發(fā)激烈,很多的軟件項目都是Web項目,需要瀏覽器的支持,就目前來說,兼容瀏覽器也是一項十分繁雜的工作。在開發(fā)過程中,經(jīng)??梢砸姷竭@樣的情況,產(chǎn)品最初提出的需求開發(fā)還在進行中,由于Internet上出現(xiàn)了新的產(chǎn)品或者新的特性需求,導致產(chǎn)品不斷修改需求,但這時開發(fā)人員還在按照之前的需求版本進行工作,如果這時拋棄之前的版本,將導致人力和物力的損失,并且對開發(fā)人員的情緒都是較大的傷害,如果不改變,還按原來的版本開發(fā),則開發(fā)出來的產(chǎn)品很有可能是過時的或者不符合市場需求的產(chǎn)品,所以說需求和開發(fā)之間存在著永恒的矛盾,如今Internet下這個矛盾又被加劇了。解決這個矛盾的理想情況是開發(fā)人員把各個功能模塊化,構(gòu)件化,由需求方按照自己的需求“組裝”軟件,但此種情況需要需求方有較強的軟件方面的知識,現(xiàn)實中往往比較難以實現(xiàn)。

3.3逆向工程和再工程問題逆向工程和再工程對于一個具體的軟件項目來說是一個比較長期的問題,逆向工程是根據(jù)效果倒推程序的一個過程,而再工程則是由于原項目不能滿足現(xiàn)有需求而進行必要的重構(gòu),軟件行業(yè)是一個人員流動性很高的行業(yè),一個軟件項目開發(fā)完成后團隊可能就會解散了,這還是傳統(tǒng)方式的工作模式,如果是類似于開源軟件之類的軟件項目,項目的很多關(guān)鍵信息比較計劃、排期、文檔管理都是依賴于Internet的話,那么軟件后期的逆向工程和再工程難度會成倍增加,因為目前的很多項目由于進度限定等因素,導致很多開發(fā)人員只是完成了相關(guān)功能就必須進行下一步的開發(fā),沒有多余的時間寫項目文檔甚至代碼注釋,在這種情況下產(chǎn)生的代碼讓除開發(fā)者之外的人看起來是相當痛苦的,所以當原開發(fā)人員不能提供支持的時候,整個項目的重構(gòu)將變得十分困難,有時甚至導致逆向工程,造成極大的資源消耗。

3.4體系結(jié)構(gòu)體系結(jié)構(gòu)對于軟件來說就相當于地基對于高樓大廈,地基的質(zhì)量決定了樓可以蓋多高,而體系結(jié)構(gòu)的好壞則直接決定了軟件項目的性能和擴展性,目前很多基于Internet的軟件項目其實內(nèi)容本身也是與Internet相關(guān)的,比如處于整個互聯(lián)網(wǎng)產(chǎn)業(yè)鏈頂端的搜索引擎,搜索引擎的項目直接與Internet相關(guān),再互聯(lián)網(wǎng)初期的時候整個互聯(lián)網(wǎng)上的網(wǎng)頁數(shù)量也就是千萬量級,短短幾年就達到億的量級,而現(xiàn)在更是達到驚人的千億量級,信息的爆炸性增長使得很多軟件項目的性能急劇下降,瓶頸很多情況下都在體系結(jié)構(gòu),如果體系結(jié)構(gòu)在項目初始便設(shè)計的具有前瞻性,后續(xù)的性能改進會相對容易,否則,則會不斷改進甚至推翻整個軟件構(gòu)件重新設(shè)計,如果是后種情況,那么帶來的后果將是災難性的。

4結(jié)語

在新的形勢下,客觀正確地面對Internet和軟件工程的發(fā)展及新的特征,揚長避短,積極探索,使得軟件工程在Internet的發(fā)展中承擔起應(yīng)有的責任。