アプリケーション開発・管理・運用

システム開発とは?モダナイズに向けて抑えるべきポイント

システム開発とはどういったことを指すのか、工程や要件定義を知っておくことは重要です。ここではシステム開発とは何か、どのような業種があるのか、どのようなスキルが必要かなどについて解説します。

アプリケーション開発における課題別の解決方法とは? 〜Azureを導入するメリットも紹介〜

システム開発とは?

システム開発とは、IT技術を使ってシステムを開発することです。物理的なインフラ構築も、ソフトウェアの開発もシステム開発の一環です。システム開発は個人でもできますが、多くの場合はプロジェクトとして複数人で開発を行います。

複数人で開発を行う場合は互いに連携し、作業手順をある程度決めて開発を進めていく必要があります。システム開発はプログラミングだけをすればよいわけではなく、その前に要件定義、設計などの作業があり、さらにプログラミング後にはテストも必要です。

この一連の流れはやり方がある程度決まっているのですが、いくつかの種類があります。具体的には、「ウォーターフォール型」「アジャイル型」などがあります。

ウォーターフォール型は、手順通りに作業を進めていく方法です。「顧客と話し合い・設計し・プログラミングし・テストし・納品する」といった一連の流れを取ります。

もちろん、厳密にはもっと細かい手順が存在しますが、大枠でこのような順番に作業を進め、「基本的に手戻りがない手法」という意味で、ウォーターフォール型と呼ばれているのです。

アジャイル型は各手順を繰り返しながらシステムの開発を目指していく開発手法です。そのため見切り発車で開発が進んでいく場合も多く、粗が見つかったら手戻りすれば問題ないという発想です。

ほかにも、スパイラルモデル、プロトタイピングなどの開発手法があります。ただし多いのはウォーターフォール型かアジャイル型なので、まずはこの2つを把握しておけば問題ないでしょう。

システム開発の主な手順

次に、システム開発の主な手順について解説します。

01. 要件定義(要求定義)

要件定義とは、どのようなシステムを開発したいかの概要をざっくりと決め、これを話し合う工程です。プロジェクトのメンバー間だけでなく、依頼者とも相談し、最終的にどのようなシステムにするか、そのための予算、人員、期間はどの程度必要か、といった要件をここで決定します。

02. 基本設計(外部設計)

要件定義が固まったら、これに基づいて基本設計の工程に進みます。基本設計はシステムの大枠の設計です。例えば、どの部分でどういった処理を行う、といったことをざっくりと記載します。

先述のように、ウォーターフォール型の場合は基本設計から要件定義に戻ることはありません。しかしアジャイル型の場合は、基本設計がうまくいかない場合、より改良したい場合などに再度要件定義の工程に戻る場合も少なくありません。

03. 詳細設計(内部設計)

基本設計が固まったら、次に詳細設計を行います。詳細設計とは、基本設計で記載した内容をより実装に近い形で記載していくものです。詳細設計では、具体的なソースコードも設計書に落とし込みます。

ここの処理ではこのようなコードを記載する、といったイメージです。アジャイル型の場合は、ここで実装に無理があると判断すれば、基本設計に立ち返って設計書を修正する作業も発生します。このステップでは、ウォーターフォール型でも詳細設計で実現不可能とわかればどうしようもないので、やむを得ず1つ前の工程に戻るようなこともあります。

04. プログラミング

詳細設計でどのような処理を実装するかが決まったら、プログラミングをしていきます。詳細設計でどの程度しっかりとコードを決めているかによって、プログラミングの難易度が変わってきます。

詳細設計であまり具体的に決めていない場合は、「プログラミングの段階でどのように実装するのがベストなのか」を試行錯誤していく必要があります。逆に詳細設計で細かく処理を決めていれば、これに基づいてプログラミングを行うだけなので比較的容易です。

システム開発というとプログラミングの工程が注目されがちですが、実際はプログラミングよりも上の工程で、プログラミングの方針を決めています。設計をしっかり行い、プログラミングはあらかじめ決めた通りにコードを書いていくだけ、という状態が理想的でしょう。

05. 単体テスト

単体テストとは、プログラミングによって実装した機能のテストのことです。単体テストの「単体」とは、処理の単位のことを指します。各担当者が複数の機能をプログラミングによって実装しているので、これらの機能を単体でテストしていきます。

単体テストで問題がある箇所が見つかれば修正し、再度テストを行います。修正の工程はプログラミングの工程とは別で考えられていて、単体テストの一環とも言えます。

そのため、ウォーターフォールモデルであっても単体テストの工程でプログラミングの修正を行うことは問題ありません。修正まで含めて単体テストと考えるとよいでしょう。

06. 結合テスト

結合テストとは、複数の機能を連携させて行うテストのことです。単体テストで問題ないことを確認した機能同士を結合させます。結合テストでは個人が実装した単体の機能だけでなく、ほかの人が実装した部分と結合させてテストする場合もあります。

また、個人が実装した複数の機能を結合する場合もあります。単体テストで問題がなくても、機能の連携で問題が生じるケースも少なくありません。そのため、結合テストでも単体テスト同様に問題があれば修正を行います。

結合テストの修正はプログラミングの工程に戻ったというわけではないので、ウォーターフォール型でもプログラムの修正を行います。結合テストで機能を修正した場合、再度単体テストから必要になる場合も多いです。

見方によっては、「結合テストから単体テストに工程が戻っている」とも言えますが、ウォーターフォール型でも基本的に「結合テストから修正・修正からの単体テスト」というサイクルは行われます。修正した場合はすでに別のシステムになっているので、工程を戻るというよりは新たに工程が発生しているイメージで考えるとよいでしょう。

07. システムテスト(総合テスト)

システムテスト、もしくは総合テストは、その名の通りシステム全体のテストです。単体テスト、結合テストで問題ないことを確認した後に、最後に全体のテストを行うという流れです。システムテスト、総合テストで問題が発生した場合も、再度プログラムを修正して単体テスト、結合テストをやり直します。

またプログラムの修正に合わせて、基本設計書、詳細設計書も修正するケースが多いです。理由としては、後から見返したときにソースコードと設計がずれていると、システムの実態がわかりにくくなるからです。こういったことを防ぐために、ソースコードを修正したら、設計書も適宜修正します。

08. 運用テスト

運用テストは、実際の運用を想定してシステムを稼働するテストです。システムテスト、総合テストの段階で全体に問題がないことは確認しているはずですが、運用期間が長くなると想定外の問題が発生してしまうこともあります。

このように、処理が積み重なると、初動テストでは生じなかったトラブルが起きることもあるので、運用テストは重要です。運用テストで不具合が発生した場合、再度ソースコード、設計書の修正に戻り、修正後には単体テストから実施します。運用テストでのトラブルはシステムの根幹に関わるものである場合も多いため、場合によっては要件定義からやり直すこともあるでしょう。

09. システム移行(リリース)

運用テストでも問題ないことを確認できたら、最後にシステム移行、リリースします。リリースとはシステムを公開し、実際に運用していくことです。リリース後に不具合が発生すると、利益に関わる問題となります。

最悪の場合は顧客情報の流出やハッキング被害などにつながり、大問題となることも考えられます。リリース後の不具合は徹底的に防ぐ必要があるため、運用テストまでの工程が重要です。リリース後にできることはそれほど多くありません。リリース後にソースコードを修正する場合、一時的にシステムの稼働が停止される点に注意が必要です。

10. 保守・運用

保守・運用はシステム移行、リリース後に行う作業です。システムの改良ではなく、トラブルが発生しないようメンテナンスや日々の運用業務を行います。システム開発会社の場合開発だけで終了する場合もありますが、保守・運用を行っている企業もあります。

保守・運用時に不具合が発生すれば対応し、プログラムの改修が必要な場合はプログラム改修のためのプロジェクトが発足されます。

システム開発に携わるには?

システム開発に携わるにはどのようなスキルが必要なのか、またどのような業種があるのかなどについて解説します。

システム開発に携わる上で必要なスキルや資格を紹介

システム開発に携わる上で必要な資格はありません。資格を持っていたら多少有利になることもありますが、すべての業務を無資格で行うことが可能です。スキルとしては、プログラミング・設計・資料作成・コミュニケーションなどが重要です。

入り口としてはプログラミングスキルが求められるので、プログラミングスキルを身に付けてプログラマーを目指すルートが王道です。プログラミングスキルを身に付けてIT業界に参入した後に、業務に関する知識や設計スキルを身に付けていきます。

システム開発に携わる職種は?主な業務内容も解説

システム開発に携わる職種は、「システムエンジニア」「プログラマー」「プロジェクトマネージャー」などです。違いとしては、プログラマーはプログラミングの工程を中心に担う仕事、システムエンジニアは設計を中心に担う仕事、プロジェクトマネージャーはプロジェクトのマネージメントや要件定義を中心に担う仕事、といったことが挙げられます。

ウォーターフォール型では、各作業工程は上から下に流れています。要件定義を担っているプロジェクトマネージャーがもっとも上位、次に設計を担うシステムエンジニア、次にプログラミングを担うプログラマーという順番で役職が組まれています。

まとめ

システム開発には要件定義・設計・プログラミング・テストといった工程があり、これらを経てシステムがリリースされます。株式会社ネクストスケープが提供する「モブサービス for Azure」はAzure エンジニアとお客様が一緒に同じ場所で今目の前にある開発の課題解決に取り組むサービスです。課題に最短のアプローチで解決し、スキル トランスファーまでできます。IT業界を目指すなら最初にプログラミングスキルを身に付けるとよいでしょう。また資格は必要ないので、重要なのはスキルと実績です。

  • fb-button
  • line-button
  • linkedin-button

無料メルマガ

RELATED SITES

関連サイト

CONTACT

サイト掲載の
お問い合わせ

TOP