Closed IshimotoTakara closed 2 years ago
ウォーターフォール開発とは、システム開発の開始時に、全工程を通したプロジェクトの要件定義や設計を細かく決めてから、開発に取り掛かる方法のことです。「分析→設計→開発→テスト→保守」という一通りの工程を、すべての機能において、一斉に上から順番に実行していきます。
プロダクトは、プロジェクトの立ち上げ当初に決定した仕様を忠実に実装することを想定し、その仕様を全て満たした時点で開発完了となります。 ウォーターフォール開発は大規模なシステムの開発で使われていた技術であり、工程の変更や後戻りを想定していない手法です。そのため、開発やテストの段階で仕様や設計のミスが明らかになった場合、修正に多大なコストが必要となることが弱点でした。
必要最低限の要件だけ決めてアジャイルが無難かな
スクラムとかがスタートアップ企業だけじゃなく、知り合い集めて開発してる人たちも使ってる印象
技術選定も終わったし、開発手法もゆるく(学業優先で)進めるということで👍
アジャイル開発
アジャイル開発は、システムやソフトウェア開発におけるプロジェクト開発手法の一つです。アジャイル開発の「アジャイル」は「素早い」という意味で、従来のウォーターフォール開発などよりも素早いという意味です。
アジャイル開発では、チームを組んで「要件定義→設計→開発→テスト→リリース(運用)」といった開発工程を、1つの機能を単位とした小さいサイクルで繰り返します。このような小さいサイクルを繰り返すことで、個々の機能の開発が独立して完結するため、開発期間中の仕様変更の発生に強く、リスクを最小化させることが可能です。
この小さなサイクルの繰り返しを、アジャイル開発では「イテレーション(反復)」と呼んでいます。イテレーションは1週間から4週間ごとが一般的であり、イテレーションごとに機能をリリースすることを繰り返します。
また、アジャイル開発では、顧客(ステークホルダー)を含めたチーム単位で開発を進めることも特徴の1つです。 チームメンバーは、設計者やテスターのように役割が決まっているわけではなく、チームで分担して1つのイテレーションを完結させていくという考え方のもと、プロジェクトが進みます。 顧客や製品のユーザーは、直接的に開発チームに要望を伝えることはできませんが、レビューの際にフィードバックすることなどにより、チームに貢献します。
プロジェクトにアジャイル開発を導入する際の注意点
企画・開発の目的を定める
アジャイル開発は厳密な計画がなくても開発を進めることができますが、思いつきのままプロジェクトを進行すると、無駄な作業が増えてしまいます。変更を想定しているとはいえ、最終的な企画と開発の目的を定めておくことが重要です。
システム設計を徹底する
プロジェクトの最初の段階で、システム設計を徹底することが重要です。設計が曖昧なままだと、不要な機能を実装してしまうなど、無駄なコストが発生してしまいます。
ドキュメントを作成し共有し合う
プロエジェクトはチームで行うため、メンバー間の意思疎通が不可欠です。自分の作業や進捗などを整理して、チーム内で円滑な意思疎通を行うために、ドキュメントを作成して共有することが重要です。
チームとしてバランスの取れたスキルセットが必要
チーム構成は機能横断(クロスファンクション)型が理想です。5人から10人程度でチームを組み、バランスの取れたスキルセットが必要です。
1人では不足している知識・スキルをチームで補う
チーム単位での作業となるアジャイル開発では、必要な知識・スキルの全てを1個人が身に付ける必要はありません。1人では欠けている知識・スキルを、チーム全体で補っていく編成が必要です。
プロジェクトがアジャイル開発に向いているかを考慮する
アジャイル開発を導入すべきプロジェクトの特徴は、以下の通りです。
要件の全体像がはっきりしないプロジェクト 例えば、要件が7割程度しか固まってなくても、残りの3割は、プロジェクトの状況を見ながら、並行して固めていくことが可能です。
顧客の都合で開発の優先度が変わるプロジェクト 顧客の都合で開発の優先度が変わるようなプロジェクトでも、フレキシブルに対応できます。
顧客がチームのメンバーとして参加してくれるプロジェクト 顧客がチームのメンバーとして参加することで、綿密なコミュニケーションを取りながら、迅速かつ柔軟なシステム開発ができるようになります。
スクラム
開発チームの作業とプロダクトに責任を持つ「プロダクトオーナー」と、プロジェクトを円滑に進めることに責任をもつ「スクラムマスター」がチーム全体を支援し、開発チーム(3~9人程度)が実際に開発を行います。
スクラムでは、以下の6つのプロセスを定義し、これらの段階的な管理と反復をしながら開発を進めます。
スクラムではアジャイル開発の中でもエンジニアや顧客がチームとなってプロジェクトを遂行することに重点を置いています。そのため、チーム内でのコミュニケーションが非常に重要となります。
エクストリーム・プログラミング(XP)
エクストリーム・プログラミングは、アジャイル開発の中でも、プログラマー中心の開発手法と言えます。 仕様や要求の途中変更、機能追加などを想定していることが特徴です。 つねに2人1組でプログラミングを行い、細かなチェックを行う「ペアプログラミング」、チーム内で共通したコード記法などを定める「コーディング規約」などのプラクティス(原則)のもと、開発を行います。
ユーザー機能駆動開発(FDD)
ユーザー機能駆動開発(Feature Driven Development)は、ユーザーにとっての機能価値(feature)を重視した開発手法です。 あらかじめビジネスモデルを理解し、ログイン機能や購入機能といったユーザー機能を中心に計画をたて、設計や開発を行います。 開発に特化した手法ではなく、プロジェクト管理の面も持ち合わせていることが特徴です。