スケジュールを決め
役割分担を決め
仕様を決め
あらゆる調整をし
スケジュール管理を行い
サイトまたは案件を世に公開し
成果を報告する
キーワード e.g.) 爆速等
IT戦略 e.g.) 低コストや要求の変化への対応を優先、納期重視等
ライフサイクルモデル リリース体制
http://sec.ipa.go.jp/reports/20100330a/20100330a_1.pdf
・しがらみがない
・裁量がある
・客先との距離が近い
・エンジニアリング以外のことをやらなくていい(見積もりとか管理とか)
・見渡せる規模である
Simple,:単純
Modular:モジュール型
Composable:組みあわせ可能
https://www.gitbook.com/book/masarakki/c89-the-way-of-programmer-life/details
ベンダとユーザ間
「かぎきひよこ」と覚える
ベンダ
「せいしんたこかこかきょ」と覚える
ユーザ
「よかたまほ」と覚える
http://blog.livedoor.jp/heitatta/archives/54439839.html
工程 | 略語 | 内容 |
---|---|---|
企画 | SP | System Planning |
企画 | SP | System Planning |
要求分析 | SA | System Architectural design. システム方式設計 |
要件定義 | RD | - |
基本設計 | UI | User Interface |
基本設計 | BD | Basic Design |
基本設計 | SS | System Structure Design(構造設計) |
基本設計 | FD | Function Design(機能設計) |
詳細設計 | DD | Detail Design |
詳細設計 | PD | Program Design |
詳細設計 | PS | Program Structure Design |
製造/個別test | CD | CoDing |
製造/個別test | PG | ProGraming |
製造/個別test | UT | Unit Test 個別テスト |
製造/個別test | FT | Function Test 機能試験 |
結合テスト | SI | - |
結合テスト | IT | Integration Test 結合試験 |
総合テスト | ST | System Test |
総合テスト | PT | - |
運用テスト | OT | Operation Test |
他にも
・要求仕様書
・要件定義書
・基本設計書
・システム概要仕様書
・機能一覧
・業務フロー設計書
・ネットワーク構成図
・画面設計書
・帳票仕様書
・ER図
・インターフェース仕様書
・詳細仕様書
・DB定義書
・プログラム(アルゴリズム)仕様書
・プロトコル仕様書
・クラス設計書
・状態遷移図
・テスト仕様書
・単体テスト仕様書
・結合テスト仕様書
・システムテスト仕様書
http://blogs.bizmakoto.jp/noubiz/entry/4641.html
本当に必要な文書
・DB定義書
・画面設計書
・コードナンバーの定義やバッチ処理のフローなどを書いたプログラム仕様書
・ネットワーク構成図
フェイズ | ドキュメントの種類 |
---|---|
要件定義 | 要件定義書 |
要件定義 | 要件定義書 |
基本設計 | 基本設計書、機能仕様書、ネットワーク設計書、SW/HW(SoftWare/HardWare)構成書、セキュリティ設計書、性能・信頼性設計書、データ構造定義書(ER図)、テーブル定義書、画面定義書、画面遷移定義書、帳票定義書、開発標準書 |
詳細設計 | 詳細設計書、クラス設計書、構成管理定義書、インターフェイス設計書 |
開発/単体テスト | 単体テスト仕様書 |
結合テスト/システム・テスト | テスト計画書、結合テスト仕様書、システム・テスト仕様書 |
本番/運用 | 環境構築手順書、運用定義書、障害対応手順書、移行仕様書、移行手順書 |
ソフトウェア開発データ白書
(スケルトンの作成)
各種ファイル環境の構築
テストケースの記述
テストデータ(サンプル)の作成
製造物のレビュー
ソフトウェアのバージョン管理
テストパターンの記
設計バグの検出
要求分析 基本設計 詳細設計 製造 テスト
|<----------------------->|<------------->|<------------->|
P1 P2 P3
https://blogs.msdn.microsoft.com/nakama/2016/06/24/waterfall/
http://www.buildinsider.net/enterprise/devops/01
人(People): マインドセットや考え方
プロセス(Process): 開発や運用の手法
プロダクト(Product): ツールや技術
Cluture(文化)
Lean(リーン)
Automation(自動化)
Measurement(計測)
Sharing(共有)
https://cloud.google.com/solutions/devops/devops-culture-westrum-organizational-culture?hl=ja
https://slide.meguro.ryuzee.com/slides/87
http://www.ryuzee.com/contents/blog/7110
http://dev.classmethod.jp/tool/github/github-constellation-conf-ryuzee/
http://www.infoq.com/jp/news/2016/04/agileindia-7sins-scrum
アジャイルに何を求めるのかを確認する
準委任(SES)契約を勧める
一括契約ながら成果物をあいまいにしておく
http://takigawa401.hatenablog.com/entry/2017/06/12/183007
人々を最高に輝かせる(Make people awesome)
安全を必須条件にする(Make safety a prerequisite)
高速に実験&学習する(Experiment and learn rapidly)
継続的に価値を届ける(Deliver value continuously)
原則1:ムダをなくす
原則2:品質を作り込む
原則3:知識を作り出す
原則4:決定を遅らせる
原則5:速く提供する
原則6:人を尊重する
原則7:全体を最適化する
http://post.simplie.jp/posts/44
・ソフトウェア要求仕様の変更などの変化に対して機敏に対応する
・初期段階の設計よりもコーディングとテストを重視する
・ドキュメントよりもソースコードを重んじる
・各工程を段階的に進めていくより、常にフィードバックを行って修正・再設計していくプロセスを重視する
(1).顧客と開発者の、もしくは開発者間の円滑な「コミュニケーション」(communication)
(2).必要最小限の設計しか行わない「シンプルさ」(simplicity)
(3).頻繁なテストによる「フィードバック」(feedback)
(4).大胆な設計変更に立ち向かう「勇気」(courage)
対象者 | プラクティス | 解説 |
---|---|---|
/4. 共同 | 反復 | 開発を反復(設計・実装・テストを繰り返す小さなサイクル)から構成する。 全体の開発期間はイテレーションと呼ぶ1~2週間の短い期間に区切り、イテレーションごとに部分的な設計・実装・テストを行い、半完成品システムのリリースを繰り返す。 またより小さな単位の単体機能の実装も、コード修正とテストの繰り返しによって進める。 このように反復によって、徐々に完全なシステムを構築していく手法を取る。 このことで、リスクを最小限に抑えつつ、イレギュラーな変更に対応した開発が可能になる。 |
/4. 共同 | 反復 | 開発を反復(設計・実装・テストを繰り返す小さなサイクル)から構成する。 全体の開発期間はイテレーションと呼ぶ1~2週間の短い期間に区切り、イテレーションごとに部分的な設計・実装・テストを行い、半完成品システムのリリースを繰り返す。 またより小さな単位の単体機能の実装も、コード修正とテストの繰り返しによって進める。 このように反復によって、徐々に完全なシステムを構築していく手法を取る。 このことで、リスクを最小限に抑えつつ、イレギュラーな変更に対応した開発が可能になる。 |
共通の用語 | 用語集を作成し、チーム全員(開発者・管理者・顧客)の使用する用語とその概念の不一致を解消する。 | |
開けた作業空間 | 会話しやすく、作業に打ち込める雰囲気を作る。 | |
回顧(頻繁な振り返り) | 現在の状態を明確に把握しつつ、過去のフィードバックを迅速に反映させるよう心がけ、そのための環境・体制を構築しておく。 | |
/6. 開発 | テスト駆動開発 | 実装を行うより先に、自動化されたユニットテストないしは手順の明確化されたテストを作成する。 実装はそのテストをパスすることを目標に行う。 ユニットテストを先に作成することで、求める機能が明確化され、シンプルな設計が可能になる。 テストはユニットテスト(ホワイトボックステスト)と受け入れテスト(ブラックボックステスト)からなる。 受け入れテストも自動テストであることが推奨される。 自動化されたテストが、コードの共同所有・リファクタリング・頻繁な結合を可能にし、開発が進むにつれ変更コストが増大することを防ぐ一因となる。 |
ペアプログラミング | 二人一組で実装を行い、一人が実際のコードを書き、もう一人はそれをチェックしながらナビゲートする。 この役割を随時交代しながら作業を進める。 これによって、細々した問題解決に要する時間が短くなる、常にコードレビューを行うことができる、集中力が持続する、コードの詳細を理解したメンバーが常に2人以上いることで後々のコード共有に役立つ、などの多彩な効果が得られる。 | |
リファクタリング | 完成済みのコードでも、随時、改善処置を行う。 この際、外部から見た動作は変更させずに、内部構造がより見通し良く優れたものになるようにする。 テストが作成されていることが前提になる。 | |
ソースコードの共同所有 | 誰が作ったソースコードであっても、開発チーム全員が断り無く修正を行うことができる。 ただし、全てのコードに対する責任を、全員が担う。 | |
継続的インテグレーション | 単体テストをパスするコードが完成するたび、すぐに結合テストを行い、問題点や改善点を探す。 少なくとも一日に一回は、結合テストを行う。 また、全体のコンパイルおよび自動テストを行うための継続的インテグレーション用のコンピュータを準備することが推奨されている。 | |
YAGNI | You Aren’t Going to Need It(今必要なことだけ行う)。 先の事を考えて、前払い的に機能を増やし、実装を複雑化させる事は避ける。 むしろ無駄な機能があれば削りとり、今必要な機能だけのシンプルな実装に留めておく。 このことで後のイレギュラーな変更に対応しやすいようにする。 必要なコードは先回りして書くのではなく必要になったときに書くという意味である。 | |
/5. 管理者 | 責任の受け入れ | |
援護 | ||
四半期毎の見直し | ||
ミラー | 今どういう状態かをチームに知らせる。 | |
最適なペースの仕事 | 知的作業には週40時間の労働時間が最適である。 特にXPでは、集中力を高めて効果を生む事を重視しているため、心身ともに健全な状態を保つ必要があり、それ以上の労働は適さない。 そのため、計画的に開発スピードの調整を行う。 | |
/4. 顧客 | ストーリーの作成 | 求める機能のコンセプトを短い文章で記したストーリーカードを作成する。 そのカードをもとに、開発者・管理者を含めたチームとのミーティングを行い、詳細を決定する。 |
リリース計画 | どのストーリーをどのイテレーションの対象とするか、チームミーティングで主体となって提案し、合意の上で最終的な承認を行う。 | |
受け入れテスト | イテレーションごとに顧客の立場からテストを行い、ストーリーが実現できているか、望むシステムになっているか確認する。 もし満足できない場合は、それを指摘する。 | |
短期リリース |
http://www.ryuzee.com/contents/blog/7111
プロダクト・バックログ
プロダクト・バックログは、機能や技術的改善要素を優先順位を付けて記述したものです。ステークホルダ全員が参照し、現在のプロダクトの状況を把握できるようにします。
「ユーザーストーリー」形式がよく用いられますが、形式が重要なのではなく、関係者がいつでも内容を思い出せるようにすることが目的です。
| 誰のために 何のために
それを実現するのか |
について合意し、いつでも思い起こせるようにしておくということです。そうすれば、仕様変更が起きた時、「なぜ変更が必要なのか」が理解しやすくなり、プロダクトの全体の進捗への影響の把握・伝達がスムーズになります。
緊急な変更の時「そもそもこの機能は……」という議論や説得に時間をかけてしまえば、プロジェクトの死に直結しかねません。危機に陥る前に、定期的に自分たちの状況を共有しておき、透明性、信頼性を醸成しておきたいものです。手の内を隠してポーカーフェイスで交渉するより、手の内をさらして実力をありのままに把握してもらうのです。
スプリント・バックログは、プロダクト・バックログからスプリント期間(1~4週間)分を抜き出した「チームのタスクリスト」です。
チームは、予測どおりにきちんとタスクを終わらせられるかを検討します。チームメンバーの多種多様なスキルを総動員して、自信を持って「終わる」と宣言できるかどうかが、確認すべきポイントです。
スプリント期間中は、スプリント・バックログにある作業や機能を完了させるべく、チームとしてベストを尽くします。「私の仕事、あなたの仕事」ではなく、「チームの仕事」です。チームとして責任を持ち、全力で仕上げていきます。
そのため「チームとして情報を共有」することが必要不可欠です。そのために効果的なのが「デイリースクラム」(朝会)です。デイリースクラムは毎日、全員で進捗を確認するミーティングです。
答えることは3つの質問だけ。
|昨日やったこと 今日やること
障害になっていること |
この3つの答えをチーム全員で共有します。細かい問題に立ち入ることは避け(別に時間を取る)、トータル15分を目安に完了させます。
タスクボードは、バックログを壁とふせんで表現したものです。視覚的に状況を把握できるため、短時間で最新状況を共有するのに役立ちます。
|ToDo(これからやること) Doing,WIP,InProgress(着手していること)
Done(完了したこと) |
という領域の中で、タスクを表すふせんを動かしていきます。
導入状況サマリー
http://www.ryuzee.com/contents/blog/7112
http://www.ryuzee.com/contents/blog/7115
http://itpro.nikkeibp.co.jp/atcl/column/16/111800263/111800001/?rt=nocnt