ノベルティメディア
mediaアジャイルって何!? システム開発の手法について一挙解説!
みなさんこんにちは!
UI/UX設計を強みとしたシステム開発も行う、ノベルティエンジニアの橋本です!
本日のコラムではシステム開発(ソフトウェア)の手法についてご紹介していきたいと思います。
手法なんてあるの!?って方にもぜひ読んでいただきたいなと思っておりますので、なるべく専門用語を控えつつ進めていきます。
さて、エンジニア問わず、もしかしたら最近ビジネスシーンのどこかで、「アジャイル」なんて言葉を聞いた方はいらっしゃいませんか?
こちらもシステム開発手法の一つになりますが、システム開発でなくても採用されるようになった、お仕事の進め方と言ってもいいかもしれません。
記事を読んでいただくことで、下記のことを共有できればと思っています!
- システム開発の手法を知ることで、プロジェクトを円滑に進めることができる
- システム発注をする業者さんの仕事の進め方を理解できる
- よく聞く「アジャイル」について知ることができる
- 身近なお仕事に活かすことも!
開発手法一覧を知ろう
まずは一度概要を揃えてみましょう。
システム開発の手法、と言ってもシステム開発は広義にモノづくりです。建築と比較するとイメージがつきやすいかもしれませんが、目的の成果物があって、設計図があって、それに従って開発(プログラミングなど)を行うことが一般的です。
今回は身近なお仕事にも活かしたいという観点から、3つのメジャーな手法を中心にご紹介していきたいと思います。
※開発手法の内容はあくまでも例となります。あらゆる企業様によって開発手法は研究され、独自の改善方法が取り入れられている場合も多々ございます。
ウォーターフォール型開発
各フェーズごとに作業を進行させ、リリースするオーソドックスな手法です。歴史ある手法で、多くのシステム開発の現場で採用されています
アジャイル型開発
近年特に注目を集めている手法で、小さく短いステップでリリースまで行っていき、それを繰り返していきシステムを完成させる手法です。
プロトタイプ型開発
試作品を開発し、それをベースにブラッシュアップを行うことで品質の向上を狙う手法です。
以上が、今回ご紹介させていただく開発手法になります!
それではさっそく、各手法についてクローズアップしていきましょう。
ウォーターフォール型開発について
ウォーターフォール型開発は、システム開発における古典的な手法として幅広い現場で採用されています。
各フェーズごとに作業が進行し、最終的にリリースする流れとなります。名前の由来の通り「滝」のように流れる作業が行われる点が特徴です。
上流から下流に指示を出し、それを基準に実行していく流れなので、イメージもつきやすいと思います。これはシステム開発だけでなく、一般的なお仕事のフローとして用いられていることが多いですね。
では、どのようなフェーズが行われるのか見ていきましょう。
ウォーターフォール型の流れ
要件定義
システムの要件や機能の全てを明確にするフェーズ。プロジェクト全体の計画もここで決定するケースが多い。システムに対する要求を収集し文書化することをゴールとする
設計
定義された要件を基に、システム全体の設計や細分化される各機能の設計を行う。ここで作業分担などが明確化され、実装の準備が整う。
実装
設計フェーズでの指示に基づき、実際にプログラミングを行う
テスト
実装されたシステムが要件定義で定められた要件を満たしているかを確認するフェーズ
では、どのようなメリットとデメリットがあるのでしょうか?
メリットとデメリットの比較
メリット
- 各フェーズが明確に区切られているため、進捗の管理やドキュメントの整備がしやすく、プロジェクトが破綻しにくい
- 全体の流れやスケジュールが明確。リソースの計画や予算の管理を順序立てて行うことが可能
- 成果物やドキュメントが各フェーズで明確に存在するため、後からの見直した際の確認や引継ぎにコストがかかりづらい
- 最後にテストを実行するフェーズを明確に設けているため、品質の確保やバグの検出が比較的容易
デメリット
- プロジェクトに対する変化への対応が難しい。一度決定した要件を実装フェーズで変えようとすると関連箇所の洗い出しや多くの巻き戻りが発生する
- 一つのフェーズに遅延が発生するとプロジェクト全体が後ろ倒しになりやすい
- 利用者のフィードバックは実装後が最短となり、上記の変更対応の非柔軟性がネックになりやすい
- 全てのフェーズを実行するには多くの時間がかかるため、リリースまでに顧客ニーズが変わっている可能性もある
デメリットが変化の早い現在では大きな枷になっている印象はあるかもしれませんが、プロジェクトが破綻しにくいという計画性の部分は大きなメリットだと思います。
アジャイル型開発について
アジャイルは「素早い」を意味する言葉なので、その名の通り「速度」そして「柔軟性」が最大の魅力となる開発手法です。
実際のやり方は、「計画」「設計」「実装」「テスト」「リリース」を小さい機能単位で繰り返していくことになります。
まずは速度についてです。開発期間とそれに基づく対応機能範囲を決め、定期的にリリースを繰り返すことで変化の早い現在においても、開発速度を担保し結果を追求しやすいモデルとなっています。
開発期間については、2週間〜数ヶ月で小さく切り分けていくイメージです。
次の柔軟性ですが、アジャイル開発は「大体どんなシステムを作るか決めるが、詳細は決めきらない」点が柔軟性を担保しています。ウォーターフォールのように事前に計画を決めておくケースは少なく、途中での変更を前提として手法なので、リリースした後のフィードバックによって柔軟に次の課題を決定し実行します。
さまざまなポイントを経てアジャイルは真価を発揮するものとされていますが、大事なポイントを要約すると下記の通りになります。(実際はたくさんありますが、情報過多になってしまうのでまた機会があれば)
- プロセスやツールよりも個人との対話を重視する
- ドキュメント(設計書)よりも動くソフトウェアを重視する
- 契約内容より、顧客との協調を重視する
- 計画よりも変化を重視する
では、実際の開発の流れはどのようになるのでしょう。
アジャイル型の流れ
プロジェクトの初回実装前にある程度のシステム設計は決めるとして、その後の繰り返しの動きの例は下記の通りになります。
計画
顧客の要望を定義し、機能の優先順位を決める
設計と実装
簡易的なドキュメントを残すケースもありますが、コードで理解できるようにすることに重きを置いているケースも多くある
デイリースクラム
チーム単位で進捗状況や問題点を共有する短いミーティングを行う
テスト
計画の段階で決定した要件やスクラムの改善内容に準拠し、テストを行う
ウォーターフォールと比較すると、かなり違いますね。
特に重要な点が、機能の優先順位です。もちろん全てをリリースできればそれに越したことはないですが、取捨選択をきちんとすることでゴールに辿り着く能力が必要になります。
フィードバックや柔軟な短期計画が重要な観点から、お客様のご意見もウォーターフォール型と比較してより多くいただく必要があります。
ですのでアジャイルは「ビジネスとITが一緒になってゴールを目指す」といった表現もされます。
ではメリットとデメリットを比較してみましょう。
メリットとデメリットの比較
メリット
- 途中での変更を前提としているため、新しい要望やアイディアを取り入れやすい
- フィードバックが小さなステップごとに得られるため、問題点を素早く克服できる
- 無駄な機能を常に検討し、優先度を決めてリリースを行うことができるため、開発コストを抑えることができる
デメリット
- 全体の計画を最初に立てないので、プロジェクト全体のコントロールが難しい
- 明確な設計ドキュメントを求められる手法ではないため、進捗状況の管理が難しい
- 個人との対話を重視しているモデルのため、チーム内での連携やコミュニケーションは密に必要
状況によって使いこなせることができれば非常に強力な開発手法になりますが、全体のコントロールが必要になるのでマネージャースキルもウォーターフォールとは違った形で求められますね。
チーム全員がアジャイルについて熟知し、お客様含め一丸となって実行することが重要な開発手法です。
とはいえ実際に難易度も高めなので、スクラム開発というフレームワークも存在します。このようにルールを明確にすることで、近年では取り入れやすいものになってきているかと思います。
近年ビジネスの変化が加速しているため、優先度を決めて小さく結果を出していき、柔軟に次の目標を考えていくスタイルが、ITの枠を超えてアジャイル開発が注目されている要因になっています。
プロトタイプ型開発について
プロトタイプ型開発(プロトタイピング)とは、早期の段階で試作品を作る手法になります。その試作品をベースにプロジェクトマネージャーやディレクター、お客様などなどにレビューをもらいます。
それを経て実際の成果物の詳細が決まるので、システム開発の経験がない方にも具体的なアイディアなどを言語化しやすくなります。
試作品からの変化が重要な開発手法なので、基本的に最初に要件を決め切らない点がアジャイル型と類似しています。
何事も試作品作りは良いものづくりに大切な要素ですよね。それを形にしたフローがプロトタイプ型の開発になります。
要件定義
顧客の要望をある程度定義し、試作品が作れる状態にする
試作品の作成
要件をもとに、初期の試作品を開発する。
※初期は実際の機能よりも、UI/UXを重視するケースが多い
評価
社内および顧客からフィードバックを得て、次の開発の計画を立てる
繰り返す
試作品の作成と評価を繰り返すことで、製品の品質を高める
本開発
試作品が要件を満たす形になった段階で、本開発を行う
テスト
試作品評価時の要件に準拠し、テストを行う
プロトタイプ開発は、お客様の求めている要件を的確にキャッチできるところが魅力的ですね。認識の齟齬なく本当に作りたいシステムの実現ができるのではないか、と予測を立てやすい印象です。
特にアジャイル開発と比較すると、システム開発に携わった経験値のない方でも、具体的な言葉にしてレビューしやすいですね!
では、どのようなメリットとデメリットがあるか比較してみましょう。
メリット
- 要件の齟齬が少ない、かつ高品質のものが実現できる
- フィードバックが試作品を通じて得られるため、問題点を素早く克服できる
- 試作品を通じ、開発者とフィードバック側のコミュニケーションが円滑
デメリット
- 試作品の開発と改善を繰り返す前提なので、期間は長くなる可能性が高い
- スケジュールのコントロールが難しい
- 実際に開発したが廃棄する機能も発生する可能性がある
- 試作品への依存が発生し、本来重要な内部的設計が疎かになる可能性がある
比較してみると目に見えるものがあることを前提にする、ならではのトラブルもありそうですね。
リリースをするアジャイルと比較すると試作品の開発を繰り返すので、エンドユーザーの要望をキャッチしきれない可能性もあり、注意は必要ですね。
まとめ
以上がシステム開発の手法についてでした!
ITが生活に根付いた昨今、開発の手法が通常のお仕事のフローに生かされることも多々あります。近年話題のアジャイルについても、ご理解いただけたら嬉しいです。
ノベルティでもこのようなプロジェクト進行に対する知見をもとに、様々なシステム開発をおこなっております。システム開発についてのお困りごとがありましたら、ぜひお気軽にご相談ください!
おすすめ記事/ PICKUP
記事カテゴリー/ CATEGORY
企業の課題はノベルティひとつで完結
ホームページ制作などのWeb制作をはじめ、
システム開発やマーケティング支援などワンストップで対応
まずはお気軽にお問い合わせください
お電話またはメールでお気軽にお問い合わせください。
各種サービスの資料をご用意しています