軟件工程課程報(bào)告_第1頁
軟件工程課程報(bào)告_第2頁
軟件工程課程報(bào)告_第3頁
軟件工程課程報(bào)告_第4頁
軟件工程課程報(bào)告_第5頁
已閱讀5頁,還剩3頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

討“前右尢孝軟件工程課程論文題目:軟件工程方法在Android開發(fā)中的

應(yīng)用實(shí)例作者姓名 指導(dǎo)教師 所在學(xué)院專 業(yè) 班 級(jí)完成日期年月日目錄TOC\o"1-5"\h\z\o"CurrentDocument"關(guān)鍵詞 3\o"CurrentDocument"摘要 3\o"CurrentDocument"緒論 3\o"CurrentDocument"從模塊角度分析程序 3\o"CurrentDocument"多模塊設(shè)計(jì) 3\o"CurrentDocument"提高內(nèi)聚,降低耦合 3\o"CurrentDocument"編碼規(guī)范 4\o"CurrentDocument"標(biāo)準(zhǔn)化版面設(shè)計(jì) 4\o"CurrentDocument"注釋的使用 5\o"CurrentDocument"變量名命名 5\o"CurrentDocument"合理判斷 5\o"CurrentDocument"交互體驗(yàn)與性能的平衡 6\o"CurrentDocument"總結(jié) 7\o"CurrentDocument"參考文獻(xiàn) 7\o"CurrentDocument"Keywords 7Abstract 8關(guān)鍵詞軟件工程,Android,移動(dòng)開發(fā),高效編碼,規(guī)范編碼,開發(fā)實(shí)例摘要隨著軟件開發(fā)人員自身水平的不斷提高,開發(fā)者都會(huì)不斷地提高自身的編程能力。不僅是在于編寫的熟練程度上,更重要的是在駕馭代碼的能力上。在實(shí)際的開發(fā)過程中,初級(jí)開發(fā)者常常會(huì)隨心所欲,開發(fā)出來的的代碼質(zhì)量低下,標(biāo)準(zhǔn)化嚴(yán)重缺失。本文通過一個(gè)簡(jiǎn)單的項(xiàng)目實(shí)例,用軟件工程的方法對(duì)代碼進(jìn)行優(yōu)化,最終形成代碼質(zhì)量較高的代碼,對(duì)學(xué)習(xí)者將來編寫代碼規(guī)范具有一定的參考價(jià)值。.緒論在軟件開發(fā)過程中,掌握了基本的開發(fā)語法知識(shí)以及其他基本的語句之后,需要了解的便是對(duì)程序進(jìn)行優(yōu)化改良,并以此為基礎(chǔ),減少程序運(yùn)行所需的系統(tǒng)資源,并簡(jiǎn)化開發(fā)的過程,減少語句,以使系統(tǒng)不斷改良。對(duì)于這個(gè)問題,需要解決的不僅僅是開發(fā)代碼的問題,還有開發(fā)習(xí)慣以及標(biāo)準(zhǔn)化的問題。本文將多個(gè)方面來說明,提高綜合效率。.從模塊角度分析程序多模塊設(shè)計(jì)在軟件系統(tǒng)中,將較大的復(fù)雜的問題分解為許多小的容易解決的問題,就變得更加容易解決。但是模塊過多又會(huì)在模塊連接時(shí)產(chǎn)生過多的問題,增加連接的成本。所以,將程序分成若干個(gè)合適的模塊,使軟件的開發(fā)維護(hù)成本降到最低。在繪圖開發(fā)應(yīng)用程序中,整個(gè)項(xiàng)目大致分為了基本數(shù)據(jù)定義、初始化模塊(程序初始化,初始化設(shè)置菜單,畫布初始化,新建)、繪畫(畫布上繪畫,清除繪畫,繪畫的屏幕觸摸事件監(jiān)聽)、設(shè)置菜單監(jiān)聽、保存(文件名設(shè)置,保存)等模塊,各個(gè)模塊通過互相調(diào)用和修改全局變量的值來進(jìn)行工作。提高內(nèi)聚,降低耦合內(nèi)聚是從功能角度來度量模塊內(nèi)的聯(lián)系,一個(gè)好的內(nèi)聚模塊應(yīng)當(dāng)恰好做一件事。它描述的是模塊內(nèi)的功能聯(lián)系。耦合是軟件結(jié)構(gòu)中各模塊之間相互連接的一種度量,耦合強(qiáng)弱取決于模塊間接口的復(fù)雜程度、進(jìn)入或訪問一個(gè)模塊的點(diǎn)以及通過接口的數(shù)據(jù)。在繪圖項(xiàng)目中,模塊內(nèi)部一般指完成一件事,繪圖的模塊中只把原有圖像和新增的線條繪出,監(jiān)聽模塊只進(jìn)行相應(yīng)的參數(shù)修改和調(diào)用更新,保存功能與文件命名分開,提高內(nèi)聚。而各個(gè)模塊之間通過方法的調(diào)用來實(shí)現(xiàn),一般只傳遞少量參數(shù),模塊之間連接簡(jiǎn)單,降低耦合。.編碼規(guī)范標(biāo)準(zhǔn)化版面設(shè)計(jì)在編碼過程中,要時(shí)刻注意源代碼的版面。良好的層次結(jié)構(gòu)及程序塊的分界符定位可以在很大程度上幫助后期開發(fā)修改的難度以及其他程序員的理解難度。對(duì)于Android開發(fā)來說,默認(rèn)使用Tab鍵作為縮進(jìn)的標(biāo)準(zhǔn)數(shù),而且Tab鍵一般只應(yīng)用于版面的排版,一般不做其他用途,防止錯(cuò)誤識(shí)別以及排版混亂等。以{}為函數(shù)的開始和結(jié)束標(biāo)示符,一般}與函數(shù)首字母對(duì)齊,清楚標(biāo)示作用范圍。priblicbooleanonCreateCptionsMErL'^neri'j)-[Menulnflaterinflater=newMenalTiflater(ttiisJ;inflater.inflate(R.nianj.toolsrmena);returnsuper-,orCreateOptLonsMen'a ;>1對(duì)于XML布局文件,同樣遵循縮進(jìn)的原則。在一對(duì)標(biāo)簽內(nèi)如果沒有內(nèi)容而只有相應(yīng)的屬性,尤其是只有一行的XML代碼,那么可以在屬性后面加上空格和/來結(jié)束標(biāo)簽,使代碼更加有序。<applicatitmandroi-d:e.11owBe.c=nt2?L;e"and二口二d:Lcon= ±衛(wèi)靠匚上曰4"and二0i_曰;工ab已二=r,匚ring/r,android:t.<eir,e=,r&style/App??iEnze,r>tact.ivityandroid:naiae=rricin.Ya.tuya.Wa.in3i:tivityrrandroLd:2_abe2_=,,i?^ti?ing/apf3namsn><i^t-env-£ilver>Cact.ionandrciJd:na_mc="曰ntird值..intfrit;.厘匚七工口n"血工IU”/>tcategoryandr口二:?。憾iue="a尊色二口:&. 匚己tejory.LAUTJCrfEH”/></iTit.enlL-£ilt.er>注釋的使用一般情況下注釋的內(nèi)容占整個(gè)程序的20%到50%,在函數(shù)的開始部位對(duì)函數(shù)作用進(jìn)行說明性注釋,對(duì)于每個(gè)定義的變量,尤其是全局變量,盡量使變量名有意義,否則應(yīng)該對(duì)其含義進(jìn)行注明。在if-else語句中或switch語句中應(yīng)當(dāng)對(duì)判斷條件進(jìn)行說明,表達(dá)判斷內(nèi)容及作用。cas-eR.id.5ave:try{ctw.save();TV保存繪制的圖像:■oatgTl(FarseException.e){e.printStaclcTrace():breaJt;cas'eR.id.nevfils:dw.newfile(dw.cacAecan.vas};77新建國(guó)布bvea.kr變量名命名所有的變量名最好有一定的實(shí)際意義,最好使用英文單詞或者縮寫來對(duì)所需的變量進(jìn)行命名,或在某一類型變量數(shù)量極少時(shí)可以用類名的變形來命名。例如定義一個(gè)Bitmap類的對(duì)象,而且項(xiàng)目中只會(huì)存在一個(gè)該類的對(duì)象,那么就可以命名為bitmap。在Android中,由于開發(fā)語言是Java語言,所以這部分的規(guī)則與Java基本相同。在實(shí)際項(xiàng)目中,對(duì)于一些實(shí)際使用的變量雖然使用了可以理解的英文命名,但是對(duì)一些可能引起歧義的變量名,最好還是進(jìn)行簡(jiǎn)單的注釋。intviewwidt/i;“駐窗intviewheigrit;//回布局度floatstarcxr"回竺起始坐標(biāo)fl&a,tstarty"PatApatri;,?一回選路徑pal^€=111111;/小畫筆Bitmaptiicmap=null;//畫出的圖1象Canvascac?iecanvaB=Liull;intwidr/7回筆粗細(xì)in七col^〃畫筆顏色合理判斷與所有的程序相同,判斷結(jié)構(gòu)是最經(jīng)常使用的結(jié)構(gòu)之一。在Java語言的開發(fā)中,主要使用兩種方式,一種是if-else結(jié)構(gòu),另一種是使用case語句進(jìn)行分支,通過參數(shù)來決定要執(zhí)行的程序等。在本項(xiàng)目中,由于需要監(jiān)聽整個(gè)菜單選項(xiàng)中的所有內(nèi)容,便不適合使用if-else結(jié)構(gòu)來進(jìn)行判斷,使用switch語句根據(jù)case判斷參數(shù)值來決定要執(zhí)行的內(nèi)容。在case情況中,要把最有可能用到的方法放在最前面,加快程序的運(yùn)行效率。在項(xiàng)目中,橡皮的使用頻率遠(yuǎn)比其他菜單的頻率高,所以理應(yīng)排在第一位,其他的大致按照可能應(yīng)用的頻率進(jìn)行排列。publicboolean□nOptiorL5lteniSeJ.ect.ed iten){DrawViewdw=(DrawViewJfindViewEyld(B.id.;dw.paint.serXieiniade(null);取消擦膝效果dw.paint.setEtiokeWidtli(3);設(shè)置默認(rèn)國(guó)笛宮度switch(item,getltentld(}}{〃-簫對(duì)顏色%粗細(xì)、擦出等caseR.±d-dw.cleax(J;調(diào)用橡皮擦除icem.setCiiecked(tme);break.;□aseR.id.Elaeii:dw.paint.setCnlnr(Color.BLACK):iteni.setChecked(tree);hr曰3KrcaseR.id.E_LLi6:dw.paint.setColor(Coloi.BJLI7E);icen.setCnecked(true);break.;□aseR.id. :dw.paint.setColox(Colox.GRAY};item.SEtCiiEclrEd(true);t*r巳己k.:□aseR.id.green:dw.paint.BetCnlnr(Cnloi.■GREKN};item.setChecked(trne);breakscaseR.id.ci?drg£:dw.paint.set^olor(0x±±±±6a00};item,set^iiecked(tma);break.;35交互體驗(yàn)與性能的平衡在系統(tǒng)中,某些變量的取值及判斷會(huì)對(duì)軟件的交互體驗(yàn)以及運(yùn)行流暢性和對(duì)系統(tǒng)資源的消耗有很大的影響。但是,交互體驗(yàn)與系統(tǒng)資源消耗是成反比的,想要畫面更流暢更自然,需要消耗的資源就越多。所以我們需要在這兩者之間找到一個(gè)平衡點(diǎn)。在繪圖項(xiàng)目中,對(duì)于在屏幕上移動(dòng)距離的響應(yīng)的問題便是很好的一個(gè)例子。如果移動(dòng)很短的距離就做出相應(yīng)并繪圖,能夠使得畫面更加及時(shí)細(xì)膩,但是會(huì)消耗大量的資源處理監(jiān)聽和存儲(chǔ)事件。但是如果移動(dòng)一段距離之后再進(jìn)行響應(yīng),就會(huì)降低用戶體驗(yàn)。所以要在這兩者6之間找到一個(gè)平衡點(diǎn),保證用戶體驗(yàn)的同時(shí)減少對(duì)系統(tǒng)資源的消耗。根據(jù)多個(gè)因素考慮,在手指移動(dòng)一個(gè)像素就進(jìn)行繪圖是不現(xiàn)實(shí)也沒有必要的,只需要移動(dòng)一段比較小的距離再進(jìn)行繪圖即可。在實(shí)際試驗(yàn)之后選擇四個(gè)像素點(diǎn)作為移動(dòng)的基本單位來繪圖,用肉眼看不出來瑕疵的同時(shí)有效的減少了資源的消耗。ca.seMcit.lonEvent. WOVE:float ,白上苫(=-3七口工七工};“看方向移動(dòng)后與原來點(diǎn)的距圖floatdy=Mat.?i.d£i^ 右向轉(zhuǎn)動(dòng)后與原方向的距離if(dx>4||dy>4)-[〃大于4像素進(jìn)行事件處理//定義路役用于繪圖,起點(diǎn)位置到起終點(diǎn)位置中心,曲線更平滑path.quadTo(staiti:,staity,(jn-5taitx)/2t(y-h^taity}/2);szatzx=x;〃處理過繪圖之后故變至新原點(diǎn)5taity=y;break;4.總結(jié)要使得代碼更加規(guī)范和易讀,需要的是軟件從業(yè)者規(guī)范的書寫以及細(xì)心。規(guī)范的代碼和高效的程序會(huì)使得工作更加便捷,修改和閱讀也更加容易??傊?,規(guī)范代碼和高效算法,將使程序更加完美。參考文獻(xiàn)[1]鄭人杰,馬素霞,殷人昆.軟件工程概論[M].北京:機(jī)械工業(yè)出版社,2009.11⑵歐陽零.Android編程兵書[M].北京:電子工業(yè)出版社,2014.1[3]百度百科.內(nèi)聚和耦合[EB/OL].[2015-5]http:〃/link?url=aB1uogMfGHyc49rZhYBLoegEEg1pwxQHAAy40VS0csx23FgeLfdSwlIyxUKpq0REZrUVFqpjH8cpTVy20kUHya[4]Android開發(fā)網(wǎng).繪圖開發(fā)[CP/OL].[2012-4]./android/example/19.htmlKeywordsSoftwareEngineering,Android,MobileDevelopment,EfficientEncoding,StandardEncoding,Deve

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論