ソフトウェア工学
ソフトウェアがより良い構造をもつための様々な方法論が研究されている。規格としてはUMLが挙げられる。
人が臓器からなるように、ソフトウェアもコンポーネントからなる構造をもつ。この構造をソフトウェアアーキテクチャという。デザインパターン/アンチパターンはアーキテクチャより詳細度の高い構造である。またプログラミングの指針をプログラミングパラダイムという。パラダイムは結果として構造に影響を与える。例えば構造化プログラミング、オブジェクト指向プログラミングが挙げられる。
目まぐるしく変化する市場に素早く対応できるソフトウェア開発の手法。この手法の信奉者は、従来型の文書を多用する手法は徐々に消えていくと信じている。関連する概念として、エクストリーム・プログラミングやリーンソフトウェア開発がある。
ソフトウェア工学はソフトウェアの開発・運用・保守に関して体系的・定量的にその応用を考察する分野である。ソフトウェア工学は「工学」であり、ソフトウェアの信頼性・保守性・開発効率の向上などを目的とする。
ソフトウェア工学には、設計法と生産法の2領域がある。設計法はソフトウェア構造(ソフトウェアアーキテクチャ)を扱う。ソフトウェア生産法はソフトウェアライフサイクルプロセスを扱う。これら二つの領域は利点と制約の面で相互関係がある。
ソフトウェア工学には、要求分析、ソフトウェア設計、プログラミング、ソフトウェアテスト、ソフトウェア保守といった作業に関する知識・ツール・手法が含まれる。ソフトウェア工学に関連する学問分野として、コンピュータ科学、コンピュータ工学、経営管理論、数学、プロジェクトマネジメント (ソフトウェアプロジェクト管理) 、品質管理、人間工学、システム工学がある。また、他分野とクロスオーバーしていたり、もしくはソフトウェア工学の1分野だったものが独立して別分野を形成したり(例:データベース設計)、別分野で培われた技術や概念がソフトウェア工学の対象となることもある(例:オブジェクト指向技術)。
software engineering という用語は Brian Randell (英語版) が考案し、1968年の NATO ソフトウェア工学会議(英語版) で F.L. Bauer (英語版) が使ったことで一般に広まった。