劉昭,1980年8月,漢族,男,山西省大同市,碩士,工程師(中級(jí)),計(jì)算機(jī)軟件
摘 要:基于谷歌Android智能操作系統(tǒng)平臺(tái),通過(guò)一種軟件工程開(kāi)發(fā)模式中非常流行的、輕量級(jí)的、高效的、科學(xué)的軟件開(kāi)發(fā)方案 — 極限編程開(kāi)發(fā)模式,并通過(guò)Java迭代重構(gòu)開(kāi)發(fā)方法來(lái)滿足逐漸變化的用戶需求,完成Android APK(Android Package)的開(kāi)發(fā)工作。本文對(duì)極限編程開(kāi)發(fā)模式的核心思想、極限編程軟件(APK)實(shí)施準(zhǔn)則、 極限編程軟件(APK)實(shí)施要領(lǐng)、 極限編程軟件(APK)開(kāi)發(fā)流程進(jìn)行討論。
關(guān)鍵詞: 極限編程 Android APK開(kāi)發(fā) 軟件工程
中圖分類(lèi)號(hào):TP3 文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):1672-3791(2015)01(a)-0000-00
隨著移動(dòng)互聯(lián)網(wǎng)絡(luò)的興起,和以Android操作系統(tǒng)為平臺(tái)的智能設(shè)備活躍用戶不斷增多, 越來(lái)越多的公司和開(kāi)發(fā)者開(kāi)始關(guān)注移動(dòng)終端的用戶體驗(yàn),并積極拓展移動(dòng)終端的功能提升UI界面的交互,這些需求帶來(lái)大量基于Android操作系統(tǒng)的軟件開(kāi)發(fā)工作,以極限編程開(kāi)發(fā)模式可以高效實(shí)現(xiàn)完成這件工作。
1 極限編程核心思想
1996年Kent Beck提出了極限編程(Extreme Programming,簡(jiǎn)稱(chēng)XP)。這種軟件開(kāi)發(fā)方法高效、輕量、有柔性、可預(yù)測(cè)、風(fēng)險(xiǎn)低、科學(xué)且充滿樂(lè)趣,其應(yīng)對(duì)需求的變化是通過(guò)迭代周期短來(lái)實(shí)現(xiàn)的[1]。Kent Beck建議,在進(jìn)度緊、需求變化大、規(guī)模小且質(zhì)量要求嚴(yán)格的項(xiàng)目中使用極限編程[2]。其核心思想有以下幾點(diǎn):
溝通:設(shè)計(jì)者與Android終端用戶、設(shè)計(jì)者與開(kāi)發(fā)者間溝通不暢,由此產(chǎn)生了項(xiàng)目開(kāi)發(fā)中90%的問(wèn)題,所以,在極限編程中溝通使必須的。
極簡(jiǎn):編程盡量保留簡(jiǎn)單的代碼,只要能正常工作就行。Kent Beck表示,編一個(gè)復(fù)雜的系統(tǒng),還不如設(shè)計(jì)一個(gè)簡(jiǎn)單且又能滿足需要的系統(tǒng),因?yàn)橛锌赡苡肋h(yuǎn)都不會(huì)發(fā)生預(yù)先所考慮的情況。
反饋:對(duì)用戶反饋的意見(jiàn)要盡快獲取,且越詳細(xì)越好,這樣開(kāi)發(fā)出來(lái)的成果才能更好的滿足用戶的需求。
2 極限編程軟件(APK)實(shí)施準(zhǔn)則
極限編程核心思想衍生的基本準(zhǔn)則使極限編程的開(kāi)發(fā)規(guī)范化。
(1)快速反饋:反饋要盡可能的早,使Java編程人員在主要的Android 軟件功能上能精力集中。
(2)假設(shè)簡(jiǎn)單性:注意力集中在簡(jiǎn)單設(shè)計(jì)的實(shí)現(xiàn)上,并結(jié)合燃燒圖加以完成。
(3)提倡更改:“擁抱變化”是極限編程需強(qiáng)調(diào)的,反饋及時(shí),就可對(duì)反饋結(jié)果采取相應(yīng)的措施。
3 極限編程軟件(APK)實(shí)施要領(lǐng)
(1) 里程碑:根據(jù)Google 發(fā)布Android周期,決定功能計(jì)劃發(fā)布的里程碑。
(2) 原子發(fā)布:TG團(tuán)隊(duì)以最短時(shí)間為周期迭代開(kāi)發(fā)、增量方式發(fā)布新版本。
(3) 統(tǒng)一描述語(yǔ)言:通過(guò)統(tǒng)一描述開(kāi)發(fā)人力、用戶和項(xiàng)目管理人力語(yǔ)言來(lái)描述功能。
(4) 極簡(jiǎn)設(shè)計(jì):只完成當(dāng)前功能,復(fù)用Android SDK及Java本身的API。
(5) 測(cè)試驅(qū)動(dòng):完成CUnit/JUnit等測(cè)試用例開(kāi)發(fā),再進(jìn)行編碼之后進(jìn)行白盒測(cè)試。
(6) 重構(gòu):利用Java的重構(gòu)思想完成架構(gòu)變化,同時(shí)通過(guò)重構(gòu)刪除冗余代碼邏輯,簡(jiǎn)化系統(tǒng)依賴,增加代碼設(shè)計(jì)的靈活性。
(7) 結(jié)對(duì)編程:共用開(kāi)發(fā)設(shè)備,一人對(duì)代碼進(jìn)行編寫(xiě),另一人負(fù)責(zé)評(píng)審以確保代碼正確。
(8) 代碼共享:利用Git/Perforce等工具管理整個(gè)團(tuán)隊(duì)的代碼,團(tuán)隊(duì)成員都可以更改。
(9) 代碼集成:注重Main branch 與Trunk branch的集成時(shí)機(jī),以原子發(fā)布為思想進(jìn)行集成,構(gòu)造APK,自動(dòng)發(fā)起檢查APK版本的所有測(cè)試工作。
4 極限編程軟件(APK)的實(shí)施開(kāi)發(fā)流程
與傳統(tǒng)的軟件工程方法相同,Android極限編程也分為計(jì)劃、設(shè)計(jì)、編碼和測(cè)試四個(gè)步驟,不過(guò)具體操作方面,明顯不同于傳統(tǒng)的軟件工程方法[3]。用戶是Android極限編程項(xiàng)目的起點(diǎn)。APK的功能描述由用戶定義,并提供測(cè)試用例。據(jù)此,若干個(gè)迭代周期可由開(kāi)發(fā)人員來(lái)組織,當(dāng)前用戶認(rèn)為最重要的APK功能是每個(gè)迭代周期的集中開(kāi)發(fā)工作。一個(gè)可用的小版本在每一個(gè)迭代周期結(jié)束后提供給用戶,用戶并以此作為反饋依據(jù),根據(jù)用戶的反饋意見(jiàn),相應(yīng)的變化和改進(jìn)在下一個(gè)迭代周期中再進(jìn)行。具體來(lái)說(shuō):
(1)傾聽(tīng):用戶、設(shè)計(jì)人力,開(kāi)發(fā)人力,通過(guò)頭腦風(fēng)暴,使得三方人員可以徹底溝通需求。
(2)設(shè)計(jì):整個(gè)APK的設(shè)計(jì)工作不能是自頂向下的,其有著不斷變化的需求。所以,設(shè)計(jì)不是一勞永逸的過(guò)程,而是一個(gè)長(zhǎng)期性的工作。把當(dāng)前需要的功能放到APK中來(lái),就是設(shè)計(jì)的核心思想。
(3)編碼:針對(duì)Android 最新版本的各個(gè)API能力,完成從C層的驅(qū)動(dòng),C++中間件及Java上層編碼工作。
(4)測(cè)試:投入測(cè)試人力,可以讓開(kāi)發(fā)人力有更長(zhǎng)的時(shí)間進(jìn)行Bug修正。隨著時(shí)間的變化,APK的穩(wěn)定性會(huì)不斷增加。測(cè)試有兩種,即白盒測(cè)試和黑盒測(cè)試。白盒測(cè)試是編程人員的測(cè)試用例,使程序能夠正常運(yùn)行;另一種由測(cè)試人力或是用戶指定編寫(xiě)的功能測(cè)試,是為了保證APK與用戶需求及期望的運(yùn)行方式一致。
在實(shí)踐時(shí),開(kāi)發(fā)人員往往只重視眼前需求,對(duì)未來(lái)需求的變動(dòng)所帶來(lái)的項(xiàng)目風(fēng)險(xiǎn)和開(kāi)銷(xiāo)則通過(guò)Java的重構(gòu)來(lái)適應(yīng),這是一個(gè)非常關(guān)鍵的假設(shè)。解決用戶當(dāng)前的問(wèn)題是通過(guò)高效率和高質(zhì)量來(lái)完成的,在滿足用戶未來(lái)需求方面付出的代價(jià)最小且靈活性最大,在平衡短期和長(zhǎng)期之間,極限編程的安排比較巧妙[4]。
5 結(jié)束語(yǔ)
與用戶交流、正確理解需求、簡(jiǎn)單設(shè)計(jì)、注重測(cè)試、迭代編程,是Android極限編程開(kāi)發(fā)方法的核心。它使未來(lái)需求的設(shè)計(jì)弱化了,軟件開(kāi)發(fā)的速度也加快了,并開(kāi)發(fā)出滿足用戶需求的高質(zhì)量軟件。
參考文獻(xiàn)
[1] Kent Beck,雷劍文譯.解析極限編程[M].北京:機(jī)械工業(yè)出版社,2011.
[2] 谷秀巖,關(guān)于極限編程的理論研究[J].計(jì)算機(jī)與網(wǎng)絡(luò),2004.12:93-95.
[3] Robert C.Marti.敏捷軟件開(kāi)發(fā):原則、模式與實(shí)踐[M],北京:清華大學(xué)出版社,2003.
[4] Newkirk,袁國(guó)忠譯.極限編程實(shí)踐[M],北京:人民郵電出版社,2002.