科技技術(shù)的發(fā)展中軟件應(yīng)用是一個(gè)提升智能科技發(fā)站的主要方面,軟件工程的應(yīng)用可以使社會(huì)生活更方便。以下是軟件工程在校園中的發(fā)展模式。
摘要:校園軟件服務(wù)平臺(tái)是集大成者,數(shù)據(jù)的互通共享是必然的途徑,要避免信息孤島,就要實(shí)現(xiàn)數(shù)據(jù)的隔離,所有的數(shù)據(jù)訪問(wèn)統(tǒng)一管理;項(xiàng)目的整合方式與功能分解極為相似,功能分解看做是手術(shù)刀,做的是細(xì)致的活,項(xiàng)目整合看做是部門(mén)分類,是粗粒度的。移動(dòng)端的選型根據(jù)學(xué)校的具體情況作出選擇,通常游戲類,圖形圖畫(huà)類的最好選擇原生的開(kāi)發(fā)方式,不同的操作系統(tǒng)分別開(kāi)發(fā)。而應(yīng)用型的,實(shí)時(shí)性要求不高的建議使用HyBrid混合式開(kāi)發(fā)。
關(guān)鍵詞:校園軟件,軟件服務(wù),軟件類論文
一、系統(tǒng)結(jié)構(gòu)設(shè)計(jì)
總體上分為4層,每層只能訪問(wèn)相鄰的層服務(wù),不能越層訪問(wèn)。
數(shù)據(jù)庫(kù)層(含連接配置):Mysql,Oracle,Derby等各種不同廠商的不同軟件。
數(shù)據(jù)訪問(wèn)層:承上啟下作用,對(duì)上層數(shù)據(jù)庫(kù)實(shí)現(xiàn)基本的CRUD原子操作,對(duì)下層提供公共的統(tǒng)一的訪問(wèn)接口(基于REST風(fēng)格實(shí)現(xiàn))。
推薦期刊:《軟件工程師》雜志創(chuàng)刊于1985年,由東北大學(xué)、計(jì)算機(jī)軟件國(guó)家工程研究中心主辦,國(guó)家級(jí),月刊,大16開(kāi)本,全國(guó)發(fā)行。《軟件工程師》為中國(guó)軟件行業(yè)協(xié)會(huì)會(huì)刊,被中國(guó)期刊全文數(shù)據(jù)庫(kù)、中國(guó)知網(wǎng)、龍?jiān)雌诳W(wǎng)、萬(wàn)方數(shù)字——數(shù)據(jù)期刊群以及中國(guó)核心期刊(遴選)數(shù)據(jù)庫(kù)等全文收錄。
傳輸協(xié)議層:使用XML或者JSON格式作用數(shù)據(jù)傳輸?shù)膮f(xié)議。
展示終端:瀏覽器(含PC和移動(dòng)端),安卓App,蘋(píng)果App,微信App等。
系統(tǒng)結(jié)構(gòu)設(shè)計(jì)示意圖如圖1-1所示:
這種四層總體設(shè)計(jì),并不只是針對(duì)整個(gè)軟件服務(wù)體系,而是可以應(yīng)用在單個(gè)子系統(tǒng)項(xiàng)目中,不論是子系統(tǒng),還是服務(wù)平臺(tái),都遵循這種設(shè)計(jì)模式,就能實(shí)現(xiàn)子系統(tǒng)項(xiàng)目合并和分離時(shí)對(duì)軟件服務(wù)不會(huì)造成障礙。
二、技術(shù)選型
(一)軟件結(jié)構(gòu)選型。為實(shí)現(xiàn)在任何展示終端中都能夠顯示,這里設(shè)計(jì)的結(jié)構(gòu)不再是常規(guī)意義上的B/S結(jié)構(gòu)(瀏覽器-服務(wù)器)或者C/S(客戶端-服務(wù)器)結(jié)構(gòu),而是遵循“前后分離”的模式,當(dāng)下阿里巴巴也在做這樣的事情,只不過(guò)業(yè)務(wù)不同罷了。“前后分離”需要做到接口規(guī)范清晰定義,數(shù)據(jù)格式清晰定義,后端開(kāi)發(fā)無(wú)需關(guān)心前端的業(yè)務(wù)邏輯,前端業(yè)務(wù)無(wú)需關(guān)心后端開(kāi)發(fā)進(jìn)度。兩者之間的關(guān)聯(lián)通過(guò)“數(shù)據(jù)訪問(wèn)層”和“傳輸協(xié)議”進(jìn)行了隔離,實(shí)現(xiàn)了“解耦”.基于REST風(fēng)格的Web服務(wù)結(jié)構(gòu),保證了任何終端都能使用同一個(gè)后端服務(wù),不對(duì)展示前端的平臺(tái)做任何限制。
(二)軟件開(kāi)發(fā)技術(shù)選型。開(kāi)發(fā)技術(shù)選擇SpringMvc+Ma-yen,Spring是輕量級(jí)開(kāi)源的Java開(kāi)發(fā)框架,可擴(kuò)展性強(qiáng),不僅有自己的JPA規(guī)范,而且?guī)缀跫嫒菔忻嫔纤械臄?shù)據(jù)庫(kù)框架(如Hibernate,Mybatis等),同時(shí)全面支持REST風(fēng)格開(kāi)發(fā)。選擇SpringMVC作為“數(shù)據(jù)訪問(wèn)層”既安全又便捷。
(三)數(shù)據(jù)庫(kù)的選擇。遵循敏捷開(kāi)發(fā)原則,逐步迭代,剛開(kāi)始選擇輕量級(jí)框架和數(shù)據(jù)庫(kù):Mybatis+Mysql;選擇MySql數(shù)據(jù)庫(kù)的作為第一首選,是因?yàn)镸ysql發(fā)展很快,阿里云數(shù)據(jù)庫(kù)服務(wù)就是在開(kāi)源MySql的基礎(chǔ)之上升級(jí)改造出了性能和功能超過(guò)Oracle的軟件。加之MySql提供了Cluster分布式集群數(shù)據(jù)庫(kù),經(jīng)測(cè)試集群MySql在多個(gè)機(jī)器的內(nèi)存之間傳輸數(shù)據(jù)非?臁_x擇Mysql作為數(shù)據(jù)庫(kù),在相當(dāng)長(zhǎng)的一段時(shí)間內(nèi)不會(huì)變動(dòng)。后期根據(jù)實(shí)際需求和業(yè)務(wù)需要可以考慮更換為重量級(jí)框架和數(shù)據(jù)庫(kù):Hibernate+Oracle.
(四)軟件通信協(xié)議選擇。通常Web服務(wù)不需要通信協(xié)議,直接通過(guò)網(wǎng)頁(yè)的形式展現(xiàn)服務(wù)結(jié)果。這種方式使得服務(wù)器和前端形成高耦合,屬于強(qiáng)關(guān)聯(lián)關(guān)系,伸縮性低,不便于后期擴(kuò)展。軟件平臺(tái)提供的服務(wù)不應(yīng)該局限于瀏覽器,它既可以是瀏覽器,也可以是桌面應(yīng)用程序,還可以是移動(dòng)端App,因此在服務(wù)器和終端之間加入一層通信協(xié)議,只要能夠遵循這種協(xié)議格式,就能基本實(shí)現(xiàn)“前后分離”式的同步開(kāi)發(fā)。當(dāng)前市面上比較通用的兩種數(shù)據(jù)交換格式分別是XML和JSON.JSON是一種輕量級(jí)的數(shù)據(jù)交換格式,它采用完全獨(dú)立于語(yǔ)言的文本格,編碼比XML簡(jiǎn)單,結(jié)構(gòu)也更清晰,占用空間更少,節(jié)約帶寬;考慮到服務(wù)的密集型訪問(wèn)帶來(lái)的寬帶消耗,大量碎片數(shù)據(jù)傳輸引起的性能消耗,通信協(xié)議的選擇更適合選擇JSON.
(五)瀏覽器前端開(kāi)發(fā)技術(shù)選擇。桌面端市場(chǎng)主流框架有很多,比如:Bootstrap,jQueryUI,ExtJS,D0jo,Mootools,YUI等等。對(duì)于桌面端,目前Bootstrap和jQueryUI已經(jīng)可以滿足大多數(shù)的開(kāi)發(fā)需求,從展示效果,美觀程度上,Bootstrap更勝一籌。Boot-strap本身是基于jQuery進(jìn)行JavaScript處理,所以瀏覽器的選型使用HTML5+CSS3+Bootstrap作為基本配置。接著前端開(kāi)發(fā)的另一個(gè)重要組成就是js框架。選擇js框架的參考的因素是,前端是否需要投入更多的精力,是否需要承擔(dān)更多的業(yè)務(wù)邏輯。在實(shí)現(xiàn)軟件服務(wù)平臺(tái)的“前后分離”,同時(shí)適當(dāng)分擔(dān)服務(wù)器的壓力,前端的業(yè)務(wù)邏輯不可缺少,在市面上支持MVVM模式的框架已經(jīng)三分天下:angular、vue和react.vile.js有更好的性能,并且容易優(yōu)化,語(yǔ)法結(jié)構(gòu)與angularjs相當(dāng)。這里選擇vue作為前端開(kāi)發(fā)的MVVM框架。
(六)移動(dòng)端開(kāi)發(fā)技術(shù)選擇。移動(dòng)端的操作系統(tǒng)陣營(yíng)有:Android,IOS.以及應(yīng)用層的微信App,兩大操作系統(tǒng)完全不同,開(kāi)發(fā)難度和成本都很高,我們通常開(kāi)發(fā)的app軟件都屬于原生程序(使用操作系統(tǒng)的API開(kāi)發(fā)的軟件),現(xiàn)在出現(xiàn)一種新技術(shù)叫做混合App開(kāi)發(fā)(HyBrid),實(shí)現(xiàn)了一次編碼多平臺(tái)使用的跨平臺(tái)執(zhí)行特點(diǎn)。經(jīng)過(guò)實(shí)際測(cè)試,這種技術(shù)可以應(yīng)用在校園軟件服務(wù)平臺(tái)的展示端(終端)。初步選擇起步公司的Wex5開(kāi)發(fā)工具。Wex5對(duì)cordova插件進(jìn)行了封裝,使用HTML5技術(shù)就能自動(dòng)轉(zhuǎn)換成安卓App和蘋(píng)果App.
三、數(shù)據(jù)庫(kù)層
數(shù)據(jù)庫(kù)使用mysql,相比MicrosoftSql,它是跨平臺(tái)的,對(duì)各個(gè)開(kāi)發(fā)語(yǔ)言友好,占用空間小,性能高,首次使用可與服務(wù)器安裝在一個(gè)操作系統(tǒng)中,根據(jù)需求的變化,完全可以遷移到獨(dú)立的數(shù)據(jù)庫(kù)服務(wù)器中運(yùn)行,甚至可以使用mysqlcluster集群分布式放在多個(gè)數(shù)據(jù)庫(kù)服務(wù)器中(在虛擬機(jī)云就更加方便管理),而遷移后的配置變更只需要對(duì)配置文件中的IP地址進(jìn)行變更即可,遷移成本非常低,配置靈活。
四、數(shù)據(jù)訪問(wèn)層和傳輸協(xié)議
(一)負(fù)責(zé)上層的連接管理。數(shù)據(jù)訪問(wèn)層由SpringMVC+Maven實(shí)現(xiàn),通過(guò)配置文件訪問(wèn)具體的數(shù)據(jù)庫(kù)軟件,所有與數(shù)據(jù)庫(kù)軟件由直接接觸的操作都由這一層負(fù)責(zé)連接和管理,這里使用輕量級(jí)數(shù)據(jù)庫(kù)ORM(對(duì)象關(guān)系管理)框架Mybatis統(tǒng)一管理所有的數(shù)據(jù)庫(kù)層。經(jīng)過(guò)Mybatis框架將數(shù)據(jù)庫(kù)中的表結(jié)構(gòu)轉(zhuǎn)換成Java對(duì)象,讓開(kāi)發(fā)真正面向?qū)ο螅鵁o(wú)需考慮具體數(shù)據(jù)表結(jié)構(gòu)。
(二)提供下層訪問(wèn)接口。在SpringMVC中提供controller層(MVC中的c,控制層),controller中充分使用Spring的注解語(yǔ)法@RequestMapping和@ResponseBody提供RESTful風(fēng)格接口服務(wù)。這是關(guān)鍵的核心所在。這種風(fēng)格是決定“前后分離”的最重要因素,是前后端同步開(kāi)發(fā)的充分條件。
(三)制定接口服務(wù)規(guī)范。在SpringMVC的controller中實(shí)現(xiàn)訪問(wèn)接口服務(wù)的開(kāi)發(fā),同時(shí)在controller中定制服務(wù)規(guī)范,提前定義好GET/POST的使用語(yǔ)義,基本CRUD操作的命名規(guī)則,以及制定服務(wù)器后端的訪問(wèn)權(quán)限,參數(shù)個(gè)數(shù),參數(shù)類型,返回?cái)?shù)據(jù)的結(jié)構(gòu),前端的接收方式,接收格式。前后端都要遵循服務(wù)規(guī)范,才能無(wú)障礙通信。
(四)傳輸協(xié)議。在SpringMVC項(xiàng)目中添加jackson依賴關(guān)系包,Spring項(xiàng)目中默認(rèn)支持Jackson插件,jackson插件負(fù)責(zé)將Java對(duì)象轉(zhuǎn)換成JSON字符串,這種轉(zhuǎn)換時(shí)隱式的,不需要明顯的代碼調(diào)用,只需要在依賴關(guān)系中添加jackson-core,jackson-databind,jackson-annotations三個(gè)包,然后在controller的方法頭上加入@ResponseBody就能實(shí)現(xiàn)返回?cái)?shù)據(jù)自動(dòng)轉(zhuǎn)換成JSON格式的數(shù)據(jù)。
五、展示終端層
(一)遵守服務(wù)規(guī)范。根據(jù)上層制定的訪問(wèn)接口規(guī)范,展示層盡量使用非阻塞的方式訪問(wèn)服務(wù),獲取返回?cái)?shù)據(jù)。非阻塞(異步訪問(wèn))的方式最常用的就是Ajax技術(shù)。根據(jù)服務(wù)器提供的REST風(fēng)格接口地址,在前端jQuery中使用$.ajax(),$.post(),$.get()等異步方式訪問(wèn)服務(wù)器接口,然后在回調(diào)函數(shù)success(data)中獲得JSON數(shù)據(jù),返回的data數(shù)據(jù)直接可以作用對(duì)象或者數(shù)組使用。解析方式遵照服務(wù)規(guī)范執(zhí)行。
(二)桌面端和移動(dòng)端。作為服務(wù)型軟件系統(tǒng),對(duì)實(shí)時(shí)性要求不高,再加上移動(dòng)端的瀏覽器都實(shí)現(xiàn)了HTML5的標(biāo)準(zhǔn),在這個(gè)前提下,移動(dòng)端開(kāi)發(fā)技術(shù)的選擇最適合使用的是HyBrid方式--混合式開(kāi)發(fā)。目前主流的開(kāi)發(fā)模式無(wú)外乎三種,分別是NativeApp,WebApp,HyBridApp.
1.NativeApp,原生App,使用原生(即Android或iOS)開(kāi)發(fā)的APP.
2.WebApp,就是把手機(jī)當(dāng)做一個(gè)瀏覽器。
3.HyBridApp,綜合了前面兩種技術(shù),性能和速度都介于前面兩種之間。
國(guó)內(nèi)外興起的HyBrid開(kāi)發(fā)框架集成環(huán)境有:Wex5(基于PhoneGap),AppCan,DCOULD,IONIC,APICloud等等,以免費(fèi),開(kāi)發(fā)速度,跨平臺(tái)作為考量指標(biāo),適合校園軟件服務(wù)平臺(tái)移動(dòng)端的開(kāi)發(fā)工具和開(kāi)發(fā)環(huán)境是Wex5,雖然這款工具在質(zhì)量和效率上與國(guó)外還存在差距,選擇它是因?yàn)樵趪?guó)內(nèi)普遍需要應(yīng)用的環(huán)境有:安卓,IOS,微信平臺(tái)。而由Wex5開(kāi)發(fā)的混合App同時(shí)支持桌面端的瀏覽器,幾乎前端平臺(tái)全兼容。
作為移動(dòng)端的服務(wù)部署也要考慮兼容JavaWeb平臺(tái),Spri-ngMvck框架實(shí)現(xiàn)的服務(wù)器容器JEE(常用的是Tomcat)后期可引入Apache或者Nginx做負(fù)載均衡,Wex5制作出來(lái)的軟件也是部署在Tomcat下,與整個(gè)系統(tǒng)可以融為一體。既可以直接使用瀏覽器訪問(wèn),也能通過(guò)App安裝在手機(jī)移動(dòng)端訪問(wèn),一舉兩得。
關(guān)鍵配置,將JEE項(xiàng)目war包,放人到Wex自帶的Tomcat中,即可實(shí)現(xiàn)前端調(diào)用服務(wù)接口的實(shí)際測(cè)試。
六、項(xiàng)目管理
項(xiàng)目管理工具中Maven提供了一個(gè)插件,叫做:maven-War-plugin.這個(gè)插件的作用是實(shí)現(xiàn)子系統(tǒng)項(xiàng)目合并和分離的重要工具。使用maven-War-plugin插件做系統(tǒng)分隔的時(shí)候,注意下面幾個(gè)方面:
(一)將公共的功能單獨(dú)放在一個(gè)獨(dú)立的項(xiàng)目中,比如:登錄認(rèn)證,學(xué)生公共服務(wù),教師公共服務(wù)等需要提供給多個(gè)項(xiàng)目使用的就單獨(dú)放在一個(gè)項(xiàng)目中,通過(guò)項(xiàng)目依賴進(jìn)行組合調(diào)用,在導(dǎo)入項(xiàng)目依賴時(shí),在pom.xml中配置信息將默認(rèn)的war更改為jar,否則依賴關(guān)系導(dǎo)入會(huì)失敗。
(二)將項(xiàng)目名稱加入到插件配置文件中:在Maven主項(xiàng)目的pom.xml中將需要合并的其他項(xiàng)目的groupId和artifactId加入到配置信息中。
(三)注意合并順序,后加入的合并出現(xiàn)沖突時(shí)不覆蓋之前的文件。
批處理的使用在于同步公共項(xiàng)目,比如登錄認(rèn)證的首頁(yè)項(xiàng)目。為了便于各個(gè)子系統(tǒng)測(cè)試,通過(guò)批處理的復(fù)制功能,將登錄認(rèn)證同步到所有的子項(xiàng)目中,便于調(diào)試測(cè)試。對(duì)于其他的公共功能可以通過(guò)Maven的依賴關(guān)系導(dǎo)入。
轉(zhuǎn)載請(qǐng)注明來(lái)自:http://www.jinnzone.com/ruanjiankaifalw/66654.html