History of Software & AI Flashcards
Origins of the waterfall model of software design
Originally introduced in 1956
Origins of structured programming
Introduced by Edsger W. Dijkstra in the 1970s
Emphasized the use of control structures like loops and conditionals to improve program clarity, reliability, and ease of maintenance.
Origins of Modular Programming
Pioneered by Larry Constantine int he 1970s, it emphasized breaking down a program into manageable, functional modules for better organization and reusability.
“The Software Crisis”
(Late 1960s - 1970s): The demand for software was rapidly increasing, leading to challenges in managing complexity, costs, and quality.
Origins of Software Engineering
NATO Conference in Garmisch, Germany, (1968) coined the term “software engineering” to address the challenges and define principles for systematic software development.
Origins of the Spiral Model of software design
Proposed by Barry Boehm in 1988, this iterative model incorporated risk assessment and allowed for flexible iterations through the development process.
The Agile Manifesto
In 2001, a group of software developers proposed the Agile Manifesto, emphasizing collaboration, customer feedback, and iterative development.
Origins of SCRUM
Early 2000s [need more here]
Origins of Kanban
Early 2000s
Alan Turing
(1912-1954)
Grace Hopper (1906-1992)
(1906-1992)
John von Neumann
(1903-1957)
Edsger W. Dijkstra
(1930-2002)
Barbara Liskov
(1939-Present)
Fred Brooks
(1931-Present)
Grady Booch
(1955-Present)
Kent Beck
(1961-Present)
Martin Fowler
(1963-Present)
Mary Shaw
(1943-Present)
Linus Torvalds
(1969-Present)
Charles Babbage
Ada Lovalace
First International Conference on Software Engineering
1956
Marked the first time software engineering was discussed as a distinct discipline, laying the foundation for future developments.
“The Mythical Man-Month”
Written by Fred Brooks
First ever software engineering book.
Highlighted project management challenges, emphasizing the importance of communication and conceptual integrity.
First IEEE Software Engineering Standards
1983
IEEE published its first software engineering standards, promoting consistent and high-quality software practices.
Capability Maturity Model (CMM)
1987
The Capability Maturity Model (CMM) provided a framework for evaluating and improving software development processes, marking a significant step towards process maturity and quality assurance.
Ivar Jacobson
James Rumbaugh
Machine Code Era
1940s
The earliest “programming” was done using machine code (binary instructions) that directly controlled the computer hardware.
Assembly Code Era
(late 1940s-early 1950s): Assembly languages used mnemonics to represent machine code instructions, making it more human-readable.
Origins of FORTRAN
1957
Developed by IBM, Fortran (Formula Translation) was the first high-level programming language, designed for scientific and engineering calculations.
Origins of LISP
1958
LISP (List Processing) was developed by John McCarthy at MIT, becoming the first programming language focused on artificial intelligence and symbolic processing.
Origins of COBOL
1959
COBOL (Common Business-Oriented Language) was developed for business data processing.
Origins of ALGOL 60
1960
ALGOL 60 had a major influence on subsequent programming languages, introducing block structures and lexical scoping.
Origins of BASIC
1964
Beginner’s All-purpose Symbolic Instruction Code (BASIC) was designed for ease of use and played a significant role in popularizing computer programming.
Origins of C
C, developed at Bell Labs by Dennis Ritchie, became a widely-used, influential, and highly portable programming language, serving as the foundation for later languages like C++ and Objective-C.
Origins of C++
1985
An extension of C that introduced object-oriented programming features.
Origins of PERL
1987
Practical Extraction and Reporting Language (Perl) emerged as a powerful scripting language, especially for text processing.
Origins of Python
1991
Python, created by Guido van Rossum, aimed for code readability and ease of use.
Origins of Java
1995
Java, developed by James Gosling at Sun Microsystems, brought portability and object-oriented principles to a new level.
Origins of Ruby
1995
Ruby, known for its simplicity and productivity, gained popularity.
Origins of C#
2000
C#, developed by Microsoft, was designed for building Windows applications and became a widely-used language.
Origins of Swift
2014
Apple introduced Swift to replace Objective-C for iOS and macOS app development, focusing on safety, speed, and modern syntax.
Origins of Go
2009
Go, developed by Google, emphasized simplicity, concurrency, and efficiency.
Copyright act of 1976
Enacted in the United States, this legislation granted copyright protection to software, considering it a form of literary expression. It provided legal rights to software authors and creators, allowing them to control the distribution and use of their software.
Computer Software Copyright act 1980
An amendment to the Copyright Act, this legislation clarified and reinforced the copyright protection for computer software. It established that both the source code and the object code of software were protected under copyright law.
Berne convention
1989
The Berne Convention, an international agreement, aimed to protect literary and artistic works. It helped establish standardized copyright protection across member countries, including software, providing a framework for international legal standards.
Digital Millennium Copyright Act (DMCA)
1998
The DMCA updated copyright laws to address digital media and technology. It included provisions criminalizing the production and dissemination of tools designed to circumvent copyright protection mechanisms, impacting the software industry.
European Union Copyright Directive
2001 (EU)
The European Union Copyright Directive addressed issues related to the digital environment, including copyright protection for software. It set rules for the protection of intellectual property in the digital age and provided guidelines on how member states should enforce copyright.
America Invents Act 2011
The America Invents Act introduced significant changes to the U.S. patent system, transitioning from a “first-to-invent” system to a “first-inventor-to-file” system. This affected the way software patents were filed and granted.
General Data Protection Regulation (GDPR)
2018
Although not specific to software engineering, GDPR is a significant regulation impacting software development, especially in terms of data protection and privacy. It applies to the processing of personal data within the European Union and the European Economic Area.
Software Engineering Institute (SEI) Established
1986
The establishment of the Software Engineering Institute (SEI) at Carnegie Mellon University played a crucial role in advancing software engineering practices, methodologies, and research.
First release of Git
2004
The release of Git, a distributed version control system, significantly impacted code management and collaboration among developers, making version control more efficient and accessible
Introduction of Docker
2008
Docker’s introduction revolutionized software deployment by enabling containerization, providing a lightweight and portable way to package and distribute software.
Launch of Kubernetes
2014
Kubernetes, an open-source container orchestration system, has had a transformative impact on managing and automating the deployment, scaling, and operation of containerized applications