Upgrade to Pro — share decks privately, control downloads, hide ads and more …

アジャイルソフトウェア開発とは

Pauli
March 02, 2022

 アジャイルソフトウェア開発とは

アジャイルソフトウェア開発(およびスクラム開発)を非エンジニアにもわかりやすく噛み砕いた表現で説明した資料です

Pauli

March 02, 2022
Tweet

More Decks by Pauli

Other Decks in Technology

Transcript

  1. 要求定義 要件定義 基本設計 詳細設計 実装 単体テスト 結合テスト 総合テスト 受入テスト リリース

    なぜアジャイルになりにくいのか? ここで最終ゴールが決まる!
  2. なぜアジャイルになりにくいのか? 承認 基本、詳細設計で承 認を得る —---- —---- —---- —---- —---- —----

    —---- —---- —---- —---- —---- —---- □□□—---- □□□—---- □□□—----
  3. なぜアジャイルになりにくいのか? 承認 単体・結合・受け入れ テストで承n(ry —---- —---- —---- —---- —---- —----

    —---- —---- —---- —---- —---- —---- —----□□□ —----□□□ —----□□□ —----□□□ —----□□□ —----□□□ —----□□□ —----□□□
  4. 1. 開発プロセスの理解 a. 何をすれば成果物を世の中に出せるの ... ? 2. 開発で考慮しなければならない事の理解 a. 非機能要件の定義

    i. 可用性 1. SLA 【サービス品質保証 / Service Level Agreement / サービスレベル合意書】 a. バックアップ b. 冗長化 ii. 性能・拡張性 1. ネットワーク速度 2. キャパシティプランニング iii. 保守性 1. 設計思想の定義 2. 問題発生時の役割分担、体制、訓練、マニュアル整備 3. MTTR (平均修理時間) /MTTF (平均故障時間) iv. etc… ウォーターフォール is 悪?
  5. • 大規模かつ関係者が多い ◦ ウォーターフォールだと作業内容・工程が綿密に決められているため、誰が開発に携わっても迷わず進め ることができる ◦ またこの進め方についても説明は最小限ですむ ◦ 工程別でリソース調整もやりやすい ▪

    例:要件定義・設計フェーズには上流エンジニア2名、実装フェーズに下流エンジニア10名を採用す ればスケジュール通りに進められそう • 仕様に変更が加わりにくい ◦ 世の中の情勢に左右されにくいシステムである ▪ 例:在庫管理システム等 • 明確な予算、期日が定まっている ◦ ドキュメント、ツール等で不確実性を見える化し排除できる ▪ 例:EVM、コンティンジェンシー予備、WBSガントチャート他 ウォーターフォール開発が選択されるパターン
  6. • 小規模かつ関係者が少ない ◦ アジャイルだと良くも悪くも関係者の作業範囲が定まっておらず、また進め方もプロジェクトによってさまざ ま ◦ 大規模であったり関係者が多いとこの進め方の認識があわず不和が生じる ▪ これの解決に大規模アジャイル手法もあるがここでは割愛 •

    仕様が固まりきっていない(固まっていても変更のリスクがある) ◦ 世の中の情勢に左右されるシステムである(レッドオーシャン) • 価値 > 予算、期日(品質) ◦ 顧客価値が高いと判断されればQCDを差し置いてでも、それを実現したい!となれば アジャイル開発が選択されるパターン
  7. • スクラム(Scrum) ◦ プロジェクト管理に重点を置いたアジャイル開発のフレームワーク ◦ 素早いリリース、新たな要求への対応、技術や変化へ適応するために、チーム力の最大化 に全力を注ぐ • XP(eXtreme Programing、エクストリームプログラミング)

    ◦ ソフトウェアの品質を改善し、顧客の要望の変化に適応する能力を高める ◦ 短期間での頻繁なソフトウェアリリース ◦ 開発を効率化し要求変更コストを抑える 12(19)プラクティス ▪ ペアプログラミング、テスト駆動開発など ... • ユーザー機能駆動開発( FDD) ◦ ユーザーにとっての価値を重視して開発 ◦ ユーザーが利用する機能やビジネスモデルに合わせて必要な機能から設計・開発 代表的なアジャイル開発手法
  8. • スクラム(Scrum) ◦ プロジェクト管理に重点を置いたアジャイル開発のフレームワーク ◦ 素早いリリース、新たな要求への対応、技術や変化へ適応するために、チーム力の最大化 に全力を注ぐ • XP(eXtreme Programing、エクストリームプログラミング)

    ◦ ソフトウェアの品質を改善し、顧客の要望の変化に適応する能力を高める ◦ 短期間での頻繁なソフトウェアリリース ◦ 開発を効率化し要求変更コストを抑える 12(19)プラクティス ▪ ペアプログラミング、テスト駆動開発など ... • ユーザー機能駆動開発( FDD) ◦ ユーザーにとっての価値を重視して開発 ◦ ユーザーが利用する機能やビジネスモデルに合わせて必要な機能から設計・開発 代表的なアジャイル開発手法
  9. 今日のゴール 1. なぜアジャイルなのかを知る a. 従来の開発手法だと世の中の変化についていけない 2. アジャイル開発と非アジャイル開発を知る a. 非アジャイル(になりやすい)開発例:ウォーターフォール b.

    アジャイルだと「対話」することで仕様も柔軟に変更がきく 3. アジャイル開発のプロセスを 1 つ例にとって感じてみる a. スクラム開を例にあげて説明
  10. 今日のゴール 1. なぜアジャイルなのかを知る a. 従来の開発手法だと世の中の変化についていけない 2. アジャイル開発と非アジャイル開発を知る a. 非アジャイル(になりやすい)開発例:ウォーターフォール b.

    アジャイルだと「対話」することで仕様も柔軟に変更がきく 3. アジャイル開発のプロセスを 1 つ例にとって感じてみる a. スクラム開を例にあげて説明
  11. • スクラムは奥が深い ◦ スクラムガイドにもこんな感じに書いてある ▪ スクラムとは、以下のようなものである。 • 軽量 ▪ 理解が容易

    ▪ 習得は困難 • 興味があれば #tech-scrum へ ◦ スクラムに限らずアジャイルについても語っています スクラムについて
  12. • アジャイル開発を元にスクラム開発が生まれた ◦ 各種適応型、漸進的開発手法をまとめてアジャイルが生まれた • ウォーターフォールではなかったので アジャイルです! ◦ 蓋を開いてみたら ▪

    細かいウォーターフォール ▪ 行き当たりばったりなプロセス ◦ 上流工程が面倒だからやらないウォーターフォール開発 • フェーズを切って細かくリリースしていたので アジャイルです! ◦ 明確なゴールが決まった状態で部品をリリースしていくだけではアジャイルとは言い難い よくいるエンジニアある間違い