あなたは、システム開発における開発工程についてどのような流れで開発が進んでいくのか気になっているところではないでしょうか。システム開発を外注にあたって、システムがリリースするまでの全体の流れを把握しておくことは重要です。
どのような流れでシステムは出来上がるのか、システム開発会社として25年経つ会社に所属している私が解説します。
本記事を読んでいただき、システム開発の全体流れを把握する1つの材料になればと思います。
目次
1.システム開発における開発工程とは?
システム開発における開発工程は上流工程と下流工程に分けることができます。1章では上流側から順に紹介していきます。10個ある工程の中でどこからが上流工程なのか、下流工程なのか明確な基準は有りません。そのプロジェクトの規模や開発手法によって変わってきます。
1-1.要件定義
これからどのようなシステムを、どのような開発手法で開発するのか決めていくフェーズです。一連の開発工程の中でも最も重要なフェーズであり、慎重に検討しながら決めていきます。
- 全体のスケジュール(何をいつまでに終わらせるか)
- 全体で掛けることができる予算
- 開発手法
- リリースする方法
- リリース後の運用方法 など…
システム開発は要件定義で決めた内容に沿って大枠は進んでいくので決裁権のある人たちも含めて話し合いを重ねていきます。クライアント側×開発側でPM,PLを交えて決めていきます。
※要件定義をする前に、クライアントからどんなシステムを作りたいのかヒアリングし、提案し、見積書を提出する段階を踏む必要はあります。クライアントから受注してから要件定義がスタートします。
要件定義の詳細については、「要件定義とは?基本設計/詳細設計との違いと進め方を解説」の記事をご参照ください。
1-2.基本設計
要件定義で決めた内容をもとにユーザー側が見える部分を決めていく設計になります。基本設計書は機能ごとに作成するのが一般的です。ただ、プロジェクトの規模によって書き方は若干変わってきます。
基本設計書は開発側のエンジニアが書くことが多く、書いた内容をクライアント側と共有してディスカッションして詰めていきます。クライアント側が非IT系であれば、専門用語を少なめにして、誰でも分かるような書きぶりにします。
基本設計の詳細については、「基本設計とは?進め方と要件定義/詳細設計との違いを解説」の記事をご参照ください。
1-3.詳細設計
基本設計書はクライアントに説明するための資料という位置づけでした。詳細設計は、内部資料(開発者に向けた資料)になります。具体的に各機能をどのように実装していくのか決めるフェーズになります。開発者はこの詳細設計書をもとに開発を進めていくことになります。少なくとも下記の事項について、網羅している必要があります。
- クラス図:システム内のクラス(オブジェクト)やその関係性を表す図
- シーケンス図:システム内のクラス(オブジェクト)間のメッセージ(処理)の流れを表す図
- 画面設計書:システムの画面やボタン、入力項目などのレイアウトや動作を表す書類
- データベース設計書:システムで使用するデータベースやテーブル、カラムなどの構造や制約を表す書類
詳細設計の詳細については、「詳細設計とは?進め方と要件定義/基本設計との違いを解説」の記事をご参照ください。
1-4.開発
詳細設計書をもとにエンジニアが開発を進めていきます。ここから実際に手を動かす作業がスタートすることになります。
開発フェーズで意識しないといけないことは、ホウレンソウを積極的にすることです。詳細設計書に基づいて開発を進めていきますが、詳細設計書は空論でしかないです。実際に開発を進めていくと詳細設計書通りいかなかったり、、どうやったら実現できるのか不明だったり、、そこを自分の考えを貫いて先に進めてしまうと後々バグが発生して、手戻りが多くなる原因になります。手戻りを最小限にするためにも、あれっ?と思ったらすぐにホウレンソウすることを心がけます。
1-5.単体テスト
開発が終わったらテストフェーズに入ります。単体テストでは、作成したプログラムを1行ずつロジックが正しく動作するか確認していきます。ここでバグが発生したときは、開発フェーズに戻って、詳細設計書を確認しながらバグを解消する必要があります。
単体テストは開発したエンジニアが自分で実施することが多いので、そのプログラムがどのように作動しないといけないか明確でしょう。解像度の高いテストが実施できます。
また、単体テストの手段として、ホワイトボックステスト(ソースコードが明らかな場合)と呼ばれる手段を取ることが多いです。ホワイトボックステストについては、「ホワイトボックステスト、ブラックボックステストの違いとは?」の記事をご参照ください。
近年は、この単体テストを自動化して効率的に単体テストをするケースが増えています。
*Point:自分がプログラミングして、思っていた通り動くか
1-6.結合テスト
結合テストでは、単体テストを終えた複数のモジュールがしっかりと連動して機能するか確認します。例えば機能Aで表示・設定された内容が機能Bにも反映されているか、を確認していきます。上手く機能しない場合は、単体テストに戻って確認します。単体テストに比べてパターンが多くあるので、時間と労力が掛かります。
結合テストの進め方としては、プログラムの上位層から順番にトップダウンするようなイメージで行われるケースが多いです。その方がバグ発生箇所を掴みやすいためです。
*Point:複数の機能がしっかりと連携して動作するか
1-7.総合テスト(システムテスト)
結合テストで、すべての機能が問題なく連携することが確認取れたら総合テスト(システムテスト)を実施します。基本設計書の仕様に基づいて確認し、画面遷移/機能要件を満たしているか、負荷を掛けても動作するか、エラー発信の挙動…等を確認します。上手く機能しない場合は、結合テストに戻って原因を特定し改善します。リリース後の保守/運用も効率的にできるようになっているか確認するのも重要なポイントです。
*Point:ハードウェアや通信回線なども含め、ソフトウェアのシステム要件に準拠しているか
1-8.運用テスト
発注者が実際の運用環境でテストするフェーズになります。ここで、発注者側が期待している内容に沿ったものができているかテストします。まだ世に公開されているシステムではないので、テスト画面に入るためにパスワード等を設けて、発注者側に確認してもらいます。機能面だけでなく、UI/UXについても確認します。
発注者側が思っていたものと違う部分があると、最悪の場合振り出しに戻ります。このようなケースを避けるためにもウィークリーで定例会を実施して、発注者側に齟齬がないか確認しながら進めることは重要です。
*Point:発注者がイメージしていたモノと近しいものができているか
1-9.リリース
ここまで複数のテストを実施してきました。いずれもクリアしていることが確認できて、ようやく世に公開されるモノとなります。
1-10.保守、運用
リリース後も開発の仕事は有ります。リリース後に様々なユーザーがそれぞれの環境でシステムをいじることで、予期せぬトラブルが出ることがあります。その際のトラブル対応が必要になります。また、システムの更新・機能追加を必要に応じて対応していくことになります。
システムの内容によっては365日24時間対応する必要があるシステムも有ります。24/365については、以下の記事をご参照ください。
2.システム開発における主な開発手法とは?
1章ではシステム開発の一般的な進め方について解説しました。2章では具体的にどのような開発手法があるのか代表的な開発手法であるアジャイル開発とウォーターフォール開発を紹介したいと思います。
ここに書かれていない、その他の開発手法については「システム開発の開発手法を一覧で分かりやすく紹介」の記事で詳細取り上げていますので、併せてご参照ください。
2-1.アジャイル開発
アジャイル開発とは、システム開発のサイクルである、「企画」→「設計」→「実装」→「テスト」を機能単位で回すことを呼びます。
システム開発は様々な機能の集合体からなっています。その様々な機能を機能単位に分解して開発を進めていくことです。
例えば、1つのシステムが機能A、機能B、機能C、機能Dの集合体から成るとした場合、以下のようなサイクルで開発を進めることになります。
アジャイル開発に関する詳細は以下の記事をご参照ください。
「アジャイル開発とは?メリットやデメリットをわかりやすく解説」
2-2.ウォーターフォール開発
ウォーターフォール開発とは、システム開発のサイクルである、「企画」→「設計」→「実装」→「テスト」を一気通貫で開発することを指しています。
システム開発は様々な機能の集合体からなっています。その様々な機能をフェーズ単位で組み立てて開発を進めていきます。事前に仕様要件がガッチリと決まっている開発案件であればウォーターフォール開発は最適でしょう。というのも、ある程度品質を担保することができるためです。
ウォーターフォール開発に関する詳細は以下の記事をご参照ください。
3.「開発工程」まとめ
システム開発の開発工程に解説してきました。リリースするまでに様々なフェーズを経てリリースすることになります。特に立ち上げ時期の要件定義が重要であり、開発後の様々なテスト手法で入念なチェックをする必要があります。リリースしてから様々なバグが見つかっては、最悪な場合その会社の世間からの信頼が爆落ちする可能性もあります。
開発工程についてまとめましたが、弊社は会社を立ち上げたから24年が経ちます。長年の経験からシステム開発の手段について様々アドバイスできると思います。システム開発で行き詰った時には、どんな些細なことでも、お気軽にお問い合わせいただければと存じます。相談は無料!です。