システム開発の工程は7つのステップ!基本をわかりやすく解説

システム開発の工程は7つのステップ!基本をわかりやすく解説

「システム開発の流れが知りたい」

「システム開発を円滑に進めるコツや注意点は?」

このように、現在システム開発の流れについて気になっていませんか?

システム開発は「要件定義」からはじまり、「運用・保守」まで大きく7つのステップで進めることが一般的です。しかし、開発手法によって進め方は異なり、ステップを踏まずに最初の方向性だけを決めて開発を進める手法もあります。

こちらの記事では、プログラミング言語の初学者向けに、システム開発の工程や開発手法、開発に必要なメンバー構成についてわかりやすく解説します。

目次

システム開発とは?課題解決の仕組み作り

システム開発とは?課題解決の仕組み作り

システム開発とは、企業が抱える課題をIT技術(システム)で解決することを言います。

企業はさまざまな課題を抱えており、解決策は企業によって大きく異なります。たとえば、新製品の開発や業務効率化によるコストダウン、コンプライアンス対応など多種多様です。

それらの課題に対して、Webサイトやアプリケーション、プログラムなどコンピュータシステムを使って課題解決へと導くのがシステム開発の目的です。

また、Webサイトやアプリケーションはあくまでも道具に過ぎません。

システム開発で重要なのはシステムを開発することではなく、ビジネスの課題を的確に洗い出し、最適なシステムを最小限のコストで作り、ビジネス課題を解決することが作ることがシステム開発の本質です。

そのためには、開発を進めるにあたって要件をきちんと定義したり、十分にテストを行ったりして品質の高いシステムを効率よく開発することが求められます。

システム開発の流れは?7つのステップ(開発工程)で紹介

システム開発の流れは?7つのステップ(開発工程)で紹介

システム開発の流れ(開発工程)は、大きく次の7ステップに分けられます。

  • ステップ1.要件定義
  • ステップ2.外部設計
  • ステップ3.内部設計
  • ステップ4.プログラミング
  • ステップ5.テスト
  • ステップ6.リリース
  • ステップ7.運用・保守

以下では、それぞれのステップについて順を追って詳しく解説します。

ステップ1.要件定義

システム開発を行う最初のステップが要件定義です。要件定義とは、システムでどのような課題を解決するのか、何を実現したいのかを明確にするフェーズです。

システム開発の受託会社であれば、顧客(クライアント)と打ち合わせをして、どのようなシステムが必要かをヒアリングし、システムに求める機能・仕様・運用方法などを決めます。

一見、要件定義はシンプルな作業に思えますが、漏れなくヒアリングをして顧客のビジネス理解を深めなければなりません。

もし要件定義に漏れがあると、開発フェーズで「やっぱりこんな機能も欲しい」というリクエストが発生するなど、開発が滞ったり工数が増えたりする可能性があります。そのほか、システムを納品した後に「思っていたのと違う」と言われ、開発の見直しが必要になることもゼロではありません

そのため、最初のステップの要件定義で、すり合わせをしっかり行うことで食い違いをなくすことが重要です。

ステップ2.外部設計

要件定義を行ったら、次に外部設計を行います。外部設計とは、見た目やデザインといったユーザーの目に触れる部分(UI:ユーザーインターフェース)を設計するフェーズで、基本設計とも呼ばれます。

ユーザー(システムの利用者)にとって、UIはシステムの性能を決める重要な部分です。UIが悪ければ、使い勝手が悪く役に立たないシステムになる可能性があります。

UIはユーザー体験(UX:ユーザーエクスペリエンス)に大きく影響するため、外部設計では見た目の良さだけでなく、操作性・効率性・アクセス性なども最大限に高めることが重要です。

ステップ3.内部設計

ステップ3.内部設計

内部設計はコンピュータに実装した際、正常に作動するかを検討するフェーズで、詳細設計とも呼ばれます。

開発言語やサーバー、データベース、AIP(初期段階の製品に対して、図面の審査を行って技術的に実現可能か確認するスキームのこと)の連携など、技術的な要素を中心に検討が行われます。

また、ユーザー(システム利用者)の目に触れない部分であるため、開発者の視点での設計が必要です。たとえば、システムをスムーズに動かすために「どのようなプログラムを実装するべきか」などを設計する必要があり、エンジニアの腕が問われます。

なお、要件定義・外部設計・内部設計は、一般的に上流工程と呼ばれるフェーズです。

ステップ4.プログラミング

次に、プログラミングで開発を行います。プログラミングは、上流工程で決定した仕様・設計書に沿ってシステム開発を行うフェーズで、コーディングとも呼ばれます。

システム開発の中でも、最も時間と労力が必要となる部分です。

また、システム開発に使用される言語はシステムの内容によっても異なりますが、主にJavaScriptやPHP、Ruby、C++、Java、Pythonなどが使われます。

ステップ5.テスト

テスターと呼ばれる担当者が、作成したシステムを納品する前に確認し、「不具合がないか」「機能は正しく実装され動作するか」を検証します。

テスト段階で不具合が発見されるケースは少なくありません。システムに問題があった場合は、テスターが開発者に修正を依頼して、修正後に再度テスターが検証します。

また、テストにはさまざまな種類があります。

テストの種類説明
単体テスト
(UT:ユニットテスト)
・システムの機能(ユニット)を検証
・プログラムが単体で正しく動作するか確認
結合テスト
(IT:インテグレーションテスト)
・各ユニットを結合して一つのグループとして検証
・プログラム全体が正しく動作するか確認
総合テスト
(PT:プロダクトテスト)
・システム全体を検証
・完成品が要件を満たしているか、正しく機能するか確認
・システムテスト(ST)とも呼ばれる
運用テスト
(OT:オペレーションテスト)
・ユーザーが実際に使用して検証
・総合テストと違って実際にユーザーが使用する
・運用テストを行わないこともある

納品やリリース日を優先してテストフェーズを疎かにすると、納品後に不具合が見つかる可能性があります。品質が低下し、システムの評価が下がる可能性があるため、開発時はきちんとテストを行うことが重要です。

ステップ6.リリース

ステップ6.リリース

テストが完了してシステムに問題がなければ、リリース(公開)を行います。必要に応じて、納品物の操作方法について説明したり、ドキュメントを整備したりします。

また、企業のビジネス戦略によっては、全ての機能を一度にリリースするのではなく、段階的にリリースするケースもあるでしょう。

ステップ7.運用・保守

リリースが完了したら、運用・保守を行います。リリース直後はシステムの予期せぬ不具合が見つかることがあるので、急なトラブルに対応する必要があります。言わばリリース後のサポートです。

運用・保守チームは、システムのリリース後に発生した問題に対処したり、システムの稼働を安定させるために監視したりします。そのため、基本的にシステムは作って終わりではなく、作った後も継続的なメンテナンスが必要です。

プログラミング学習サイト「CyTech」は、Web開発に必要なプログラミング言語を学べるだけでなく、システム開発の手法やチーム開発に必要なスキルまで体系的に学べます。システムエンジニアを目指している方は、ぜひCyTechをご利用ください。

ステップを踏んでシステム開発を行う理由

ステップを踏んでシステム開発を行う理由

ここまで、システム開発の流れについて解説しましたが、なぜ決まったステップを踏んで開発する必要があるのでしょうか。順序よくシステム開発を行う理由には、大きく次の3つがあります。

  • 品質担保
  • 進捗管理・納期厳守
  • コストコントロール

それぞれの詳細について解説します。

品質担保

ステップを踏んでシステム開発を行うことで、品質担保につながります。

開発の流れ、および各工程で何を行うべきか決まっていれば、チームメンバーが共通の認識を持って開発を進められます。

さらに、各工程ごとに確認・レビューを行うことができるため、品質を細かくチェックすることが可能です。確認・レビューを繰り返すことによって、システムのクオリティが保たれ、クライアントへ品質の高い納品物を提供できるようになります。

進捗管理・納期厳守

プロセス通りに開発を行うことで、進捗管理納期厳守にもつながります。

流れを決めず自由にシステム開発を進めてしまうと、修正や変更が発生することにより、開発期間が大きく延びてしまう可能性があります。

しかし、プロセスが決まっていれば「いつどのような作業が必要か」、「現状どこまで進行しているのか」をメンバー全員が把握することが可能です。

スケジュールを立てやすく、こまめに進捗管理と納期管理ができるので、最終的に納期遅れの発生を未然に防ぐことができます。

コストコントロール

コストコントロールができるのも、プロセスに沿ってシステム開発を行う理由です。

あらかじめプロセスを決めておけば、開発をどのように進めるのか、どこで誰がどのような作業をするのか、また各工程に必要な工数・期間を可視化することができます。

各工程において、必要コストを抑えることができるようになり、無駄なコストの発生を防げます。

全体的な開発費用を抑えるためにも、ステップを踏んでシステム開発を行うことが重要です。

システム開発の手法は5つ

システム開発の手法は5つ

システム開発の手法には次の5つがあげられます。

  • ウォーターフォール型
  • アジャイル型
  • プロトタイピング型
  • スパイラルモデル型
  • DevOps型

基本的に開発現場では「ウォーターフォール型」または「アジャイル型」を用いるのが主流です。しかし、そのほかにも「プロトタイピング型」など、主流とは少し異なる開発手法も存在します。

ここからは、それぞれの詳細について解説します。

ウォーターフォール型

ウォーターフォール型とは、要件定義からテストまでの工程を順序よく進めていく開発手法です。上流工程から下流工程まで、滝のように上から下へ水が流れ落ちるような意味から「ウォータフォール(滝)」と言われています。

ウォータフォール型には、以下のようなメリット・デメリットがあります。

メリット・スケジュール管理がしやすい
・予算を立てやすい
・大きなトラブルが発生しにくい
・開発者側は人材育成しやすい
デメリット・リリースまで時間がかかる
・仕様変更に柔軟に対応しにくい
・大きなトラブルが発生したときに手間がかかる

ウォータフォール型の開発手法は従来から長く採用されている開発手法で、進捗管理などがしやすく大きなトラブルも少ないことがメリットです。しかし、リリースまでに時間がかかるほか、仕様変更に柔軟に対応しにくい点がデメリットです。

そのため、作りたいシステムが明確に決まっている場合や、開発に時間がかかる大規模なプロジェクトには、ウォーターフォール型の開発手法が向いています。

アジャイル型

アジャイル型は、はじめに全ての仕様を決めず、おおまかな方向性だけを決め、短期間で開発を見直して完成品へと近づけていく開発手法です。基本的には、システムの全体をいくつかに分類して開発します。

「素早い・活発」という意味がある「agile(アジャイル)」から名付けられました。アジャイル型のメリット・デメリットには以下があります。

メリット・スピーディな開発が可能
・急な仕様変更にも柔軟に対応可能
・顧客のニーズに応えやすい
デメリット・完成物の方向性が当初の計画とは異なることがある
・進捗管理やスケジュール管理が難しい

ウォーターフォール型とは異なり、仕様変更や不具合など急なトラブルにも素早く対応でき、開発全体の進行に対する影響を抑えることができます。さらに、開発の途中でユーザーとコミュニケーションをこまめにとりながら進めるため、現場で使い勝手のいいシステムを開発しやすいことがメリットです。

一方で、はじめにしっかり計画するウォーターフォール型とは異なり、当初の方向性とは異なる完成物になる可能性があります。また、開発全体をいくつかに分割して開発するため、進捗の把握やスケジュール管理が難しいことがデメリットです。

そのため、完成物の方向性が明確でないプロジェクト小規模のプロジェクトには、スピーディで柔軟なアジャイル型が向いています。

ただし、アジャイル型の手法を用いる開発会社が少ない点に注意が必要です。

プロトタイピング型

プロトタイピング型

プロトタイピング型は、システムの試作品(プロトタイプ)の作成と評価を同時に行う開発手法です。

試作と評価を何度も繰り返しながら進めていくので、例え仕様や要件定義がしっかり定まっていないプロジェクトでも、開発を進める中で方向性を固めていけることがメリットです。

ただし、試作・評価を何度も行う必要があるため、コストがかかったり期間が延長したりしやすいというデメリットがあります。

スパイラルモデル型

スパイラルモデル型(スパイラル型)は、顧客の求める実装を何度も繰り返し、最終的に理想とする完成品へと近づけていく開発手法です。

アジャイル型と似た開発手法ですが、スパイラルモデル型は決められた期間内でまずは機能を提供し、その後に新しく期間を設けて品質を向上させていくという手法です。

実装を繰り返し行うので、顧客からのフィードバックを反映させやすく、臨機応変な対応ができるというメリットがあります。一方で、はじめに仕様を明確化しないため、開発が進むとコストがかかったり期間が延びたりするのがデメリットです。

DevOps型

DevOps型(デブオプス)は、開発担当者と運用者の両者が連携して開発・運用を進める手法です。連携を綿密に行うことで、リリースまでの期間短縮やユーザー満足度の向上、品質向上を期待できます。

一方で、スケジュールが流動的なので、全体規模でのスケジュール設計・管理を行うのが難しい点がデメリットです。

また、DevOps型は新しく生まれたばかりの開発手法で、「Development(開発)」と「Operation(運用)」の単語を組み合わせてその名がつけられました。

システム開発に必要なメンバー構成

システム開発に必要なメンバー構成

システム開発に必要なメンバーは、大きく分けて次の5つです。

  • プロジェクトマネージャー(PM)
  • ディレクター
  • システムエンジニア
  • プログラマー
  • デザイナー

それぞれのメンバーの役割について詳しく解説します。

プロジェクトマネージャー(PM)

プロジェクトマネージャー(PM)は、プロジェクト全体を管理する職種です。

プロジェクトが円滑に進むよう、プロジェクト計画の立案からスケジュール管理、リソース・コスト管理(お金・人の管理)、ステークホルダー管理などを行います。

プロジェクトマネージャーに求められるのは、システム開発の知識以外にもマネジメント能力問題解決能力コミュニケーション能力など多岐にわたります

プロジェクトマネージャーの実力により、プロジェクトが成功するか決まるといっても過言ではないほど重要なポジションです。

ディレクター

ディレクターは、プロジェクトの企画・立案のほかに、制作や運用にかかわる職種です。

進捗管理やプロジェクト運営を行うという面ではプロジェクトマネージャーと同じですが、基本的にタスク管理監督コンセプトの設計などを行います。

具体的には、エンジニアやデザイナーに対して具体的な指示を出したりフォローしたりする役割があります。2〜3人ほどの小規模のチームを統括するケースが一般的です。

システムエンジニア

システムエンジニア

システムエンジニアは、システムの要件定義から開発まで担当する職種です。

主にクライアントとのヒアリングを行って要件定義書を作成し、システムの設計などを行います。技術的な面において重要な役割があり、一般的にはプログラミングは行いません。

システムエンジニアに求められるスキルは、システムに関する技術的な知識のほか、ビジネス知識コミュニケーション能力などです。

プログラマー

プログラマーは、システムエンジニアが作成した設計書や指示に従って、実際にコーディングを行う職種です。

プログラマーに求められるスキルには、プログラミング言語スキルITシステムの知識などがあります。

プロジェクトによって異なりますが、システムエンジニアとプログラマーの業務をしっかり分けているところもあれば、業務を分けず一括で担当するプロジェクトも増えてきています。

また、使用するプログラミング言語は開発するシステムによって異なります。たとえば業務システムであればJavaやC言語、WebシステムであればJavaScriptやPHP、Pythonなどを使用するのが一般的です。

デザイナー

デザイナー(Webデザイナー)は、主にWeb開発で必要になるメンバーです。

Webサイトの画面デザインやWebアプリの入出力画面をはじめ、ユーザーが直接目に触れる部分のデザイン作成を担当します。

ユーザーにとって、使いやすくて意図したように動くデザインを考えながら、システム全体のイメージを考え、クライアントと打ち合わせしながら完成イメージを詰めていくのが主な仕事です。

また、中にはデザイナーとコーダーの両方を担当し、HTML/CSS、JavaScriptを用いてデザイン作成する人もいます。最近では、デザインスキルのみならずプログラミングスキルも合わせて求められる傾向が多いです。

システム開発を進める上で注意すべきこと

システム開発を進める上で注意すべきこと

システム開発を進める上で特に注意すべきことは次の3つです。

  • 要件定義をしっかり行う
  • 担当メンバーのスキルを確認する
  • こまめなコミュニケーションを取る

ここからは、それぞれの詳細を解説します。

要件定義をしっかり行う

システム開発でトラブルのリスクを減らすため、要件定義をしっかり詰めておくことが大切です。

システム開発は、はじめに要件定義を決め、その後要件に沿ってステップを踏んでいき開発を進めることが一般的です。

要件定義の段階で突き詰めることができなければ、依頼者側が「やっぱりこういう機能もつけたい」と開発途中にリクエストする場合も発生します。そうすると、開発の途中で仕様に大きな変更が起きるため、開発に大きく影響が出ます。

具体的には、スケジュールの遅延や作業コストの増加、品質低下、運用開始後の業務効率の低下など、さまざまな悪影響が考えられます。いちから設計を見直さなくてはいけないケースもあるでしょう。

システム開発を円滑に進めると同時に、品質を担保するためには、はじめに要件定義をしっかり詰めることが非常に重要です。

担当メンバーのスキルを確認する

プロジェクトマネージャーやディレクターが、開発担当メンバーのスキルを把握しておくのも重要です。

システム開発にかかるコストのほとんどが人件費です。コストを抑えようとすると人件費を抑えることになり、結果的にスキル・経験が不十分なメンバーしかアサインできないということになりかねません。

開発を担当するメンバーのスキルや経験が、システムのクオリティに大きく影響します。

プロジェクトマネージャーなどアサイン担当の方は、実績・スキルをきちんと確認した上で、適切な人材を適切な単価で確保することが重要です。

こまめなコミュニケーションを取る

開発者側は依頼者側とこまめなコミュニケーションを取ることも、システム開発を円滑に進めるためには大切です。

システム開発では、さまざまなトラブルが発生します。開発における技術上の制約だけでなく、市場が変化したり法改正が起こったりすれば、システム開発の進行や方向性に大きく影響します。

開発者側と依頼者側の両方に責任がないトラブルも発生することもあるため、合理的に問題を解決するためには、きちんとコミュニケーションを取ることが大切です。

さらに、要件定義から納品まで、密にコミュニケーションを取っていれば、問題が小さいうちに適切に対処することができます

そのほか、こまめなコミュニケーションはお互いの信頼関係の構築にもつながるため、システム開発を円滑に進められるようになります。

システム開発にかかる日数はどのくらい?

システム開発にかかる日数はどのくらい?

一般的な期間の目安は次の通りです。

  • LP:約1ヶ月
  • Webサイト(5ページ程度):約2ヶ月
  • ECサイト:約3〜6ヶ月
  • メッセージアプリ:約6ヶ月〜1年
  • ゲームアプリ:約6ヶ月〜1年
  • 業務効率化システム(シンプル機能):約3〜4ヶ月
  • 業務効率化システム(多機能):約6ヶ月〜1年

ただし、システム開発にかかる日数・期間は、システムの規模やシステムの種類、開発手法などによって異なります。あくまでも目安として考えておきましょう。

プログラムステップ数とは?プログラムの規模を測る指標

システム開発の現場では、「プログラムステップ数」という考え方があります。

プログラムステップ数とは、ソフトウェアの規模を測る指標です。処理を行うソースコードの行数のことで、開発規模の見積もりや進捗管理、一人あたりの生産性の指標として用いられることがあります。

多くのプログラミング言語において、ソースコードの中にコメントや空行などを入れ、処理を何も行わない行を記述することが可能です。

そのため、一定の基準を定めて何も処理を行わない行を除外し、処理を行うコードの行数のみを数え上げた単位を「プログラムステップ数」と呼びます。

また、プログラムステップ数はプログラムの複雑さを測定するほか、実行時間や処理効率、開発規模の見積もり、および進捗管理などを判断する際に用いられる考え方です。

まとめ

まとめ

システム開発は、企業が抱える課題に対してIT技術で解決をすることです。要件定義から運用・保守まで、大きく7つのステップで開発を進めていくのが一般的です。

ステップを踏んで順序よく開発を進める手法を「ウォーターフォール型」と言いますが、おおまかな方向性だけを決めて、短期間で開発を見直していく「アジャイル型」と呼ばれる開発手法もあります。

システム開発のプロジェクトに関わるためには、プログラミング言語のスキルが欠かせません。

プログラミング言語の学習サイト「CyTech」は、Web開発に必要な言語(JavaScript・HTML/CSS・PHPなど)を学べるプラットフォームです。さらに、デザインの知識も同時に学べるため、プログラマーになった後の仕事の幅を広げることができます。

これからプログラミング言語学習をはじめる方は、ぜひCyTechをご利用ください。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

著者情報

日々進化するSEOの変化をキャッチアップしながら、自身でも普段からSEOに特化した記事を書くライター。新しい物好き。

目次