H27 技術士(情報工学)ソフトウェア工学 III-1:アジャイル開発


(1)アジャイル開発の特徴
アジャイル開発は反復と呼ばれる、1週間から2週間の短い期間を単位として、小さな機能追加を繰り返し行いながらソフトウェアを開発する手法で、技術的には小さな機能単位に複数の人(チーム)が並行して開発を行うための機能の分解に特徴がある。また、機能要件が明確になっていない案件では、確定した機能から順次開発して、並行して要件の整合が行える。
運用面では、開発した個々の機能(ソフトウェア)は都度リリースを行うため、毎週のように利用者とのリリース内容の整合を行う必要がある。また、リリースした機能によるデグレが発生したりしないように、評価体制を整備して十分なテストを行ってからリリースする必要がある。
ビジネス面では小さな単位であるが毎週機能が追加されるのはユーザーへのアピールになるので、ユーザーから見た有効な機能を重視して先行的に開発することができる。また、全ての機能を開発してからリリースをする必要がないので、個々の機能について利用者からフィードバックを受け改良を行うことができる。

(2)アジャイル開発の課題
アジャイル開発では短い単位で反復した開発を行うが、機能によっては短期間での開発が困難なものもあり、これをいかに機能分解するかというところに技術的な課題がある。
無理に機能を分けると分解した機能間の結合度が高くなり、インタフェースの整合などで時間がかかったりして短期間での開発が困難になることがある。特に開発チームが大きくなると個々のインタフェースの整合が複雑になり、開発期間の多くをインタフェース部分の整合にとられてしまうという問題がある。
運用面では難しい機能を短期間で開発するにはそれなりの経験が必要になるので、難しい機能が特定の技術者に集中し、負荷に偏りが発生したり、経験の浅い技術者は簡単な機能しか割当てられないので、技術者の育成がなかなか進まないということがある。また、リリース前のテストでも開発チームが多くなると1回のリリース機能も増えるがテスト期間は限られるため、テストのための要員も増やす必要があり、テストチーム内の整合も複雑になってしまう。
ビジネス面では、毎週のようにリリースを行うため、ユーザーへの説明を頻繁に行う必要があったり、ユーザーでも都度受入検査を行ったり、バージョンアップを行うなどの負担が発生してしまう。また、機能要件が確定しない段階で開発に着手するため、スケジュールがはっきりせず、要員の確保、予算(費用)の確定などに課題がある。

(3)課題への対策
アジャイル開発の課題への対策としては、アジャイル開発を適用する開発案件を案件の特性から見極め、アジャイル開発が不得手とする案件ではウォーターフォールなど他の開発手法を用いるべきである。
アジャイル開発が得意とする案件としては、@ベテランの開発者が参加している、A開発中に機能要件が変わることが予想される、B開発要員数が少ない、C細かな機能単位でのリリースが可能であるなどである。
これに対し、@経験の浅い開発メンバーが多い、A機能要件がはっきりしていて変更のリスクが低い、B開発要員が多い、C全ての機能をまとめてリリースする必要があるといった案件ではアジャイル開発の適用は難しいので、ウォーターフォールなどの開発などを適用したほうがよい。
また、アジャイル開発で行う場合でも、ユーザーと開発方式については整合し、機能ごとに頻繁にリリースを行うアジャイル開発でも問題ないか確認することが望ましい。


[Intermission]
10年程前、社外の委員会に参加したとき、アジャイル開発を強力に推している人がいました。その人もアジャイル開発には得手、不得手があると言っていた気がします。
で、アジャイル開発が向いている具体的な案件ですが、ユーザーインタフェースの多いソフトになると思います。例えばですが、MS-Wordのような文書作成ソフトや図形描画ソフトなどは向いていると思います。



戻る 一覧へ