Comments
Description
Transcript
アジャイル開発プロセス 従来型 ソフトウェア開発プロセス
アジャイル開発プロセス ژ品ޑなソフトウェアを手早く無駄なく楽しく作るには 山田正樹/メタボリックス [email protected] 2003.7.10 第6回 組込みシステム開発技術 専セミナー ©Metabolics,Ltd.,2003 従来型 ソフトウェア開発プロセス 要件をできるだけ初期に固定する 要求 工程中の検証はレビューで行う 分析 धב 管理は文書中心で行う 最初にב画を立てて死守する 統合 テスト 一度動いたものはできるだけ触らない 第6回 組込みシステム開発技術 専セミナー 運用 ©Metabolics,Ltd.,2003 要件をできるだけ 初期に固定する • 要件は初期に固定できない, したとしてもそこから最 終的にژいش客満度は得られない – 外ಊ状況が変わる – ش客の考えが変わる – 開発者の理Жが進む • ソフトウェア開発とは問題領域の知ށをЖ決領域の知ށに変換 する過程である • 知ށの理Жには必ず一定の時間がかかる – 固定された要件を完全に表現する方法がない 第6回 組込みシステム開発技術 専セミナー ©Metabolics,Ltd.,2003 要件をできるだけ 初期に固定する • 今までの経験上, 最初の要件が変わらな かったプロジェクトはひとつもない! • ほとんどのプロジェクトでは, 要件は初 期に固定できないことを前提とするし かない 第6回 組込みシステム開発技術 専セミナー ©Metabolics,Ltd.,2003 上流工程中の検証は レビューで行う • 上流工程の成果物はほぼ自然لؘで記 述された文書のみ • 文書の検証はレビュー以外の方法がな い • レビューに完全性を求めると – コストが指数関数的にね上がる – 関係者のモチベーションが下がる 第6回 組込みシステム開発技術 専セミナー ©Metabolics,Ltd.,2003 代案 • インスペクション – かなり有効 – 今のところ, あまり使われていない – ژい効果を得るためには֫練(経験)と安定 したプロセスが必要 第6回 組込みシステム開発技術 専セミナー ©Metabolics,Ltd.,2003 代案 • 形式的仕様記述 – 未だかつて成功していない – ほぼ数学だから, 難しすぎて一ಊの専家しか使えない – 問題のӪ模/複ܚさのn乗に比例して難しさが増す – 形式的な仕様から製品レベルのソフトウェア生成技術が未 成熟 – 形式的仕様の妥当性確認を行わなければならない -> ふりだ しに戻る! 第6回 組込みシステム開発技術 専セミナー ©Metabolics,Ltd.,2003 管理は文書中心で行う • 文書中心で行うことによって – 管理はしやすくなる(気がする) – 評価はしやすくなる(気がする) • しかし人が文書に埋没してしまいがち – ソフトウェア開発とは問題領域の知ށをЖ決領域の知ށに 変換する過程である • 知ށの変換には人と人の密接なコミュニケーションが重要 • 知ށの変換には人の創造性を最大限に活かす必要がある 第6回 組込みシステム開発技術 専セミナー ©Metabolics,Ltd.,2003 管理は文書中心で行う • 今までの経験上, 人間的要素を欠いたプ ロジェクトが成功したݠしはない! • 逆に人間的要素がうまくいっていれば, プロジェクトは何とかなる!? 第6回 組込みシステム開発技術 専セミナー ©Metabolics,Ltd.,2003 最初にב画を立てて それを死守する • ב画には必ず多数の(暗黙の/明示的な) 前提が含まれている – 前提は時間の進展に伴って必ず変化する – 前提が変化すればב画も変化しなければな らない – 立派すぎるב画は変更するのに大きなコス トが必要になる 第6回 組込みシステム開発技術 専セミナー ©Metabolics,Ltd.,2003 最初にב画を立てて それを死守する • 「すべてのこと」をב画することはで きない – ב画するだけでプロジェクトの期限は過ぎ てしまう – ב画を守ることに精一杯で, ב画に表され なかったことは無視されてしまう 第6回 組込みシステム開発技術 専セミナー ©Metabolics,Ltd.,2003 最初にב画を立てて それを死守する • したがって – 「ב画を立てること」ではなく, 「ב画を 立て続けること」が重要 – ב画は破るためにある! • 「変更しやすい」ב画とは? 第6回 組込みシステム開発技術 専セミナー ©Metabolics,Ltd.,2003 一度動いたものは できるだけ触らない • (ゼロ・プロセス・プロジェクトの場合) • すべての動いているソフトウェアはた またま動いているにすぎない • だから変更したら動かなくなる • だから触らない 第6回 組込みシステム開発技術 専セミナー ©Metabolics,Ltd.,2003 一度動いたものは できるだけ触らない • (オーバ・プロセス・プロジェクトの場合) • すべての動いているソフトウェアは厳密な要件とב 画と手続きに基づいて動いている • だからそれを変更するためには要件とב画を変更す る厳重な手続きとそのためのコストが必要である • だから触らない 第6回 組込みシステム開発技術 専セミナー ©Metabolics,Ltd.,2003 一度動いたものは できるだけ触らない • しかしすべては変化する – ش客/ユーザは最新の状況に対応したシステムが欲 しい – ش客/ユーザはシステムの新しいアイデアをいつも 思いつく – 開発者は開発が進むにつれてよりよいЖ決方法を 考えつく – 思いもかけなかった技術的な問題が見つかる – つまり触った方がよりژいش客満度を得ること ができる 第6回 組込みシステム開発技術 専セミナー ©Metabolics,Ltd.,2003 従来型ソフトウェア開発の 問題点 • 状況の変化に対応できない • コストと品ޑのバランスが とれていない • ش客満度が低い • 技術者のモチベーションを 維持できない これは技術/管理/プロセスの問題 第6回 組込みシステム開発技術 専セミナー ©Metabolics,Ltd.,2003 アジャイル開発プロセス • アジャイル = 機敏な, 敏捷な, はしっこ い, 明敏な – よいものを手早く無駄なく作ること • 最初は「軽量級プロセス」(light-weight process)と呼ばれていた – 従来のソフトウェア工学がheavy-weightに 変更していたことに対する代案 第6回 組込みシステム開発技術 専セミナー ©Metabolics,Ltd.,2003 アジャイル開発プロセス • 1990年代後半から多くのアジャイル開発プロセスが 提案されるようになる – – – – – – – – エクストリーム・プログラミング (XP) スクラム (Scrum) クリスタル (Crystal) フィーチャ駆動開発 (FDD) ダイナミック・システム開発法 (DSDM) 適応的システム開発 (ASD) リーン・ソフトウェア開発 (LSD) 実行/変換可能UML (xtUML) 第6回 組込みシステム開発技術 専セミナー ©Metabolics,Ltd.,2003 アジャイル開発プロセス 人間的側面 Scrum XP Crystal ASD 経営/戦略的側面 FDD xtUML 技術/工学的側面 LSD DSDM 管理的側面 第6回 組込みシステム開発技術 専セミナー ©Metabolics,Ltd.,2003 エクストリーム プログラミング 第6回 組込みシステム開発技術 専セミナー ©Metabolics,Ltd.,2003 エクストリーム プログラミング 第6回 組込みシステム開発技術 専セミナー ©Metabolics,Ltd.,2003 スクラム 第6回 組込みシステム開発技術 専セミナー ©Metabolics,Ltd.,2003 スクラム 第6回 組込みシステム開発技術 専セミナー ©Metabolics,Ltd.,2003 クリスタル 第6回 組込みシステム開発技術 専セミナー ©Metabolics,Ltd.,2003 クリスタル 第6回 組込みシステム開発技術 専セミナー ©Metabolics,Ltd.,2003 クリスタル • 方法論のチューニング – 方法論をधבする – 方法論を使いながらレビューする – レビューに基づいて方法論をチューニング する – レビューの方法 • インタビュー • 反省会 第6回 組込みシステム開発技術 専セミナー ©Metabolics,Ltd.,2003 フィーチャ駆動開発 第6回 組込みシステム開発技術 専セミナー ©Metabolics,Ltd.,2003 フィーチャ駆動開発 フィーチャ¢セットの状況 作業中 れ 完了 未開始 フィーチャ¢セット名 (フィーチャ数) 完了度 完了度 完了予定日 第6回 組込みシステム開発技術 専セミナー ©Metabolics,Ltd.,2003 ダイナミック・システム開発法 機能プロトタイプށ別 ユーザの承認 レビュー FMIב画 ユーザ教育 レビュー 実装 機能プロトタイプ作成 धבプロトタイプށ別 レビュー DBIב画 धבプロトタイプ作成 第6回 組込みシステム開発技術 専セミナー ©Metabolics,Ltd.,2003 適応的システム開発 秩序の創発 ウォータフォール ニュートン的世界観 複ܚ適応系 概念 モデル 開発 モデル 管理 モデル 適応的ライフサイクル 命令と制御 リーダシップと協ੴ 第6回 組込みシステム開発技術 専セミナー ©Metabolics,Ltd.,2003 適応的システム開発 学習のループ 適応的 サイクル ב画 プロジェクト 立ち上げ 推測 並行 並行 コンポーネント コンポーネント 開発 開発 品ޑ レビュー 協ੴ 第6回 組込みシステム開発技術 専セミナー 最終QA リリース 学習 ©Metabolics,Ltd.,2003 リーン・ソフトウェア開発 トヨタカンバン方式の10のルール • • • • • ムダをなくそう 在庫は最小に 流れを最大に 後工程引き取り お客様の要求に合わ せよう 第6回 組込みシステム開発技術 専セミナー • 最初からきちんと • 現場に権限を • 一カ所だけよくして もダメ • ੴ達先との協ੴ • やり続ける文化を創 ろう ©Metabolics,Ltd.,2003 リーン・ソフトウェア開発 • ムダの発見 • バリュー・ストリーム・ マッピング • フィードバック • 繰りೊし同期 • 集合ベース開発 • オプション思考 • 最終判断ポイント • 意志決定 • カンバン方式 • 待ち行列理論 • • • • • • • • • • れのコスト 自己決定 モチベーション リーダシップ 習熟 統一性 リファクタリング テスト 測定 契約 第6回 組込みシステム開発技術 専セミナー ©Metabolics,Ltd.,2003 実行/変換可能UML • 後の渡辺さんの講演に... 第6回 組込みシステム開発技術 専セミナー ©Metabolics,Ltd.,2003 アジャイル開発プロセスの 特徴 Waterfall Iterative Agile Analysis Design Code Test by Kent Beck 1999 第6回 組込みシステム開発技術 専セミナー ©Metabolics,Ltd.,2003 アジャイル開発プロセスの 特徴 • 実はアジャイル開発プロセスの定義は ない – アジャイル・マニフェスト – マニフェストに同意した, アジャイル・ア ライアンスの参加メンバがアジャイル(!!) • 小異を捨てて大同につく • したがってఫ常に多様 第6回 組込みシステム開発技術 専セミナー ©Metabolics,Ltd.,2003 アジャイル¢アライアンス • http://www.agilealliance.org/home – アジャイル開発プロセスの提唱者たちを中 心としたコミュニティ – 多くの資料がある(英)ل • http://www.agilemanifesto.org/principles.ht ml – アジャイル・マニフェスト 第6回 組込みシステム開発技術 専セミナー ©Metabolics,Ltd.,2003 アジャイル・マニフェスト • 「価値のあるソフトウェアを, 早期から 継続的にش客に提供し続けることによっ て, ش客満度をژめる」 – プロセスやツールよりも個人とコミュニケー ションを – 立派なドキュメントよりも動くソフトウェ アを – 契約交渉よりもش客との協ੴを – ב画の死守よりも変化への対応を 第6回 組込みシステム開発技術 専セミナー ©Metabolics,Ltd.,2003 他の分野におけるアジリティ • 生産管理 – トヨタ生産方式(Lean Manufacturing) – TOC(Theory of Constraint) – Agile Production • 経営 – Lean Enterprise – Agile Enterprise 第6回 組込みシステム開発技術 専セミナー ©Metabolics,Ltd.,2003 アジャイル開発プロセスから 何が得られるか • • • • • • ژい品ޑ ژいش客満度 ژい生産性 ژいモチベーション もちろんրの弾丸ではない! 組み込み/制御系でも可能か? 第6回 組込みシステム開発技術 専セミナー ©Metabolics,Ltd.,2003 そのために何をするか? • ژい品= ޑ – ژいش客満度 + – 常に結果を検証し続ける – 常に要件をઉटし続ける 第6回 組込みシステム開発技術 専セミナー ©Metabolics,Ltd.,2003 そのために何をするか? • ژいش客満度 = – ژい品 ޑ+ ژい生産性 + – 常にش客やユーザ, システム担当者のフィー ドバックを得る – 常に変化に対応する 第6回 組込みシステム開発技術 専セミナー ©Metabolics,Ltd.,2003 そのために何をするか? • ژい生産性 = – ژい品 ޑ+ ژいモチベーション + – 常にメンバが切磋琢磨し合う – 常にチームとしての成果を求める 第6回 組込みシステム開発技術 専セミナー ©Metabolics,Ltd.,2003 そのために何をするか? • ژいモチベーション = – ژいش客満度 + ژい品 ޑ+ – 常に人間を中心に考える – 常に成果を目に見える形にする 第6回 組込みシステム開発技術 専セミナー ©Metabolics,Ltd.,2003 常に結果を検証し続ける • 時間単位で実行に基づいて – テスト・ファースト(XP) – 実行/検証可能モデル(xtUML) • 週単位でレビューを含んで – その他のほとんどのアジャイル・プロセス • あなたの職場では? 第6回 組込みシステム開発技術 専セミナー ©Metabolics,Ltd.,2003 常に要件をઉटし続ける • 要件をグループ化して開発する – イテレーション, サイクル, ... • 要件を小さくて外ಊから観測可能な機能の単 位に分Жする – フィーチャ, ストーリ, バックログ, ... • 外ಊ機能と内ಊ機能をシンプルな方法で結合 する – ストーリとタスクなど • 組み込み/制御系では? 第6回 組込みシステム開発技術 専セミナー ©Metabolics,Ltd.,2003 常にش客やユーザ, システム担 当者のフィードバックを得る • 短いリリース – 2週間 ~ 2ヶ月 • ش客同室(XP) • ユーザやش客と一緒のレビュー/ミーティ ング(ASD, FDD, DSDM, Scrum...) • 組み込みでは可能か? – ش客/ユーザは? 第6回 組込みシステム開発技術 専セミナー ©Metabolics,Ltd.,2003 常に変化に対応する • 短いリリース/イテレーション – 外ಊに対して2週間~2ヶ月 – 内ಊ的には1日~2週間 • 構成/バージョン管理 • アーキテクチャ – 変化に強いアーキテクチャ – 柔らかいアーキテクチャ • アーキテクチャ自身も変化できる必要がある 第6回 組込みシステム開発技術 専セミナー ©Metabolics,Ltd.,2003 常にメンバが切磋琢磨し合う • ペア・プログラミング(XP) • タスクへのコミットメント • 達人プログラマ 第6回 組込みシステム開発技術 専セミナー ©Metabolics,Ltd.,2003 常にチームとしての成果を 求める • 日次ミーティング(Scrum) – 毎日同じ時間, 同じ場所で, 15分 – 刻は罰金 – チーム・メンバ以外は参加禁止 • 自律したチーム(Scrum, ASD) – いったん短期間のスプリントに入ったら, チーム 外から干渉できない – 作業方法はすべてチームに任せる • コロケーション(Crystal) 第6回 組込みシステム開発技術 専セミナー ©Metabolics,Ltd.,2003 常に人間を中心に考える • 過剰なプロセスやツールに依存しない • コミュニケーション • ファシリテーション 第6回 組込みシステム開発技術 専セミナー ©Metabolics,Ltd.,2003 常に成果を目に見える形にす る • プロトタイピング (DSDM) • 短いイテレーション – 1日 ~ 2週間 第6回 組込みシステム開発技術 専セミナー ©Metabolics,Ltd.,2003 組込み/制御系における アジャイル開発 • エンジニアリング上のポイント – アーキテクチャ – テストベッド – 検証系 • マネージメント上のポイント – ユーザ/ش客/システム担当者はか? – 関係者との密なコミュニケーションと開発への巻 き込みが可能か? – 上層ಊのコミットメント 第6回 組込みシステム開発技術 専セミナー ©Metabolics,Ltd.,2003 アジャイル開発プロセスの 本当の意味 • 最終的には状況に応じた, 自分たち自身 のプロセスをもち, よいものを作り続け ること – 学習の三段階(守・破・離) (XP) – プロセス・チューニング(Crystal) – プロセス・レビュー (ASD) 第6回 組込みシステム開発技術 専セミナー ©Metabolics,Ltd.,2003 アジャイル開発プロセスの 本当の意味 • ソフトウェア開発とは人がチームになっ て最大の創造性を発揮するもの • そういう意味では従来の最良の方法論 の最終目的と同じはず • 自分(たち)自身を変えるきっかけに!!! 第6回 組込みシステム開発技術 専セミナー ©Metabolics,Ltd.,2003 アジャイル・プロセス協議会 • 昨日(7/9)ध立総会 • 開発企業/ユーザ企業が協力して, より ޑのژいソフトウェア開発を目指す • アジャイル・プロセスの認知と普及 • 参加希望/情報は... – http://www.agileprocess.jp/ – [email protected] 第6回 組込みシステム開発技術 専セミナー ©Metabolics,Ltd.,2003 日本XPユーザーズ・グループ • 個人的に技を磨きたい場合にはXPJUG へ • http://xp.medinfo.m.ehime-u.ac.jp/ • 定期的な会合やセミナを開催 第6回 組込みシステム開発技術 専セミナー ©Metabolics,Ltd.,2003 その他の情報 • 本日のスライド原稿 – http://www.metabolics.co.jp/XP/esec2003.pdf • オブジェクト倶楽ಊのXP FAQ – http://objectclub.esm.co.jp/eXtremeProgrammi ng/index.html • テクノロジック・アーツのweb/ML – http://www.tech-arts.co.jp/xp/ • ...... 第6回 組込みシステム開発技術 専セミナー ©Metabolics,Ltd.,2003