Fifty Years of Software Engineering
Tony Wasserman
Carnegie Mellon University Silicon Valley
Bay Area ACM
15 November 2017
Software Today
• Massive, highly reliable global applications
— Facebook and WhatsApp
— Amazon.com
— Google Search, Gmail, and YouTube
— Netflix
— GitHub
— WeChat (Weixin)
• Millions of mobile apps, mostly for Android and iOS
• Highly interconnected platforms, applications, and devices
• Inconceivable 50 years ago
Computing Power - 1967
• IBM 360/65
— Processor speed 1.333MHz (A11 about 4000x faster)
— Core: up to 1Mb (iPhone 8 about 256,000x more)
— Extended storage: up to 8 Mb
• Everything was slow
— Lots of effort aimed at efficient use of highly constrained
resources
— Many tasks infeasible
• Sizeable space requirements
• Astonishingly high prices by today’s measure
IBM 360/50
Software in 1967
• Focus on individual programmer; no concept of software
professional
• No techniques for estimating required effort
• Very beginning of software industry
— Most software bundled with hardware or given away
— Autoflow as first commercial product
• Numerous large critical software projects in trouble
— Led to collective effort to address this problem
The Birth of “Software Engineering”
• Term credited to Prof. Dr. Friedrich (Fritz) Bauer by Brian
Randell, co-editor of first report
• Two NATO-sponsored workshops
— Fall 1968: Garmisch-Partenkirchen
— Fall 1969: Rome
• Mix of academic, industrial, government participants
• Discussion of business and technical topics
Kongresshalle - Garmisch
ICSE 2 – San Francisco
Getting Here from There: Hardware
• Hardware advances enable higher performance, lower costs,
and new types of applications
— Personal computers
— Alphanumeric and bit-mapped displays
— Networking and distributed systems, esp. Ethernet
— Large scale connected storage
— Flash memory
— Mobile devices
— Cloud computing
— Sensors and connected devices
Behind the scenes:
Faster processors
Miniaturization
Cheaper memory
Display technology
Higher bandwidth
Hardware Advances Drive Software
• Personal computers => Consumer-packaged software
• Bit-mapped displays => Windows and GUIs
• Networking and distributed systems => Web and hosted
applications
• Large scale connected storage => Data management
• Touch screen => Tablet and Mobile apps
• Mobile devices => Apps
• Cloud computing => Massive scalable applications
• Sensors and connected devices => Ubiquitous computing
ICSE 8 - London
ICSE 10 – Singapore, 1988
Getting Here from There: Eras
• Programming Methodology (from 1968)
• Software Lifecycle (from 1970)
• What Not How – Requirements and Specifications (from 1976)
• Computer-Aided Software Engineering (from 1980)
• Capability-Maturity Model (from 1988)
• The Web – Everyone’s a User (from 1994)
• Mobile Apps (from 1997)
• Connected World – Ubiquitous Computing (from 2008)
ICSE 12 - Nice
Getting Here from There: Software Themes
• Abstraction
• Modularity and architecture
• Notations
• Development Teams and Processes
• Product Quality
• User Experience
• Reuse
• Tools and Automated Support
• Management: People, Process, Product
ICSE 18 - Berlin
Abstraction
• System software – OS, DBMS, and Networks
• Programming languages – Procedural, Functional
• Objects
— Simula67, Smalltalk
• Frameworks
— MacApp (1985), .NET, J2EE, Angular
— Patterns
• Virtual machines
— Originated with time-sharing in 1960s
• Containers
— Docker, Kubernetes
Modularity and architectures
• Centralized
— Functions and subroutines
• Client-server
• Frameworks and libraries
— Server side – associated with programming languages
— Client side (Angular, React)
• Cloud computing
• Microservices
• Containers and orchestration
ICSE 19 - Boston
Notations
• Programming Languages
— Traditional compilation vs. virtual machine vs. interpreted
— Domain-specific
— FORTRAN to Pascal to C to C++ to Java to Python
— LISP to Haskell and Erlang to Scala
— JavaScript
• Modeling
— Structure Charts
— Entity-Relationship Diagrams
— Dataflow Diagrams
— UML
Development Teams and Processes
• Waterfall
• Iterative development - Spiral model
• OO development
• Agile and Scrum
— Agile Manifesto (2001)
• Continuous development
• DevOps
— Chef, Puppet (2007-8)
ICSE 23 - Toronto
Team Collaboration
• Face to face
• Written specification and design documents
• Email
• IRC
• Video conferencing
• Chat applications
— Slack, Mattermost
Product Quality
• Testing
• Formal methods, verification and assertions
• Non-functional requirements
— Product reliability, performance, scalability
— Security
— Usability
— Installability
— Modifiability
Aspects of Testing
• Acceptance (black box) testing
• Unit testing (white box)
• Stress testing
• Performance testing
• Integration testing
• Regression testing
• Usability testing (many types)
ICSE 26 - Edinburgh
User Experience
• Contextual design
• Technology dependencies
— TTY
— Alphanumeric displays
— GUI
— Web
— Mobile
— "Smart" devices
o Automobiles
o Fitness and health
TTY Output
From	Tony’s	
dissertation
ICSE 28 - Shanghai
Reuse
• Architectures
• Libraries and frameworks
• Code
Software engineers formerly prioritized writing code,
but now prioritize finding existing components, often
free or open source.
Tools and Automated Support
• IDEs
• CASE tools
• Version control and configuration management
• Issue tracking
• User Interface design and prototyping
• Testing
• Collaboration and workflow support
• Integration and DevOps
Software through Pictures (1987)
ICSE 31 - Vancouver
Management: People, Process, Product
• Chief Programmer Teams
• Key Process Areas in CMM
• Agile Management
• Product and Process Metrics
• Communication Processes
• Product Roadmaps
ICSE 32 – Cape Town
Continuous Improvement through Eras
• Early days
— Slow machines required extra attention to performance
— Bespoke code with little reuse and few libraries/frameworks
— Little experience with large development teams
• Today
— Machine and data speeds make up for poorly written code
— Heavy reliance on frameworks and libraries
— Integrated development environments include collaboration
— Decades of experience lead to “best practices”
ICSE 34 – Zürich
Backsliding
• Modern emphasis on coding schools
— Online, e.g., Codecademy
— Coding Bootcamps, e.g., General Assembly
— Everyone’s a programmer, e.g., Girls Who Code
• Hackathons
• Focus on code, not on software engineering or computer
science foundations
ICSE 35 – San Francisco
Key Advances over 50 Years
• Programming methodology, esp. structured programming
• Unix and C
• SEI and software processes
• Linux, MySQL, and open source
• Web browsers w/JavaScript
• Development environments (Visual Studio, Eclipse)
• Abstractions (OO, Libraries, Frameworks, Virtual machines)
• Massive web and cloud applications
• Agile Development
• ”Low code” applications (Content Management, Blogs)
• GitHub and GitLab
ICSE 37 – Florence (Firenze)
What’s Next?
• More new development methods and tools
• Software-related crises
— Autonomous vehicles
— Medical devices
— E-commerce systems
— Major security breaches
— Cyberwar
• Potential licensing/certification of developers working on
critical applications
• Larger government roles
• More hardware advances – quantum computing
ICSE 39 – Buenos Aires
Future Management Challenges
• Project Effort Estimation and Scheduling
• Creating productive teams
• Organizational diversity
• Continuous improvement
ICSE 40 – Gothenburg (Göteborg)
Software as global critical infrastructure
• Economic, political, and social implications
— Importance of tech leadership
— Economic importance of software businesses
— Ability to defend against cyber attacks
— Education for the current and future workforce
• Toward a digital planet with leaders and laggards
ICSE 42 - Seoul
Contact information
Anthony I. (Tony) Wasserman
post: Carnegie Mellon Silicon Valley
Moffett Field, CA 94035 USA
email: tonyw@acm.org
Skype: tony.wasserman
Twitter: twasserman
All	ICSE	location	photos	
by	Tony	Wasserman
All photos by
Tony Wasserman

Fifty Years of Software Engineering

  • 1.
    Fifty Years ofSoftware Engineering Tony Wasserman Carnegie Mellon University Silicon Valley Bay Area ACM 15 November 2017
  • 2.
    Software Today • Massive,highly reliable global applications — Facebook and WhatsApp — Amazon.com — Google Search, Gmail, and YouTube — Netflix — GitHub — WeChat (Weixin) • Millions of mobile apps, mostly for Android and iOS • Highly interconnected platforms, applications, and devices • Inconceivable 50 years ago
  • 3.
    Computing Power -1967 • IBM 360/65 — Processor speed 1.333MHz (A11 about 4000x faster) — Core: up to 1Mb (iPhone 8 about 256,000x more) — Extended storage: up to 8 Mb • Everything was slow — Lots of effort aimed at efficient use of highly constrained resources — Many tasks infeasible • Sizeable space requirements • Astonishingly high prices by today’s measure
  • 4.
  • 5.
    Software in 1967 •Focus on individual programmer; no concept of software professional • No techniques for estimating required effort • Very beginning of software industry — Most software bundled with hardware or given away — Autoflow as first commercial product • Numerous large critical software projects in trouble — Led to collective effort to address this problem
  • 6.
    The Birth of“Software Engineering” • Term credited to Prof. Dr. Friedrich (Fritz) Bauer by Brian Randell, co-editor of first report • Two NATO-sponsored workshops — Fall 1968: Garmisch-Partenkirchen — Fall 1969: Rome • Mix of academic, industrial, government participants • Discussion of business and technical topics
  • 7.
  • 8.
    ICSE 2 –San Francisco
  • 9.
    Getting Here fromThere: Hardware • Hardware advances enable higher performance, lower costs, and new types of applications — Personal computers — Alphanumeric and bit-mapped displays — Networking and distributed systems, esp. Ethernet — Large scale connected storage — Flash memory — Mobile devices — Cloud computing — Sensors and connected devices Behind the scenes: Faster processors Miniaturization Cheaper memory Display technology Higher bandwidth
  • 10.
    Hardware Advances DriveSoftware • Personal computers => Consumer-packaged software • Bit-mapped displays => Windows and GUIs • Networking and distributed systems => Web and hosted applications • Large scale connected storage => Data management • Touch screen => Tablet and Mobile apps • Mobile devices => Apps • Cloud computing => Massive scalable applications • Sensors and connected devices => Ubiquitous computing
  • 11.
    ICSE 8 -London
  • 12.
    ICSE 10 –Singapore, 1988
  • 13.
    Getting Here fromThere: Eras • Programming Methodology (from 1968) • Software Lifecycle (from 1970) • What Not How – Requirements and Specifications (from 1976) • Computer-Aided Software Engineering (from 1980) • Capability-Maturity Model (from 1988) • The Web – Everyone’s a User (from 1994) • Mobile Apps (from 1997) • Connected World – Ubiquitous Computing (from 2008)
  • 14.
  • 15.
    Getting Here fromThere: Software Themes • Abstraction • Modularity and architecture • Notations • Development Teams and Processes • Product Quality • User Experience • Reuse • Tools and Automated Support • Management: People, Process, Product
  • 16.
    ICSE 18 -Berlin
  • 17.
    Abstraction • System software– OS, DBMS, and Networks • Programming languages – Procedural, Functional • Objects — Simula67, Smalltalk • Frameworks — MacApp (1985), .NET, J2EE, Angular — Patterns • Virtual machines — Originated with time-sharing in 1960s • Containers — Docker, Kubernetes
  • 18.
    Modularity and architectures •Centralized — Functions and subroutines • Client-server • Frameworks and libraries — Server side – associated with programming languages — Client side (Angular, React) • Cloud computing • Microservices • Containers and orchestration
  • 19.
    ICSE 19 -Boston
  • 20.
    Notations • Programming Languages —Traditional compilation vs. virtual machine vs. interpreted — Domain-specific — FORTRAN to Pascal to C to C++ to Java to Python — LISP to Haskell and Erlang to Scala — JavaScript • Modeling — Structure Charts — Entity-Relationship Diagrams — Dataflow Diagrams — UML
  • 21.
    Development Teams andProcesses • Waterfall • Iterative development - Spiral model • OO development • Agile and Scrum — Agile Manifesto (2001) • Continuous development • DevOps — Chef, Puppet (2007-8)
  • 22.
    ICSE 23 -Toronto
  • 23.
    Team Collaboration • Faceto face • Written specification and design documents • Email • IRC • Video conferencing • Chat applications — Slack, Mattermost
  • 24.
    Product Quality • Testing •Formal methods, verification and assertions • Non-functional requirements — Product reliability, performance, scalability — Security — Usability — Installability — Modifiability
  • 25.
    Aspects of Testing •Acceptance (black box) testing • Unit testing (white box) • Stress testing • Performance testing • Integration testing • Regression testing • Usability testing (many types)
  • 26.
    ICSE 26 -Edinburgh
  • 27.
    User Experience • Contextualdesign • Technology dependencies — TTY — Alphanumeric displays — GUI — Web — Mobile — "Smart" devices o Automobiles o Fitness and health
  • 28.
  • 29.
    ICSE 28 -Shanghai
  • 30.
    Reuse • Architectures • Librariesand frameworks • Code Software engineers formerly prioritized writing code, but now prioritize finding existing components, often free or open source.
  • 31.
    Tools and AutomatedSupport • IDEs • CASE tools • Version control and configuration management • Issue tracking • User Interface design and prototyping • Testing • Collaboration and workflow support • Integration and DevOps
  • 32.
  • 33.
    ICSE 31 -Vancouver
  • 34.
    Management: People, Process,Product • Chief Programmer Teams • Key Process Areas in CMM • Agile Management • Product and Process Metrics • Communication Processes • Product Roadmaps
  • 35.
    ICSE 32 –Cape Town
  • 36.
    Continuous Improvement throughEras • Early days — Slow machines required extra attention to performance — Bespoke code with little reuse and few libraries/frameworks — Little experience with large development teams • Today — Machine and data speeds make up for poorly written code — Heavy reliance on frameworks and libraries — Integrated development environments include collaboration — Decades of experience lead to “best practices”
  • 37.
    ICSE 34 –Zürich
  • 38.
    Backsliding • Modern emphasison coding schools — Online, e.g., Codecademy — Coding Bootcamps, e.g., General Assembly — Everyone’s a programmer, e.g., Girls Who Code • Hackathons • Focus on code, not on software engineering or computer science foundations
  • 39.
    ICSE 35 –San Francisco
  • 40.
    Key Advances over50 Years • Programming methodology, esp. structured programming • Unix and C • SEI and software processes • Linux, MySQL, and open source • Web browsers w/JavaScript • Development environments (Visual Studio, Eclipse) • Abstractions (OO, Libraries, Frameworks, Virtual machines) • Massive web and cloud applications • Agile Development • ”Low code” applications (Content Management, Blogs) • GitHub and GitLab
  • 41.
    ICSE 37 –Florence (Firenze)
  • 42.
    What’s Next? • Morenew development methods and tools • Software-related crises — Autonomous vehicles — Medical devices — E-commerce systems — Major security breaches — Cyberwar • Potential licensing/certification of developers working on critical applications • Larger government roles • More hardware advances – quantum computing
  • 43.
    ICSE 39 –Buenos Aires
  • 44.
    Future Management Challenges •Project Effort Estimation and Scheduling • Creating productive teams • Organizational diversity • Continuous improvement
  • 45.
    ICSE 40 –Gothenburg (Göteborg)
  • 46.
    Software as globalcritical infrastructure • Economic, political, and social implications — Importance of tech leadership — Economic importance of software businesses — Ability to defend against cyber attacks — Education for the current and future workforce • Toward a digital planet with leaders and laggards
  • 47.
    ICSE 42 -Seoul
  • 48.
    Contact information Anthony I.(Tony) Wasserman post: Carnegie Mellon Silicon Valley Moffett Field, CA 94035 USA email: tonyw@acm.org Skype: tony.wasserman Twitter: twasserman
  • 49.