開発プロセス
概 要
システムを完成させるまでに必要な工程のこと。この工程を重ねることによって最終的にシステムが完成する。開発プロセスの目的は開発作業の最適化にあり、開発プロセスを定義することで各工程の目標をわかりやすくし、無駄なく効率的な開発を行えるようにする。
解 説
開発プロセスは、ソフトウェアなどを開発する際に必要な作業を1段階ごとの工程に分けたものです。工程の分け方や順序などを工夫し、時には実際の作業からフィードバックを得て改善することで最適化した開発プロセスを構築します。結果としてソフトウェアの開発を無駄なく効率的に進められるようになるわけです。特にチームで開発を行う場合は、チーム内で開発プロセスを周知することが意思疎通をスムーズにし、開発効率を高めることにつながります。
プロセスは「工程」や「手順」という意味をもちますが、これは私たちが普段予定を立てて行動するのに置き換えるとわかりやすいです。たとえば食事について考えてみましょう。
- 1 お腹が空いたから何か食べたい(目的、動機)
- 2 何を食べるか決める(要件の定義)
- 3 レシピから必要な材料を集める(設計)
- 4 調理する(実装)
- 5 味見(試験)
- 6 実食(導入、運用)
以上のように、行動を工程ごとに分けて考えることができます。人が行動するときは多かれ少なかれこのような段取りを考えると思います。このような段取りを文書化して定義したものが開発プロセスになります。
開発プロセスにはいくつかの方式があり、どの方式を採るかで開発の進め方もまったく異なってきます。代表的なものとして「ウォーターフォール型」「プロトタイプ型」「アジャイル型」の3つが挙げられます。
- 1 ウォーターフォール型……古くから大多数のソフトウェア開発で採られてきた方式です。開発の始まりを上流、終わりを下流に見立てて水が流れ落ちるように一方向へ順番に開発を進めていきます。開発がスタートすれば工程を順番にクリアしていくだけなので計画を立てやすいメリットがあります。一方で、最初の工程で何か漏れがあった場合、手戻りとなり時間とコストの大きなロスになる危険性を孕んでいます。
- 2 プロトタイプ型……簡易的な試作版を開発し、クライアントの評価を受けて修正や機能追加を繰り返していく方式です。クライアントからの要件漏れを無くして要望通りのソフトウェアを開発できますが、多くの試作版を開発するため時間とコストがかかってしまうこともあります。
- 3 アジャイル型……ソフトウェアを機能ごとに小さく分けて、機能ごとに設計、実装、テストを反復して行う方式です。全体のしっかりとした要件や仕様を決めずに大まかなところで開発をスタートし、開発途中での仕様変更や機能追加にも対応できます。短期間で臨機応変に開発できることからアジャイル(機敏)と名付けられました。

実現できること
- ・全体での意識共有。開発チーム内だけでなく、クライアントを含めた関わる人々全体で共通の意識をもつために、開発プロセスの存在は大きいです。
- ・品質の保証。初期段階からしっかりと段取りを固めることは、品質の保証につながります。
- ・経験の活用。過去の開発経験を開発プロセスに照らし合わせ、より効率的に開発を行えるようにします。
- ・リソースの効率的運用。最適化された開発プロセスを構築できれば後のソフトウェア開発にも活かすことができます。最初から効率的な段取りがわかっていれば、リソースも効率的に運用できます。
- ・やるべきことが明確になる。開発プロセスは、今やるべきこと、次やるべきことを明確に示してくれます。特に経験の浅い開発者にとってはこれが拠り所にもなります。
将来の展開
開発プロセスの方式としてウォーターフォール型は古くから用いられ、特に大規模なシステム開発に適しています。手順をしっかりと定めるため開発者個人のスキルに頼らずチーム全体で効率的に開発を進められます。
一方でIT化の進んだ昨今では小中規模の開発案件が数多く存在し、スピードが求められる場面も少なくありません。そのような開発現場では臨機応変に短期間で開発を行えるアジャイル型を採用するケースが増えているようです。臨機応変のアジャイル型をしっかり運用するには開発者個人のスキルや向上心、コミュニケーション能力などが重要とされていて、これからの開発者に必要不可欠な能力になっていくことが考えられます。