Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Supersonic agile

545 views

Published on

  • Be the first to comment

Supersonic agile

  1. 1. Supersonic Agile Development1S. Yoshihara2013/3/132x Speed
  2. 2. Agile is so fast, but・・・• アジャイル開発はプラクティスを効果的に組み合わせることによって、開発チームの生産性を最大限に引き上げることができる• しかし、要件を決める側にはこれとったプラクティスはなく、アジャイルのスピードにあわせて忙しなく重要な要件も決める必要がある。複雑なシステムになれば、ストーリーや画面だけでは仕様の是非を判断できない• つまり、開発は超高速で走っているが、要件は目先の判断になってしまい、全体俯瞰では見当違いな方向に走っている可能性があるということであるCOPYRIGHTS S.YOSHIHRA 2
  3. 3. Agile+Usecase• まず、要件分析を全体俯瞰で体系的に行うためにユースケース分析を行う。ただし、アジャイルとはスピードが違うので非同期にタスクが組めるようにするCOPYRIGHTS S.YOSHIHRA 3ユースケース分析要件分析アジャイル開発ユースケース分析が終わったものからアジャイル開発を行う。ユースケース分析とアジャイル開発は非同期に行えるように別チームとするユースケース分析はユースケース一覧の優先度が高いものから行う。ユースケース分析が終わったものからアジャイル開発を行うユースケース分析ではユースケース図ではなくユースケース記述を使う
  4. 4. Agile+MDA+DDD=“Supersonic speed”• MDA(Model Driven Architecture)ツール– 要件分析のモデルをアジャイル開発まで確実に伝達し、速やかに開発を行うためには支援ツール群が必要である。MDAの考え方はそれを実現するためのものである。生産性を向上させるためにMDAも適用する– ただし、ビヘイビア(Behavior)はプログラミングする方が効率が良いので扱わない• DDD(Domain Driven Design)のコンセプト– DDDを全面的に適用するのではなく、モデルをそのまま実装に繋げるコンセプトを、MDAツールと組み合わせて利用するCOPYRIGHTS S.YOSHIHRA 4
  5. 5. • Tech Features– Agile– Usecase– MDA (Model Driven Architecture)– DDD (Domain Driven Design)• “Supersonic Agile Development”– 上記の高度な技術を最適に組み合わせにすることで、超高生産性なシステム開発を実現する– この技術を使いこなすためには、必要なスキルとツールを備えた専門チームが必要であるSupersonic Agile DevelopementCOPYRIGHTS S.YOSHIHRA 5
  6. 6. OverviewCOPYRIGHTS S.YOSHIHRA 6ユースケース一覧MDAツールモデルとソースコードの差分抽出と同期支援アジャイル開発(実装+単体テスト)システムテストリリースイテレーション(スプリント)要件分析ユースケース分析ドメインモデル(DDD)優先度の高いものから分析分析済で、優先度の高いものから開発開発済のものが、リリースできる単位になった場合セキュリティ、負荷、障害テストなども行う要件分析チーム開発チームプロダクトオーナーユースケースの分析済、開発済などのステータスを管理する。更に、ユースケースに優先度を付けることで計画、スコープ管理に使う(プロダクトバックログ相当)
  7. 7. サービス• ユースケース定額(Pay per usecase)– 生産性の責任は開発側が負担すべきと考え、ユースケース当たりの価格は定額とする。計画よりも生産性が低かった場合でも追加料金は請求しない– 開発総額はユースケース数に固定単価を掛けあわせて算出する。開発中にユースケースが増えた場合は追加料金が発生する– 契約形態は請負・準委任ともに可能とする。どちらもユースケース一覧を作成して見積りをする。請負ではユースケース数を先に決め、開発途中で未開発のユースケースは入れ替えることができる– ユースケース定額にすればアジャイル開発でも請負(事前にコストを決めるという意味で)が可能になるCOPYRIGHTS S.YOSHIHRA 7
  8. 8. サービス• 生産性2倍(2x Speed)– 業界標準のメトリクスをもとに独自に調査した標準的な生産性を基に、2倍の生産性を基準とする– 基準生産性に達成しなくても、ユースケース定額なので追加料金は発生しない。その分、期間バッファは適切に設定する• 品質保証– 不可能なものを除いて全てのモジュールはテスト自動化を行う(更にテスト観点によって手動によるテストも行う)– 開発費用に定率を上乗せすることで、瑕疵担保期間を延長することができるCOPYRIGHTS S.YOSHIHRA 8
  9. 9. サービス• メンバー保証– Supersonicを習熟したメンバーだけで編成する。安いだけのオフショアなどはもっての外である• まる見え保証– 進捗、課題、生産性、品質指標は全て見える化する。当然、これらのデータは顧客企業と開発側で全く同じものを参照するCOPYRIGHTS S.YOSHIHRA 9
  10. 10. 仕様変更の考え方(Q)ユースケースAを開発したが、顧客企業の判断でユースケースの内容はそのままで画面だけを変更したい。画面を改修するためのコストはどうなるのか?(A)開発済のユースケースの画面を変更する場合には追加料金は発生する。多少の変更であれば0.5UC単価とする(Q)ユースケースAを開発したが、顧客企業の判断でユースケースの内容を変更してA`にした場合、A`に改修するためのコストはどうなるのか?(A)基本的にユースケースが変更されれば追加料金は発生する。多少の変更であれば0.5UC単価とするCOPYRIGHTS S.YOSHIHRA 10
  11. 11. • ユースケース数が100個のプロジェクトを想定する– Supersonic Agile Development• 総開発工数:79人月– 従来型(ウォーターフォール)• 総開発工数:129人月要件定義 : 14MM工数を小さく、期間は短くCOPYRIGHTS S.YOSHIHRA 11ユースケース分析 : 14MMアジャイル開発 : 50MMシステムテスト15MM開発 : 100MMシステムテスト15MM期間短縮※一般的に、人員は同時投入する程、生産性は落ちるため、上の例では無理なく人員を投入した場合を想定している
  12. 12. 12COPYRIGHTS S.YOSHIHRAAgile+Usecase 技術詳細
  13. 13. ユースケース分析• ユースケース分析では、ユースケース図ではなく、ユースケース記述を作成する• ユースケース記述とは別カタログとしてビジネスルールを定義する。ビジネスルールはユースケース横断的に参照されることになるCOPYRIGHTS S.YOSHIHRA 13ユースケースUC001ユースケースUC002ユースケースUC003ビジネスルール BR100ビジネスルール BR101ビジネスルールBR102
  14. 14. ユースケース一覧(Product Backlog)• 要件分析とアジャイル開発を非同期に並行して行うために、ユースケース一覧がバックログの役割を果たす• 要件分析がボトルネックにならないように生産性と担当数を最適化しなければならないCOPYRIGHTS S.YOSHIHRA 14ユースケース分析要件分析アジャイル開発ユースケース一覧ユースケースユースケース未分析なものを、ユースケース分析するユースケース分析が終わったものは分析済にする未分析 分析済優先度に応じて、ユースケース分析やアジャイル開発するユースケースを選択するユースケースユースケースユースケースユースケースユースケースユースケースユースケースユースケースユースケースユースケースユースケースユースケース分析済のものをアジャイル開発する開発済
  15. 15. ユースケース標準FP• トランザクションファンクション– 仮に、平均的なユースケースに4~8のシナリオのステップがあるとすれば、その半数程度がシステムが行うステップである– システムが行うステップではアクターとの何らかの相互作用が発生していると考えられる。FPでいうEI/EO/EQの何れかである• データファンクション– ユースケースあたり、0.6個のILFがあると仮定する– ユースケースあたり、0.3個のEIFがあると仮定する• ユースケース標準FP– 上記の前提で、NESMA概算法を使って計算すると14.7~22.7FPとなる– 標準FPは、1UC=20FPとするCOPYRIGHTS S.YOSHIHRA 15
  16. 16. 開発目標生産性• 業界標準FP生産性の2倍を目標とする• 業界標準FP生産性– 20FP/MM(基本設計~ 結合テスト)• Supersonicの開発目標生産性40FP/MMCOPYRIGHTS S.YOSHIHRA 16•15FP/MM(基本設計~総合テスト)(出典: SEC:ソフトウェア開発データ白書2012-2013)上記の業界標準FP生産性では総合テストまで含まれているが、Supersonicのアジャイル開発は結合テストまでである。よって、業界標準FP生産性から総合テストを除いた生産性を仮定する
  17. 17. 要件分析生産性と担当数比率• 要件分析生産性– 7UC/MM (過去の経験より)• 開発目標生産性 ※前述– ユースケース規模を1UC = 20FPと仮定する– 40FP/MM = 2UC/MM• 要件分析・開発担当数比率3.5 ≧ 開発担当数/要件分析担当数※つまり、開発よりも要件分析の生産性を高めにすることでボトルネックを回避するCOPYRIGHTS S.YOSHIHRA 17
  18. 18. チーム制• Supersonicは専門チームのみが提供できるサービスである。専門チームの基本構成は次にように決める– Supersonicチーム(10名)• マネージャ: 1名 (兹プロダクトオーナー支援)• 要件分析チーム:3名 (ドメインモデラー1名含む)• 開発チーム: 5名• アーキテクト: 1名※プロジェクト特性に応じてサポートが追加になることはある(例えば、最近だとHadoopのようなスペシャリストが必要な分野)• プロジェクトの規模に応じて、n個のチームを組み合わせる(例えば、20人が必要なら、2チーム編成とする) COPYRIGHTS S.YOSHIHRA 18
  19. 19. アジャイル開発• スクラムベースのアジャイル開発を行う• スプリントは2週間を単位とする。標準編成のチームには開発者は5名なので、1スプリントあたり、5UCが完成することになる• スプリント計画では、ユースケース一覧から分析済の5UCを優先度に従って選択する(大きすぎるユースケースが無いことを開発チームで確認する)• 他、アジャイルプラクティスを実践するCOPYRIGHTS S.YOSHIHRA 191週目 2週目1 スプリント1ユースケース1週目 2週目1 スプリント1ユースケーススプリント▼計画スプリント▼計画
  20. 20. 生産性2倍(2x Speed)• 標準FPと開発目標生産性から40FP/MM = 2UC/MMとなり、2週間で1ユースケースを作成することになる• 1ユースケース当たり2~4画面だと仮定すれば、MDAツールなどの支援があれば実現可能な生産性である• 想定スケジュール– 1人日=スプリント計画、要件分析インプット– 2人日=HTML作成(3画面)– 2人日=画面開発– 2人日=ビジネスロジック&DB開発– 2人日=テスト(単体+結合)– 1人日=レトロスペクティブ※都度、顧客企業へのフィードバックを行うCOPYRIGHTS S.YOSHIHRA 20
  21. 21. 21COPYRIGHTS S.YOSHIHRAAgile+MDA+DDD 技術詳細
  22. 22. MDA(Model Driven Architecture)• 一般的なMDAと同じように、要件分析で作成したモデルからソースコードを出力し、ソースコードに実装するまでをシームレスに行えるようにする• 最新のモデルがソースコードに反映されては困るケースもあるので、スプリント毎のブランチ管理をMDAツールが行う• モデリングツール(astahやEA)のプラグイン、開発環境(eclipse)のプラグインを用意するCOPYRIGHTS S.YOSHIHRA 22ユースケースビジネスルールドメインモデルモデリングツールMDAツールソースコード(開発中)開発環境リポジトリ
  23. 23. DDD(Domain Driven Design)• DDDの必要性– Supersonicのような要件分析と開発が同時並行に行われる場合には、要件分析のモデルとソースコードが1対1に対応付くことは最重要である(逆に言えば、TransactionScriptは採用できない)• EvansのDDD– Eric EvansのDDDは名著である。扱われている話題も広範囲に渡る。最も重要なのは、ドメインに業務知識が適切に表現されていて、そのままコードに定義されることである– 業務知識であるビジネスロジックをエンティティに定義することで、ビジネスロジックをDRYに保てるCOPYRIGHTS S.YOSHIHRA 23
  24. 24. DDDのポイント• ビジネスロジックをSQLで書いてはいけない?– ビジネスロジックをドメインが隠蔽していれば、そのロジックがJavaなのかSQLなのかはクライアントには関係ない– ドメインレイヤーとインフラストラクチャレイヤーの境界が、教科書的見地から曖昧になるのは大きな問題ではない– 躊躇せず、SQLを利用すべきである• JOINはタブーなのか?– JOINの是非は、DDDの目的である業務知識の適切な実装ということと無関係である– JOINのロジックをドメインが隠蔽し、JOINの結果をバリューオブジェクトで返せば良い(何の遠慮があるものか) COPYRIGHTS S.YOSHIHRA 24
  25. 25. 25COPYRIGHTS S.YOSHIHRAその他 技術詳細
  26. 26. メトリクス• 生産性– スプリント完了時にリポジトリにコミットしたソースコードから半自動的にFPを計測する– 生産性は、スプリント毎、開発者毎に全て計測する。スプリントによる生産性の傾向と予測まで行う– ユースケースのシナリオ数、ビジネスルール数、画面数などと生産性との相関も全て自動的に計測する• 品質指標– 全モジュールのカバレッジを計測する– 全ての自動テストの結果を集計する– システムテストのバグ傾向分析や、ユースケース単位のバグ傾向分析を行い、レポートするCOPYRIGHTS S.YOSHIHRA 26
  27. 27. DevCloud• リポジトリ、ビルドサーバ(CI)とテストサーバ、バグトラッキングなどの開発環境はクラウドを使う。これらのツール群はSupersonic向けに最適化された標準構成のものを利用する(定額課金)• クラウドでテストされたものは、顧客企業のオンプレミスなどに移行するか、顧客企業が望めばクラウドのままサービスインすることも出来る• クラウドの開発環境はリリース後も顧客企業は利用し続けることもできるCOPYRIGHTS S.YOSHIHRA 27RepositoryBuild(CI)Bug TrackTestServerCloud
  28. 28. ビジネスモデル28COPYRIGHTS S.YOSHIHRA
  29. 29. 成果型SIモデル• ユースケース定額は成果型SI– ユースケース数に定額単価を掛けて課金する– よって、人月型SIではなく、成果型SIである。よって、技術革新によって生産性を向上すれば、その分の原価を減らし、粗利を増やすことができる• ユースケース定額単価は、競合他社に対して競争力のある価格とする(高生産性であるから実現できる)COPYRIGHTS S.YOSHIHRA 29要件定義開発システムテスト要件分析アジャイル開発システムテスト競合他社Supersonic
  30. 30. ユースケース定額• 競合他社のモデル価格– 業界標準FP生産性(20FP/MM)だと、要件定義を含めて1UC=200万円程度になる• ユースケース定額単価– 1UC = 180万円 ※競合よりも割安– Supersonic開発目標FP生産性(40FP/MM)だと、要件分析も含めて105万円程度になるが、バッファとして75万円を乗せるCOPYRIGHTS S.YOSHIHRA 30※ユースケースによっては非常に難易度が高い可能性がある。それらの場合、例外的にユースケース定額が適用されないケースはありえる。バッチも同様にユースケース分析をすることを想定しているが、バッチによっては1つのユースケースでも難易度が高い可能性がある。複雑な集計処理や、ビッグ・データを扱う場合などである。これらは、顧客への説明、提案書や契約書などに記載する
  31. 31. • ユースケース数が100個のプロジェクトを想定する– Supersonic Agile Development• 総開発工数:79人月 = 開発総額1.8億円– 従来型(ウォーターフォール)• 総開発工数:129人月 = 開発総額1.94億円総額でも割安で、期間は短くCOPYRIGHTS S.YOSHIHRA 31要件定義 : 14MMユースケース分析 : 14MMアジャイル開発 : 50MMシステムテスト15MM開発 : 100MMシステムテスト15MM期間短縮1.8億1.94億
  32. 32. 32COPYRIGHTS S.YOSHIHRASummary
  33. 33. まとめ• Supersonic Agile Developmentとは– Agile+Usecase+MDA+DDDの超音速開発– 成果型SIモデル• サービス(価値)は– ユースケース定額– 生産性2倍(2x Speed)– 品質保証• MDAツールで装備• メトリクス(生産性、品質)を常に共有• Cloudで開発環境を提供COPYRIGHTS S.YOSHIHRA 33※具体的な生産性を謳うのは他にない
  34. 34. 34COPYRIGHTS S.YOSHIHRAGive us carrots!
  35. 35. Incentive novelty goods• “1.5x Speed”を達成したら– Supersonic Towel• “2.0x Speed”を達成したら– Supersonic T-shirt• 更に、“3.0x Speed “を達成したら– Supersonic Character-Figure(その前にキャラクターを決めなきゃ)COPYRIGHTS S.YOSHIHRA 35

×