アプリやシステムの開発手法
スマートフォンアプリや様々なシステムの開発方法には複数の手法があり、プロジェクトに応じて適切な開発手法が使い分けられています。今回は開発ベンダーに発注したシステムやスマートフォンアプリがどのような開発手法で開発されるのかについてご紹介します。
開発するスマートフォンアプリやシステムの内容によっては、開発手法に適さない場合もありますので、今回は代表的な開発手法についてご紹介していきます。
代表的な開発手法は、大きく分けると4つの開発手法に分類されます。近年の開発手法としては、ウォータフォールモデルとアジャイルソフトウエア開発と呼ばれる開発手法が主流になっていますが、今回は「ウォーターフォールモデル」についてご紹介します。
ウォーターフォールモデル
ウォーターフォールは、英語で「Waterfall」と書きます。日本語に訳すと「滝」を表します。このウォーターフォールという言葉は、ソフトウェアやハード開発など開発プロセスの現場では、開発手法の一つを表し、上流工程から下流工程に一連の流れに沿って開発を行う手法のことを呼びます。
ウォーターフォールモデルでは、外部(ユーザー)又は、内部の要求定義をまとめた上で設計や細かい工程を生み出していく必要があります。また、ウォーターフォールでのシステム開発では基本的に、工程をスキップして作業は行いませんが、隣り合った工程でちょっとした反復が行われることはあります。また、基本的にウォーターフォールでのシステム開発は前の工程を完全に終えてからでないと次の工程に進めない仕組みになっています。
V字モデル
現在のソフトウェアやシステム開発では、アジャイル型開発モデルが頻繁に活用されますが、ウォーターフォール開発モデルは、システムの品質を重視する際や、大規模な開発に最適なシステム開発手法として頻繁に使用されています。また、最近では、V字型の図で解説されることが多いので、下記にその図を示します。
ウォータフォールモデルと関連する手法(W字モデル)
前項でウォーターフォールは、”V字モデル”で表されるということを紹介しました。
V字モデルの左側を開発工程、右側をテスト工程としてとらえ、それぞれ同じ高さの工程が対応しているという捉え方で、開発工程とテスト工程を並行で実装するモデルをW字モデルと言います。
W字モデルを導入するメリット
W字モデルでは開発・テストの双方を同時併行で進めることができるので、従来のウォーターフォールで発生しやすい仕様バグ、矛盾、手戻り工数を少なくすることができる傾向にあります。よく言われているメリットを記載します。
- 手戻りが少なくなる
- W字モデルではシステムの設計段階でテスト設計を行うため、テスタビリティ(検証可能性)の観点から仕様書・設計書を検証することができます。この検証により上流工程での品質向上が可能となり、後工程での手戻りや全体の工数(特に最終工程付近での修正工数)が削減できます。
- 要点の矛盾や抜け・漏れを防ぐことができる
- 早期段階からテスト設計を作成することでテスタビリティがより高まるため、設計の漏れを発見する確率が上がります。
- 早めにテストの準備ができる
- 早期の段階で仕様を把握できるので、テストの難易度や注意点を把握でき、テスト準備を早めに行うことができるようになります。
開発の主な工程・手順
システム開発の中でよく出てくる工程について説明します。
要件定義を決める
システムの要件をステークホルダーと決めましょう。利用者がそのソフトウェアを使って何をしたいのか、どのように使うのかといった情報をもとに、それらを実現する機能やスペック、その他さまざまな基準や条件などを検討し明確にします。このすり合わせによってまとめた内容は、「要件定義」と呼ばれる形で文章化します。
output・・・ 要件定義、システム仕様書、UI/UXデザイン(デザイン性が強い場合)
基本設計を行う
基本設計(=外部設計)では、実際にソフトウェアやシステムのUIなどに関する打ち合わせや画面操作のイメージや流れ等を検討します。基本的にユーザー目線からソフトウェアの仕様を設計します。責務や開発の円滑化のためにソフトウェアをサブシステムに分割します。
output・・・基本設計書、外部仕様書
詳細設計を行う
詳細設計(=内部設計)では、実装の観点からコード化するための指針を提供するのが、詳細設計(内部設計:Internal Designとも呼ばれる)です。オブジェクトをプログラムの最小単位である「モジュール(module)」に分割し、プログラムの「構造化設計(structured design)」を行います。
コーディング
こちらの工程では実際にプログラムの作成を行う段階として、プログラマーがコーディングを開始します。
output…ソースコード
テスト
この工程では、作成したコードやシステムのテストを実行します。テストにはシステムテストや単体テスト、結合テストを行いましょう。上流工程で決定された要求や要件、仕様通りにプログラムが動作するかどうかをテスト仕様書に基づいて確認し、ソフトウェアの品質を評価・改善していきます。
output・・・不具合チケット、テスト結果報告書
運用・保守テスト
ソフトウェアテストが終了しソフトウェアがリリースされた後は、そのソフトウェアの運用・保守を開始します。有形プロダクトと異なり、ソフトウェア開発ライフサイクルは運用開始後も続きます。ソフトウェアの安定稼働やさらなる改善を目指し、基本的にはそのサービスが終了するまでバグの修正やアップデートといった運用・保守を継続的に行います。
ウォーターフォールメリット・デメリット
メリット
- プロジェクト計画の見通しを立てやすい
- 要求定義/要件定義及び設計が先に完了するため、開発者の迷いを減らせる
- 適用開発例が多く、参考になるプロジェクトが多い
- 各工程での成果が明確になる
- 進捗管理がしやすい
デメリット
- 全工程を予め定義/作成しなければならないため、プロジェクト計画立案自体にコストがかかる
- 工程を後戻りさせることを想定させていないため、仕様変更があった際に多大なコストが生まれる
どのようなプロジェクトに向いているか
- 要求/要件/目標が固定されており、途中変更のないプロジェクト
- 予め全ての要求/要件/条件/期間/工程/責任を定義しなければならないプロジェクト
- 発注/受注案件など。
ウォーターフォールモデルは、頻繁に活用されている手法であり、プログラム開発やシステム開発に欠かせません。但し、システム開発には多くの手法があるので、プロジェクト毎の状況によってシステム開発モデルの調整や他の手法を活用することを忘れずに心掛けていきましょう。
この記事を書いた人
株式会社APPSWINGBY マーケティング
APPSWINGBY(アップスイングバイ)は、アプリケーション開発事業を通して、お客様のビジネスの加速に貢献することを目指すITソリューションを提供する会社です。
ご支援業種
情報・通信、医療、製造、金融(銀行・証券・保険・決済)、メディア、流通・EC・運輸 など多数
監修
株式会社APPSWINGBY
CTO 川嶋秀一
動画系スタートアップ、東証プライム R&D部門を経験した後に2019年5月に株式会社APPSWINGBY 取締役兼CTOに就任。
Webシステム開発からアプリ開発、AI、リアーキテクチャ、リファクタリングプロジェクトを担当。C,C++,C#,JavaScript,TypeScript,Go,Python,PHP,Vue.js,React,Angular,Flutter,Ember,Backboneを中心に開発。お気に入りはGo。