ソフトウェア開発に携わる人は必ず出会っているバグ。バグとはプログラムのソースコードの間違いや誤動作するコーディング上のミスのこと。設計工程で発生する仕様間違いなどもバグである。
このバグを効率よく管理してみんなが幸せになるためにどのような点を注意して日々の業務を進めるべきか、について考えてみる。
プログラマーのスキルによる成果物の品質
どこのチームや会社にもスーパーエンジニアと評されるスキルが高いエンジニアがいる、という話を聞く。
私の関わるプロジェクトでもあるエンジニアがいるというだけでチームにとって技術的な安心感であったり、品質面でも安心感を与えてくれることを実感している。
これは管理する側からみても同様に安心感を得られる場合が多い。
特に最近のソフトウェア開発は顧客から短納期・低予算が求められ、専門性の高いエンジニアに大きく依存しているプロジェクトばかりである。開発ではオープンソースソフトウェアやミドルウェア製品、フレームワーク、言語が多数存在しており、それらを「うまく組み合わせた総合的なソリューションを提供」する必要がある。
このような状況もあり、専門性の高いエンジニアに大きく依存しているプロジェクトが多いように思う。このようなプロジェクトでは経験に価値があり、技術全体を俯瞰して考えることができるエンジニアの付加価値が大きい。
このスキルは簡単に身につくものではないが物事の理由を考えながら高い意識で仕事することで養われていくと信じている。
スキルの高いエンジニアでは成果物の品質にも大きく影響し、バグの少ない、メンテナンスしやすいプログラムができる。
すべての開発をスーパーエンジニアに依頼することが理想だが、決められた予算とスケジュールを持つプロジェクトでは到底無理な話で、スキルがバラバラのチームで開発することになる。
スキルの異なるチームの生産性を上げるための話題や研究は考えられてきているが。。。ここではプログラマー、テスターが一番触れる機会の多いバグ管理の運用管理について書いていこうと思う。
バグ管理の必要性(メリット)
開発の現場でよく聞かれる管理方法として
- Excelなどの表計算ソフトで管理
- オープンソースのBTS
- パッケージ製品
- 紙
最近はTrac、Redmine、Mantis、BugzillaなどのBTSの利用が増えてきていると実感している。
世の中にはバグ管理だけでも多くのツールが存在しており、各製品には多くの特徴やバグ管理をサポートする機能が提供されている。これから数回に分けてビギナー向けバグ管理のノウハウをまとめていくがツールに依存した説明は避け、バグ管理の運用と考え方にフォーカスしようと思う。
バグ管理の必要性(メリット)について
1.バグが管理されデータベースが用意されることで、発生障害についてチーム内の意思疎通がスムーズになる
管理方法が統一されることで、電子メールによる共有や都度作成するレポートよりも正確に内容を伝えることが可能
2. DB化することで、バグの通番管理(追跡と参照)が自動化され、レポートのための分析や報告が提供できる
3. 開発チームは、プロジェクトチーム、マネージャ、顧客、ユーザのそれぞれにとって重要な観点から考え修正を進めることができる。(バグには優先順位が存在する)
優先度がないバグは「声が大きい人」の報告したバグほど早く修正されがちになる
4. 「バグの発見→レポート→担当者割当→解決」について、全てのライフサイクルを通じたバグ管理が出来る。
バグがどこかのライフサイクルに潜り込み、早期修正が必要なバグから注意がそれることがない。
5. 開発チームやプロジェクトチーム、テスターの全員が最新の状況を簡単に入手できる。解決したバグはナレッジとなる。
これらのバグ情報は、リリース製品に紛れ込み、サポート部隊のコストを上げる原因、売上の伸び悩み、使えないシステムという辛らつな評価につながる問題に対する対策が可能
チームにとってスキルや役割の違う人々がスムーズな意思の疎通を行うためにも、ベースとなる一元化されたバグ管理は必要である。