Internet軟件項(xiàng)目研討

時(shí)間:2022-07-19 10:36:03

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

Internet軟件項(xiàng)目研討

1前言

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

2Internet對(duì)于軟件工程發(fā)展的推動(dòng)

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

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

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

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

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

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

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

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

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

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

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

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

4結(jié)語(yǔ)

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