業務システムのライフサイクル管理におけるツール利活用(3)
ツール利活用とシステム開発地図 第3回
当記事は2018年に再編集し、連載として体裁を整えたものです (ツールのバージョン等は内容に影響しないので適宜読み替えて下さい)
設計
「設計」は、方式設計とアプリケーションの概要設計を行います。
方式設計は、非機能要求を実現するために行いますが、ここでは、Visual Studioのモデリング機能のうち、レイヤー図やコンポーネント図を利用することができます。後続の「構築」において、設計と実装の整合性を確認するために、Visual Studioのアーキテクチャービューを利用することができます。(図 10)
アプリケーションの概要設計において、設計クラス図やシーケンス図を描くためにVisual Studioのモデリング機能を利用できます。
構築
構築フェーズでは、実装、テストの効率化と変更管理、継続的インテグレーションの採用などが業務システムの品質と開発効率を向上させる上で重要なポイントとなります。実装とテストがVisual Studio 2010のIDE機能により効率良く実施可能なのは、周知のとおりです。
ここでは、変更管理と発注者の受け入れにおけるTeam Foundation Serverの利活用を説明します。
変更管理
「構築」の段階で変更要求が発生したとき、影響範囲は「要求」「設計」「構築」の各成果物に及びます。
そこで、変更要求は初期の要求とは別に管理します。変更要求に関連する成果物の修正作業を登録して、担当者をアサインし管理します。ソースコードのチェックイン時に変更要求とリンクすることで、ソースコードの修正がどの変更要求に由来するものかを追跡することが可能です。(図 11)
これは、チェックイン時の手順なので、開発者の習慣として定着化を行う必要があります。
継続的インテグレーション
「構築」において、継続的インテグレーションを採用することで、各チーム、各開発者のモジュールの結合を常に実施することになり、構築の早い時期から一定品質を確保しスムースに結合テストフェーズに移行できるようになります。
Team Foundation Server 2010のCI機能により、ビルド、回帰テストおよび結果のレポーティング環境が容易に構築できるため、採用への障壁が低くなっています。(図 12)
システムテスト・受け入れ
開発者側の実施する結合テストや総合テストだけでなく、発注者側の受け入れテストにもTeam Foundation ServerとVisual Studio Test Managerの機能を有効利用できます。
「要件」で作成したユースケースとテストを関連付けて管理することで、システム要件を満たすのに必要なテストをすべてパスしたかどうかを検証することが可能です。Test Managerを使用して、テスターが手動で行うテストや、UIの自動テストをテストスイートとして管理出来ます。テスト実施時のエビデンス採取(スクリーンショットや一連の操作の動画など)が自動化でき、バグの登録とテストケースへの関連付けも同ツールから行うことが可能です。(図 13)
開発者が使用するIDEとしてのVisual StudioからTest Managerを独立させたことで、発注側企業に導入して、効率良く受け入れテストを実施することが可能になっています。
ユースケースに関連付けられたテストケースがすべてテストされているかもTeam Foundation Serverの機能を使って可視化できるため、受け入れ判定に使うレポートを作成することも可能です。
Team Foundation Server 2010とVisual Studio 2010のテスト支援機能について、JSTQB のテストツールの定義と比較したカバー範囲を表 4にまとめました。Visual StudioとTeam Foundation Serverの機能により、高いカバレッジを実現していると言えます。
表 4 JSTQBのテストツール定義との対応関係
種類 | 説明 | Visual Studio/ TFS機能 |
---|---|---|
テストマネージメントツール | テストケースや実施済みのテスト作業の管理支援 | ○ |
テスト実行ツール、欠陥追跡ツール、要件管理ツールとのインターフェースを持っている | ○ | |
独自のバージョンコントロールか、外部の構成管理ツールとインターフェースを持っている | ○ | |
テスト、テスト結果、インシデントから元のドキュメント(要求仕様書など)へのトレーサビリティーを支援している | ○ | |
テスト結果の記録を取ったり、進捗レポートを生成したりする。 | ○ | |
テスト対象の情報提供やテストプロセスの管理、改善のためのテスト(テストケース実行数や合格数など)・テスト対象(起票されたインシデント数)と関連したメトリクス(定量分析)ができる。 | ○ | |
静的テスト支援ツール | コーディング標準の順守 | ○ |
構造や依存関係の分析 | ○ | |
ソースコードの理解(複雑度など) | ○ | |
テスト仕様の支援ツール | テストの設計を支援する。期待する出力結果も作成する。 | ○ |
テストデータを生成する。 | ○ | |
テスト実行と結果記録の支援ツール | テストを自動実行する | ○ |
テストハーネス、ユニットテストフレームワーク | ○ | |
テスト比較ツール | ○ | |
カバレッジ計測ツール | ○ | |
セキュリティーツール | × | |
性能モニタリング支援ツール | 動的解析ツール(メモリーリークなど) | ○ |
性能テスト/ロードテスト/ストレステスト | ○ |
結論
業務システムのライフサイクル管理という観点から、役割・責任の明確化し、ツールの利活用によりトレーサビリティー確保を実現し、業務適合的なシステムを効率良く構築・保全する手法について述べました。
5~10年のスパンで稼働する業務システムでは、企画段階からライフサイクル管理を導入することで、外部変化や経営変化、組織体制の変化に合わせて円滑な保守・運用が可能になります。ただ、管理のためのコストや開発者の作業負荷があまりに高くなっては本末転倒です。業務の特色や企業文化を考慮し、採用するツールの特性を理解して適用することで、ライフサイクル管理の狙いとする効果が得られることでしょう。