システム開発工程とは

 2021.10.18  ストレージチャンネル

ソフトウェアを開発するとき、Webサイトを制作するとき、新しい機能やデザインをリリースするとき、専門的な知識と技術を持つシステム会社に開発や制作を依頼することかと思います。

いわゆるシステム開発には決まって手順というものがあり、それを「システム開発工程」といいます。このシステム開発工程を詳しく知っているかいないかでは、完成するソフトウェアやWebサイトに完成度の差が生じます。

なぜなら、システム開発というのは制作会社が単独で行うものではなく、クライアント企業が一緒になって開発・制作するものであり、システム開発工程にどのように関わっていくかで成否が分かれるからです。

今回は、システム開発工程と各工程の詳細について説明します。

システム開発の種類

システム開発工程について説明するにあたって「ウォーターフォール開発」の基本的な開発工程を参考にします。ウォーターフォール開発とはシステム開発手法の一種であり、すべての開発工程が一連の流れで繋がっているものを指します。つまり滝(ウォーターフォール)のように、上流工程から下流工程へと連続的に開発工程が流れていくため、システム開発を1つの大きなプロジェクトと捉えて開発を進めていきます。

プロジェクト全体としてのスケジュールも初期段階で固定し、納品日も決められます。そこに向けて1つ1つの開発工程を進めていくのがウォーターフォール開発です。

これ以外の開発手法としては「アジャイル開発」が主流の1つです。アジャイルとは「俊敏」という意味で、文字通りウォーターフォール開発もよりも開発スピードと柔軟性が高い手法となります。ただしアジャイル開発を推進するためには高い知識と経験、それと技術を持ったプロジェクトマネージャーによる指揮が欠かせません。また、近年採用が広がっている「DevOps」とは開発チームと運用チームが協力体制を取り、スピーディかつ信頼性の高いシステム開発を目指すための手法です。

仮想化システムに最適!ネットアップではじめるオールフラッシュストレージ
Google Cloud VMware Engine と NetApp Cloud Volumes ONTAP で新たなDR対策やクラウドシフトを強力にサポート

システム開発工程の説明

それではシステム開発工程における各工程とその詳細について説明します。ウォーターフォール開発では以下のような流れで開発工程を進めるのが一般的です。

  • 要件定義
  • 基本設計(外部設計)
  • 詳細設計(内部設計)
  • プログラム設計
  • テスト計画
  • コーディング
  • 単体テスト
  • 結合テスト
  • 総合テスト
  • 納品(リリース)
  • 運用テスト

ウォーターフォール開発の開発工程はほとんどの制作会社で一致してしますし、各工程の名称も共通のものです。なのでこれらの工程について理解していれば、ひとまずシステム開発工程について知っていると言ってもよいでしょう。では、各工程の詳細について説明します。

要件定義

要件定義ではクライアント企業の担当者からヒアリングした内容をもとに「どんなソフトウェアを開発したいのか?」や「どんな機能を搭載したいのか?」といったシステム面に関する要件を定義すると共に、システム開発にかかる工数を計算して見積もりを出します。このとき、大半のプロジェクトで全体的なスケジュールも決定するでしょう。要件定義で大切なことはソフトウェアを実際に使用するユーザーのことを想定してシステム面に関する定義を行うことです。「あの業務をシステム化したい、こんな機能を盛り込みたい、あれも必要だ」と盛りだくさんの要件定義にすることよりも、現実をしっかりを見据えて本当に必要なものを定義することも大切です。

基本設計(外部設計)

基本設計はいわゆる、システム開発における「ラフ画」のようなものです。ユーザーが実際に触れる操作画面はどういったデザインや配置にするか?入出力する帳票の種類は何か?データベース構造はどのように設計するか?などソフトウェアの枠となる部分を決めていきます。ここではまだクライアント企業の担当者が積極的にかかわり、業務環境の実態に沿った設計を完成させることが大切です。

詳細設計(内部設計)

詳細設計は、基本設計で決まった事項を開発レベルまで落とし込んで実際のシステム開発へ入るための設計書を作成します。もちろん設計書と言っても図面を描くのではなく、各機能の処理手順等を明記して、それを参考にしながらシステム開発を進められるように準備します。

テスト計画

開発したソフトウェアは段階的なテストを繰り返して最終的にクライアント企業に納品されます。テスト計画では、開発段階のソフトウェアのテストと、開発完了後のテストについてその詳細を決めるための開発工程です。良いソフトウェアを開発するためには入念なテストを繰り返すことが大切なので、時間が許す限りテストを行ってソフトウェアを評価します。

コーディング

コーディングとは実際のシステム開発のことで「ソースコードを各」という意味があります。ウォーターフォール開発は開発工程の後戻りが難しいので、1つ1つの開発工程に成果物を設けてトラブル無く開発を進めることが大切です。

単体テスト

単体テストとは開発したプログラム1つ1つを単体で動作させて、その挙動を検証するテストです。単体テストでより多くの問題を検出することで後々の効率性が大きく変わります。

結合テスト

結合テストとは、開発した各プログラムを繋げて機能レベルでのテストを実行するテストです。単体テストをクリアしていても、プログラム同士を結合した際に正常に動くかどうかはやってみないと分からないので非常に重要な開発工程です。

総合テスト

総合テストは開発した各機能を繋げてシステム全体としての動作を検証するためのテストです。さらに操作画面の品質を確認したり、帳票類が正しく入出力されるか等の確認も行います。

運用テスト

ここまでのシステム開発工程が完了したら、クライアント企業の担当者と共に動作確認を行います。それと同時に実証データをもとにソフトウェアの可用性もチェックします。

納品(リリース)

すべてのシステム開発工程が完了すればいよいよ納品です。ただしシステム開発はそれで終わりではなく、ここからの運用も非常に大切です。ソフトウェアを適切に運用できるかどうかで高いビジネス効果を得られるかどうかが決まります。

 

工程管理とは?

以上のシステム開発工程を円滑に進めるためには「工程管理」を徹底することが肝要となります。工程管理の基本はブレークダウン(細分化)という作業で、各開発工程に存在するタスクを1つ1つ整理して、細分化できるところまで行った上ですべての開発者が同じように作業ができるようにシステム開発工程を整えることです。特定の開発者しか行えないタスクがあると、その開発者に負担が集中してしまいますし「属人化」といって開発環境として芳しくない状態になってしまいます。

ブレークダウンによって管理対象となるタスクを1つ1つ洗い出せば、管理の粒度を小さくして進捗を把握しやすくなるというのも利点の1つです。

開発プラットフォームの選択

開発したプログラムを組織的に共有したり、ブランチを作成して分岐的にプロジェクトを進めていけるサービスとして、世界中の開発者に支持されているのがGitHubです。GitHubがあれば1つのプログラムから開発環境を分岐させて、複数開発者がそれぞれ異なる開発を進めていくことができます。最終的には1つのプログラムとして統合されるので、システム開発工程の効率性が劇的に向上するでしょう。

CTA

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


トレンド

DevOpsとは?ストレージ管理者が知っておきたいトレンド

トレンド

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

トレンド

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

トレンド

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

システム開発工程とは