ICTシステムは様々な業務特性があり、要件の固まり具合や、開発規模、他システムとの連携度合いにより、最適な開発/保守プロセスが異なる。ウォーターフォールとアジャイル開発、IT全般統制(開発/運用分離)とDevOpsなど、一見対立する概念に見えるが、それぞれに含まれる技術要素やニーズをひも解くことで、良いところどりの最適解を見い出せる。

 事務系におけるICT活用の始まりは、既存業務の効率化、作業品質向上、オンラインリアルタイム化などであり、既存の伝票や事務規定から、実現すべき管理項目や業務プロセスをシステム要件として定義できた。

 ウォーターフォール型の開発は、いわゆる「V字形プロセス」から成る。要件定義から外部設計、内部設計、プログラミングまでに至る工程と、それらの各工程に1対1で対応したテスト工程が設定されているため、工程単位の品質確保や工程間の要員の引き継ぎ・増減を可能にしている。いわば、工程を分業させた流れ作業であり、毎回、下流工程への作業指示書が異なる大量生産のためのものである。

要件が変化し続けるシステムにはアジャイル

 一方、新しいビジネス領域を起こす場合、明確なのはビジネス要求のみであり、要件定義に必要な管理項目も業務プロセスも仮説から始まる。従って、最低限必要な機能から、リーンスタートアップし、ビジネスオーナーと開発優先順位を決めながら、短かいサイクルで機能追加・変更していく(SCRUMなど)。

 短かいサイクルで小規模デリバリーをするためには、流れ作業ではなく“多能工”がセル生産した方が工程間の引き継ぎが不要で、ドキュメントも最小限で済む。品質担保の観点では、機能確認のためのテストセットを設計時に作成し(TDD:テスト駆動開発)、ビルド~テストを自動化する(CI:継続的インテグレーション)。アジャイル開発の実践を通じて得られたこれらの手法は、XP(extream programming)などで体系化されている。