2 ソフトウェア開発の流れ

目次

システム開発の工程(フェーズ)

システム開発はいくつかの工程を経て納品されます。
下記が一般的なシステム開発の工程です。

一般的に上の方を上流工程、下の方を下流工程と呼ばれます。
テストに関しては複数(UT〜UAT)ありますが、このように細分化しないプロジェクトもあります。
また、リリース後に保守・運用も行っていきます。

開発エンジニアとインフラエンジニアの違い

ITエンジニアには種類がたくさんありますが、大きく2つに分けると「開発エンジニア」と「インフラエンジニア」になります。
まず、わかりやすく例えると、開発エンジニアは車を、インフラエンジニアは道路を作るエンジニアです。

システムはアプリ(開発エンジニア担当)とインフラ(インフラエンジニア担当)の両方があって、成り立ちます。


項目開発エンジニアインフラエンジニア
主な仕事内容Webサービスや業務システムの設計・開発・運用を行う。新機能の追加やシステムの改善も担当。サーバー・ネットワーク・クラウド環境の設計、構築、運用・保守を行い、システムの安定稼働を支える。
扱う技術プログラミング言語(Python, Java, Rubyなど)、データベース、API、フレームワーククラウド(AWS, Azure, GCP)、Linux/Windowsサーバー、ネットワーク機器、コンテナ技術(Docker, Kubernetes)
関わるフェーズ要件定義 → 設計 → 開発 → テスト → 運用・保守設計 → 構築 → テスト → 監視 → 運用・保守
リモートワークの可否可能。自社開発、Sler、SES問わずリモートワークも多い。可能。昨今はクラウド環境が多いため、リモートワークも多い。
求められるスキル論理的思考力、プログラミングスキル、設計力、問題解決力サーバー・ネットワークの知識、トラブルシューティング力、セキュリティ知識
働き方チーム開発が多く、コミュニケーションを取りながら進める。案件によってはアジャイル開発でスピード感を持って仕事ができる。システムの安定運用が求められ、問題が発生した際の対応力が重要。クラウド化の進展により、運用の自動化や監視システムの活用が進んでいる。
キャリアパスフロントエンドエンジニア、バックエンドエンジニア、テックリード、プロジェクトマネージャー(PM)、CTO、起業など多岐にわたる。クラウドエンジニア、SRE(Site Reliability Engineer)、ITアーキテクト、セキュリティエンジニアなど専門性を深めるキャリアが多い。
向いている人・プログラミングが好きな人
・アイデアを形にするのが楽しい人
・最新技術を学ぶのが好きな人
・チームで開発するのが好きな人
・システムを安定して動かすのが好きな人
・コツコツと知識を積み上げるのが得意な人
・資格を取得してスキルを証明したい人
・セキュリティやクラウド技術に興味がある人

【スライド資料】システム開発における開発とインフラの役割

確認問題

ソフトウェア開発の一般的な流れとして正しい順序はどれか?

A. 設計 → 運用 → 要件定義 → 開発 → テスト
B. 要件定義 → 設計 → 開発 → テスト → 運用
C. 開発 → 設計 → 要件定義 → テスト → 運用
D. テスト → 開発 → 運用 → 要件定義 → 設計

正解:B

開発エンジニアとインフラエンジニアの違いを表す説明として正しいのはどれか?

A. 開発エンジニアは「ソフトを作る」、インフラエンジニアは「ソフトを宣伝する」
B. 開発エンジニアは「コードを書く」、インフラエンジニアは「環境を整える」
C. 開発エンジニアは「サーバーを管理する」、インフラエンジニアは「UIをデザインする」
D. 両者の仕事内容に違いはなく同じである

正解:B

目次