Takara-hub / kyutech_db

九工大の情報集めるサイト
https://thankful-river-0a69e6600.1.azurestaticapps.net/
2 stars 0 forks source link

開発手法の検討 #2

Closed IshimotoTakara closed 2 years ago

IshimotoTakara commented 2 years ago

アジャイル開発

アジャイル開発は、システムやソフトウェア開発におけるプロジェクト開発手法の一つです。アジャイル開発の「アジャイル」は「素早い」という意味で、従来のウォーターフォール開発などよりも素早いという意味です。

アジャイル開発では、チームを組んで「要件定義→設計→開発→テスト→リリース(運用)」といった開発工程を、1つの機能を単位とした小さいサイクルで繰り返します。このような小さいサイクルを繰り返すことで、個々の機能の開発が独立して完結するため、開発期間中の仕様変更の発生に強く、リスクを最小化させることが可能です。

この小さなサイクルの繰り返しを、アジャイル開発では「イテレーション(反復)」と呼んでいます。イテレーションは1週間から4週間ごとが一般的であり、イテレーションごとに機能をリリースすることを繰り返します。 Image

また、アジャイル開発では、顧客(ステークホルダー)を含めたチーム単位で開発を進めることも特徴の1つです。 チームメンバーは、設計者やテスターのように役割が決まっているわけではなく、チームで分担して1つのイテレーションを完結させていくという考え方のもと、プロジェクトが進みます。 顧客や製品のユーザーは、直接的に開発チームに要望を伝えることはできませんが、レビューの際にフィードバックすることなどにより、チームに貢献します。

プロジェクトにアジャイル開発を導入する際の注意点

企画・開発の目的を定める

アジャイル開発は厳密な計画がなくても開発を進めることができますが、思いつきのままプロジェクトを進行すると、無駄な作業が増えてしまいます。変更を想定しているとはいえ、最終的な企画と開発の目的を定めておくことが重要です。

システム設計を徹底する

プロジェクトの最初の段階で、システム設計を徹底することが重要です。設計が曖昧なままだと、不要な機能を実装してしまうなど、無駄なコストが発生してしまいます。

ドキュメントを作成し共有し合う

プロエジェクトはチームで行うため、メンバー間の意思疎通が不可欠です。自分の作業や進捗などを整理して、チーム内で円滑な意思疎通を行うために、ドキュメントを作成して共有することが重要です。

チームとしてバランスの取れたスキルセットが必要

チーム構成は機能横断(クロスファンクション)型が理想です。5人から10人程度でチームを組み、バランスの取れたスキルセットが必要です。

1人では不足している知識・スキルをチームで補う

チーム単位での作業となるアジャイル開発では、必要な知識・スキルの全てを1個人が身に付ける必要はありません。1人では欠けている知識・スキルを、チーム全体で補っていく編成が必要です。

プロジェクトがアジャイル開発に向いているかを考慮する

アジャイル開発を導入すべきプロジェクトの特徴は、以下の通りです。

スクラム

開発チームの作業とプロダクトに責任を持つ「プロダクトオーナー」と、プロジェクトを円滑に進めることに責任をもつ「スクラムマスター」がチーム全体を支援し、開発チーム(3~9人程度)が実際に開発を行います。

スクラムでは、以下の6つのプロセスを定義し、これらの段階的な管理と反復をしながら開発を進めます。

1.デイリースクラム 毎朝チームで集まり、チーム全体の状況や障害、問題点、その日に行う予定の作業を確認します。

2.リリースプランニング(プロダクトバックログ) プロジェクトの立ち上げ時に、開発するプロダクトの機能の実装順序や開発期間について、チーム全体で計画を立てます。

3.スプリント計画(スプリントバックログ) 1つのイテレーション期間で、プロダクト全体からどの範囲の機能を実現させるかについて、チーム全体で計画を立てます。

4.スプリント 実際の1つのイテレーション期間の開発工程です。スプリントプロセスでは機能の追加や変更、削除は認められません。

5.スプリントレビュー 1つのイテレーション期間で完成したプロダクトのデモを行います。プロダクトがミスなく実装されており、安定して動作することを確認します。

6.振り返り 振り返りはスプリントごとに行います。各スプリントの良かったことや問題点、これから挑戦したいことなど、メンバー全員で話し合い確認します。

スクラムではアジャイル開発の中でもエンジニアや顧客がチームとなってプロジェクトを遂行することに重点を置いています。そのため、チーム内でのコミュニケーションが非常に重要となります。 Image

エクストリーム・プログラミング(XP)

エクストリーム・プログラミングは、アジャイル開発の中でも、プログラマー中心の開発手法と言えます。 仕様や要求の途中変更、機能追加などを想定していることが特徴です。 つねに2人1組でプログラミングを行い、細かなチェックを行う「ペアプログラミング」、チーム内で共通したコード記法などを定める「コーディング規約」などのプラクティス(原則)のもと、開発を行います。

ユーザー機能駆動開発(FDD)

ユーザー機能駆動開発(Feature Driven Development)は、ユーザーにとっての機能価値(feature)を重視した開発手法です。 あらかじめビジネスモデルを理解し、ログイン機能や購入機能といったユーザー機能を中心に計画をたて、設計や開発を行います。 開発に特化した手法ではなく、プロジェクト管理の面も持ち合わせていることが特徴です。

IshimotoTakara commented 2 years ago

ウォーターフォール開発

ウォーターフォール開発とは、システム開発の開始時に、全工程を通したプロジェクトの要件定義や設計を細かく決めてから、開発に取り掛かる方法のことです。「分析→設計→開発→テスト→保守」という一通りの工程を、すべての機能において、一斉に上から順番に実行していきます。

プロダクトは、プロジェクトの立ち上げ当初に決定した仕様を忠実に実装することを想定し、その仕様を全て満たした時点で開発完了となります。 Image ウォーターフォール開発は大規模なシステムの開発で使われていた技術であり、工程の変更や後戻りを想定していない手法です。そのため、開発やテストの段階で仕様や設計のミスが明らかになった場合、修正に多大なコストが必要となることが弱点でした。

takemotomizuki commented 2 years ago

必要最低限の要件だけ決めてアジャイルが無難かな

IshimotoTakara commented 2 years ago

スクラムとかがスタートアップ企業だけじゃなく、知り合い集めて開発してる人たちも使ってる印象

IshimotoTakara commented 2 years ago

技術選定も終わったし、開発手法もゆるく(学業優先で)進めるということで👍