__NOTOC__
。この頃、コンピューターを扱うのは技術者であり、その多くは電気技術者であった。 このハードウェア中心の設計は柔軟性に欠け、すぐに「ストアドプログラムアーキテクチャー」またはフォンノイマンアーキテクチャーに取って代わられた。 こうして、「ハードウェア」と「ソフトウェア」の最初の区分けが始まり、コンピューティングの複雑さに対処するために抽象化が行われるようになったのです。
1950年代にはプログラミング言語が登場し始め、これもまた抽象化の大きな一歩となった。 FORTRAN、ALGOL、COBOLといった主要な言語が1950年代後半にリリースされ、それぞれ科学的、アルゴリズム的、ビジネス的な問題に対処するために使用されるようになった。 E.W.ダイクストラは、その代表的な論文”Go To Statement Considered Harmful”（『Go to文は有害と思われる』本邦未出版）{{Cite journal
  | last = Dijkstra   | first = E. W.   | authorlink = Edsger_Dijkstra
  | title = Go To Statement Considered Harmful   | journal = Communications of the ACM   | volume = 11   | issue = 3   | pages = 147–148
  | month = March | year = 1968   | url = http://www.cs.utexas.edu/users/EWD/ewd02xx/EWD215.PDF   | accessdate = 2009-08-10
 は1968年に、David Parnasは1972年に、モジュール性と情報隠蔽の重要な概念を導入した
{{Cite journal
| last = Parnas
| first = David
| authorlink = David Parnas
| journal = Communications of the ACM
| volume = 15
| issue = 12
| pages = 1053–1058
| url = http://www.acm.org/classics/may96/
| title = On the Criteria To Be Used in Decomposing Systems into Modules
| month = December | year = 1972
| accessdate = 2008-12-26
| doi = 10.1145/361598.361623
。複雑化し続けるソフトウェアシステムにプログラマーが対応できるようにするためのものである。
オペレーティングシステムと呼ばれるハードウェアを管理するソフトウェアシステムも導入され、特に1969年のUnixが有名である。1967年には、Simula言語がオブジェクト指向のプログラミングパラダイムを導入した。
このようなソフトウェアの進歩に呼応して、コンピューターのハードウェアもさらに進歩した。 1970年代半ばには、マイクロコンピューターが登場し、趣味でコンピューターを入手し、そのためのソフトウェアを書くことが経済的にできるようになった。 これが、現在では有名なパーソナルコンピューター（PC）やマイクロソフト社のWindowsにつながったのである。 また、1980年代半ばには、ソフトウェアを一元的に構築するためのコンセンサスとして、ソフトウェア開発ライフサイクル（The Software Development Life Cycle; SDLC）が登場し始めた。1970年代後半から1980年代前半にかけては、Smalltalk、Objective-C、C++など、Simulaに影響を受けた新しいオブジェクト指向のプログラミング言語がいくつか登場した。
90年代初頭にはLinuxなどの形でオープンソースソフトウェアが登場し始め、「バザール」という分散型のソフトウェア構築スタイルが紹介された。Raymond, Eric S. [http://www.catb.org/esr/writings/cathedral-bazaar/ ''The Cathedral and the Bazaar''].ed 3.0. 2000. その後、90年代半ばにWorld Wide Webとインターネットの普及が始まり、ソフトウェアのエンジニアリングが再び変化した。分散システムはシステムを設計する方法として有力となり、プログラミング言語Javaは抽象化の新たなステップとして仮想マシンとともに導入された。プログラマーは協力してアジャイル宣言を書き、より軽量なプロセスでより安く、よりタイムリーなソフトウェアを作ることを支持した。
現在の''ソフトウェア工学''の定義は、「より安く、より良く、より速く」ソフトウェアを作る方法を考え出すのに苦労しているため、今日でも実務家の間で議論されている。1990年代以降、IT業界ではコスト削減に主眼が置かれるようになった。総所有コスト（Total Cost of Ownership; TCO）とは、単なる取得コストだけでなく、生産性を阻害するようなコストも含まれる。総所有コストには、生産性の阻害、維持管理努力、インフラストラクチャーをサポートするために必要なリソースなどが含まれる。