[最前線]

基幹系システムにおけるアジャイル開発─アジャイル開発を支える技術面の取り組み

2010年10月28日(木)一橋 範哉(ウルシステムズ シニアコンサルタント)

Web連載の最終回となる本稿では、アジャイル開発を支える技術面の取り組みを取り上げる。また、よく質問される項目であるアジャイル開発における契約の考え方やIT部門の役割についても、説明を加えていく。

アジャイル開発における開発作業では、通常は2週間から1カ月程度のイテレーションの中でアプリケーションを実装することになる。したがって、短い開発期間でも必要な実装が終了するような取り組みを実施しなければならない。スキルの高い技術者を揃えれば可能かもしれないが、前回でも述べたように、それは現実にはなかなか難しい。さらにソフトウェアの品質にも気を配る必要がある。プログラムに不具合が多い場合、その修正作業に時間を要してしまい、新規開発や改善要望対応が進まないことになってしまう。

このような状況に対処するため、特に基幹系のシステム開発においては、アーキテクチャ基盤の整備を実施することをお勧めする。イテレーションごとの開発対象を絞り、高いスキルの技術者の能力を効率的に活用できるからである。

イテレーションでの開発対象を絞る

基幹系のシステム開発においては、データベースアクセスや他システムとの連携などを伴う機能を作り込んでいくことになる。イテレーションの期間が1カ月としても、仕様の説明を受けて設計し、開発してテストすることを考えると、正味の実装期間は2週間程度となる。当然ながらイテレーションの期間がもっと短ければ、実装期間はさらに短くなる。この期間の間に、あるユースケースの実装について、画面周りからビジネスロジック部分、データベースへのアクセス部分までをすべて独自に書き上げるのは、高いスキルの技術者であっても難しいことだ。

このような場合に有効な手だてとなるのが、アーキテクチャ基盤を用意することである(図1)。基幹系システムを複数のレイヤ構造に分け、フレームワークや部品を整備する。例えば、システムの基本機能となるデータベースアクセスやシステム間の連携、セキュリティ管理などの機能については、フレームワークを用意し、その中の機能によって処理するものとする。イテレーションで開発するアプリケーションからは、適切な場所でフレームワークを呼び出せばよい。また基幹系のシステムでよく使用される、取引先管理や製品マスター管理、通貨を含めた金額の計算といった機能についても、個別に実装するのではなく、共通ビジネス部品として提供する。これによって、同じような機能をいろいろなところで開発するという無駄を防ぎ、開発期間の短縮につなげることが可能だ。

図1 アーキテクチャ基盤の考え方
図1 アーキテクチャ基盤の考え方

高いスキルの技術者の能力を効率的に生かす

プロジェクトにおいて高いスキルを持った技術者は希少な存在であり、効果が現れやすい作業に投入することが望ましい。個別機能の実現に関する作業よりも、共通して再利用される部品や基盤の構築の作業に集中的に投入した方が、効果がより高くなる。共通基盤の構築にはトランザクションの制御など複雑な実装が要求されたり、再利用性を高めるための工夫が必要になるなど、高い技術力が要求される。他の開発者からの質問を頻繁に受けるなど、情報が集まりやすい立場にいることも多いため、部品として求められる要件を抽出する作業に関しても適任である。

こうした高いスキルの人材が開発した共通基盤を利用すれば、ソフトウェアの品質にもよい影響を及ぼすことができる。既に他のアプリケーションで利用済みの基盤を利用することによって、品質を保証できる部分を拡大できる。初期の不具合などが改善された時点の基盤を利用することで、品質を一定の水準に保つことが可能になるのだ。

このような基盤の整備は、アプリケーション開発のタスクと連動させつつ、独立して進めた方がよい。アプリケーション開発よりも基盤構築のタスクが先行していることが望ましいが、同時期に進める場合でも、別チームとしてタスクを切り離すべきである。基盤構築にあたっては、アジャイル開発におけるアプリケーション開発のように、必要性が明らかになったシンプルな要件だけにとどまらず、将来必要だと思われる機能を含めて構築することが求められるため、プロジェクトの進め方に違いが生じるからである。

(次ページ: 「アジャイル開発における契約のパターン」など、その他の重要なポイントを紹介!)

この記事の続きをお読みいただくには、
会員登録(無料)が必要です
  • 1
  • 2
バックナンバー
最前線一覧へ
関連キーワード

アジャイル / 基幹システム / ウルシステムズ / プロジェクト管理

関連記事

トピックス

[Sponsored]

基幹系システムにおけるアジャイル開発─アジャイル開発を支える技術面の取り組みWeb連載の最終回となる本稿では、アジャイル開発を支える技術面の取り組みを取り上げる。また、よく質問される項目であるアジャイル開発における契約の考え方やIT部門の役割についても、説明を加えていく。

PAGE TOP