V字モデル✌️


 開発手法について調べていたらV字モデルについて出てきたので調べました。上流工程とか下流工程とかのやつですね。それぞれがどんなことをするのかについてまとめました。

目次

  • V字モデル概要
  • 要求分析
  • 要件定義
  • 基本設計
  • 詳細設計
  • コードレビュー
  • 単体テスト
  • 結合テスト
  • システムテスト
  • 受け入れテスト

V字モデル概要

 V字モデルは、システム開発プロジェクトの一連の流れにおける開発工程とテスト工程の対応関係を表した1つのモデル。
  (左):開発工程を上流工程から順に右下がりに並べる
  (右):左の開発工程に対応したテスト工程を右上がりに並べる

https://webrage.jp/techblog/v_shaped_mode/

要求分析

 クライアントがシステムに求める仕様を明確にしていく工程。「こういうシステムを作って欲しい」というオーダーを要求定義書として書き起こす。要求定義書には、システムにおける細かな仕様や機能、費用面や開発スケジュールなどが含まれる。

要件定義

 システム開発を行う上で実施すべき業務内容を想定して要件定義書として文書化する工程。要件定義は以下のステップで行われる。
1. 解決したい課題と目標の明確化
2. システムの全体的な構成の明確化
3. 機能要件の定義 (システムの機能)
4. 非機能要件の定義 (可用性や運用性、セキュリティなど)
5. 予算やスケジュール、プロジェクトメンバー等の定義
6. 要件定義書の作成

要件定義書の詳しい内容は下記のサイトが参考になると思います

基本設計

 基本設計は開発すべきシステムを機能単位で分割して設計する工程。要件定義ではどんな機能や画面が必要か(What)を決めたが、基本設計ではどのように機能や画面を実装するか(How)を決める。基本設計は機能の説明書みたいなイメージ。

基本設計書の詳しい内容は下記のサイト参照

詳細設計

 基本設計で大まかに決めた内容をプログラマー向けに詳細化する工程。「この条件の時APIを叩いてDBにデータを追加する」のような感じで詳細にしていく。

コードレビュー

 ソースコードを記述者以外がチェックしてレビューを行う工程。コードレビューのポイントは
1. 自社のコードルールに則っているか
2. コメントがわかりやすく書かれているか
3. 仕様変更の際に修正箇所が多くならないか
4. 例外処理は入っているか
といったところを意識すると良き。

単体テスト

 プログラムを構成する比較的小さな単位(ユニット)が個々の機能を正しく果たしているかどうかを検証するテスト。関数やメソッドのテスト。フロントエンドではJestやMochaなどのツールが使用される。

結合テスト

 複数の要素が問題なく連動するかを確かめるためのテスト。単体テストで品質担保したモジュールを結合して動作するかチェックする。フロントエンドではJestやTesting Libraryなどのツールが使用される。

システムテスト

 システムの要件を満たしているかを確認するテスト。非機能要件や外部システムとの連携が正しく行われるかもチェックする。

まとめ

 要件定義って何するんだろう?とか基本設計と詳細設計の違いって何?といった部分について理解でき、世に出ているアプリやサービスはいくつもの工程を経てリリースされているのだなと感心しました。

参考