【基礎知識】システム開発 フロー ウォーターフォール型開発とは メリットは?

デジタル化の促進、システム開発が重要な時代を迎えています。長い目で見ると、労働力の低下、生産性の低下が見込まれるためですし、短期的には、人件費削減、売上拡大につながるためです。

デジタル化の柱はなんといってもシステム化です。とはいっても、なんでもかんでも自動化することがいいわけではありません。目的を考えて、自動化を行うようにしていくべきです。システム開発はその点で重要なポジションとなっています。

この記事では、そんなシステム開発において、ベーシックな開発方法とされているウォーターフォール型開発についてまとめていきます。ウォーターフォール型開発とは?ほかには、どんな開発方法があるのか。そもそも、ウォーターフォール型開発の場合のシステム開発の流れは、どんなフローになるのか?

システム開発における基礎知識ともいえる、ウォーターフォール型開発について、解説していきます。

システム開発の方法は、大きく分けて2つ

システム開発の方法は、一般的に、大きく分けて、2つあります。

  1. ウォーターフォール型開発
  2. アジャイル型開発

の2つです。

ウォーターフォール型開発は、設計図を作り、さまざまな段取りを組んで、目的のシステムを開発していく方法です。明文化してもわかりますが、これは非常にオーソドックスな開発工程です。

アジャイル型開発は、この反対で、大まかな目的物のシステムを開発して、その場その場で、修正、改変を加えていく開発手法です。それぞれに、メリット、デメリットがありますが、まずは、基本のウォーターフォール型開発について、基礎知識を蓄えていきましょう。

ウォーターフォール型開発を理解する意味

なぜ、ウォーターフォール型開発のようなシステム開発の方法を理解する必要があるのでしょうか。

最大の理由は、システム開発の工程を理解していないと、以下のことが起こりえます。

  • システム開発の遅延
  • 計画倒れ
  • 開発したシステムの精度が落ちる

という点です。

場合によっては、工程を理解していないことで、開発費用がかさんだりします。

通常、システム開発を行いたい場合、システム開発会社へ依頼します。

その際、こちら側が、どんなシステムを作りたいか、要望を具体的に伝えていきます。そして、それに対して、見積もりが出てきます。

オーダーメイドの家を自分で建築するときを想像するとわかりやすいかもしれません。

要望をいろいろと伝えると思います。

その結果、見積もりが出てきます。通常、システム開発は、人件費で成立するため、かかった時間や、人に応じて、見積もりが出てきます。

それゆえ、システム開発の工程を知らずに、見積もりが出てから、要望を伝えていったり、具体化していくと、場合によっては、見積もりが変わります。

あとから、要望が増えてくれば、当然、システム開発の量が変わるので、見積もりは変わってきます。この結果、見積もりの決定に時間が経過して、スケジュールどおりに、システム開発が進まないということも起きてきます。

システム開発の工程を理解しておくことで、開発が計画通りに進み、適切なコストで、進められるようにすることが大事です。

それゆえ、ウォーターフォール型開発についての知識をもっておくことは、発注側も大事なのです。

ウォーターフォール型開発とは

ウォーターフォール型開発とは、プログラムを活用したシステム開発の方法のひとつ。2021年では、ウォーターフォール型開発が、主流になっています。

ウォーターフォール型開発は、最初に設計図を固め、工程・タスクを明確化して、企画、設計、開発作業、テスト、プログラム結合、結合テストという流れにそって、開発していきます。

これによって、スケジュール管理がしやすい状況、そして、成果物のシステムに対しての精度を高められます。

システム開発 フロー

ウォーターフォール型開発における、システム開発フローをまとめていきます。

  • 企画
  • 要件定義
  • 基本設計、詳細設計、デザイン設計
  • プログラミング
  • 単体テスト
  • プログラムの結合テスト

という流れが基本になってきます。

作るシステムや内容によって、いろいろ変わりますが、ベースとして把握してください。

本番化などは、当たり前のことなので、いったん、フローからは外しています。

いくつか、わかりにくいところをピックアップして、まとめていきます。

要件定義

求められる機能、設定、システムをまとめていきます。また、システム開発の範囲(スコープ)を決めていきます。

よくあるのは、機能の仕様決定や、使うツールの決定、プログラミング言語や、インフラ環境の策定、スケジュール策定ですね。

細かく言えば、この時点で、webブラウザの特定などもしていきます。

これによって、そもそも、システム開発に必要な体制や、スタッフ、スケジュールを計画して、見積もりを作るのが、基本です。

とはいえ、現実的には、要件定義を自社内でできる会社は少なく、通常は、システム開発会社が行います。それゆえ、概算で、システム開発費用を算出し、要件定義の費用や工数もその中に含むことが多いです。

この要件定義を通して、できるドキュメントは、

  • 仕様書
  • 機能定義書
  • スケジュール
  • 見積もり

といったところのドキュメントになってきます。

基本設計 詳細設計 デザイン設計

いわゆる、システムの作る対象が明確になったので、上記の資料などから、インターフェースの設計や、デザイン設計、データベース設計などを行います。

デザインや画面遷移、ページ構成、サイトマップなど、使いやすいシステムを作るために重要な設計を行っていきます。

この流れでは、

  • インタフェース設計書
  • ER図(データの関連性を示す図)
  • テーブル定義書
  • テストケース

などが産出できるドキュメントになってきます。

単体テスト

プログラミングのもと、生み出されたシステムに対して、そのプログラム1つ1つが動くかどうかをテストしていきます。

一般的に、単体テストでは、プログラミングの対象単位(モジュール)ごとに、テストを行っていきますが、webシステムなどの場合は、一連の流れなどの動作テストを単体テストで行うケースもあります。

結合テスト

そして、いわゆる、総合テストです。機能を満たしているか、などを、チェックしていくシーンになります。

設計書どおりにできているかがポイントなので、設計書外にある、あ、こっちのほうが便利だな!みたいなチェックは、ここではあまりしません。

親切なシステム開発会社などであれば、ここで、修正をしてくれる可能性もありますが。

ウォーターフォール型開発 デメリット

ウォーターフォール型開発 の メリット は、先でも触れました。では、逆に、ウォーターフォール型開発 デメリット とはなんでしょう。

大きくは以下の3点です。

  1. ドキュメント作成が多い(工数があがる)
  2. 開発スピードが遅い
  3. あとからの仕様変更、修正が大変

ドキュメント作成が多く、面倒!という声も聴きます。実際に、ここで、システム開発をやめたくなる人も多いですね。

ウォーターフォール型開発 は、開発スピードは速くありません。段取りが多いからです。これは、精度を高めるためなので仕方ない部分もありますね。

仕様に変更が生じるような場合、ウォーターフォール型開発では、手戻り作業が発生し、それによって、重複作業が発生します。テストが2重になったり、無駄なプログラムの製造があるかもしれないからです。

プロジェクトやシステムの企画が具体的かつ明確でない場合や、途中で仕様変更がある場合には、ウォーターフォールモデルは適さない開発方法になります。

比較 アジャイル型開発との違い

アジャイル型開発は、上記のデメリットをくつがえす開発方法で、企画を考えながら開発したい、スピード感優先、リリース優先、などの場合に、活用できるシステム開発の方法になっています。

アジャイル型開発は、仕様変更にも柔軟なので、そういった点でも、ウォーターフォール型開発よりも優れた開発方法になります。

ただし、良いことばかりではありません。アジャイル型開発の場合、仕様を決めたり、仕様変更を繰り返していたりすると、結果的に、システム開発コストがあがります。

なぜなら、アジャイル型開発は、人の雇用と同じで、月額での費用になるためです。それゆえ、プログラムをしていなくても、仕様を決めなければ、その期間も、待機となるため、予算をつかってしまいます。

また、アジャイル型開発は、精度が高くないことも多いです。なぜなら、場当たり的に、システムを継ぎ足していくからです。システムの精度を高めるためには、きちんとした初期の設計が重要です。

ウォーターフォール型開発の場合は、設計はしっかりとされているため、大規模なシステム開発などでは、最適ですね。

せっかくなので、Youtubeで、このアジャイル型開発と、ウォーターフォール型開発の 2つの違いを解説している動画も探しておきました!

動画でみると、より、わかりやすいかと思いますので、参考に、どうぞ!!

まとめ ウォーターフォール型開発 基本 システム開発フロー を 理解

いかがでしたでしょうか、ウォーターフォール型開発

ウォーターフォール型開発は、基本となる、システム開発の方法なので、しっかりと把握しておきましょう。

工程を理解して、どの時点まで、要望を出せるか、具体化できるか。

このへんをベースに理解しておかないと、ろくな結果になりません。

アジャイル型開発でも同じですが、システムには目的があります。目的にかなったアプローチは無数にあるため、しっかりと、アプローチも含めて、理解をしておくことで、より精度の高い、目的に沿ったシステム開発ができると思いますよ!

2022年版 改正個人情報保護法 パーソナルデータダッシュボード 機能 が 重要