システム開発とは?手法や開発の流れを徹底解説

  • 2023.01.05
       
システム開発とは?手法や開発の流れを徹底解説

システム開発とは

システム開発とは、業務を効率化させるための仕組みをつくることです。
そのため、システム開発の定義としては、PCやソフトウェアを使用しているかどうかは関係なく、それらは仕組みをつくるための手段の一つでしかありません。しかし、一般的にはシステム開発というとPCやソフトウェアなどのIT技術を用いて既存業務を効率化、最適化させるための新たに情報システムを開発することを指し、なかでも 特に、企画段階から設計、実装などを経て現場に導入するといった一連の工程を含んだソフトウェア開発を指す場合が多いです。
今回はその一般的にいう「システム開発」について解説します。
業務を効率化させるためのシステムにはたとえば以下のようなものがあります。

  • 勤怠管理システム
    従業員の出退勤時刻や出社日数、有給休暇日数などを総合的に管理するシステム。
  • 在庫管理システム
    商品の在庫数や価格などを一括管理するシステム。主に飲食店や量販店などで使用される。
  • 生産管理システム
    製品の製造工程や品質などを管理するためのシステム。主に製造業などで使用される。

費用対効果がポイント
システム開発は開発に費やしたコストよりも、開発することで得られた効果が大きいことが大前提です。システムを開発するうえで必ずコストは発生しますが、開発に要したコストを上回る効果が求められます。

柔軟な対応力が必要
システム開発全体の一連の流れを頭に入れたうえで、状況に応じてその都度適切な対応をしていく必要があります。
システム開発の規模が大きくなるほど、開発当初の見込みからそれていくケースも多くあります。

システム開発手法

システム開発の工程にはさまざまな手法がありますが、代表的なものには古くから用いられている伝統的な手法「ウォーターフォール型」と開発期間を短縮できる「アジャイル型」があります。ほかにも、最近では開発担当者と運用担当者が連携して開発する「DevOps」という手法で開発する企業も増えてきました。この3つの手法についてそれぞれ説明します。

ウォーターフォール型
ウォーターフォール型は要件定義、基本設計、詳細設計、実装、テスト、納品・導入という開発における一連の工程を順に進めていく手法です。各フェーズが完了してから次のフェーズに取りかかるため、水が上から下に流れ落ちる滝(waterfall)から名付けられました。大規模システムの開発に向きの処方で現在でも用いられています。ウォーターフォール型の開発はそのフェーズが完了すると原則として前のフェーズに戻って修正するといったことができないため注意が必要です。事前打ち合わせで念入りに開発要件を固めていくため、実際に開発に取りかかるまでに時間がかかります。しかし、その分予算やスケジュール、開発期間の見通しが立てやすいため、その後の管理が比較的容易です。

アジャイル型
アジャイル(Agile)は日本語にすると素早いという意味で、先述のウォーターフォール型と比べてイテレーション(反復)という小単位ごとに設計、実装、テストを繰り返す、スピードを重視した開発手法です。
ウォーターフォール型とは異なり、前のフェーズに戻ることを前提としており、随時仕様変更や修正ができるなど、柔軟な開発が可能です。
小単位でサイクルを回すため、問題が発生した場合でもイテレーション内で解決するため、手戻りも少なく済むなど、開発期間の短縮やリスクの軽減が期待できます。
技術進化に合わせて仕様変更が頻繁に行われるアプリケーション開発などに向いています。

DevOps
DevOpsは比較的新しい手法で、開発担当者と運用担当者が連携をとって協力することで、効率的に開発を進めつつ成果物の質を上げるという手法です。アジャイル型と組み合わせことでより高い効果を発揮します。

システム開発の主な流れ

システム開発は、以下に示す段階を踏んで行われます。
・要件定義
・外部設計
・内部設計
・プログラミング
・単体テスト
・結合テスト
・システムテスト
・運用テスト
・システム移行
・運用・保守

それぞれのステップについて説明します。

要件定義
はじめのステップは「要件定義」です。要件定義はクライアントの希望やニーズをヒアリングし、それを基にシステムの機能や仕様、運用方法など、開発全体の方向性を決めていくフェーズです。
要件定義はシステム開発においてもかなり重要なフェーズです。方向を間違えてしまうと目的地にたどり着けないように、要件定義でのミスが納期の遅れや、コストの増加につながってしまいます。

外部設計
次に「外部設計」のフェーズに入ります。外部設計では、要件定義に従って、システムのインターフェース部分、つまり操作画面などの見た目やボタンを押した時などの挙動操作性を設計していきます。使いやすさはシステムの定着度につながる大事な要素であるため、クライアント視点での「使いやすさ」を考える重要なフェーズです。IT業界では、開発工程を川になぞらえてその前半部分を「上流工程」、後半部分を「下流工程」といいますが、この外部設計までが、上流工程に含まれます。

内部設計
外部設計が完了したら次は「内部設計」のフェーズに入ります。内部設計では、外部設計を基に、実際にプログラミングのフェーズに進んだ際にコーディングしやすくなるようにかみ砕いて、システムの内部を設計していくフェーズです。開発者の目線から今後のメンテナンスのしやすさを考慮し、可能な限りシンプルに設計することが重要です。

プログラミング
システム設計が一通り終わったら次は「プログラミング」に移ります。システムエンジニアが作成した設計書に基づいてプログラマがコーディングしていきます。
このプログラミング作業には、プログラム言語のスキルや詳細設計に基づいてアルゴリズムを決めるためのスキルが必要です。

単体テスト
「単体テスト」は、コーディングしたプログラムがパーツごとで設計書どおりに作動するかを確かめるフェーズです。パーツごとに分けてテストすることで、問題が発生した場合に原因の特定がしやすくなります。

結合テスト
「結合テスト」は、単体テストをパスしたパーツが単体では問題なく動いても、他のパーツと結合させた場合でも正常に作動するかを確かめるフェーズです。

システムテスト
「システムテスト」は、本番と同じような環境でシステム全体が仕様書どおりに作動しているかを確認するテストです。システムテストはさらに以下のように細分化されています。
・確認テスト
・評価テスト
・負荷テスト

運用テスト
「運用テスト」は、最後に実施されるテストです。これまでのテストとは異なり、テストの実施者は開発者側ではなく、クライアントです。開発を依頼したクライアント自身で実際に操作し、実際の本番環境でも問題なく作動するかを確認します。このフェーズで万が一エラーが起きてしまうとクライアントに直接影響が出てしまうため、注意が必要です。

システム移行
全てのテストが完了したら次は「システム移行(リリース)」というフェーズに入ります。開発環境で動かしていたシステムを実際の稼働環境に移します。クライアントの業務への支障がないよう、主に休日や夜間などに行われます。

運用・保守
リリースされ、本番移行されたシステムは「運用・保守」のフェーズに入ります。システムが安定稼働するよう、運用でシステムの稼働状況を監視し、保守でトラブル時の対応やメンテナンス作業などを行います。

システム開発に関わる職種と業務内容

1つのシステムを開発するのに、多くの人が関わりますが、なかでも中心的に関わる以下の3つの職種について説明します。

  • システムエンジニア
  • プログラマ
  • プロジェクトマネージャ

システムエンジニア
システムエンジニアは、クライアントの要望を汲み取り、最適なシステムの仕様を決めるという役割があり、システム開発においても重要なポジションといえます。
要件定義でシステムの機能などを考案し、システム内外の設計書を作成してプログラマにプログラミングを発注しますが、場合によってはシステムエンジニアが行うケースも珍しくありません。

プログラマ
プログラマは、システムエンジニアが作成した設計書をもとにプログラミングを行い、作成後は仕様通りに作動するかテストを行います。

プロジェクトマネージャ
プロジェクトマネージャには、システム開発に割く予算や人員の設定やプロジェクトメンバーの業務管理といった、プロジェクト全体を管理する役割があります。
プロジェクトマネージャは多くの局面で意思決定をする立場であるため、技術的な知識に加え、マネジメントに関するスキルも求められます。そのため、経験を積んだエンジニアがつく場合が多いです。

     

Otherカテゴリの最新記事