システム開発の基本的な流れと手法
2024.07.04目次
- システム開発の大枠をつかもう
- システム開発で共通する工程
- 開発手法ごとの工程や進め方の違い
- システム開発で用いられる専門用語のまとめ
- 工程表・スケジュールの立て方
- システム開発に利用できる補助金の案内
- 外部への依頼前の準備と注意点
- 終わりに
システム開発の大枠をつかもう
システム開発は複数の工程を経て完成する複雑なプロジェクトです。
この記事では、システム開発の基本的な流れ、ウォーターフォール型とアジャイル型という二種類の開発手法に加えて、工程表やスケジュールの立て方、システム開発に利用できる補助金などの周辺知識を説明します。
システム開発の知識が乏しい方でも、この記事を読むことでシステム開発全体の流れを把握でき、外部への依頼やその準備もイメージしやすくなれば幸いです。
システム開発で共通する工程
システム開発には進め方にいくつかの類型があるものの、全体の工程は共通しています。
ここでは「オンラインショップの構築」を具体例に挙げて、その共通の工程を追っていきます。
1. 要件定義
要件定義は、システムに何を実装するかを明確にする段階です。
具体的な機能や性能、操作性などについてクライアントと開発者が合意を形成します。
今回の「オンラインショップの構築」では、商品の登録・管理機能、カート機能、注文・決済機能、ユーザー登録・管理機能、商品検索機能、お知らせや特集ページの表示機能などが必要と考えられます。
2. 基本設計
基本設計は、要件定義をもとにシステム全体の設計を行う段階です。
画面設計やデータベース設計など、システムの大枠を決めます。
- 画面設計:ホームページ、商品ページ、カートページ、注文確認ページ、管理者側のページなどの画面レイアウトを設計
- データベース設計:商品情報、ユーザー情報、注文情報を管理するデータベースの構造を設計
- システム構成:フロントエンド(ユーザーが操作する部分)とバックエンド(サーバー側の処理部分)の役割分担を設計
3. 詳細設計
詳細設計は、基本設計で決めた内容をさらに細かく設計する段階です。
プログラムのロジックやデータの流れなど、具体的な仕様を決定します。
- 商品登録機能の設計:入力フォームの項目やバリデーションルールを詳細に設計(バリデーションルール=入力されたフォームに対して入力制限や入力チェックを行うための規則)
- カート機能の設計:商品をカートに追加する処理やカート内の商品を表示する処理を設計
- 決済処理の設計:クレジットカードやその他の支払い方法の処理フローを設計
- 注文管理機能の設計:注文の一覧表示と詳細表示、注文ステータスの更新や注文のエクスポート機能(CSV、Excelなど)を設計。リアルタイムのデータ更新が求められる。
- 顧客管理画面の設計:顧客の一覧表示と詳細表示、顧客の検索機能、顧客情報の編集や顧客のエクスポート機能を設計。データの保護とプライバシー管理に配慮する必要がある。
- レポート作成機能の設計:売上レポート(期間別、商品別など)、顧客レポート(購買履歴、リピート率など)、カスタムレポートの作成とそれらのエクスポート機能を設計。視覚的なデータ表示とレポート生成の簡便さが重要になる。
4. 実装
実装は、詳細設計をもとにプログラムを作成する段階です。
コードを記述し、システムを実際に動かすための開発を行います。
例えば、今回の例では以下のようなコードを書きます。
- 商品登録機能:商品情報をデータベースに保存するためのコード
- カート機能:カートに商品を追加・削除するためのコード
- 決済処理:決済サービスのAPIを利用して支払いを処理するコード
※API=アプリケーションプログラミングインターフェース。
APIとは、異なるソフトウェアアプリケーションが相互に通信するための仕組みや規則のことを指します。あるソフトウェアが別のソフトウェアの機能やデータにアクセスするための言わば「窓口」を提供するものです。
オンラインショップであれば、商品の在庫情報や価格情報を取得するためにバックエンドのシステム(サーバー)と通信します。この通信を行うのがAPIです。
- 注文件数管理画面:注文データの取得、更新、検索のためのコード
- 顧客管理画面:顧客データの取得、更新、検索のためのコード
- レポート作成画面:レポートデータの生成およびエクスポートのためのコード
5. テスト
テストは、実装したシステムが正しく動作するかを確認する段階です。
単体テスト、結合テスト、システムテストなど、段階的にテストを行います。
- 単体テスト:各機能やモジュール単位での動作確認
- 商品登録機能: 商品を正しく登録できるか、必須項目が未入力の場合にエラーメッセージが表示されるか。
- カート機能: 商品をカートに追加・削除・更新できるか。
- ユーザー登録機能: 新規ユーザー登録が正常に完了するか、入力データに不備がある場合に適切なエラーメッセージが表示されるか。
- ログイン機能: 正しい認証情報でログインできるか、誤った情報でエラーメッセージが表示されるか。
- 注文件数管理画面:注文の一覧・注文詳細が正しく表示されるか、注文ステータスの変更が正しく反映されるか、注文の検索機能が正しく動作するか。
- 顧客管理画面:顧客情報の一覧・顧客詳細が正しく表示されるか、顧客情報の編集および削除が正しく行われるか、顧客の検索機能が正しく動作するか。
- レポート作成画面:各種レポートが正しく作成されるか、レポートのエクスポート機能が正しく動作するか、レポートデータが正確かどうかを検証。
- 結合テスト:異なるモジュール間のインターフェースとデータの連携を確認
- 商品登録と表示の連携: 登録した商品が正しく一覧ページや詳細ページに表示されるか。
- カート機能と決済機能の連携: カートに追加した商品が正しく決済ページに引き継がれるか。
- ユーザー認証と注文履歴の連携: ログインしたユーザーが正しい注文履歴を閲覧できるか。
- システムテスト:一連のシステムが要求通りに動作するかの確認
- 全体的な機能の確認: ユーザーが商品を検索、カートに追加、購入、レビューする一連の流れが正常に行えるか。
- エラーハンドリング: 想定外の入力や操作があった場合に、適切なエラーメッセージが表示されるか、システムがクラッシュしないか。
- パフォーマンステスト: 同時アクセス数が増えた場合の応答速度や、システムの耐久性を確認。
6. 運用・保守
運用・保守は、システムのリリース後に行う工程です。
システムの正常な運用を維持し、必要に応じて修正や改善を行います。
例えば、以下のような作業を含みます。
- バグ修正:ユーザーから報告された不具合を修正
- 機能追加:ユーザーの要望に応じて新機能を追加
- パフォーマンス改善:システムの速度や安定性を向上させるための調整
開発手法ごとの工程の進め方の違い
システム開発工程の類型としては「ウォーターフォール型開発」と「アジャイル型開発」という二つの代表的なものがあります。
ここからは、ウォーターフォール型開発とアジャイル型開発を比較しながら、二つの違いや特徴を理解していきましょう。
ウォーターフォール型開発
ウォーターフォール型開発は、各工程を順番に進める手法です。
一つの工程が完了してから次の工程に進むため、計画が明確で進捗が把握しやすいというメリットがあります。
しかし、後の工程で変更が生じると全体に影響が及ぶため、柔軟性に欠ける面もあります。
尚、先ほど例として挙げた「オンラインショップの構築」はウォーターフォール型の手順に沿ったものとなっています。
ウォーターフォール型の開発工程の利点
- 計画が立てやすい
- 進捗が明確に分かる
- ドキュメントが整備されやすい
ウォーターフォール型の開発工程の欠点
- 変更への対応に弱い
- 長期プロジェクトに向かない
ウォーターフォール型の開発が向いているシステム
- 大規模な政府プロジェクト
- 安全性が最優先のシステム(航空機の制御システムや医療機器のソフトウェアなど)
- 明確な要件があるシステム(銀行のシステムや会計ソフトなど)
アジャイル型開発
アジャイル型開発は、短いサイクルの繰り返しで開発を進める手法です。
計画・設計・実装・テストを繰り返し行うことで、柔軟に対応できます。
顧客の要望が変わっても適応しやすく、段階的にシステムを完成させることが可能です。
- 要件定義で必要な機能をすべて洗い出し、優先順位を付ける。
- 優先度が高い項目から特定の作業を選び、固定の作業期間と特定の目標を定める(=スプリント)。このスプリント期間中に開発、デザイン、実装、テストなどの活動が行われる。ひとつのスプリントは大体2~4週間に設定される。
- スプリント終了時に成果物をクライアントに提示し評価やフィードバックをもらう。完了した作業と未完了の作業について確認し、次のステップを決定する。
- 1~3の手順を反復して繰り返す。
アジャイル型の開発工程の利点
- 変更に柔軟に対応できる
- 顧客のフィードバックを取り入れやすい
- リスクを低減しやすい
アジャイル型の開発工程の欠点
- 計画が立てにくい
- プロジェクトの全体像が見えにくい:改良を繰り返すうちに、工程を経て完成したものが当初想定していたものと大きく異なってしまうこともあります。
アジャイル型の開発が向いているシステム
- ウェブアプリケーション(オンラインショップ、SNSプラットフォーム、コンテンツ管理システムなど)
- モバイルアプリケーション(ゲームアプリやライフスタイルアプリなど)
- スタートアップ企業のプロジェクト
- 複雑なユーザーインターフェースを持つシステム
システム開発で用いられる専門用語のまとめ
システム開発には専門用語が多く登場します。
以下に代表的な用語とその説明をまとめました。
専門用語について少しでも理解があると、システム開発工程においてエンジニアとのコミュニケーションの円滑化を図ることができます。
- 要件定義:システムに必要な機能や性能を明確にすること
- 基本設計:システム全体の構成や動作を設計すること
- 詳細設計:基本設計をもとに、具体的なプログラムの設計を行うこと
- 実装:詳細設計に基づいて、プログラムを作成すること
- 単体テスト:各プログラムが単独で正しく動作するかを確認するテスト
- 結合テスト:複数のプログラムが連携して正しく動作するかを確認するテスト
- システムテスト:システム全体が正しく動作するかを確認するテスト
工程表・スケジュールの立て方
システム開発の工程表やスケジュールは、プロジェクトの進行を管理するために重要です。
この際「ガントチャート」を用いると、視覚的にシステム開発工程の計画のスピード感や規模感を捉えやすくなります。
1. 主要なマイルストーンの設定
マイルストーンとはプロジェクトの主要な節目、中間目標地点などを指します。
具体的な段階(例:要件定義完了、基本設計完了、実装完了など)と目標日程などを設定します。
2. タスクの洗い出し
各マイルストーンを達成するために必要となる具体的なタスクを洗い出します。
3. タスクの順序と依存関係の確認
タスクの実行順序と、それぞれが他のタスクに依存するかどうかを確認します。
タスクの中には独立して単独で着手できるものと、あるタスクが終わらないと取り掛かることができないものがあります。
4. スケジュールの作成
洗い出した各タスクの所要時間を見積り、各タスクの開始日と終了日を設定します。
さらに、プロジェクト全体のスケジュールを計画します。
5. 進捗管理
プロジェクトの進捗を定期的に確認し、スケジュール通りに進んでいるかを綿密にチェックします。
問題が発生した場合は、早期に対策を講じます。
システム開発に利用できる補助金のご案内
システム開発には多大な費用がかかることがあります。
しかし、政府や自治体から提供される補助金や助成金を利用することで、費用の一部を軽減できます。
以下に代表的な補助金の例を挙げます。
IT導入補助金
中小企業や小規模事業者がITツールを導入する際に利用できる補助金です。
要件を満たせば、システム開発にかかる費用の一部が補助されます。
ものづくり補助金
中小企業や小規模事業者が、新しい製品やサービスの開発、生産プロセスの革新、設備投資を行う際に利用できる補助金です。
地方自治体のIT導入支援補助金
地域の産業振興を目的とした補助金で、システム開発プロジェクトも対象になる場合があります。
地域ごとに異なるため、詳細は各自治体の窓口に問い合わせると良いでしょう。
事業再構築補助金
コロナ禍で影響を受けた中小企業や中堅企業が、新しいビジネスモデルへの転換や新規事業に取り組む際に利用できる補助金です。
補助金申請のポイント
- 要件確認:各補助金の要件を事前にしっかり確認し、自社の事業内容が適合しているか確認する
- 計画書の作成:詳細な事業計画書を作成し、補助金の目的に合った内容を盛り込む
- 早めの準備:申請期間が限られているため、早めに準備を開始し、必要な書類を揃える
- 相談窓口の活用:商工会や専門のコンサルタントなど、相談窓口を活用して申請を進める
これらの補助金を上手に活用することで、システム開発の負担を軽減し、事業の効率化や成長を図ることができます。具体的な申請手続きや条件については、各補助金の公式ウェブサイトや問い合わせ先を確認してください。
外部への依頼前の準備と注意点
システム開発を外部に依頼する際には、事前に準備するべき事項や注意点がいくつかあります。
以下に具体的な準備事項をまとめました。
1. 事前に明確な要件を整理
システムに求める機能や性能を明確にし、文書化しておくことが重要です。
これにより、開発者とのコミュニケーションがスムーズになります。
例えば「オンラインショップの構築」であれば以下のような要件が考えられます。
- カート機能:商品をカートに追加、削除、数量変更ができる
- 決済機能:クレジットカード、銀行振込、電子マネーなど複数の支払い方法をサポート
- ユーザー認証:ユーザー登録、ログイン、パスワードリセット機能
- 検索機能:商品名やカテゴリ、価格帯での検索機能
- レスポンシブデザイン:モバイル端末でも見やすいデザイン
2. 複数社から見積もりを取得
複数のシステム開発会社から見積もりを取り、比較検討します。
提案内容を比較し、コストパフォーマンスや信頼性を評価します。
価格だけでなく、サービス内容やシステム開発会社の実績も重要な判断材料となります。
例として、以下が比較対象となります。
- コスト:開発費用、保守費用、追加機能の開発費用など
- 納期:開発完了までのスケジュール
- サービス内容:提供されるサポート範囲、保証内容、メンテナンスサービス
3. 契約内容の確認
契約書の内容を十分に確認し、納期や支払い条件、保証内容などを明確にしておくことが重要です。
契約書には以下の内容が含まれているか確認します。
- 納期:プロジェクトの開始日と終了日、重要なマイルストーンの日程
- 支払い条件:支払いのタイミング(例:着手金、中間支払い、完了時の支払い)と金額
- 保証内容:開発後のサポート期間、保証内容(例:バグ修正、機能追加の対応範囲)
- 知的財産権:開発したシステムの知的財産権の帰属先
4. コミュニケーションの確保
システム開発の工程中はコミュニケーションを密にすることがプロジェクト成功の鍵となります。
具体的には以下のようなコミュニケーションを取ります。
- 定期的な進捗報告:毎週の定例ミーティングを設定し、工程の進捗状況や課題を共有します
- 専用の連絡チャネル:SlackやTeamsなどのチャットツールを利用し、迅速にコミュニケーションを取れるようにします
- ドキュメントの共有:要件定義書、設計書、テスト計画書などのドキュメントを共有し、システム開発に関する情報の一元管理を行います
終わりに
今回は、システム開発の具体例としてオンラインショップの構築を挙げました。
この例を通じて、システム開発の流れや各工程の内容が理解しやすくなれば幸いです。
また、専門用語や周辺知識も業務を進める上で役立てて頂ければと思います。
株式会社サードスコープでは、こうしたシステム開発の工程をスムーズに進め、高品質なシステム開発を実現しておりますので、お困りの際にはぜひご相談下さいませ。