国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

基于敏捷方法的校園拼單購物系統(tǒng)分析與設(shè)計

2018-02-02 14:59:25郭峰麻強(qiáng)
中國新技術(shù)新產(chǎn)品 2018年2期

郭峰+麻強(qiáng)

摘 要:在拼單購物系統(tǒng)開發(fā)過程中,應(yīng)用了敏捷方法思想和原則,取得了較好的效果。在管理和過程方面應(yīng)用Scrum原則和方法,在具體實(shí)施方法上采用極限編程的多項(xiàng)實(shí)踐,在開發(fā)過程中采用版本控制工具來管理變更,提高了系統(tǒng)開發(fā)效率和軟件質(zhì)量。

關(guān)鍵詞:敏捷方法;軟件過程;拼單購物系統(tǒng)

中圖分類號:TP311 文獻(xiàn)標(biāo)志碼:A

0 引言

本文項(xiàng)目是北京市大學(xué)生科研與創(chuàng)業(yè)項(xiàng)目,由在校本科生自主選題,并在指導(dǎo)教師指導(dǎo)下開展研究與開發(fā)工作。

近十年來,電子商務(wù)發(fā)展非常迅猛,尤其是BtoC形式的在線購物對實(shí)體店造成巨大沖擊,知名的購物平臺如淘寶、京東、亞馬遜、當(dāng)當(dāng)?shù)让刻飚a(chǎn)生大量的在線訂單。但是隨著人力成本的增加,購物平臺的免運(yùn)費(fèi)限額逐步提高,網(wǎng)民購物時頗費(fèi)腦筋,有時需要買的商品達(dá)不到免運(yùn)費(fèi)限額,只好多出運(yùn)費(fèi)或者拼湊一些暫時不需要的商品以節(jié)省運(yùn)費(fèi),同時網(wǎng)購商家經(jīng)常搞一些滿減等優(yōu)惠活動,但是通常一位用戶如果參與該活動會出現(xiàn)購買的商品數(shù)量超出消費(fèi)能力,于是拼單購物就成為受大眾歡迎的一種購物形式。在這種背景下,由北方工業(yè)大學(xué)計算機(jī)專業(yè)5名本科生組成的開發(fā)小組,開發(fā)服務(wù)于移動拼單購物平臺。

在軟件開發(fā)過程中,開發(fā)團(tuán)隊(duì)往往對寫代碼比較重視,為了追求開發(fā)進(jìn)度往往會忽略組織管理等工作,容易在工程進(jìn)度、工程質(zhì)量方面造成負(fù)面影響。本項(xiàng)目采用敏捷方法,取得了較好的效果。

1 敏捷方法概述

敏捷方法是對一類方法涵蓋性術(shù)語。某些軟件項(xiàng)目具有需求易變、快速交付的特點(diǎn),傳統(tǒng)的工程化方法過于嚴(yán)格,一些經(jīng)驗(yàn)豐富的軟件設(shè)計人員在開發(fā)實(shí)踐中分別總結(jié)出多種獨(dú)特而且有效的軟件開發(fā)方法,被業(yè)界概括為敏捷軟件開發(fā)方法。敏捷方法具有類似價值觀,一般都具有以人為本、循環(huán)迭代、響應(yīng)變化等特點(diǎn),目標(biāo)在于能高質(zhì)量地快速交付客戶滿意的軟件系統(tǒng)。其中最就有代表性的獲得廣泛應(yīng)用的方法是“極限編程”和“Scrum”。

在《解析極限編程——擁抱變化》一書中提出了極限編程方法,極限編程包括了一組簡單、具體的實(shí)踐,這些實(shí)踐都是編程活動中常見的技術(shù)方法,結(jié)合在一起形成一個敏捷開發(fā)過程。這些實(shí)踐之間存在相互關(guān)聯(lián),共同支撐敏捷方法的價值觀,如平穩(wěn)的工作效率體現(xiàn)以人為本,根本目的還是要提高開發(fā)軟件的效率和質(zhì)量,現(xiàn)場用戶體現(xiàn)與客戶的合作重于合同的談判,代碼規(guī)范、測試驅(qū)動開發(fā)、集體擁有代碼項(xiàng)目關(guān)聯(lián),集體擁有代碼必然大量涉及項(xiàng)目成員之間的代碼交流,代碼規(guī)范使代碼的可理解性強(qiáng),測試驅(qū)動開發(fā)限制修改代碼的隨意性,持續(xù)集成、小版本發(fā)布使得用戶能夠盡早發(fā)現(xiàn)問題。極限編程所包括的實(shí)踐不是特有的,而是一些通用的經(jīng)過實(shí)際應(yīng)用證明有效的開發(fā)方法,可以在軟件開發(fā)中直接應(yīng)用,也可以擴(kuò)充一些實(shí)踐,其中的某些實(shí)踐也可以根據(jù)項(xiàng)目的各方面特點(diǎn)進(jìn)行調(diào)整修改。

極限編程偏重技術(shù)方面,在管理和過程方面比較薄弱,Scrum起到互補(bǔ)的作用。Scrum提供了一個增量式的、迭代的過程框架。在基于Scrum的軟件項(xiàng)目開發(fā)中,若干稱為Sprint的較短的迭代組成一個完整的軟件開發(fā)過程。每個Sprint的長度根據(jù)軟件的復(fù)雜程度進(jìn)行調(diào)整,一般在2~4周。Scrum方法中,軟件需求通過產(chǎn)品Backlog來描述和管理,產(chǎn)品backlog采用用戶故事的形式進(jìn)行描述,這些用戶故事按照商業(yè)上的優(yōu)先級進(jìn)行排序。采用Scrum的開發(fā)團(tuán)隊(duì)首先針對商業(yè)價值高的需求展開開發(fā)工作,將最高優(yōu)先級的需求分配到最初的Sprint中,在后續(xù)的Sprint迭代周期中逐步實(shí)現(xiàn)較低優(yōu)先級的需求。在每個迭代過程中,召開Sprint計劃會議,對挑選出的需求進(jìn)行討論、分析和估算得到相應(yīng)的任務(wù)列表,這些任務(wù)列表稱為Sprint backlog。每個Sprint的工作完成之后,開發(fā)團(tuán)隊(duì)提交可交付的增量產(chǎn)品,這一產(chǎn)品通過評審意味著本次迭代結(jié)束。

2 基于敏捷方法的開發(fā)過程

本項(xiàng)目規(guī)模不大,需求不夠清晰,需要在開發(fā)過程中逐步確定,在開發(fā)過程中,采用了極限編程和Scrum相結(jié)合的方法。在軟件過程上采用了SCRUM中的迭代周期,具體的實(shí)現(xiàn)技術(shù)上采用了極限編程的最佳實(shí)踐,如簡單設(shè)計、測試驅(qū)動的開發(fā)、平穩(wěn)的工作效率、持續(xù)集成等。

2.1 確定需求

從需求層次角度來看,本系統(tǒng)業(yè)務(wù)需求是明確的,但用戶需求較難確定,由于本系統(tǒng)并非針對具體明確的用戶進(jìn)行開發(fā),只能采用調(diào)查問卷的形式向潛在客戶了解需求。

為便于準(zhǔn)確了解需求及應(yīng)對需求的變化,極限編程采用現(xiàn)場客戶實(shí)踐加強(qiáng)與客戶的溝通。本項(xiàng)目潛在的用戶無法通過駐留開發(fā)現(xiàn)場的方式參與系統(tǒng)的開發(fā),通過調(diào)查問卷的方式了解潛在客戶的需求,在開發(fā)過程中通過電話或者免談的方式與潛在客戶溝通,逐漸確定需求細(xì)節(jié)。

系統(tǒng)隱喻是極限編程方法中用于各方利益相關(guān)者溝通的基礎(chǔ),便于各方人員對需求有一個整體上的共同理解,由于對系統(tǒng)的業(yè)務(wù)需求比較清楚,在開發(fā)過程中沒有特意構(gòu)造一個系統(tǒng)隱喻。

2.2 簡單設(shè)計

簡單設(shè)計就是簡化傳統(tǒng)方法的設(shè)計過程和設(shè)計產(chǎn)品,能夠表達(dá)主要的思想,而不追求文檔的完整性和豐富性?;诤唵卧O(shè)計的實(shí)踐,本項(xiàng)目系統(tǒng)架構(gòu)圖如圖1所示。

軟件系統(tǒng)分為3個部分:基于安卓的移動客戶端、基于Windows操作系統(tǒng)的后臺服務(wù)器、存儲數(shù)據(jù)的數(shù)據(jù)庫系統(tǒng)。移動客戶端通過HTTP協(xié)議將代表拼單信息的數(shù)據(jù)發(fā)送到后臺服務(wù)器,后臺服務(wù)器訪問數(shù)據(jù)庫進(jìn)行數(shù)據(jù)操作,數(shù)據(jù)庫系統(tǒng)處理訪問請求后返回數(shù)據(jù)集,后臺服務(wù)器根據(jù)返回的數(shù)據(jù)集進(jìn)行處理并返回操作結(jié)果。

根據(jù)系統(tǒng)的功能需求,獲得系統(tǒng)的軟件結(jié)構(gòu)圖,如圖2所示。

2.3 編碼環(huán)節(jié)

在編程環(huán)節(jié),本系統(tǒng)采用了測試驅(qū)動開發(fā)、編碼規(guī)范、集體擁有代碼、重構(gòu)這些實(shí)踐。

測試驅(qū)動開發(fā)目前軟件開發(fā)中的常見做法,極限編程將其列為12個基本實(shí)踐之一,按照一般的開發(fā)流程,需要先實(shí)現(xiàn)功能模塊的代碼,然后進(jìn)行測試,測試驅(qū)動開發(fā)采用了逆向的技術(shù)路線,在編寫功能代碼之前要求先寫出測試代碼。系統(tǒng)基于Java進(jìn)行開發(fā),JUNIT包提供了單元測試的相關(guān)類,在設(shè)計工作完成之后,首先開發(fā)了核心類的測試代碼。

在開發(fā)及維護(hù)過程中,由于需求的變化和調(diào)整或者設(shè)計缺陷不可避免地會出現(xiàn)修改代碼的情況,隨著修改量的增加,代碼結(jié)構(gòu)會逐漸混亂難以理解。重構(gòu)就是提高代碼可讀性可禮節(jié)性的一種重要手段,重構(gòu)是在不改變程序功能的情況下,對程序結(jié)構(gòu)進(jìn)行調(diào)整和優(yōu)化的過程。按照極限編程的要求,在軟件開發(fā)過程中,代碼處于團(tuán)隊(duì)共享狀態(tài),每個人不只對自己寫的代碼有所有權(quán),對任何團(tuán)隊(duì)成員寫的代碼也具有所有權(quán),從而允許團(tuán)隊(duì)中的任何人有權(quán)利重構(gòu)任何一段代碼,但是要求重構(gòu)后的代碼一定要通過測試,測試驅(qū)動開發(fā)就變得非常重要,為重構(gòu)以及代碼共有提供了技術(shù)基礎(chǔ)。

在編碼規(guī)范方面,項(xiàng)目組制定了具體的程序風(fēng)格,包括編程環(huán)境的背景色、文本的顏色字體、縮進(jìn)的格式、注釋的類型和要求、標(biāo)識符命名的規(guī)范、界面元素的顏色樣式等等。

因?yàn)閳F(tuán)隊(duì)成員少,極限編程中著名的也存在一定爭議的結(jié)對編程,本系統(tǒng)開發(fā)過程沒有采用。

2.4 人員管理

軟件項(xiàng)目開發(fā)不是全速短跑,而是馬拉松長跑,在人員管理方面采用了極限編程保持平穩(wěn)的工作效率這一實(shí)踐,更容易提高整體的工作效率和質(zhì)量。在開發(fā)過程中,項(xiàng)目組成員盡量不通過加班加點(diǎn)解決問題,而是保持一種穩(wěn)定的進(jìn)度。

在scrum框架中,團(tuán)隊(duì)成員分為3種角色:產(chǎn)品負(fù)責(zé)人,項(xiàng)目經(jīng)理和團(tuán)隊(duì)成員。項(xiàng)目組成員按照3種角色進(jìn)行了分工。

2.5 開發(fā)過程

本系統(tǒng)開發(fā)周期為1年,5位同學(xué)參加該項(xiàng)目,由于還有上課任務(wù),在scrum過程框架的基礎(chǔ)上做了一些調(diào)整。系統(tǒng)開發(fā)過程如下:

(1)確定需求:首先通過調(diào)查問卷,小組會議的形式討論系統(tǒng)的功能需求,并以用戶故事的形式進(jìn)行描述,將獲得的用戶故事按照優(yōu)先級進(jìn)行排列,形成產(chǎn)品需求列表,即Product Backlog。

(2)然后根據(jù)產(chǎn)品需求列表,估算待開發(fā)系統(tǒng)的規(guī)模,以千行(KL)為單位進(jìn)行衡量,以系統(tǒng)規(guī)模為基礎(chǔ)做初步的進(jìn)度安排。

(3)接下來開始一個Sprint, 每個Sprint啟動時召開Sprint計劃會議,該會議的任務(wù)是從系統(tǒng)的產(chǎn)品需求列表中挑選一個用戶故事作為本次迭代完成的目標(biāo), 本項(xiàng)目為每個Sprint迭代制定的時間周期是兩個星期,然后細(xì)化本次選中的用戶故事,形成更小粒度的用戶故事,這些新的用戶故事就是本次迭代要完成的任務(wù),稱為Sprint Backlog;根據(jù)Sprint Backlog為團(tuán)隊(duì)成員分配任務(wù),每項(xiàng)任務(wù)應(yīng)該在兩天內(nèi)能完成。

(4)上述Sprint迭代過程持續(xù)開展,直到所有的產(chǎn)品需求都已實(shí)現(xiàn)為止。

站立會議是敏捷方法中的顯著特色,體現(xiàn)了高效靈活以解決問題為目的而不追求形式的特點(diǎn),站立會議如字面所示參加會議的人員站著開會,每次會議控制在15分鐘左右,團(tuán)隊(duì)成員介紹昨天的任務(wù)完成情況,并向所有成員承諾今天要完成什么任務(wù),遇到不能解決的問題也可以在會議上提出,每個人介紹完成后,要更新自己的Sprint燃盡圖,由于還有上課任務(wù),本項(xiàng)目沒有采用每天開會的形式,每周碰面一次,在開發(fā)過程中微信QQ交流為主。

2.6 版本控制

在軟件開發(fā)尤其是團(tuán)隊(duì)形式的軟件開發(fā)過程中,會產(chǎn)生大量的文檔和代碼,對文檔和代碼的管理和控制是一個關(guān)鍵的任務(wù)。這個任務(wù)如果靠人工完成,當(dāng)軟件規(guī)模較大時,會造成極大的混亂,由于軟件開發(fā)中的文檔和代碼會不斷修改,人工管理的方式只能通過對目錄或者文件編號進(jìn)行,難以有效地記錄、跟蹤、查找文檔和代碼的變化。本課題開發(fā)過程中采用的版本控制服務(wù)器軟件為VisualSVN Server,以TortoiseSVN作為客戶端,這兩者都是免費(fèi)的,項(xiàng)目組將開發(fā)過程中的文檔和源程序保存在服務(wù)器端的中央版本庫,服務(wù)器能夠自動記錄對文檔和代碼的修改,自動維護(hù)版本的變化,開發(fā)人員只需要從服務(wù)器上下載和上傳相關(guān)文檔和代碼即可,簡化了管理的難度,提高了開發(fā)效率。

結(jié)語

通過在拼單購物系統(tǒng)的分析和設(shè)計中應(yīng)用敏捷方法,對軟件工程這一學(xué)科有了更為深刻的認(rèn)識,一方面在軟件開發(fā)中要采用工程化的方法,另一方面要根據(jù)軟件及開發(fā)團(tuán)隊(duì)的特點(diǎn),采用靈活高效的方法和技術(shù)。敏捷方法和傳統(tǒng)的軟件方法不是對立的,存在一定的區(qū)別也有密切的聯(lián)系,根本目的都在于如何提高軟件開發(fā)的效率和質(zhì)量。

參考文獻(xiàn)

[1]普雷斯曼,鄭人杰.軟件工程,實(shí)踐者的研究方法[M].北京:機(jī)械工業(yè)出版社,2011.

[2]桑大勇,王瑛,吳麗華.敏捷軟件開發(fā)方法與實(shí)踐[M].西安:西安電子科技大學(xué)出版社,2011.

鞍山市| 兴隆县| 江油市| 碌曲县| 大姚县| 新郑市| 清远市| 北碚区| 调兵山市| 广宗县| 罗平县| 广丰县| 兴安县| 勐海县| 潞城市| 布拖县| 镇原县| 抚松县| 满洲里市| 安福县| 湘潭县| 晋江市| 南昌市| 抚远县| 常熟市| 阳西县| 玉林市| 临安市| 宕昌县| 山东省| 银川市| 高州市| 新巴尔虎右旗| 荆门市| 锡林浩特市| 成安县| 德安县| 泸定县| 巩留县| 陈巴尔虎旗| 福清市|