【ITの基礎知識】今回は「ソフトウェア開発工程」についてです。
僕は、アイルランドで永住権を取得し、首都ダブリンに住んでいます。
28歳の時に、学歴なし、英語力なしでアイルランドに移住、2年後ダブリンにあるアメリカの大手IT企業にソフトウェアエンジニアとして就職しました。
僕が得た経験と知識を、海外でIT企業に就職し海外移住を目指すあなたへ共有するために、この記事を書いています。
海外での就職の面接で使うことができるように、英語名やよく使われる略語(Acronyms)を併記しているので、日本語でなく英語名を覚えましょう。
【ITの基礎知識】ソフトウェア開発工程(SDLC)【海外就職対策】
今回はソフトウェアの開発、商品化の過程についての基礎知識についてお話しします。
- ソフトウェア開発工程(SDLC)
- ソフトウェア開発工程の段階(Phases)
- 2つのソフトウェア開発工程の例
ソフトウェア開発工程(SDLC)
「ソフトウェア開発工程」とはソフトウェアを作る過程の事です
- ソフトウェアを開発工程は、英語で「Software Development Life Cycle(SDLC)」と言います。
- 「SDLC」は、いくつかの「段階(Phase)」によって分かます。
- 「段階(Phase)によって」、同じ職種でも「作業内容が変わります」。
- 例えば「ソフトウェアエンジニア(Software Engineer – SWE)」は「デザイン(Design)」と呼ばれる「段階」では「技術仕様書(Technical Specifications – Tech Specs)」を作り、「実装(Implementation)」と呼ばれる段階ようやく実際のコードを書きます(Coding)。
ソフトウェア開発工程の段階(Phases)
ソフトウェア開発工程は「6つ」の段階にわかれます。
- 「プラン(Planning)」段階
- 「デザイン(Design」」段階
- 「実装(Implementation)」段階
- 「テスト(Verification/Testing)」段階
- 「リリース(Deployment)」段階
- 「メンテナンス(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業界の主流になっています」。