許浩海等
摘要:自從安卓手機(jī)操作系統(tǒng)發(fā)布以來(lái),它便以開(kāi)放性、不受束縛、豐富的硬件、方便開(kāi)發(fā)等優(yōu)勢(shì)風(fēng)靡全世界,我們利用安卓手機(jī)平臺(tái),開(kāi)發(fā)了一款旅游社交平臺(tái)軟件,該軟件采用安卓Sdk4.0進(jìn)行開(kāi)發(fā),采用了C/S模式,可以節(jié)省網(wǎng)絡(luò)資源,簡(jiǎn)單,易用,服務(wù)器端采用Java Web開(kāi)發(fā),數(shù)據(jù)庫(kù)采用了免費(fèi)的Mysql。它可以給用戶提供你最想要的旅游欄目,讓你置身于朋友的海洋之中,從此出行旅游更加方便。
關(guān)鍵詞:Android平臺(tái)應(yīng)用開(kāi)發(fā);旅游社交平臺(tái)
中圖分類(lèi)號(hào):TP311 文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):1009-3044(2014)10-2273-04
Abstract: Since android mobile phone operating system release, it has to open, from the bondage, rich hardware and advantages of the convenient development around the world, we use the android mobile phone platform, developed a tourism social platform software, this software USES the android Sdk4.0 development, adopted C/S mode, can save network resources, simple, easy to use, the server using Java Web development, Mysql database for free. It can provide users with travel industry, most of you have let you swimming in the ocean of friend, from now on to travel more convenient.
Key words: The Android platform application development;Tourism social platform
Android是一種基于Linux的自由及開(kāi)放源代碼的操作系統(tǒng),主要使用于移動(dòng)設(shè)備,如智能手機(jī)和平板電腦,由Google公司和開(kāi)放手機(jī)聯(lián)盟領(lǐng)導(dǎo)及開(kāi)發(fā)。大學(xué)生從高中升入大學(xué),猶如一下子從“地獄”進(jìn)入了“天堂”,有著大量的課余時(shí)間,但是往往他們無(wú)法合理利用,大多蝸居在宿舍里打游戲,費(fèi)心勞神,因此開(kāi)發(fā)一款基于安卓平臺(tái)的旅游社交軟件,幫助大學(xué)生走出教室,走出宿舍,到自然中,去鍛煉,去陶冶情操,最大程度的滿足他們旅游交友的需求。
1 基于安卓平臺(tái)旅游社交軟件的需求分析
這個(gè)平臺(tái)主要包括3個(gè)子系統(tǒng),它們分別是:1)發(fā)起活動(dòng)子系統(tǒng);2)參加活動(dòng)子系統(tǒng);3)后臺(tái)管理子系統(tǒng);4)活動(dòng)分享子系統(tǒng)。如圖1所示。
在活動(dòng)發(fā)起子系統(tǒng)中包括以下幾個(gè)功能:1)活動(dòng)申請(qǐng);2)活動(dòng)信息管理;3)活動(dòng)資料查詢;4)活動(dòng)上報(bào)申請(qǐng)。
在參加活動(dòng)子系統(tǒng)中包括以下幾個(gè)功能:1)活動(dòng)參加;2)活動(dòng)資料查詢;3)參加活動(dòng)申請(qǐng)。
在后臺(tái)管理子系統(tǒng)中包括以下幾個(gè)功能:1)用戶管理;2)公告管理;3)權(quán)限管理;4)分類(lèi)管理;5)系統(tǒng)維護(hù)。
在活動(dòng)分享子系統(tǒng)中包括以下幾個(gè)功能:1)活動(dòng)評(píng)價(jià)分享;2)活動(dòng)圖片分享。
2 旅游社交平臺(tái)的總體設(shè)計(jì)
2.1 軟件總體設(shè)計(jì)
根據(jù)我們定義的需求分析,我們給出了旅游社交平臺(tái)軟件總體設(shè)計(jì),客戶端運(yùn)行在安卓手機(jī)上,服務(wù)器端運(yùn)行在Tomcat上,數(shù)據(jù)庫(kù)采用Mysql數(shù)據(jù)庫(kù),開(kāi)發(fā)語(yǔ)言采用了最流行的Java語(yǔ)言進(jìn)行開(kāi)發(fā),以下是整個(gè)軟件的整體架構(gòu)圖,Android前臺(tái)界面負(fù)責(zé)數(shù)據(jù)的采集和展示,Android端HTTP組件負(fù)責(zé)將前臺(tái)界面采集到的數(shù)據(jù)封裝成HTTP協(xié)議發(fā)到Servlet上,Servlet負(fù)責(zé)接收HTTP協(xié)議的數(shù)據(jù),然后解析,調(diào)用相應(yīng)的業(yè)務(wù)方法,Server端業(yè)務(wù)層負(fù)責(zé)從數(shù)據(jù)庫(kù)中采取數(shù)據(jù)交給Servlet,Servlet把封裝的json數(shù)據(jù)再發(fā)到HTTP組件,HTTP組件解析數(shù)據(jù),再發(fā)往前端進(jìn)行展示,如圖2所示。
2.2數(shù)據(jù)庫(kù)設(shè)計(jì)
2.2.1 數(shù)據(jù)庫(kù)中所需的各種表
2.2.2 數(shù)據(jù)庫(kù)概念模型和物理模型的設(shè)計(jì)
設(shè)計(jì)數(shù)據(jù)庫(kù)時(shí),我們可以采用sybase公司的powerDesigner來(lái)進(jìn)行數(shù)據(jù)庫(kù)設(shè)計(jì),使用powerDsigner工具設(shè)計(jì)時(shí),首先設(shè)計(jì)數(shù)據(jù)庫(kù)概念模型圖,它的功能和數(shù)據(jù)庫(kù)E-R圖十分類(lèi)似,好處在于,可以使用powerDesigner工具輕松的轉(zhuǎn)成數(shù)據(jù)庫(kù)物理模型,然后再借助powerDesigner工具可以很輕松的生成SQL語(yǔ)句,從而大大方便開(kāi)發(fā)。
2.3 詳細(xì)設(shè)計(jì)
2.3.1 服務(wù)器端數(shù)據(jù)庫(kù)工具類(lèi)設(shè)計(jì)
為了更好的和數(shù)據(jù)庫(kù)交互,減少開(kāi)發(fā)工作量,我們對(duì)數(shù)據(jù)庫(kù)操作冗余的代碼做了一定的封裝。這樣就沒(méi)必要頻繁的寫(xiě)JDBC代碼了,從而提高了程序內(nèi)聚度。
2.3.2 各個(gè)業(yè)務(wù)Service的接口設(shè)計(jì)
接口在項(xiàng)目中就是一個(gè)業(yè)務(wù)邏輯,面向接口編程就是先把客戶的業(yè)務(wù)提取出來(lái),作為接口。業(yè)務(wù)具體實(shí)現(xiàn)通過(guò)該接口的實(shí)現(xiàn)類(lèi)來(lái)完成。當(dāng)客戶需求變化時(shí),只需編寫(xiě)該業(yè)務(wù)邏輯的新的實(shí)現(xiàn)類(lèi),通過(guò)更改配置文件(例如Spring框架)中該接口的實(shí)現(xiàn)類(lèi)就可以完成需求,不需要改寫(xiě)現(xiàn)有代碼,減少對(duì)系統(tǒng)的影響。 采用基于接口編程的項(xiàng)目,業(yè)務(wù)邏輯清晰,代碼易懂,方便擴(kuò)展,可維護(hù)性強(qiáng)。即使更換一批人員,新來(lái)的人依然可以快速上手。對(duì)于團(tuán)隊(duì)來(lái)說(shuō),意義更大。
2.3.3 各個(gè)服務(wù)接口的實(shí)現(xiàn)
在設(shè)計(jì)好接口之后,我們就可以編寫(xiě)程序來(lái)實(shí)現(xiàn)各個(gè)接口了。在這個(gè)過(guò)程中我們也體會(huì)到了協(xié)同工作的效率。我們幾個(gè)開(kāi)發(fā)人員就可以并行的進(jìn)行開(kāi)發(fā),然后再把代碼提交到Svn代碼管理工具上,從而很大程度上提高了工作效率。
2.3.4 各個(gè)服務(wù)所對(duì)應(yīng)的Servlet的編寫(xiě)
Servlet的主要功能在于交互式地瀏覽和修改數(shù)據(jù),生成動(dòng)態(tài)Web內(nèi)容。這個(gè)過(guò)程為:1)客戶端發(fā)送請(qǐng)求至服務(wù)器端;2)服務(wù)器將請(qǐng)求信息發(fā)送至Servlet;3)Servlet生成響應(yīng)內(nèi)容并將其傳給服務(wù)器。響應(yīng)內(nèi)容動(dòng)態(tài)生成,通常取決于客戶端的請(qǐng)求;4)服務(wù)器將響應(yīng)返回給客戶端,如圖3所示。
一個(gè)servlet就是Java編程語(yǔ)言中的一個(gè)類(lèi),它被用來(lái)擴(kuò)展服務(wù)器的性能,服務(wù)器上駐留著可以通過(guò)“請(qǐng)求-響應(yīng)”編程模型來(lái)訪問(wèn)的應(yīng)用程序。雖然servlet可以對(duì)任何類(lèi)型的請(qǐng)求產(chǎn)生響應(yīng),但通常只用來(lái)擴(kuò)展Web服務(wù)器的應(yīng)用程序。
2.3.5 GoGoGo數(shù)據(jù)編碼問(wèn)題的解決
我們把安卓數(shù)據(jù)客戶端所獲取的數(shù)據(jù)通過(guò)HTTP協(xié)議傳送到服務(wù)器端,由Servlet來(lái)獲取數(shù)據(jù),由于Tomcat默認(rèn)編碼是ISO8859-1,因此在后臺(tái)獲取中文數(shù)據(jù)時(shí)會(huì)遇到亂碼。解決辦法是:1)要重寫(xiě)HttpServletRequestWrapper下面的getParameter()方法,在這個(gè)方法對(duì)獲取到的數(shù)據(jù),重新用UTF-8編碼。
2)在Filter中對(duì)每個(gè)請(qǐng)求過(guò)濾,調(diào)用HttpServletRequsetWrapper重寫(xiě)的getParameter()方法,再把請(qǐng)求傳說(shuō)出去,就完成了過(guò)濾請(qǐng)求,如圖4所示。
2.3.6 前臺(tái)和后臺(tái)數(shù)據(jù)交互的問(wèn)題
Android前臺(tái)發(fā)送數(shù)據(jù)給服務(wù)器后臺(tái)應(yīng)用程序(Servlet),Servlet處理后,要給前臺(tái)返回?cái)?shù)據(jù),數(shù)據(jù)格式如何選擇將是一個(gè)非常重要的問(wèn)題,因?yàn)镴SON(JavaScript Object Notation) 是一種輕量級(jí)的數(shù)據(jù)交換格式。易于閱讀和編寫(xiě),同時(shí)也易于機(jī)器解析和生成。所以我們采用了json作為前后臺(tái)數(shù)據(jù)交換的數(shù)據(jù)格式。
2.3.7 前臺(tái)向后臺(tái)如何傳送數(shù)據(jù)問(wèn)題
我們編寫(xiě)了一個(gè)HTTP數(shù)據(jù)傳送工具,負(fù)責(zé)Android前臺(tái)和Server后臺(tái)的數(shù)據(jù)傳送。因?yàn)槭荋TTP協(xié)議是基于TCP協(xié)議的,所在Android前臺(tái)和Server建立連接需要進(jìn)行3次握手,連接建立成功后,才進(jìn)行傳送數(shù)據(jù)。當(dāng)釋放連接時(shí),需要進(jìn)行4次握手才能釋放連接,如圖5所示。
2.3.8 數(shù)據(jù)加密問(wèn)題
一個(gè)優(yōu)秀的軟件,在確保功能實(shí)現(xiàn)的同時(shí),另外一個(gè)不得不考慮的問(wèn)題便是如何保障用戶數(shù)據(jù)的安全,對(duì)于用戶重要的數(shù)據(jù),我們非常有必要對(duì)其進(jìn)行加密后再保存,現(xiàn)在比較流行的信息摘要算法有MD5和SHA1,對(duì)于這兩種算法,主流的編程語(yǔ)言都有對(duì)其實(shí)現(xiàn),因此用起來(lái)方便又安全。
2.4 旅游社交平臺(tái)測(cè)試
軟件測(cè)試是軟件開(kāi)發(fā)環(huán)節(jié)中非常重要的一環(huán),軟件測(cè)試是幫助識(shí)別開(kāi)發(fā)完成的計(jì)算機(jī)軟件的正確度、完全度和質(zhì)量的軟件過(guò)程;是SQA的重要子域。它主要包括單元測(cè)試,集成測(cè)試,系統(tǒng)測(cè)試,還有驗(yàn)收測(cè)試幾個(gè)大項(xiàng)。
2.4.1 單元測(cè)試
在單元測(cè)試環(huán)節(jié)中,Android端采用了Android自帶的單元測(cè)試工具AndroidTestCase,服務(wù)器端我們采用了Junit4測(cè)試工具,對(duì)每一個(gè)業(yè)務(wù)方法進(jìn)行了測(cè)試,確保正確后才進(jìn)行下一步開(kāi)發(fā)。
2.4.2 集成測(cè)試
在單元測(cè)試通過(guò)的基礎(chǔ)上,我們將所有模塊按照設(shè)計(jì)要求組成子系統(tǒng),進(jìn)行集成測(cè)試,從而發(fā)現(xiàn)在單元測(cè)試中沒(méi)有發(fā)現(xiàn)的Bug,盡早的修改,降低項(xiàng)目風(fēng)險(xiǎn),主要使用的測(cè)試工具是Selenium.
2.4.3 系統(tǒng)測(cè)試
在集成測(cè)試完成的基礎(chǔ)上,我們完整的對(duì)旅游社交平臺(tái)進(jìn)行了系統(tǒng)測(cè)試,測(cè)試我們的功能是否達(dá)到了當(dāng)初的設(shè)計(jì)要求,測(cè)試其容錯(cuò)能力和恢復(fù)能力。
2.4.4 測(cè)試結(jié)論
系統(tǒng)功能的測(cè)試結(jié)果顯示,基于安卓平臺(tái)旅游社交平臺(tái)能夠正常使用。各功能都可支持,滿足了預(yù)期設(shè)計(jì)。
3 結(jié)束語(yǔ)
經(jīng)過(guò)我們的努力,我們終于完成了一個(gè)簡(jiǎn)易社交平臺(tái)的設(shè)計(jì)和開(kāi)發(fā),基本上滿足了當(dāng)初的設(shè)計(jì)要求,能夠方便大學(xué)生的郊游和交友的需求,總之項(xiàng)目還是比較成功的,但是也存在著一些不足,比如在軟件架構(gòu)設(shè)計(jì)上肯定達(dá)不到很高的水準(zhǔn),總之我們會(huì)繼續(xù)努力,爭(zhēng)取使其更加完美。
參考文獻(xiàn):
[1] 何晨光.Android4編程入門(mén)經(jīng)典[M].北京:清華大學(xué)出版社,2012.
[2] Satya K.精通Android[M].北京:人民郵電出版社,2010.
[3] 韓超.Android 系統(tǒng)原理及開(kāi)發(fā)要點(diǎn)詳解[M].北京:電子工業(yè)出版社,2010.
[4] 耿祥義,張躍平.Java 2實(shí)用教程[M].北京:清華大學(xué)出版社,2006.
[5] 翟大昆,陳春茶.Android項(xiàng)目開(kāi)發(fā)詳解[M].北京:機(jī)械工業(yè)出版社,2012.
[6] 王國(guó)輝.Java Web 開(kāi)發(fā)實(shí)戰(zhàn)寶典[M].北京:清華大學(xué)出版社,2010.