ソフトウェアエンジニアリングと一言でいっても幅は相当広いです。
ソフトウェアを開発するためには、設計し製造し試験をする必要があり、それぞれに目的が存在します。
それだけの手順をしっかりと踏んでいく事により、ソフトウェアの品質が守られているという考え方ですね。
また、それぞれのプロセスには、見えないソフトウェアを見える化するためのドキュメントが存在します。そのドキュメントを元に作られたソフトウェアが要件通りでできているのかを確認する事ができますので、ソフトウェアの品質を定義する事ができるようになるのです。
これらすべての行為が「ソフトウェアエンジニアリング」と呼ばれる知識体系になります。
ソフトウェアのライフサイクルという概念です。ソフトウェアの「開発計画」「設計開発」「運用」「保守」「最終的な廃棄」に至る過程を標準的なモデルとして表しています.
ご存知の方には申し訳ないですが、ソフトウェア開発のV字モデルというのが、非常に有名なモデルです。
各フェーズを実施するには技術力と経験が必要になってきます。
プログラマであれば、プログラム設計~単体テストまでを受け持てますが、SEは、基本設計~システムテストまでの力を要求されます。
基本設計とは、そのシステムをユーザの立場からみた機能面や操作方法をきちんと定義する力になります。特に重要なのは、異常の定義になってきます。どこまで異常を考慮できるのか、複雑なシステムになれば開発は失敗する可能性が高くなるので、できるだけシンプルな構造としていく必要があります。