Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
[DevLove甲子園2014]インクリメンタルに設計・テストする スクラム初心者が取り組ん...
Search
Yasushi Hagai
August 23, 2014
0
44
[DevLove甲子園2014]インクリメンタルに 設計・テストする スクラム初心者が取り組んだ『中身』の話し
DevLove甲子園2014西日本大会
Yasushi Hagai
August 23, 2014
Tweet
Share
More Decks by Yasushi Hagai
See All by Yasushi Hagai
[ひとやさ] LEAN CHANGE MANAGEMENTをちょっと紹介
yas_hag
0
38
[ひとやさ]Team Decision Matrix
yas_hag
0
550
[スクフェス札幌2020]未経験者中⼼のチームとベテラン中⼼チーム Management 3.0 のプラクティスはどう作⽤したのか
yas_hag
1
3.8k
[名古屋アジャイル]因果関係図で問題の根本原因を突き止めよう
yas_hag
0
190
[DevLove Nagoya]Burnin’ Scrum始めました
yas_hag
0
29
[名古屋アジャイル]モデリング X アジャイル
yas_hag
0
49
Featured
See All Featured
Producing Creativity
orderedlist
PRO
341
39k
Templates, Plugins, & Blocks: Oh My! Creating the theme that thinks of everything
marktimemedia
28
2.1k
The Language of Interfaces
destraynor
154
24k
XXLCSS - How to scale CSS and keep your sanity
sugarenia
247
1.3M
Fontdeck: Realign not Redesign
paulrobertlloyd
82
5.3k
A designer walks into a library…
pauljervisheath
204
24k
The Cost Of JavaScript in 2023
addyosmani
45
7k
4 Signs Your Business is Dying
shpigford
181
21k
How GitHub (no longer) Works
holman
311
140k
GitHub's CSS Performance
jonrohan
1030
460k
The Illustrated Children's Guide to Kubernetes
chrisshort
48
48k
Responsive Adventures: Dirty Tricks From The Dark Corners of Front-End
smashingmag
251
21k
Transcript
インクリメンタルに 設計・テストする Aug 23 2014 Yasushi Hagai DevLove甲⼦園2014⻄⽇本⼤会 1 スクラム初⼼者が取り組んだ『中⾝』の話し
⽻飼 康(ハガイ ヤスシ) フリーランス DevLove名古屋スタッフ 名古屋アジャイル勉強会スタッフ @onestepbeyond_y 2
どんな話し︖ • スクラムで受託開発案件 • アジャイルプラクティス的な 話しはほぼナシ • どんなふうに設計・テストし たかというお話 •
割と普通ですすいません 3
スクラムで受託開発 4
納品のある受託開発案件 • 中⼩企業の基幹システム • 既存システム(vb6でOracle8)のリプレイス • ⼩規模 • 既存システムの事はよく知っている •
それなりの精度で⾒積もれる 5
アジャイルでやろうと思った • こういう(ある想定)メンバーで • 無駄な作業しないで • 常に最適化しながら 6 こんなふうにお仕事したら⼯数は半分以下 にはなるよなぁって⽇頃から思っていた
まじめに学んだ • 本を読む • 勉強会に参加 • SCRUM BOOT CAMP •
CSM研修 • ウマイやりかただと確信 7
チームメンバー⼀本釣り • メンバーA︓ – 広い知識 – アジャイルの事も良く知っている – アジャイルやったことはない •
メンバーB︓ – まじめ – アジャイルの事は良く知らない 8
まずはみんなでお勉強 • アジャイル、スクラムの事 – 『スクラム⼊⾨』とか使って説明 – 少なくともスクラムのやり⽅は理解する – マルチタレントになろう︕ •
技術的な事 – ビルド、テスト⾃動化、CI – 使う要素技術についてなどいろいろ 9
こうやってやることにした #1 • スクラムする – まずは“教義”を守る • スプリント計画(1,2) • デイリースクラム
• スプリントレビュー • ふりかえり • タスクボード • バーンダウンチャート • ベロシティの計測 • Etc. 10
こうやってやることにした #2 • 少⼈数でやりきる仕掛け – CI (Jenkins) – JavaScriptのUnit Testも⾃動化(PhantomJS)
– 体裁より中⾝ • モデリングツールのファイルを成果物とする • 美しく紙にならなくてもいい 11
だけど少し⼼配になったこと • 近い(⼩さい)ゴールに向かって作ることを繰 り返すことはとても効率が良さそうだけど全体 の俯瞰を忘れそう 12
沢⽥マンションになっちゃったら… 13
要求︓なにを作る︖ 14
幸いに作るべきモノは明確だった • リプレイスということもあり迷⾛せず • 現状業務の変えたいところ • 既存システムの変えたいところ を押さえれば基本的にはOK 15
バックログは普通にユーザーストーリー •As a 誰 •I want to なにする •So that
ビジネス価値 16
最初は正直ピンと来なかったけど • 既存システムを使った業務からユーザー ストーリーを起してみるとそれなりに使 えるかなと – よくある要求列挙の「〜できること」という書き⽅ より優れている点は • 誰がそうしたいんだっけ︖
• なんでそうしたいんだっけ︖ ってならない事 17
ユーザーストーリーを整理 • ストーリーの分類・パッケージ分けをす る – 基本的にはあらかじめ分類・整理されている はずだが改めて確認する 18
ユーザーストーリーの背後にあるものに注⽬ • パッケージ間依存・ストーリー間依存に 注⽬する – 依存関係は無いほうが良いが実際にはある 19
設計︓どう作る︖ 20
ユースケースモデリング • ユースケースを使って、ユーザーストーリーを システムの振る舞いとして表現する • 1Storyで1〜数個のユースケース • アクターはストーリーの “as a”から
• ユースケースも依存性をチェック • ユースケースもパッケージに分けて組織 化する 21
ユースケース図って⼤事 • システムを使って誰が何するかを簡単に 確認できる • 単なる⽬次では無く、ユースケース間の 依存関係も定義する • モデリングツールの機能を使ってスプリ ント毎に増えてゆくユースケース間の関
連を確認する 22
ユースケース間の関連が ややこしくなっていたら • ユースケース図で先⾏関係等を表現 • あまりにややこしい依存・関連がある場 合、その業務を回すことは困難かもしれ ない 23
ユースケースシナリオはもっと⼤事 • 実際の業務で使われている⾔葉でアクターと システムの振る舞いを記述 • 例外シナリオを抽出 • ユーザとシステムの対話の両側を記述 • 名詞
ー 名詞 ー 動詞 のスタイルで記述 1. 担当者はアレをどうする 2. システムはソレをこうする • これが作る物の元ネタとなり、テストの元 ネタとなる 24
こんなシナリオは危ない • やたら⻑い • 例外シナリオが多すぎ ユースケースの分割を検討しよう︕ 25
⻑くてややこしいシナリオって 26 沢⽥マンション化の 予兆かもしれない
ドメインモデリング • ユースケースシナリオで使われている⾔ 葉を使って、静的構造をモデリングする • このドメインモデルが、全体を俯瞰でき るとても重要なビッグピクチャとなる • ⽇々育ってゆく物であるが故に、気をつ けないと重複、⽭盾が⽣じる
27
ドメインモデリングで • 今作っている物が沢⽥マンションになっ ていないかをチェックしよう︕ 28
ドメインモデル ⇔ 実装 • モデリングに時間をかけすぎない • 実装時にモデルのまずさに気づくことが ある – 実装が困難なモデル
– 実装の都合に合わないモデル • そんなときはまたモデリングに戻る • モデルとコードの間を⾏ったり来たり • 実装できないモデルは無価値 29
インクリメンタルに設計するということ • 新たなストーリーが『加わる』ことが全 体の設計にどう影響するのかを常に チェックする • 沢⽥マンション化するくらいなら⼿戻り のほうが良い • 実際それほど⼤変な物では無かった
30
• どう作られているかを残す – 次への備えが第2のゴール • 第1のゴールは動くソフトウェア • ウソを残さない – 実装との乖離はちゃんと埋めようね
31 納品のある受託開発なので 作り終えたら チームは解散する 設計を『残す』ということ
活躍した道具 • 両⾯ホワイトボード • モデリングツール • プロジェクター • ホワイトボードはメンバーの近くに •
プロジェクターはいつでも使える位置に 32
テスト 33
最初に 全⼿動はムリ︕ 34 • ストーリーがテストされてDone • でも次のスプリントでまたそこ触るかも ね • 何度もテストをサクッとやりたい
まずは普通にUnit Test • JavaのコードはJunitでテスト • Java ScriptはSiestaというフレームワーク • CI利⽤(Jenkins) •
PhantomJSを使ってJSのテストもCI上で • プロジェクトが進んでゆけばテスト量が 増えるので実⾏時間も⻑くなる 35
ストーリーはどうテストする︖ • ストーリーにぶら下がってるユースケー スのシナリオをテスト – ユーザーストーリーはテスト仕様の元ネタと してはざっくりしすぎている 36
それ⾃動化したの︖ • ユースケース毎のテストを⾃動化 – Siesta利⽤ • ⼀気に複数のユースケースのテストを流せるよ うにはなっていなかった(半⾃動) – すればよかったと思う
• テストデータの準備からテスト結果の保 存まで⾃動化できたらステキね 37
UIテストの⾃動化は⼤変︖ • はい、⼤変 • でも⼿動でちゃんと網羅するのはもっと ⼤変 38
活躍した道具 • Junit • Siesta – Java Scriptのテスティングフレームワーク • Jenkins
• TestLink – テスト計画/実⾏結果管理 39
まとめ 40
やってみてどうだったの︖ • 実はそんな迷⾛せず、わりと普通にでき ました – 対象の業務をよく知っていた – そもそも移⾏前のシステムの担当者が私 • ⼩規模で少⼈数だったので意思疎通もス
ムース • ⼤規模の場合は⼤変そう 41
沢⽥マンションの恐怖 • 沢⽥マンションを設計してしまうという ことはアジャイルでもウォーターフォー ルでもあり得る • ただしウォーターフォールの場合は、実 装フェーズに⼊っていなければそれはま だ絵に描いた沢⽥マンションである •
しかしアジャイルの場合は絵である期間 が短い – すぐ作っちゃうからね 42
インクリメンタルに設計する 中で『沢⽥マンション化』の においを嗅ぎ取れ︕ 43
⽊も森も⾒る • ⽬の前のバックログに追われながらも全 体を⾒ることを忘れてはならない • ⽇々⼤きくなる森の姿を毎⽇眺める 44
便利な道具を使いこなす • ホワイトボード • モデリングツール • テスティングフレームワーク • CI •
ITS/BTS 45
いろいろ⾔いましたが 46 沢⽥マンション好きです 住みたいし
Q&A 47
ありがとうございました 48