「.NET 開発基盤部会 Wiki」は、「Open棟梁Project」,「OSSコンソーシアム .NET開発基盤部会」によって運営されています。
目次 †
概要 †
ソフトウェア開発管理技術
詳細 †
開発プロセス・手法 †
開発方針と開発モデル †
PMPのライフサイクル区分に近い話。IPA定義か。
- ウォーターフォール・モデル
予測型(逐次的)ライフサイクル(完全計画駆動型手法)
- 進化的モデル
適応型ライフサイクル(アジャイル手法、変化駆手法)
PMBOKと同様に単語的に判別付き難い。
エンジニアリング †
- ドメイン・エンジニアリング
特定のドメインに特化して、ノウハウ・部品を整備・再利用する。
- コンカレント・エンジニアリング
設計・開発・生産などの工程を出来るだけ
並行して進める(タイト・マトリックス組織構造下で)。
- リバース・エンジニアリング
プログラムから仕様を起こす。
- フォワード・エンジニアリング
リエンジで起こした仕様でソフトウェアを開発する。
ソフトウェア・ライフサイクル・プロセス †
共通フレーム 2013 JIS X 0160:2012中の
ソフトウェア・ライフサイクル・プロセス >
システム・ライフサイクル・プロセス > テクニカル・プロセス
- システム要求事項分析プロセス
システム要求事項はステークホルダーに
伝えられベースラインとなっている。
- システム方式設計プロセス
システム要素を識別し、
要求事項を満たす方式設計が定義されている。
- システム結合プロセス
要求事項の優先順位に従って、
システムを結合する戦略が作成されている。
- システム適格性確認テストプロセス
要求事項への適合を評価するための基準が作成されている。
組込みシステムの開発 †
- コデザイン(co-design):協調開発
- ハードウェアとソフトウェアの設計を、
開発の初期段階から協調して行うこと。
- 組込みシステムのコデザイン
組込みシステム開発においては、シミュレーションを活用する。
- シミュレーションで、ハードウェアとソフトウェアの切り分け
- シミュレーションを活用しつつハード・ソフトを並行開発する。
- コンカレント開発
ハード・ソフトを並行開発した後に
組み合わせるので手戻り発生のリスクが高まる。
- プロダクトライン開発
コア資産≒プラットフォーム化させたハードウェアとし、
主に、ソフトウェア側で差別化することで
短期間に多数の製品ラインナップを構築する。
SOAとマッシュアップ †
SOAは機能、マッシュアップはデータを対象とする。
- SOA (Service-Oriented Architecture)
- サービス指向アーキテクチャ
- 複数のWebサービスを組み合わせてサービス(システム)を構成する。
- 技術的基盤として、以下がある。
- SOAP
- WSDL (Web Services Description Language)
- UDDI (Universal Description, Discovery, and Integration)
- BPEL (Business Process Execution Language)
- BPMN (Business Process Modeling Notation)
- マッシュアップ (Mashup)
- ウェブ上に公開されている情報を加工、編集することで新たなサービスとすること。
- 様々な企業や団体が所有するデータを公開するWebAPIを整備するようになったため。
プラクティス関連 †
- プロセス
カバー範囲(XP < Scram < DSDM)
- DSDM (Dynamic Systems Development Method)
契約やスコープ調整などの考え方
- XP (extreme programming)
主に技術的プラクティス
重量開発手法(SPA、CMM)に対するアンチテーゼ
軽量開発手法あるいはアジャイル開発手法の代表的手法
- 反復(イテレーション、スプリント)
開発サイクルの単位(Scram = スプリント、XP = イテレーション)
適応型ライフサイクルの核(要求の変化に柔軟に対応することを目的とする)。
バックログから拾ってきたストーリ(設計、実装、テストまで)を実現する。
- イテレーション計画
- 仕様確認レビュー
- フェーズ分割
- 進捗/コスト/品質/変更管理
- ペアプログラミング
2人のプログラマが1台のPCを共同利用しソフトウェア開発を行う手法
コードを書く人を「ドライバ」、もう1人を「ナビゲータ」と呼ぶ。
- リファクタリング
外部仕様を変更せず、内部仕様を見直し保守性を高める。
- テスト駆動開発(TDD)
プログラムの実装前にテストコードを書くプログラムの開発手法。
テスト ≒ 仕様で、テスト自動化に繋げるような考え方。
- CI/CD
継続的インテグレーション:自動ビルド・テスト
継続的デリバリー:ステージング or 本番環境への反映
- 回帰テスト、退行テスト
プログラム修正の影響(デグレードに繋がっていないかなど)を確認する。
- スタンドアップ ミーティング
スピーディーに各自の進捗報告だけを行い、
その進捗を妨げる課題を特定する。
- レトロスペクティブ
「チーム自体」やチーム活動の「プロセス」を振り返る活動
ツール関連 †
- プロジェクト管理
チケット管理、チャート(ガント、バーンダウン)、
その他(ロードマップ表示、カレンダー表示、Wiki、リポジトリ連携)
- Redmine
- JIRA
- Trello、Wrike、Asana、Restyboard、Scrumsiwe、Scrummate、Taiga、ProjectPlace?
- ドキュメント管理
記法(Wiki、MarkDown?)と差分管理
- Dokuwiki、Pukiwiki、MediaWiki?
- GitHub Wiki(GitHubクローンのWiki)
- Confluence、Esa.io、Qiita:team、docbase
知的財産権適用管理 †
構成管理・変更管理 †