システム開発は、細かい工程に分かれています。工程によって必要なスキルや人数も異なります。また、プロジェクトの規模や開発サービスによって使われる開発手法も違います。
この記事では、システム開発の細かい工程、システム開発の手法、システム開発を成功させるポイントを詳しく解説します。
システム開発とは?
システム開発とは、IT技術を駆使し企業課題の解決や、業務効率化を図る仕組みを作ることです。
開発するシステムによって必要なスキルが異なり、数か月単位で終わるものから、数年単位にわたって行われるものまで様々です。
下記は、システム開発の代表的な例です。
|
解決するもの
|
使われる言語
|
オープン系システム開発
|
在庫管理システム
顧客データ管理システム
|
Java,PHPなど
|
Web系システム開発
|
Webアプリケーションの開発
ECサイトの開発
SNSなどのWebサービスの開発
|
JavaRuby,PHPなど
|
汎用系システム開発
|
大企業の業務効率化
基幹システムの開発
|
COBOL,PL/1など
|
組み込み系システム開発
|
日常で使用する電子機器の開発
デジカメ、冷蔵庫、車など
|
C言語など
|
システム開発については、以下の記事で詳しく解説しています。
システム開発の工程
ここからは、システム開発の工程をご紹介します。
システム開発の工程は、下記の通りです。
- 要件定義
- 基本設計
- 詳細設計
- 実装・開発
- テスト
- デプロイメント
- 運用・保守
一般的には、上流工程(要件定義・基本設計・詳細設計)と下流工程(実装・開発・テスト・運用)の大きく2つに分かれています。
上流工程の方が、システムの仕組みを作るために重要な工程が多く、高いスキルが必要です。
1つずつ詳しく解説していきます。
要件定義
要件定義は、プロジェクトの成功において重要な工程です。解決したい問題や、クライアントが求める要望に対して、システムが達成しなければいけない機能や性能を明確にします。さらに、必要な機能や性能、制約条件などを文書化していきます。システム開発において最も高いスキルが必要となる工程です。
大きく分けて下記の5つを決めていきます。
- ユーザー要件の明確化
- 必要となる機能・性能の特定
- 予算・開発期間の確認
- 開発の優先順位を決める
- 上記4点を文章化(認識の相違がないように文章化して共有)
要件定義は、システム開発を行っていく上で最も重要な工程です。明確な要件定義は、開発プロセスの途中での混乱や問題を最小限に抑え、成果物の品質と満足度を向上させるために役立ちます。
基本設計
基本設計は、要件定義の工程で決定した内容をもとにシステムに実装する機能を明確にし具体化する工程です。
実装する機能を明確化する工程なので、「外部設計」とも呼ばれることもあります。
基本設計では、画面構成・遷移先・入力内容といったサービスの全体像が可視化され、要件定義で洗い出した機能一覧の実現方法が明確化されます。
基本設計の内容がクライアントの求めている内容と相違がないか、必ず成果物の確認を行い何度もレビューを行います。
具体的には、下記のような成果物を確認しレビューを行います。
- 機能一覧
- 業務フロー図・システム構成図
- 画面設計図
- 帳票設計書
- バッチ設計書
- データベース設計図
- 外部インターフェース設計図
何度もレビューを繰り返すことで、認識の相違や開発のやり直しを防ぐことが可能です。
詳細設計
詳細設計は、基本設計書をもとに「機能をどのように実装していくべきか」という設計を行っていく工程です。
ユーザーから見えない部分の設計を行うことになるので「内部設計」とも呼ばれます。
基本設計では「何をしたいか」を設計するのに対して、詳細設計では「どのように実現(実装)すべきか」を設計するという違いがあります。
詳細設計書には、実装・開発工程に必要な下記のような内容が記載されます。
- クラス図
- モジュール構成図
- アクティビティ図
- シーケンス図
詳細設計は、基本設計を実装に落とし込む段階であり、開発チームが実際のコーディングとプログラミング作業を行う際の指針となります。これにより、システムの構造や動作が明確になり効率的な開発が可能になります。
実装・開発
詳細設計に基づいて、エンジニアがプログラミング言語を使って開発を行う工程です。
開発言語やフレームワークに応じて、適切なプログラミング手法やパターンを使用してコードを作成します。
プロジェクトによっては、定期的に「開発・レビュー・改善」を繰り返しながら開発を進めていくこともあります。
人にレビューしてもらうことで、バグや潜在的な問題を見つけることができ、開発工程をスムーズに進めていくことが可能です。
テスト
実装・開発工程が完了すれば、作成したプログラムやシステムが正しく動作するか確認するためのテストを行います。
テストを行う前にはテスト仕様書を必ず作成しておき、仕様書に沿ってテストを行っていきます。テストに合格することで、システムが正しく動作し要求された機能や性能を満たしていることを証明できます。
テストの種類は以下の通りで、順番に説明していきます。
単体テスト
単体テストは、機能単体の動作が問題ないかを確認するものです。
単体テストには、大きく下記の2つの方法が使われます。
テストの種類
|
方法
|
ホワイトボックステスト
|
プログラムが設計通りに動作するかを1つずつ確認する
|
ブラックボックステスト
|
開発するシステムの要件の仕様を満たしているか確認する
|
単体テストが問題なければ、この後に行われる結合テスト・総合テストでも上手くいく可能性が高くなります。
結合テスト
結合テストは、個々の機能を組み合わせて期待される動作をするかを確かめることです。
結合テストは、単体テストが完了し、個々の機能が単体では正常に動作することが確認された後に実施されます。
結合テストは、システム全体の品質と機能性を確認する上で重要なプロセスです。結合テストをクリアできれば、システムが要求を満たし期待通りの動作をすることが確認されます。
総合テスト
総合テストは、システム全体が要件を満たし、ユーザーの期待に応えるかどうかを確認することです。
全ての機能が揃った状態で、主に下記のことを総合的にテストします。
- 要件を満たしているか
- 機能同士の連携がうまくできているか
- 運用・保守が問題なく行えそうか
総合テストは、システム開発の最終段階で行われる重要な工程です。システムがユーザーの要求を満たし、期待通りに動作することを確認するために十分な時間とリソースを割いて実施されます。
デプロイメント
プロイメントは、開発されたソフトウェアやシステムを実際の運用環境に展開して利用可能にすることです。デプロイメントは、システムが完成しユーザーが利用できる状態の場合に行われます。
デプロイメントは、システム開発の最終段階でありシステムをユーザーに提供するための重要な工程です。十分な準備と検証を行い、システムが安定して運用できるようにすることが重要です。
運用・保守
システムの維持・管理をしながら障害等が発生しないように安定稼働させる業務です。
運用・保守は、基本的にシステム・サービスが稼働する限り継続的に行われます。
運用・保守の具体的な業務は、主に下記の通りです。
- 利用状況を確認しながらエラーの発生などを監視
- 障害が発生した場合は迅速に対応し、原因の分析を行う
- パフォーマンスを維持するために定期的なチューニングを行う
- セキュリティ維持のため、定期的なパッチ適応などを行う
- システムのアップグレードや新機能の追加
運用・保守業務は社内のIT部門が担当することもあれば、システム開発を担当した会社が継続して担当する場合もあります。
システム開発のやり方
システム開発といっても、プロジェクト規模によって開発のやり方は様々です。
ここでは、システム開発に使われる代表的なやり方をご紹介します。
代表的なシステム開発のやり方は、下記の通りです。
- ウォーターフォール開発
- アジャイル開発
- スクラム開発
- プロトタイピング開発
ウォーターフォール開発
ウォーターフォール開発は、基本的な開発のやり方です。
開発の工程を段階的に区切って進めていきます。工程ごとに、レビューや成果物を確認しながら進めていけるので高い品質が保ちやすいやり方です。
しかし、工程が進まないと次の工程に進めないという柔軟性のなさがデメリットです。
工程が進んでから仕様変更などが発生すると、余計な工数が多く発生してしまい想定外のコストがかかってしまうことも多々あります。
段階的に開発を進めていけることから進捗管理や品質管理に向いており、大規模なシステム開発や複雑な開発が必要なプロジェクトに適しています。
アジャイル開発
アジャイル開発は、柔軟性が高く仕様変更が頻繫に発生するプロジェクトに向いています。
アジャイル開発では、プロジェクトの仕様や状況が変わることを前提に、設計~テスト工程を繰り返すというやり方をしていきます。
ウォーターフォール開発とは反対に、仕様変更を前提としたWebサービスやゲームアプリなどのシステム開発に適した開発手法です。
スクラム開発
スクラム開発は、柔軟な開発手法のアジャイル開発の中で広く使われているフレームワークの1つです。
一般的に5~9人ほどでチームを組んで役割やタスクを分散し、コミュニケーションを取りながら行うやり方です。
「スプリント」と呼ばれる短い開発期間で、実装と成果物の評価を繰り返しながら開発を進めていきます。
スクラム開発では、毎日チームでミーティングを行い進捗管理や課題の共有を行います。そのため、チーム全体で課題解決に取り組みフォローし合えるためプロジェクトを予定通り進めていくことが可能です。
プロトタイピング開発
プロトタイピング型開発とは、開発の早い段階で「試作品(プロトタイプ)」を作り、クライアントにチェックしてもらい詳細な仕様やプログラムを肉付けしていくやり方です。
システム開発の経験が少ないクライアントの中には、実現させたいシステムがあっても具体的なイメージが思いつかないケースもあります。
漠然としたイメージを、具体化させるために役立つのがプロトタイピング型開発です。
試作提供という形で可視化することにより、追加したい仕様や本当に求めていた完成イメージをクライアントが提案しやすくなるのがメリットです。
システム開発を成功させるポイント
ここからは、システム開発を成功させるポイントをご紹介します。
システム開発を成功させるポイントは、下記の通りです。
- システム開発の目的を明確にする
- 適正なスケジュールを計画
- PM・PLがプロジェクト全体を管理する
- 優先順位の設定
- 実績のある開発会社に依頼する
システム開発の目的を明確にする
システム開発を成功させるためには、開発する目的を明確にすることが重要です。
システム開発には、業務の効率化や生産性の向上などの目的があるはずです。目的が明確であれば、軸がぶれず必要な機能・いらない機能などがはっきりします。
クライアント、開発担当者の双方が目的をしっかり理解していれば認識の相違などもなく、ゴールに向かってシステム開発を進めていくことができます。
適正なスケジュールを計画
スケジュールの計画は、プロジェクトの成功において重要な要素です。
なかでも重要なのが要件定義です。要件定義がしっかりできていれば開発作業の見積りやスケジュール計画が正確に行えるでしょう。
要件定義が終われば、基本設計の期間、開発工程の期間、テスト工程の期間など各工程のスケジュールを細かく決めていきます。また各工程の中に定期的に成果物をクライアントに報告する日など、開発を順調に進めていくための重要なスケジュールを決めていきます。システム開発には仕様変更やトラブルが付き物です。そういった状況も想定し、スケジュールに余裕を持たせることも重要です。
PM・PLがプロジェクト全体を管理する
システム開発を成功させるためには、PMとPLがプロジェクトをしっかり管理していくことが重要です。
PM(プロジェクトマネージャー)は、プロジェクトのすべての責任を負う立場です。
プロジェクト全体を管理し、何か問題が発生した際にはPMが責任者として対応することになります。また、クライアントに対して成果物の報告なども行うため優れたリーダーシップ、コミュニケーションスキル、問題解決能力、リスク管理などのスキルが必要です。
一方、PL(プロジェクトリーダー)は、プロジェクトの計画に沿って実行していく現場監督のような立場です。
メンバーのスキルや進捗管理を把握し、計画通りにプロジェクトが進んでいくように導きます。メンバーの進捗によっては、必要に応じて支援やスケジュール調整も行います。
優秀なPMとPLがプロジェクトを管理していれば、なにかトラブルが発生しても迅速な対応が可能です。
そのため、PMとPLには経験豊富な優秀な人材が担当する必要があります。
優先順位の設定
高品質なシステム開発を行うためには、優先順位の設定が必要です。
予算・スケジュール・リソースは、限られています。
そのため、必ず実装する機能と可能であれば実装する機能、どの機能から実装すべきかなど優先順位を明確にします。
限られたリソースの中でよりよいシステムを開発するためには、優先順位の設定は重要です。
実績のある開発会社に依頼する
自社に開発ノウハウやIT部門がない場合は、開発実績やノウハウが豊富なシステム開発会社に依頼することがおすすめです。
実績のあるシステム開発会社には、必要な人材やスキル、ノウハウが揃っているので安心して依頼することができます。
また、作りたいシステムに類似した実績のある開発会社であれば、話も早くスムーズな開発が可能です。
システム開発ならICへお待ちください。
株式会社ICはITソリューション事業で40年以上の実績を誇ります。幅広いニーズに対応したソフトウェア開発、ハードウェア導入を含めた最適なインフラ設計の構築、24時間フルサポートのシステム運用支援まで対応可能なため、多様な企業のニーズに応えることができます。
ICのITソリューションサービスに興味をお持ちの方は、以下のページをご覧ください。
システム開発のIC
まとめ
この記事では、システム開発の工程、開発で使われている代表的な開発のやり方、システム開発を成功させるポイントをご紹介しました。
一口にシステム開発といっても、開発規模や開発したいシステム・サービスによって適切な開発のやり方は変わります。そのため、記事内でご紹介した特徴を参考に適切なF開発のやり方でプロジェクトを進めていきましょう。
自社に開発のノウハウやIT部門がない場合は、システム開発会社に依頼するのがおすすめです。システム開発会社であれば、必要な人材やスキル、ノウハウが揃っているので安心して依頼することが可能です。
システム開発の依頼を検討されている場合は、ぜひ株式会社ICにご相談ください。ICは、システム開発のサポートに関して40年の実績があります。ご依頼に合わせて最適な要件定義を提案し、十分なサポートを実施しますので、ぜひ一度ご相談くださいませ。