茫茫網海中的冷日
         
茫茫網海中的冷日
發生過的事,不可能遺忘,只是想不起來而已!
 恭喜您是本站第 1668983 位訪客!  登入  | 註冊
主選單

Google 自訂搜尋

Goole 廣告

隨機相片
IMG_4499.jpg

授權條款

使用者登入
使用者名稱:

密碼:


忘了密碼?

現在就註冊!

軟工藝術 : [轉貼]聊一下「版本控管」與 「Issue Tracking 」的專案開發機制

發表者 討論內容
冷日
(冷日)
Webmaster
  • 註冊日: 2008/2/19
  • 來自:
  • 發表數: 15771
[轉貼]聊一下「版本控管」與 「Issue Tracking 」的專案開發機制
聊一下「版本控管」與 「Issue Tracking 」的專案開發機制

我在輔導各單位不同性質的軟體開發團隊,對於專案開發的工具導入,只要求至少要能提供兩種機制給團隊成員們使用。一為 版本控管(Version Control) ;另一為 Issue Tracking

各個單位可以自行選擇,無論是選擇 VSS(Visual Source Safe)/VSTS(Visual Studio Team System), CVS, Subversion, ClearCase 等版本控管工具,以及使用 TFS(Team Foundation Server), ClearQuest, 甚至是只用 Excel 當作 Issue Tracking 工具,這些我都沒有意見,團隊成員們覺得好用、還有,真的有實際在用即可。


不過,我是蠻堅持要至少導入這兩種機制,理由為何? 我覺得道理就是很簡單、很自然。 版本控管機制如同 10 餘年前 Novell FileServer 一樣,所有的文件、設計產出(artifacts)、程式碼都是集中放在一個儲存區 (repository)內,團隊成員就是去同一個地方把開發的文件取出來(check-out),改完後再放回去(check-in),而不同於 FileServer,版本控管就是多了因為共用的議題而衍生出衝突的情形發生時,所提供的解決方式與功能。所以,三年多前,我到某大學教授資訊系的講師與教授等,其中一位帶學生作專案開發的女老師就問道了,每個參與開發的同學都負責某一部份的文件與程式碼,並放置在他們各自的硬碟中,但是要整合時卻是問題多多,該如何解決這問題? 這個就是,不是問題的問題。很自然地,放起一起就對了,交給版本控管工具來協助管理即可,但是,另外一個問題是,女老師認為安裝與設計這些工具是難事,呵,這好像不是理由,往對的方向走後,再來思考 How-to 的解決議題就是了。 Issue Tracking 為何也要導入? 只要是超過兩人以上的開發,必然會有溝通(其實,一個人也會有溝通的問題,與內心自己的溝通),也必然會有問題的紀錄與回應。我最是鼓勵團隊成員第一是勇於問問題,是的,要能勇敢的問問題,這本身就不是一件容易的事。其次就是不要只把問題放在心中,要能 Write Down 下來! 對於某些問題的本身,就是一個可以讓成員之間討論溝通的主題,然後就是把這些溝通的經過給紀錄保存起來,這才是真正有效的知識分享(knowledge sharing)。

簡單的說,版本控管是設計產中的一種共享;Issue Tracking 則是大量溝通的機制。

哪個時候導入? 我是不會專案一開始就馬上導入的,當然,專案經理可以先準備好,我也沒意見。理論上,應該是專案啟動時就要馬上導入的,但是,團隊成員,在那個時間點其實要謀和太多的議題了,包括技能、技術、產出之間的橋接、默契 ... 等太多的事情了。我是不主張一開始就是花時間在工具的學習使用,反而是,慢慢地,等到團隊成員們越來越有默契、越來越覺得好像少了什麼東西似的,那個時候,就是可以找工具來導入的好時機了,而且往往是水到渠成,使用這些工具,不會變成壓力,而真正是一種助力了。


用哪些工具,有沒有差別,是否最好是能有一套統籌的 "ALM, Application life-cycle management" 專案管理機制比較好? 我是不會想那麼多、那麼嚴肅的。工具好用順暢即可,還有,更更重要的是,真的有在用才行! 嘿,是真的有在用,而不是變為一種形式上的紀錄而已喔,實在是好多單位,還真的是淪落為形式而已,哪可不是更形增加軟體開發人員的負擔與反感嗎? 我可不知道這些專案管理層級的主管們是在想什麼。

我輔導過的單位,有使用過 Microsoft TFS, Rational ClearQuest 等比較重量型的 Issue Tracking 工具,當然也有是採用 OpenSource 的工具。有些公司的專案經理,就會請我協助選擇個比較不錯,便宜(最好是免費)的工具,這些我當然欣然接受,沒有問題的。

哪一個 Issue Tracking 的工具功能最佳呢? 就我輔導過許多單位的經驗來看,嗯, 就某大型零售業資訊單位所使用的 Excel 最棒! 因為,他們是我所看過最勇於發問問題,也勤加記錄問題的解決步驟與方案。我們在每一次的輔導,一開始一定是針對 Issue 來討論的,而且,他們也會對 Issue 作分類,還標上顏色識別種類與重要程度。

真的有寫上 Issue,真的有對 Issue 來討論,這才是根本。所以,何嘗 Notepad 不也是一種 Issue Tracking 的工具呢?


原文引用網址:http://www.kenming.idv.tw/htsrv/trackback.php?tb_id=639
冷日
(冷日)
Webmaster
  • 註冊日: 2008/2/19
  • 來自:
  • 發表數: 15771
[轉貼]這隻螳螂(Mantis) 還挺猛的 — 免費好用的 Issue Tracking 工具

Kenming | 09 Apr, 2007 16:05

有些開發單位,並不想用需要付費的 Issue Tracking 工具,會問問我的意見,哪一套工具比較好用? 我是覺得用哪一套,都 OK 啦! 不過,我還是有用心地協助一些單位 Survey 了一下 Open Source 的 Solution。從 Google 爬文後,比較了幾套,包括 BugZilla, trac, Track+, JIRA (付費), RT(Request Tracker) ,都不錯用。不過,後來讓我比較感興趣的是這一套: 螳螂(Mantis)

螳螂(Mantis)的首頁畫面

使用這一套工具的原因是感覺它的可塑性與客製化程度挺高的,而且該專案持續開發與維護的積極度還蠻高的,才就昨天(4/4),又剛釋出了 1.07 的穩定版本。重要的是,它可以整合
dokuwiksubversion 。這挺重要的,尤其是 wiki 功能,使得 Issue Tracking 工具又同時可兼任 Portal,具有文件分享與基本留言討論的功能,讓溝通的機制更加地順暢。 蠻適合於中小專案的團隊,中的規模多大呢? 4,50 人以內吧,我的直覺是使用這套工具是綽綽有餘,沒有什麼問題的。不過,先說明一下,這只是個人的喜好罷了,我可無意陷入工具比較之爭,對於工具的使用,個人只有一個原則,好用就好,還有,真的有在用,這才是重要的。

我為什麼會欣賞這一隻螳螂? 官方網站列舉了一大堆的 Mantis Feature List 。幾個比較有意思的功能:

  • 容易安裝(這可重要)。
  • 多國語言支援,當然包括繁體中文介面。
  • 全文檢索與報表功能。
  • 版本控管(CVS and Subversiion) 與 wiki(dokuwiki) 的整合。
  • 權限驗證的支援(Defatlt, HTTP, LDAP, Active Directory service),不過,這塊可能要有相當的客製化技術能力才能整合得起來。
  • 提供 WebService(SOAP) 的溝通介面。
    這可真不錯,網站上還提供了 Eclipse, .Notifier, Ant Task 等 plug-in,當然,你也可以自行寫 .NET or Java 的 plug-in 外掛,彈性很大。

螳螂是一支利用 PHP 寫成的應用程式,基本上,要安裝 PHP 的應用程式,就是準備好三個基礎建設(Infrastructure)的應用伺服程式就對了。哪三個? MySQL,
Apache2, PHP 。PHP 與 MySQL,我都是採用最新 5.X 版,而 Apache,因為 Subversion 只支援 2.0.X 緣故,注意就不要安裝 2.2.X;至於作業系統,在 Linux or Windows 的平台上,安裝都很順暢,沒有什麼問題的。

安裝上是蠻簡單的,一下子就可以裝好了,稍微注意一下,我安裝的是 1.1.0a2 版本,安裝完後,雖然是支援 utf-8,但是檢視 MySQL 的資料庫,連線校對(collation)卻是被設成 Latin1,安裝完後中文寫入與顯示是沒有問題,但以我先前的經驗,利用 phpmyadmin 備份資料庫系統時,常會出現中文亂碼。所以最好一開始就改成 utf8_general_ci,那就完全沒有問題了! 如何改?兩種方法,一種是先在資料庫系統建立好 Mantis 的資料庫,設定 utf-8 相關的參數,然後執行 Mantis 的 install script 即可;另一種是等完全安裝好後,備份 Mantis 的 SQL DDL 敘述,然後砍掉資料庫、重建、設定好 utf-8 相關參數。

再來就是安裝及設定與 dokuwiki 的整合。設定的目的只有一個,就是可以透過 Mantis 登入後達成 Single Sign-On ,若你覺得 wiki 不需要權限控管,或者 wiki 另有帳號的獨立管理,那也沒有關係,不需要特別強調整合的。整合的步驟好像有些繁瑣,其實也還好,參考這一篇: Integrating DokuWiki with Mantis ,老老實實照這一篇的 how-to 設定就可以完成了。


設定好後,登入 Mantis 的主頁,然後透過 [wiki] 的鍊結,就可以連到 wiki for Mantis 的首頁。DokuWiki 真是小巧玲瓏,語法很容易上手,我是把它當成參考文件的儲存分享與 Issue Tracking 的 Portal,好用的不得了。

DokuWiki 的首頁畫面

我這裡目前還沒有設定與 Subversion 的整合,不過那也不是難事,爾後讓團隊成員可以在螳螂上看到 Subversion 所控管的文件與程式碼,有問題就紀錄下來、有想法或看到不錯的參考文件就寫到 wiki 上,不要把工具當作是一種負擔,也不用特意地去學習它。就是,只要知道,能夠促進團隊之間的溝通與分享,那就是好東西啦。

※ 延伸參考:
 o Mantis 的 官方示範操作網站
 o 聊一下「版本控管」與 「Issue Tracking 」的專案開發機制


冷日
(冷日)
Webmaster
  • 註冊日: 2008/2/19
  • 來自:
  • 發表數: 15771
[轉貼]CentOS 7 上面安裝 Mantis

在 CentOS 7 上面安裝 Mantis (Microsoft AD 認證, xdebug)

 

目的: 安裝 Mantis, 並使用 Windows AD 認證

1. 安裝 CentOS 7

2. 安裝元件

#
# 以 ssh 登入 Linux Server
#

# 安裝 Mariadb ( 替代 MySQL 的 Database)

yum -y install mariadb mariadb-server mariadb-libs

# 安裝 Apache Web Server

yum -y install httpd mod_dav_svn

# 安裝 PHP

yum -y install php php-bcmath php-cli php-common php-enchant php-gd php-intl php-ldap php-mbstring php-mysql php-pdo php-pear php-process php-pspell php-recode php-soap php-xml php-xmlrpc rrdtool-php uuid-php php-pecl-memcache​ php-devel

# 安裝中文字型 (讓統計圖表可以正常顯示中文)

mkdir /usr/share/fonts/ truetype
wget http://www.study-area.org/apt/firefly-font/fireflysung-1.3.0.tar.gz

tar xvzf fireflysung-1.3.0.tar.gz
cp fireflysung-1.3.0/fireflysung.ttf /usr/share/fonts/truetype/arial.ttf

 

3. 設定執行環境

# 設定 vi 可以編輯中文 (需要在 vi 編輯中文才需設定)

cat > ~/.vimrc <<EOF
set encoding=utf-8
set fileencodings=ucs-bom,utf-8,big5,latin1
set fileencoding=utf-8
set termencoding=big5
EOF


# 設定 Mariadb 於開機時自動啟動

systemctl start mariadb
systemctl enable mariadb


# 設定 mariadb root 的密碼
mysqladmin -u root password '<root的密碼>'

# 登入 Mariadb
mysql -u root -p

# 建立資料庫, 登入的User與密碼
create database mantis;
grant all on mantis.* to mantisdbuser@localhost;
set password for mantisdbuser@localhost = PASSWORD('<mantisdbuser的密碼>');
flush privileges;
exit;

# 設定 httpd 於開機時自動啟動

systemctl start httpd
systemctl enable httpd


# 設定防火牆, 開通 80/TCP 與 443/TCP

firewall-cmd --permanent --add-port=80/tcp
firewall-cmd --permanent --add-port=443/tcp
firewall-cmd --reload

# 設定 PHP

# 提高 File Upload 檔案大小的上限到20MB
# vi /etc/php.ini
# 修改 upload_max_filesize = 20M
# 修改 max_file_uploads = 20
# 修改 post_max_size = 20M
# 修改 max_execution_time = 60
# 修改 memory_limit = 512M
# 修改  date.timezone 參數, 改為 date.timezone = 'Asia/Taipei'

# 重新啟動 httpd
systemctl restart httpd

 

4. 安裝 Mantis

# 下載 mantis (撰寫本文章時, 最新版本為 1.2.19)

wget -O ~/mantis.tar.gz http://sourceforge.net/projects/mantisbt/files/mantis-stable/1.2.19/mantisbt-1.2.19.tar.gz/download
cd /var/www/html/
tar -xvzf ~/mantis.tar.gz

mv mantisbt-1.2.19 mantis
mkdir /var/www/html/mantis/log # 放置郵件寄送的紀錄

mkdir /var/www/html/mantis/attachment # 放置 Issus 的附件. 若想把附件直接放 Database (這樣建立專案比較簡單), 則此步驟可以省略
chown -R apache.apache mantis

# 設定 SELinux

chcon -R -t httpd_sys_rw_content_t mantis
setsebool -P httpd_can_sendmail on
setsebool -P httpd_can_network_connect on
chcon -R --reference /var/www/html/mantis /usr/share/fonts/truetype

# 以瀏覽器打開網頁: http://<server ip or name>/mantis/admin/install.php

# 輸入以下資料:
# 1. Checking Installation 的兩個項目必須為綠色的GOOD
# 2. Username (for database) 輸入: mantisdbuser
# 3. Password (for database) 輸入: <mantisdbuser>的密碼
# 4. Database name (for database) 輸入: mantis
# 5. Admin Username (to create Database if required): 輸入: root
# 6. Admin Password (to create Database if required): 輸入: <root的密碼>
# 最後按 "Install/Upgrade Database"


Mantis Install 1  

# 檢查是否所有項目皆為綠色的GOOD

Mantis Install 2  

# 將 admin 目錄移除

  rm -rf /var/www/html/mantis/admin

 

5. 第一次登入Mantis

以瀏覽器打開網頁 :   http://<server ip or name>/mantis, 並以預設的帳號密碼 (administrator/root) 登入

  Mantis Login  

 # 登入會先到建立新專案的畫面, 此時不急著建立專案, 請先改administrator的密碼. 更改完畢後會被自動登出系統, 並回到登入畫面, 此時請以新的密碼登入

  Mantis Change Admin PWD  


 # 將 Administrator 的 Username 修改為一個已經存在的 AD 的帳號 (直接用 Domain Administrator 登入? 不好吧 ~"~), 例如 IssueAdmin

  Mantis Show Admin Detail   


Mantis Rename Administrator  

 6. 修改 /var/www/html/mantis/config_inc.php, 新增以下設定 (注意 <> 部分要修改以符合環境現況)

 

          # 設定透過 AD/LDAP 認證與帳號
        $g_login_method = LDAP;
        $g_ldap_server = 'ldap://192.168.1.1:389/'; # Microsoft AD Domain Controller
        #$g_ldap_port = 3268; # for AD Global Catalog Server (GC)
        $g_ldap_root_dn = 'cn=Users,dc=example,dc=com'; # 看 Users 是放在哪個位置

        $g_ldap_bind_dn = '<My Domain>\<任一個Domain User>'; # 用來連接並查詢 AD 的帳號, 給一般 User 即可
        $g_ldap_bind_passwd = ' <My Domain> \上述Domain User的密碼>'; 
        $g_use_ldap_email = ON; # 用 AD 帳號的 Mail 作為 Mantis 裡面的 Mail
        $g_ldap_uid_field = 'sAMAccountName';
        $g_ldap_realname_field = 'cn'; # 以 AD 帳號的 CN 屬性做為顯示名稱
        $g_use_ldap_realname = ON; # 用 AD 帳號的顯示名稱 (CN) 顯示在 Mantis 上
        $g_ldap_organization = '';
        $g_ldap_protocol_version = 3;
        $g_allow_signup = OFF; #  設定不可申請帳號 (用AD/LDAP帳號登入就自動建立帳號, 因此不須申請)
        $g_send_reset_password = OFF; # 

設定不可以重設 Password (因為 Password 是 AD/LDAP 在控制, Mantis 不能修改)

        # 設定 傳送郵件的方式與寄件人

        $g_administrator_email  = 'IssueAdmin@example.com';
        $g_webmaster_email      = ' IssueAdmin@example.com';
        $g_from_email      = ' IssueAdmin@example.com'; # Mantis 以誰的名義寄信 (From)
        $g_return_path_email    = ' IssueAdmin@example.com';
        $g_phpMailer_method = 2;
        $g_smtp_host = '192.168.1.2'; # SMTP 的位置
        $g_smtp_username = ''; # 若 SMTP 需要登入, 則於此設定登入 SMTP 的帳號

        $g_smtp_password = ''; # 若 SMTP 需要登入, 則於此設定登入 SMTP 的密碼
        $g_enable_email_notification = ON;
        $g_log_destination = 'file:/var/www/html/mantis/log/mail.log'; # 寄信後留個紀錄
        $g_log_level = LOG_EMAIL_RECIPIENT;

             # 檔案上傳設定

        $g_allow_file_upload = ON; # 允許上傳檔案
        $g_max_file_size = 20000000; #  設定上傳檔案的大小限制 (最大20M), 除此之外, 前面章節的 php.ini 亦需有相對應的設定
        $g_file_upload_max_num = 10;  # 最多 可同時上傳10個檔案        
        $g_file_upload_method = DATABASE; # 上傳檔案放置的位置為資料庫. 若想放在 File System, 則設為 DISK

        $g_absolute_path_default_upload_folder = '/var/www/html/mantis/attachment'; # 上傳檔案的目錄, $g_file_upload_method = DISK 時需要設定
        $g_preview_attachments_inline_max_size = 5120000; # 超過 512KB 的圖形檔不允許預覽

         # 打開 Time Tracking 功能 (負責解決 Issue 的人可以輸入處理 Issue 所耗的工時)

        $g_time_tracking_with_billing = ON;
        $g_time_tracking_enabled = ON;
        $g_time_tracking_stopwatch = ON;
        $g_time_tracking_view_threshold = DEVELOPER;
        $g_time_tracking_edit_threshold = DEVELOPER;
        $g_time_tracking_reporting_threshold = MANAGER;
        $g_time_tracking_without_note = OFF;

          # 其他設定


        $g_path = 'http://<網址>/mantis/'; # 網址
        $g_max_failed_login_count = 5; # 登入失敗最多五次, 超過鎖帳 (Mantis 的帳號)
        $g_show_version = OFF; # 不要顯示 Mantis 版本 (網路安全考慮)
        $g_default_language = 'english'; # 新建立的使用者預設語系 (若要改為中文則設定為  'chinese_traditional')
        $g_window_title = ' <顯示在瀏覽器上方的文字>'; # 瀏覽器標題顯示的文字
        $g_show_realname = ON; # 顯示使用者的顯示名稱 (預設是顯示登入帳號, 通常是一串難記的號碼)
        $g_short_date_format = 'Y/m/d'; # 短日期格式
        $g_normal_date_format = 'Y/m/d H:i'; # 一般日期格式
        $g_complete_date_format = 'Y/m/d H:i'; # 長日期格式
        $g_session_validation = OFF; # 是否驗證 Session
        $g_cookie_domain = '.<網址>'; # 設定 Cookie 的 Domain



7. 改以 PDMAdmin/<PDMAdmin的密碼> 登入, 以驗證上述的設定是否正確

8. 安裝外掛模組 (Export/Import, Graph)


Mantis Manage Plugin

9. 安裝 Xdebug

裝這個是為了後續要開發 Mantis Plugins 時用來方便除錯的, 若沒有自行開發 Plugins 的需求 (通常不會有), 請忽略本節

#
# 以 ssh 登入 Linux Server
#
# 安裝 Xdebug
#

pecl install Xdebug

#
# 修改 /etc/php.ini, 新增以下設定
#

[xdebug]
zend_extension="/usr/lib64/php/modules/xdebug.so"
xdebug.remote_enable=1
xdebug.remote_host=<你的 PHP IDE 的電腦 IP>
xdebug.remote_handler=dbgp
xdebug.remote_port=9000
xdebug.overload_var_dump=0

 

10.  Ok 收工

 

 


原文出處:在 CentOS 7 上面安裝 Mantis (Microsoft AD 認證, xdebug) @ Egg Chang 的部落格 :: 痞客邦 ::
前一個主題 | 下一個主題 | 頁首 | | |



Powered by XOOPS 2.0 © 2001-2008 The XOOPS Project|