ソフトウェア開発プロセスとは?

 2021.10.18  ストレージチャンネル

エンジニアではない方でも、ソフトウェア開発プロセスについて理解することで、今使用しているシステムがどのようにして造られているか知れますし、システム導入担当者に任命された際にはどのプロセスに着目し、どう関わっていけばいのかなどが明確になってきます。

ICT(Information and Communication Technology )は今や、ビジネスの遂行に欠かせないものであり、すべてのビジネスパーソンがシステムの仕組みや重要なポイントについて理解しておくことが大切な時代です。

本稿では、ソフトウェア開発プロセスをいくつかの種類(モデル)に分けて解説します。ICTに対する知識を今よりも深めて、システムとのかかわりについて考えていきましょう。

そもそも「ソフトウェア開発」とは?

「ソフトウェア(Software)」は、皆さんが普段ビジネスで使用している各種システムそのものであり、プログラムの集合体でもあります。エンジニアは自社環境に最適なソフトウェアを開発したり購入したりして、大規模なシステム環境を作り上げています。

要するにソフトウェア開発とは、システムとして機能するプログラムを作成するという意味であり、そこには様々なプロセスが存在します。

ちなみにソフトウェアは実体が無いものであり、それに対して「ハードウェア(Hardware)とはソフトウェアをインストールして使用するためのサーバーや、データを管理するためのストレージサーバーなどを指します。

Azure NetApp Files(ANF)
Azure NetApp Files:パワフルなエンタープライズファイル共有

ソフトウェア開発プロセスの種類(モデル)

ソフトウェアを開発するにあたり、エンジニアは数あるモデルの中から最適なものを選び、ソフトウェア開発を進めていきます。基本的なモデルは「ウォーターフォール」と「アジャイル」です。まずは2つのモデルについて解説します。

ウォーターフォール開発モデル

「ウォーターフォール(Waterfall)」とは「滝」のことであり、このモデルでは「要件定義」という開発プロセスからスタートし、上流から下流へと順次プロセスを進めていくというものです。

要件定義

エンジニアが現場社員やクライアントに足してヒアリングを行い、「どんなシステムが必要か?なぜそのシステムが必要か?」という要件を細かく定義していきます。ウォーターフォール開発モデルの土台とも言えるプロセスであり、要件定義だけで数ヵ月費やすことも少なくありません。

概要設計

現場社員やクライアントが実際に触れるシステムの「表面部分」を設計していくためのプロセスです。「外部設計」とも呼ばれます。UI(User Interface)のデザイン、データベースの構造、入出力する帳票などを明確にし、システムのラフ画のようなものを作成します。

詳細設計

概要設計で決まったことをプログラム単位まで落とし込んで、より細かい設計をしていくのが詳細設計です。「内部設計」とも呼ばれます。実際に開発可能な状態にまで設計を掘り下げていきます。ウォーターフォール開発モデルではプロセスの後戻りが難しいため、慎重な設計が必用になります。

テスト設計

ソフトウェア開発ではテストを十分行っているかどうかで、システムの品質が左右されます。このプロセスでは、ソフトウェア開発途中や開発後に実施するテストのスケジュール等について計画します。

コーディング

テスト設計まで完了すれば、いよいよ本格的なソフトウェア開発です。ウォーターフォール開発モデルでは上流から下流へとプロセスが進んでいくため、細かく別けてプロセスごとに成果物を設けることが多いでしょう。

各種テスト

1つ1つのプログラムを確認する「単体テスト」。2つ以上のプログラムを合わせて1つの機能として確認する「結合テスト」。完成したシステムを確認する「総合テスト」。それぞれのテストをソフトウェア開発プロセスに合わせて実行していきます。

リリース

テストがすべて完了したら、晴れてリリースへと至ります。クライアント向けのソフトウェア開発の場合は、一度クライアントの「運用テスト」を経て納品ということになります。

アジャイル開発モデル

「アジャイル(Agile)」とは「素早い」という意味で、従来のモデルであるウォーターフォール開発プロセスに対して、より早い開発完了を実現するためのモデルです。アジャイル開発モデルでは要件定義ごとにチームを分散して、優先度に応じて開発を進めていきます。

「イテレーション」と呼ばれる短い反復期間を設けて、要件ごとに1つ1つソフトウェア開発プロセスを繰り返していくことで、途中での要件変更に対応できたり、より付加価値の高いシステムを作りやすくなったります。一般的なアジャイル開発は以下のようにプロセスが進みます。

要件定義

アジャイル開発モデルの要件定義はあいまいさをあえて残します。要件を固めてしまうと、柔軟なソフトウェア開発が難しくなるからです。また、開発しながら別の要件を決めていく場合もあります。

詳細設計

要件が決まったらすぐに詳細設計に入ります。アジャイル開発モデルでは要件ごとに開発を進めていくため、概要設計を必要とせず、そのプロセスにかかる作業量を削減できることから開発スピードがアップします。

コーディング

コーディングは要件ごとに複数人で行っていくのが基本です。そのため、GitHub(ギットハブ)等のプログラム共有サービスを利用して、同時に開発を進めていくための環境を整えます。

テスト

アジャイル開発モデルでは要件ごとに開発したプログラム単体と、それをシステム本体に結合した際のテストを行います。システム全体が完成すると、総合テストや運用テストを行います。

リリース

Webサービス等を提供している場合は、開発が完了する度に機能をリリースします。

ソフトウェア開発プロセスのメリット・デメリット

ここまで開発したように、ウォーターフォール開発モデルとアジャイル開発モデルは、まったく違ったプロセスを持つソフトウェア開発です。そのため、それぞれに違ったメリット・デメリットがあります。

<ウォーターフォール開発モデルのメリット・デメリット>

  • プロジェクト初期段階から開発プロセス終了までのスケジュールが固定する
  • 進捗管理が行いやすく経験が少ないシステムエンジニアでも管理できる
  • ソフトウェア開発に必要なリソースが確定するため予算取り等が行いやすい
  • 開発プロセスごとに成果物が定められているためその都度品質が担保される
  •   開発期間が長期的になりやくバッファ(余裕)を設けていないと開発遅延が起きやすい
  • 開発プロセスの後戻りができないため途中での要件変更に弱い

<アジャイル開発モデルのメリット・デメリット>

  • 要件ごとに開発プロセスを繰り返すことで途中での要件変更に対応できる柔軟性がある
  • クライアントと密に連携を取りながら開発を進められるため業務実態に沿ったシステムが開発できる
  • エンジニア同士が情報共有を徹底しながら開発プロセスを進めていくことで開発期間を短縮できる
  • プロジェクト全体としてのスケジュールが固定しづらいため進捗管理が難しい
  • アジャイル開発モデルを推進するには経験豊富なシステムエンジニアが必要になる

いかがでしょうか?同じソフトウェア開発プロセスでも、モデルが違うだけでプロセスの内容や特徴は大きく異なります。各モデルについて理解し、ソフトウェア開発についての知見を広げていただければと思います。

 

CTA

RECENT POST「トレンド」の最新記事


トレンド

システム開発工程とは

トレンド

DevOpsに代表されるシステム開発の手法と工程

トレンド

システム開発のプロセスを理解しよう

トレンド

システム開発の工程とそのポイント

ソフトウェア開発プロセスとは?