...

アジャイル開発プロセス 従来型 ソフトウェア開発プロセス

by user

on
Category: Documents
3

views

Report

Comments

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
Fly UP