私は、スタートアップのSIer企業でシステムエンジニアとして働いています。
私が勤めているスタートアップ企業では、まだ明確なシステム開発におけるドキュメント規定が存在しない状況です。そのため、今後、ドキュメント規定を作成することになりました。
ドキュメント規定作成にあたり、システム開発の工程について詳しく学ぶため、様々な書籍を読み込みました。今回のブログでは、その内容をまとめ、システム開発の各工程と作成すべきドキュメントについて紹介します。
今後、システム開発に携わりたい人や、システム開発のドキュメンテーションについて学びたいと思っている方の一助となれば幸いです。今回のブログは、そのような想いを込めております。
是非、最後までご覧いただけると嬉しいです。
システム開発の工程(流れ)における9つの工程
システム開発は、複数の工程を経て完成されます。それぞれの工程は、明確な目的を持ち、順番に実行されます。
ここでは、システム開発における9つの主要な工程と、それぞれの概要について説明します。
1から4が上流工程、5から9が下流工程といわれています。
- ITビジョン策定
- 業務プロセスの可視化および改善
- システム計画
- 要件定義
- 設計
- 実装
- テスト
- 移行
- 運用
1.ITビジョン策定
ITビジョン策定とは、企業がITをどのように活用していくかを定めた計画です。ITビジョンを策定することで、企業の経営目標を達成するためにITをどのように活用していくべきかが明確になります。
ITビジョン策定では、以下の内容を検討します。
- 企業の経営目標
- 企業の業務プロセス
- 現行のITシステムの課題
- 将来のITシステムの展望
ITビジョンを策定する際には、経営層や部門責任者、IT部門の担当者など、関係者を巻き込んで議論を進めることが重要です。
ITビジョン策定の作成の例
- 売上拡大:ECサイトの構築により、24時間365日商品販売を実現し、売上を20%増加させる。
- 顧客満足度向上:顧客管理システムを導入し、顧客情報の共有化による迅速な対応を実現し、顧客満足度を10%向上させる。
2.業務プロセスの可視化と業務改善
業務プロセスの可視化とは、現行の業務プロセスを分析し、その課題を洗い出す作業です。業務改善とは、業務プロセスの課題を解決するために、業務の流れや手順を変更する作業です。
業務プロセスの可視化および改善を行うことで、現行の業務プロセスの課題を明確にし、それを解決するためのシステムの要件を定義することができます。
業務プロセスの可視化では、以下の内容を検討します。
- 業務の目的
- 業務の流れ
- 業務の担当者
- 業務に必要なデータ
- 業務に必要なシステム
業務改善では、以下の内容を検討します。
- 業務の流れの変更
- 業務の手順の変更
- 業務の担当者の変更
- 業務に必要なデータの変更
- 業務に必要なシステムの変更
業務プロセスの可視化および改善の例
- 紙ベースの書類管理:書類の検索や共有に時間がかかり、情報漏洩のリスクもあった。そこで、文書管理システムを導入し、書類の検索や共有を効率化し、情報漏洩のリスクを低減します。
- 手作業によるデータ入力:データ入力に時間がかかり、人為的なミスも発生していた。そこで、自動化ツールを導入し、データ入力の効率化とミスの削減を実現します。
3.システム計画
システム計画とは、システム開発の目的や目標、範囲、スケジュール、予算などを定めたものです。システム計画を策定することで、システム開発の全体像を把握し、プロジェクトを円滑に進めることができます。
システム計画では、以下の内容を検討します。
- システム開発の目的
- システム開発の目標
- システム開発の範囲
- システム開発のスケジュール
- システム開発の予算
システム計画の例
- ECサイトの構築:商品情報や顧客情報、注文情報などをデータベースで管理し、商品検索や注文処理、顧客管理などを効率化するシステムを計画した。
- 顧客管理システムの導入:顧客情報の管理、営業活動の支援、顧客満足度向上のために必要な機能を検討した。
4.要件定義
要件定義とは、システムの機能や性能、データ、運用方法などを定めた仕様書です。要件定義を作成することで、システム開発の成果物が顧客の要求を満たすものになるようにすることができます。
要件定義では、以下の内容を検討します。
- システムの機能
- システムの性能
- システムのデータ
- システムの運用方法
要件定義の例
- システム利用者:システムを利用するユーザーの属性、役割、権限などを定義します。
- 機能仕様:システムで提供する機能、画面構成、処理内容などを定義します。
- 性能要件:システムの処理速度、処理能力、データ容量などを定義します。
5.設計
設計とは、要件定義に基づいて、システムの具体的な構造や仕組みを設計する作業です。設計を行うことで、システムの開発やテストがスムーズに進むようにすることができます。
設計では、以下の内容を検討します。
- システムの構成
- システムの処理内容
- システムのデータベース
- システムのインターフェース
設計の例
- システムアーキテクチャ:システム全体の構成、ハードウェア、ソフトウェア、ネットワークなどを設計します。
- データベース設計:データベースの構造、テーブル構成、データ型などを設計します。
- 画面設計:システム画面の構成、デザイン、操作方法などを設計します。
6.実装
実装とは、設計に基づいて、システムのソースコードを作成したり、データベースを構築したりする作業です。実装を行うことで、システムの骨格を作り上げることになります。
実装では、以下の内容を検討します。
- ソースコードの作成
- データベースの構築
- テスト環境の構築
実装の例
- プログラミング言語:システム開発に適したプログラミング言語を選択し、プログラムを作成します。
- テストデータ作成:テストを実施するために必要なテストデータを作成します。
- コードレビュー:プログラムの品質を向上させるために、複数人でコードをチェックします。
7.テスト
テストとは、システムの機能や性能、データの正確性などを検証する作業です。テストを行うことで、システムに不具合がないことを確認することができます。
テストでは、以下の内容を検討します。
- 単体テスト
- 結合テスト
- システムテスト
- 運用テスト
テストの例
- 単体テスト:個々のプログラムが正しく動作するかを確認します。
- 結合テスト:複数のプログラムを組み合わせて、正しく動作するかを確認します。
- システムテスト:システム全体が要件通りに動作するかを確認します。
8.移行
移行とは、開発したシステムを本番環境に導入する作業です。移行を行うことで、システムを実際に運用することができるようになります。
移行では、以下の内容を検討します。
- データの移行
- 運用方法の移行
- システムの保守・運用体制の構築
移行の例
- データ移行:旧システムから新システムへデータ移行を行います。
- システム切り替え:旧システムから新システムへの切り替えを行い、運用を開始します。
- ユーザー教育:新システムの利用方法についてユーザーに教育を行います。
9.運用
運用とは、システムを安定的に稼働させるための作業です。運用を行うことで、システムが常に利用者に提供できるようにすることができます。
運用では、以下の内容を検討します。
- システムの監視
- システムの保守
- システムの運用改善
運用の例
- システム監視:システムの稼働状況を監視し、問題が発生した場合に迅速に対応します。
- 保守・メンテナンス:システムの不具合修正や機能追加を行います。
- セキュリティ対策:情報漏洩などのリスクを防ぐための対策を行います。
- バックアップ:万が一システムに障害が発生した場合に備えて、定期的にバックアップを取ります。
- ヘルプデスク:システム利用者からの問い合わせに対応します。
これらの工程は、順番に実行されますが、必要に応じて前工程に戻って修正を行うこともあります。
設計の対象
設計は、システム開発における重要な工程の一つです。ここでは、設計の対象となる項目を詳細に解説します。
設計には、以下8項目があります。
- システム設計
- ソフトウェア設計
- アプリケーション設計
- ネットワーク設計
- データベース設計
- アーキテクチャ設計
- 移行設計
- 運用設計
1. システム設計
システム全体を俯瞰し、システムのアーキテクチャや基本的な動作を定義します。具体的には、以下の内容を設計します。
- システムアーキテクチャ:システム全体の構成要素とそれらの関係を定義します。
- システム環境:ハードウェア、ソフトウェア、ネットワークなどの環境を定義します。
- 基本機能:システムが提供する基本的な機能を定義します。
- データ設計:システムで使用するデータの構造と管理方法を定義します。
- セキュリティ:システムのセキュリティ要件を定義します。
- 運用要件:システム運用に必要な要件を定義します。
2. ソフトウェア設計
システム設計で定義された内容に基づき、ソフトウェアの構造や動作を詳細に設計します。具体的には、以下の内容を設計します。
- ソフトウェアアーキテクチャ:ソフトウェア全体の構成要素とそれらの関係を定義します。
- モジュール設計:ソフトウェアを個々のモジュールに分割し、それぞれの機能とインターフェースを定義します。
- アルゴリズム設計:各モジュールで使用するアルゴリズムを設計します。
- データ構造設計:データの構造と管理方法を設計します。
- ユーザーインターフェース:ユーザーとの操作方法を設計します。
3. アプリケーション設計
具体的なアプリケーションの機能や動作を設計します。具体的には、以下の内容を設計します。
- 画面設計:ユーザーが操作する画面のレイアウトやデザインを設計します。
- 処理設計:入力されたデータに対する処理の流れを設計します。
- データベースアクセス設計:データベースへのアクセス方法を設計します。
- エラー処理:エラーが発生した場合の処理を設計します。
4. ネットワーク設計
システムに必要なネットワーク環境を設計します。具体的には、以下の内容を設計します。
- ネットワーク構成:ネットワーク機器の種類や配置を設計します。
- 通信プロトコル:データ通信に使用するプロトコルを設計します。
- セキュリティ:ネットワークのセキュリティ要件を定義します。
5. データベース設計
システムで使用するデータベースの構造と管理方法を設計します。具体的には、以下の内容を設計します。
- データベーススキーマ:データベースのテーブル構成を設計します。
- データアクセス方法:データベースへのアクセス方法を設計します。
- データセキュリティ:データベースのセキュリティ要件を定義します。
6. アーキテクチャ設計
システム全体のアーキテクチャを設計します。具体的には、以下の内容を設計します。
- システム構成:システム全体の構成要素とそれらの関係を設計します。
- ハードウェア構成:使用するハードウェアの種類と配置を設計します。
- ソフトウェア構成:使用するソフトウェアの種類とバージョンを設計します。
- ネットワーク構成:ネットワークの構成を設計します。
7. 移行設計
既存システムから新システムへの移行方法を設計します。具体的には、以下の内容を設計します。
- 移行スケジュール:移行作業のスケジュールを設計します。
- データ移行方法:既存システムのデータを新システムに移行する方法を設計します。
- システム移行方法:既存システムから新システムへの切り替え方法を設計します。
8. 運用設計
システム運用に必要な要件を定義します。具体的には、以下の内容を設計します。
- 運用体制:システム運用に関わる人員と役割分担を定義します。
- 運用手順:システム運用手順を定義します。
- 保守管理:システムの保守管理方法を定義します。
- バックアップ:データのバックアップ方法を定義します。
- 障害対応:障害発生時の対応方法を定義します。
まとめ
設計は、システム開発における重要な工程の一つです。上記で説明した項目を理解し、適切な設計を行うことで、高品質なシステム開発を実現することができます。
システム開発におけるドキュメントについて
システム開発におけるドキュメントについて説明します。
システム開発におけるドキュメントについては、外部設計と内部設計で分けて説明します。
外部設計とは、ユーザーインターフェースやデータ構造など、ユーザーが直接目にするシステム全体の骨格を設計する工程です。
内部設計とは、外部設計で定義された内容に基づいて、システム内部の処理を詳細に設計する工程です。
外部設計のドキュメント
外部設計のドキュメントには、以下のようなものがあります。
工程 | 成果物 | 内容 |
要件定義 | 要求仕様書 | システム開発の目的、範囲、機能、性能、品質、運用、保守などの要求を定義したドキュメントです。 |
要件定義書 | 要求仕様書の内容を詳細に記述したドキュメントです。 | |
システム概要書 | システムの全体像をまとめたドキュメントです。 | |
ユースケース図 | ユーザーとシステムとのやり取りを図式化したドキュメントです。 | |
システムフローチャート | システムの処理の流れを図式化したドキュメントです。 | |
データフロー図 | システム内でのデータの流れを図式化したドキュメントです。 | |
画面仕様書 | システムの画面のレイアウトや機能を定義したドキュメントです。 | |
帳票仕様書 | システムの帳票のレイアウトや機能を定義したドキュメントです。 | |
外部設計 | 基本設計書 | システム全体の概要、機能、制約条件などをまとめ、開発の方向性を定めるドキュメントです。 |
詳細設計書 | 各機能の詳細な仕様、処理の流れ、画面設計などを記述し、開発作業の指針となるドキュメントです。 | |
ネットワーク構成図 | システムを構成するハードウェア、ソフトウェア、ネットワークなどを図で表現し、システム全体の構造を可視化するドキュメントです。 | |
データ辞書 | システムで使用するデータ項目とその意味、属性などを定義し、データの整合性と共通理解を促進するドキュメントです。 | |
用語集 | システム開発で使用される専門用語とその意味を定義し、関係者間のコミュニケーションを円滑化するドキュメントです。 |
上記のドキュメントを作成することで、システムの全体像を明確化し、開発チーム間で共通認識を持つことができます。また、外部設計書は、システム開発の進捗状況を確認したり、納品物としてクライアントに提出したりする重要な資料となります。
内部設計のドキュメント
内部設計のドキュメントには、以下のようなものがあります。
工程 | 成果物 | 内容 |
内部設計 | クラス図 | システムを構成するクラスとその関係性を図で表現し、オブジェクト指向設計を可視化するドキュメント。 |
モジュール構造図 | システムを構成するモジュールの構造と関係性を図で表現し、システム全体の構成を把握しやすくするドキュメント。 | |
シーケンス図 | オブジェクト間のメッセージのやり取りを時系列順に図で表現し、システムの動作を理解しやすくするドキュメント。 | |
状態遷移図 | オブジェクトの状態変化とその条件を図で表現し、複雑な処理の理解と設計を容易にするドキュメント。 | |
データベース物理設計書 | データベースのテーブル構成、データ型、制約条件などを定義し、データベースの構築と運用を管理するドキュメント。 | |
ファイル設計書 | システムで使用するファイルの構成、データ形式、アクセス方法などを定義し、ファイル管理を効率化するドキュメント。 | |
プログラム仕様書 | 各プログラムの機能、処理内容、仕様などを記述し、開発作業の指針となるドキュメント。 | |
インタフェース仕様書 | システム内部の各モジュール間のインターフェース仕様を定義し、モジュールの独立性と保守性を向上させるドキュメント。 |
内部設計ドキュメントを作成することで、各コンポーネントの役割や仕様を明確化し、開発チーム全体で共通認識を持つことができます。また、内部設計ドキュメントは、開発の進捗状況を確認したり、保守・運用フェーズでの改修作業に役立てたりするなど、システム開発プロジェクト全体を通して重要な役割を果たします。
まとめ
本日は下記3点について説明しました。
- システム開発の工程(流れ)における9つの工程
- 設計の対象
- システム開発におけるドキュメントについて
システム開発は、計画から運用まで複数の工程で構成され、各工程で必要となるドキュメントを作成します。これらのドキュメントは、開発メンバー間の情報共有や、開発内容の確認、変更管理などに役立ちます。ドキュメントを適切に作成・管理することで、スムーズなシステム開発を実現できます。
これからも、Macのシステムエンジニアとして、日々、習得した知識や経験を発信していきますので、是非、ブックマーク登録してくれると嬉しいです!
それでは、次回のブログで!