【ITの基礎知識】ソフトウェア開発工程(SDLC)【海外就職対策】


【ITの基礎知識】今回は「ソフトウェア開発工程」についてです。

僕は、アイルランドで永住権を取得し、首都ダブリンに住んでいます。
28歳の時に、学歴なし、英語力なしでアイルランドに移住、2年後ダブリンにあるアメリカの大手IT企業にソフトウェアエンジニアとして就職しました。

僕が得た経験と知識を、海外でIT企業に就職し海外移住を目指すあなたへ共有するために、この記事を書いています。
海外での就職の面接で使うことができるように、英語名やよく使われる略語(Acronyms)を併記しているので、日本語でなく英語名を覚えましょう。

【ITの基礎知識】ソフトウェア開発工程(SDLC)【海外就職対策】

今回はソフトウェアの開発、商品化の過程についての基礎知識についてお話しします。

  • ソフトウェア開発工程(SDLC)
  • ソフトウェア開発工程の段階(Phases)
  • 2つのソフトウェア開発工程の例

ソフトウェア開発工程(SDLC)

「ソフトウェア開発工程」とはソフトウェアを作る過程の事です

  • ソフトウェアを開発工程は、英語で「Software Development Life CycleSDLC)」と言います。
  • 「SDLC」は、いくつかの「段階Phase)」によって分かます。
  • 段階(Phase)によって」、同じ職種でも「作業内容が変わります」。
    • 例えば「ソフトウェアエンジニア(Software Engineer – SWE)」は「デザイン(Design)」と呼ばれる「段階」では「技術仕様書(Technical Specifications – Tech Specs)」を作り、「実装(Implementation)」と呼ばれる段階ようやく実際のコードを書きます(Coding)。

ソフトウェア開発工程の段階(Phases)

ソフトウェア開発工程は「6つ」の段階にわかれます。

  1. プランPlanning)」段階
  2. デザインDesign」」段階
  3. 実装Implementation)」段階
  4. テストVerification/Testing)」段階
  5. リリースDeployment)」段階
  6. メンテナンスMaintenance)」段階

この記事では各「段階」の概要だけ書きますが、それぞれの詳しい情報(例:「テスト」段階)は後日別の記事で書いていきます。

1.「プラン(Planning)」段階

  • プランPlanning)」段階では「どういうものを作りたいのか」を決めます。
  • 「開発チーム」「セールスチーム」「カスタマー」など『関係者Stakeholders)』を含めて「要求仕様Requirements)」を話し合い決めていきます。
  • 「リスク分析(Risk Analysis)」など、多角的な調査が行われます。
  • この段階の最後には、「ソフトウェア要求仕様書Software Requirement Specification Document – SRS)」が作られます。

2.「デザイン(Design)」段階

  • デザインDesign)」段階では、「SRS)」をもとに、「Requirements」をどのように製品のなかで「形にしていくか」を、「Stakeholders」からのフィードバック得ながら決めます。
  • この段階の最後には、「設計仕様書Design Specification)」が作られます。
  • Software Engineer」は、「Design Specification」とは別に、「技術仕様書Technical Specification)」を作ります
    • Design Specification」は「何ができるのかWhat)」を書いたもので、「Stakeholders」を対象に書かれた書類です。
    • それに対し、「Technical Specification」は、実際に「どのようにつくるかHow)」を書いたものでで、「Software Engineer」や「テクニカルPM(Technical Program Manager)」など、実装にかかわる人たちを書かれた書類です。

3.「実装(Implementation)」段階

  • 実装Implementation)」段階では、「Software Engineer」が「Technical Specification」を元に「コードをかいてCoding)」ソフトウェアの形にします。
    • 会社によって、それぞれの「コードを書くためのガイドライン(Coding Standard)」があり、「Software Engineer」はそれに従って「Coding」していきます。
    • 使われる「プログラミン言語(Programming Languages)」や使われる「技術(Technologies)」は、会社やソフトウェアの種類によって異なります。

4.「テスト(Verification/Testing)」段階

  • テストVerification/Testing)」段階では、前の「Implementation Phase」で仕上がってきたソフトウェアを「テストしていきます」。
  • 見つかった「欠陥(Defect)」は「バグBug)」と呼ばれ、「Bug」は専用のデータベースに追加され「報告されます」。
  • 「Software Engineer」は報告された「Bugを修正Bug fix)」していきき「ソフトウェアの完成を目指します」。

5.「リリース(Deployment)」段階

  • リリースDeployment)」段階では、完成されたソフトウェアを「カスタマーへ届けます」。
    • ソフトウェアの場合パッケージ化し、販売したり、専用サイトからダウンロードできるようにしたりします。ウェブサイトの場合、そのサイトの公開ということになります。

6.「メンテナンス(Maintenance)」段階

  • メンテナンスMaintenance)」段階は、ソフトウェアのリリース後、発見された「Bug」の修正を行い、「定期的にアップデート版をリリース」していきます。

2つのソフトウェア開発工程の例

「SDLC」にはいくつかの方法(Methods)あるうち「代表的な2つ」を紹介します。

ウォーターフォール(Waterfall)

  • ウォーターフォールWaterfall)」は、「1つのソフトウェア」を、前述のすべての「Phases」を順番に行って完成させていく方法です。
  • ソフトウェア全体を作っていく方法なので、すべての「Phases」が終わり完成するまで「長い時間がかかります」。
    • ソフトウェアの規模によっては数年かかります。
  • 始めに全体を決めて作業を行うので、現代のテクノロジーやカスタマーの要望の「早い変化の対応に弱く、前時代的」になってきています。

アジャイル(Agile)

  • アジャイルAgile)」と呼ばれる方法は、「ソフトウェアの一部」を、前述の「Phases」を短期間で行って「定期的にアップデートとしてソフトウェアをリリースする」方法です。
  • 要望の多いソフトウェアの一部の機能をできるだけ早くカスタマーへ届けるため、「SDLC」の「周期(Cycle)」を「短期間(1月単位など)で」行い完成させます。
  • 近年の現代のテクノロジーやカスタマーの要望の早い変化に対応するために「『Agile』がIT業界の主流になっています」。

まとめ

  • 「ソフトウェア開発工程(Software Development Life Cycle – SDLC)」とはソフトウェアを作る過程の事です
  • ソフトウェア開発工程は6つの段階にわかれます。
    1. 「プラン(Planning)」段階
    2. 「デザイン(Design」」段階
    3. 「実装(Implementation)」段階
    4. 「テスト(Verification/Testing)」段階
    5. 「リリース(Deployment)」段階
    6. 「メンテナンス(Maintenance)」段階
  • 2大「SDLC」は「ウォーターフォール(Waterfall)」と「アジャイル(Agile)」です。
  • IT業界の主流の「SDLC」は「アジャイル(Agile)」です。