30
軟體工程 - 期末報告 微型團隊的 WEB 程式開發流程 N004020014 張明泰 2013.06.15

微型團隊的 web 程式開發流程

Embed Size (px)

DESCRIPTION

 

Citation preview

Page 1: 微型團隊的 web 程式開發流程

軟體工程 - 期末報告

微型團隊的 WEB 程式開發流程

N004020014 張明泰2013.06.15

Page 2: 微型團隊的 web 程式開發流程

大綱

● 團隊是一個 5 人內的微型的協同合作團隊。● 以 SCM 配合專案開發的流程,來管理開發專案。● 預計提出一個實務的開發的工作流程,配合 SVN 軟體來

執行 SCM 的辨識、變更管理、狀態報告及稽核等工作該。

● 軟體預計使用 Subversion Server 及 SVN Client ,配合 REDMINE(bug tracker) 來追蹤專案的執行。

● 實際使用上可能會遇到的問題及提出解決的方式。

Page 3: 微型團隊的 web 程式開發流程

主題

● 開發團隊的工作情境角色及開發方式說明● 開發方式遇到的問題● 解決的對策● Redmine 專案管理網站● SVN Server 及 Client 使用方式● 預期困難● 心得

Page 4: 微型團隊的 web 程式開發流程

(1) 開發情境

● 微型的專案團隊,一個全職其他為兼職。● 開發的環境及程式為 PHP +HTML + JS 的 WEB 程式。● 資料中心架構,以後端的 MySQL or PostgreSQL 為資料

核心。部份為 Oracle 。● 需求由專案經理溝通協調確認,透過 issue tracker 做功能

交派。● Server 平台為 Linux ,使用 FTP 上傳更新,網頁直接驗

證測試。

Page 5: 微型團隊的 web 程式開發流程

(1) 開發情境 - 示意圖

Page 6: 微型團隊的 web 程式開發流程

(2) 開發遇到的問題

● 開發者之間互相蓋掉對方的程式碼,且不知道版本的差異及改正修正哪些問題。

● 需求不斷更動,沒有紀錄不知道改些什麼。● 如果有新的成員加入專案,必須要重新說明開發的每各細

節。● 對於專案管理者,無法掌控目前的開發進度。● 測試和正式機器同一環境,安全性及穩定性有問題。

Page 7: 微型團隊的 web 程式開發流程

(3) 解決的對策

● 使用版本控管軟體 (svn or git) 解決程式碼覆蓋的問題。● 使用 wiki 協同作業軟體解決文件不斷更動的,讓文件的變

動可以追蹤。且可以作為對新成員的教育訓練文件。● 使用 issue(bug) tracker 來追蹤問題,使用專案管理的時

程來掌握進度。● 調整開發、測試及釋出版本的流程,並規範確實遵循。

Page 8: 微型團隊的 web 程式開發流程

(3) 解決的對策 - 開發關係示意圖

Page 9: 微型團隊的 web 程式開發流程

(3) 解決的對策 - 角色

● 專案經理:即是首席程式設計師擁有所有平台環境的存取管理權限。 ( 首席程式設計師團隊 P367)

● 開發人員:兼任測試人員,可以 commit 各版本到 Testing 平台,並且自行測試功能正常沒有問題後,就可以自行 Release 正式發布的平台。

● 報告人員:只擁有 Redmine 專案平台的問題回報權限,工作的分派由專案經理分派或開發人員認領。

Page 10: 微型團隊的 web 程式開發流程

(3) 解決的對策 - 需求已確認的開發流程

● 專案經理確認需求及功能,以 REDMINE 的建立問題 -> 功能說明需求。

● 開發者再本地端建立一個開發者使用的測試環境,所有的測試都在這裡地方。

● 本地端程式碼的編寫測試更新都透過 svn client 上傳更新到 svn 儲存庫中。

● 當測試到一個段落,將程式碼放到 Testing 的 LAMP 平台上,測試人員進行測試。

● 如果有問題,測試人員再 REDMINE 上面填寫問題回報,系統會以 Email 通知開發人員。

● 開發人員接件,解決問題。專案經理再過程中全程協調監控所有的活動狀態。

● 當測試沒有明顯的問題後,就進行 Release 程式更新到正式的 LAMP 平台上面。

● 完成一個 Release 後,再 REDMINE 上編寫這個里程碑的文件。( 文件的編寫程式過程中,就和程式碼寫在一起,整理文件再整個 review 一次 )

Page 11: 微型團隊的 web 程式開發流程

解決的對策 - Redmine 專案管理平台

http://redmine.jangmt.com/http://redmine.jangmt.com/

Page 12: 微型團隊的 web 程式開發流程

(3) 解決的對策 - Redmine 專案管理平台

● Redmine 功能清單 (ref:RedMine Features)

● Per project wiki - 每個專案獨立 Wiki 系統

● Per project forums - 每個專案獨立 討論區

● SCM integration (SVN, CVS, Git, Mercurial, Bazaar and Darcs) – 支援多種版本控制系統

● Multiple projects support - 可以開多專案管理

● Flexible role based access control - 多種角色的存取控制

● Flexible issue tracking system - 議題追蹤管理

● Gantt chart and calendar - 甘特圖自動生成、行事曆

● News, documents & files management - 文件、檔案管理

● Feeds & email notifications - RSS 、 Email 通知

Page 13: 微型團隊的 web 程式開發流程

(3) 解決的對策 -RedMine活動

● Activity

● 可以知道最近專案的活動狀態。

● 包含問題處理、文件編寫、程式碼更新等 ....

Page 14: 微型團隊的 web 程式開發流程

(3) 解決的對策 - RedMine 問題清單及新問題

● 可以針對 BUG 或議題或變更管理並且給予追蹤及確認的後續流程。

● 此功能定位為紀錄每個變更事件發生時候詳細紀錄。

● 可以用 mail 追蹤這個問題的處理狀況。

● 可以分派這個工作給開發人員,可以安排預計規劃的工作時程。並且與甘特圖結合。

Page 15: 微型團隊的 web 程式開發流程

(3) 解決的對策 - Redmine甘特圖 or 日曆

● 甘特圖和日曆可以協助安排專案的時程,視覺化顯示專案的進度。 .

Page 16: 微型團隊的 web 程式開發流程

(3) 解決的對策 - RedMine 的 wiki

● WIKI 可以用來記載需求文件及需求變更的管理。且以系統化的方式紀錄。

● 因為可以查詢版本變化的過程,所以適合需求變更的軟體專案開發活動使用。

● 和問題追蹤不同處在於可以系統化的紀錄專案。

Page 17: 微型團隊的 web 程式開發流程

(3) 解決的對策 - Redmine 儲存庫

● 可以結合 SVN or GIT 等外部的版本控管系統,同時知道程式碼的變更狀況。方便稽核程式碼。

● 可以再 web 上 diff 比較檔案。

Page 18: 微型團隊的 web 程式開發流程

(3) 解決的對策 -SVN 版本控制系統

● 使用 SVN 版本控制系統的原因:● 可在協同開發創作的環境中可以保有所有的變動紀錄、回復到指定的版本、成員的程式更動與其更動狀況紀錄。

● SVN 是集中式的版本控制系統,需要網路才可以更新。● 其他的版本控制系統: GIT( 分散式版本控制系統 )

Page 19: 微型團隊的 web 程式開發流程

(3) 解決的對策 -SVN 軟體及使用原則

● Windows 上常見的工具有 TortoiseSVN

● Linux 上推薦 RapidSVN (GUI) 及命令列 SVN

● Repository :儲存放置文件的儲存庫或資料庫● SVN 可以透過 http 、 https 、 ssh+svn 、 svn 等方式存

取。 Ex: svn://svn.jangmt.com/home/repos/test/

● SVN 目錄習慣上分成為 Trunk/Tags/Branches 。

Page 20: 微型團隊的 web 程式開發流程

(3) 解決的對策 -SVN原則

● Trunk: 版本主幹,主要開發都在這裡● Tags: 可以依據里程碑或 Release 的版本

分支成為 Tags

● Branches: 通常用於功能點的分割或 bug 的修正。完成後使用 Merge 合併回 trunk 。

Page 21: 微型團隊的 web 程式開發流程

(3) 解決的對策 -SVN 功能 (1)

● Svn Checkout 將 SVN 儲存庫中的資料取出

● Svn Update 更新 svn 上面的版本到最新

● Svn Commit -m ' 說明 ' 提交修正的內容

● Svn add 將檔案或目錄加入 svn 儲存庫,需要 commit 後才會生效。

● Svn mv 改檔名

● Svn status 顯示上次 update 後的檔案狀態 , 有 conflict 也會顯示。

● 常見的 SVN 檔案狀態 : A - 新增檔案C -檔案和儲存庫不同,合併失敗需要人工介入處理M - 有修改過得檔案? - 新的檔案不在儲存庫中

Page 22: 微型團隊的 web 程式開發流程

(3) 解決的對策 -SVN 功能 (2)

● Svn revert 目錄 /檔案 還原為前一個版本

● Svn info 顯示目前 SVN 的相關資訊

● Svn resolved 處理 conflict 的狀況 , 否則 commit 都會出問題

● Svn diff 比較目前的檔案和 SVN 儲存庫的不同處

● Svn copy 可以用來建立 Branch 分支或 tags 保存版本狀態。

● Svn import 將本地端來源匯入 svn 儲存庫

● Svn log 顯示 commit 的 log 狀態

● Svn lock 鎖定檔案

● Svn unlock 解除鎖定

Page 23: 微型團隊的 web 程式開發流程

(3) 解決的對策 -SVN原則

● 同時間只有一個人的開發方式:● 直接對 儲存庫的 trunk 主幹作 commit ,先上 Testing

平台測試,沒問題後再 svn update 到 Release 的平台。● Redmine 的文件及 issue 解決仍是需要回報。

Page 24: 微型團隊的 web 程式開發流程

(3) 解決的對策 -SVN原則

● 修正 bug 的方式:● 1. 先作 svn update 將程式碼更新到最新版本● 2. 檔案較少可以 lock 該檔案,修正後重新 commit 到

Testing 機器。沒問題後再 Release 小版本修正。● 寫功能的方式:● 1. 先作 svn update 將程式碼更新到最新版本● 2. 寫功能一定要 copy a branches ,測試完成後再

merge 合併回 trunk 。

Page 25: 微型團隊的 web 程式開發流程

(3) 解決的對策 - 資料庫的對策

● 因為使用資料中心的架構的開發方式,資料庫資料是核心的一環。

● 讓開發者可以存取維護三個不同開發流程中的資料庫,但在資料上以每日或每 6小時備份的方式避免發生不可逆轉的意外。

Page 26: 微型團隊的 web 程式開發流程

(3) 解決的對策 - 開發方式原則

● 參考極限編程的流程。遵循期核心價值:溝通、簡單、回饋、勇氣,掌握基本原則。

● 再遵循原則流程中,放手讓開發人員去開發,確保資料可以回朔保存,最多損失一天的開發量。

● 一次不用寫太多,分成小功能逐步編寫。● 寫程式就同時寫註解,但是要避免亂寫。● Code 要有一定的水準才提交,提交要有責任感。

Page 27: 微型團隊的 web 程式開發流程

(3) 解決的對策 - 開發方式原則

● 一定要遵循測試開發的流程,謹慎的開發流程 Policy 可以減少爆肝修 bug 的次數。 ( 不要在下班前 2小時 Release code)

● 每次開發以 3HR左右為一個短循環,立即驗證且得到回饋。要求每次短循環的開發都要寫下文件。 ( in Issue tracker or wiki )

● 以人性的角度思考程式碼及功能,不要做出違反人性的工作及程式。

Page 28: 微型團隊的 web 程式開發流程

(4) 預期困難點

● 開發人員會因為時程壓力或怕麻煩而沒有遵循這樣的開發流程規則。

● 此種開發模式類似極限編程方式,需要有獨當一面的開發人員。

● 開發人員的 code style 不好規範,寫出來的程式很難重複使用。

● 不能使用程式框架這會讓新進人員的學習曲線過高。● 整合的開發環境,開發人員無法熟悉每個環節。

Page 29: 微型團隊的 web 程式開發流程

(5) 心得

● 對於團隊的軟體的開發流程,實務上沒有經歷過合作或遇到問題沒辦法準確的抓出問題的所在。

● 迎合實際的工作環境,設計出自己執行上合理的維護流程,我想是這門課給我最大的收穫。

Page 30: 微型團隊的 web 程式開發流程

報告完畢