History of software engineering

The first time the term “Software Engineering” was heard by a human being was in 1968 at a conference organized by NATO, to discuss the difficulties encountered when developing large and complex systems, It was proposed that the software development process should adopt an engineering approach to reduce the costs and to lead to more reliable software.

In the 70s the fist programming environments were developed, first notions of structured programming, the Pascal programming language, Parnas’s papers on information hiding and the development of Smalltalk, which introduced the notions of object oriented development. Early use of software design methods.

In the 80s the Ada programming language introduces structured programming and information hiding. CASE (Computer Aided Software Engineering) tools are introduced to support design methods, these tools are designed to increase the productivity and reduce the cost of software development. Development of algorithmic approaches to software costing and estimation, the first student textbook on software engineering is released. Later in the 80s OOP had a huge increase in popularity, through languages such as C++ and Objective-C. The first object-oriented design methods.

In the 90s Java is released. The rise of the Internet, international information, e-mail systems. Client – Server distributed architectures are widely used. Component-based software engineering (CBSE) is developed, it is a reuse-base approach to defining, implementing and composing loosely coupled independent components into systems. The Unified Modeling Language (UML) is proposed, integrating several separately developed notations for representing object-oriented systems. Sam Kass created rock, paper, scissors, lizard, Spock.

in the early 00s the use of UML becomes widespread, whereas the use of CASE tools declines. There is a huge increase of scripting languages, such as Python, for software development. C# is developed.  Inexpensive software solutions led to the development of simpler and faster methodologies for software development. Extreme Programming (XP) attempted to simplify many areas of software engineering.