1 History of software engineering Software is everywhere –buying bread, driving car, washing clothes –synonyms: programs, applications People, who develop.

Slides:



Advertisements
Similar presentations
Ch.1 Introduction to Software Engineering The Evolution 1.1 The Evolving Role of Software 1/15 In the early days: User Computer Software = Place a sequence.
Advertisements

Using MIS 2e Chapter 10: Managing Development David Kroenke
2 Software life span models Stages through which software goes, from conception to death Stages may be very different Software = product –stages are similar.
©Ian Sommerville 2004Software Engineering, 7th edition. Chapter 4 Slide 1 Software Processes.
Lecture # 2 : Process Models
Object-Oriented Software Development CS 3331 Fall 2009.
Unit 2. Software Lifecycle
HCI in the software process Chapter 6
CS3500 Software Engineering Legacy Systems (1) Legacy systems are software (and sometimes hardware) systems that have been developed sometime in the past.
ISNE101 Dr. Ken Cosh. Recap  We’ve been talking about Software…  Application vs System Software  Programming Languages  Vs Natural Languages  Syntax,
INFORMATION TECHNOLOGY IN BUSINESS AND SOCIETY SESSION 20 – HOW SOFTWARE IS MADE SEAN J. TAYLOR.
Software Processes Coherent sets of activities for specifying, designing, implementing and testing software systems.
Alternate Software Development Methodologies
The Mythical Man-Month By: Zac Lippard CS 470. What is the “Man-Month”? This is the idea that men and months are interchangeable between each other. This.
© 2012 Václav Rajlich Software Engineering: The Current Practice Ch Initial development First stage in software lifespan Makes the fundamental.
CS 3500 SE - 1 Software Engineering: It’s Much More Than Programming! Sources: “Software Engineering: A Practitioner’s Approach - Fourth Edition” Pressman,
The Mythical Man-Month by Fred Brooks (I) Published 1975, Republished 1995 Experience managing the development of OS/360 in Central Argument –Large.
No Silver Bullet - Essence and Accident in Software Engineering By: R. Adam Mead.
No Silver Bullet “There is no single development, in either technology or management technique, which by itself promises even one order-of magnitude improvement.
1 CS 425/625 Software Engineering CS 425/625 Software Engineering Software Processes Based on Chapter 4 of the textbook [SE-7] Ian Sommerville, Software.
Software Engineering About the Course Software Engineering Qutaibah Malluhi Computer Science and Engineering Department Qatar University.
CS 425/625 Software Engineering Software Processes
Software Development Overview CPSC 315 – Programming Studio Spring 2009.
Software Development Overview CPSC 315 – Programming Studio Spring 2008.
©Ian Sommerville 2004Software Engineering, 7th edition. Chapter 4 Slide 1 Software Processes.
Chapter 1 The Systems Development Environment
Chapter 6 View Alignment Techniques and Method Customization (Part I) Object-Oriented Technology From Diagram to Code with Visual Paradigm for UML Curtis.
Chapter 1 The Systems Development Environment
Software Development Process
Chapter 1 The Systems Development Environment
Software Processes Sumber dari : cc.ee.ntu.edu.tw/~farn/courses/SE/ch4.ppt.
PROJECT MILESTONES Group Presentations: ~ 5 mins presentations.
Software Engineering Lecture 20 Software Maintenance.
©Ian Sommerville 2004Software Engineering, 7th edition. Chapter 4 Slide 1 Software Processes.
©Ian Sommerville 2000, Mejia-Alvarez 2009 Slide 1 Software Processes l Coherent sets of activities for specifying, designing, implementing and testing.
©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 1 Slide 1 Software Processes (Chapter 3)
Software Processes lecture 8. Topics covered Software process models Process iteration Process activities The Rational Unified Process Computer-aided.
Ch.1 1 Software Engineering A Preview Chapter 1. Ch.1 2 Outline My Background Definitions of software engineering (SE) Historical origins of SE SE as.
(C) 2005 Václav Rajlich 1 Software Evolution and Agile Development Václav Rajlich Department of Computer Science Wayne State University Detroit, Michigan.
Object-Oriented Software Engineering Practical Software Development using UML and Java Chapter 1: Software and Software Engineering.
June 05 David A. Gaitros Jean Muhammad Introduction to OOD and UML Dr. Jean Muhammad.
SOFTWARE ENGINEERING Chapter 1. Introduction We can’t run the modern world without software. Why? Discussion….
Software Development Overview CPSC 315 – Programming Studio Spring 2013.
Chapter 2: Software Maintenance Omar Meqdadi SE 3860 Lecture 2 Department of Computer Science and Software Engineering University of Wisconsin-Platteville.
Pertemuan 1 Introduction to Software Engineering Mata kuliah: T0144 – Advanced Topics in Software Engineering Tahun: 2010.
CS223: Software Engineering Lecture 2: Introduction to Software Engineering.
©Ian Sommerville 2006Software Engineering, 8th edition. Chapter 4 Slide 1 Software Processes.
Chapter 1: Introduction Omar Meqdadi SE 3860 Lecture 1 Department of Computer Science and Software Engineering University of Wisconsin-Platteville.
Software Engineering, 8th edition. Chapter 4 1 Courtesy: ©Ian Sommerville 2006 FEB 13 th, 2009 Lecture # 5 Software Processes.
Software Development. The Software Life Cycle Encompasses all activities from initial analysis until obsolescence Analysis of problem or request Analysis.
1 SYS366 Week 2 - Lecture Visual Modeling and Process.
Laurea Triennale in Informatica – Corso di Ingegneria del Software I – A.A. 2006/2007 Andrea Polini II. Software Life Cycle.
Software Engineering cosc 4359 Spring 2017.
Software Development.
Software Development Overview
Introduction Edited by Enas Naffar using the following textbooks: - A concise introduction to Software Engineering - Software Engineering for students-
The Waterfall Methodology
Software Processes (a)
CS 425/625 Software Engineering Software Processes
Software Engineering PPT By :Dr. R. Mall.
Software Processes.
Introduction to Software Engineering
Introduction Edited by Enas Naffar using the following textbooks: - A concise introduction to Software Engineering - Software Engineering for students-
Paul Ammann The Agile Heresy: What Drives Traditional Software Engineering, and Why Agile Turns it Upside Down Paul Ammann.
Software Testing and Maintenance Maintenance and Evolution Overview
UFCE8V-20-3 Information Systems Development SHAPE Hong Kong 2010/11
CS310 Software Engineering Lecturer Dr.Doaa Sami
Software Processes.
Software Development Overview
Presentation transcript:

1 History of software engineering Software is everywhere –buying bread, driving car, washing clothes –synonyms: programs, applications People, who develop the software –software engineers, software developers, programmers –they possess skills and tools that allow them to develop and evolve software © 2012 Václav Rajlich Software Engineering: The Current Practice Ch. 11

Difficulties that programmers face Accidental difficulties –difficulties of current/ past/ future technologies –quirks of the operating systems, compilers, languages, processes –they come and go Essential difficulties of software –subset of essential (defining) properties –no easy answers to essential difficulties !!! © 2012 Václav Rajlich Software Engineering: The Current Practice Ch. 12

Essential difficulties Invisibility senses cannot be easily used in comprehension visualizations, sonifications, require lots of work Complexity programs are among most complex systems ever created our short-term memory accommodates only ~7 things Changeability software is constantly changing yesterday’s comprehension may be obsolete © 2012 Václav Rajlich Software Engineering: The Current Practice Ch. 13

Essential difficulties, cont. Conformity –Large system (hardware, users, domain) –The program glues it all together, reflects the large system –This adds even more complexity Discontinuity –People easily understand linear or semi-linear systems: shower –Software is discontinuous, small change of input can result in huge change of output: password © 2012 Václav Rajlich Software Engineering: The Current Practice Ch. 14

Software engineering Set of recommendations how to develop software –“software” is a result of “software engineering” A discipline with a considerable body of knowledge and considerable importance in both academia and industry © 2012 Václav Rajlich Software Engineering: The Current Practice Ch. 15

Beginning of software Software separated from the hardware in 1950’s –emerged as a distinct technology –became independent product Original programmers recruited from the ranks of hardware engineers and mathematicians –used ad-hoc techniques from their former fields © 2012 Václav Rajlich Software Engineering: The Current Practice Ch. 16

Paradigm Thomas S. Kuhn –“The Structure of Scientific Revolutions” Paradigm –“Coherent tradition of scientific research” includes law, theory, application, instrumentation, terminology, research agenda, textbooks, norms, curricula, culture of the field… not only the ideas, but also investment –currently overused “object oriented paradigm”, etc. © 2012 Václav Rajlich Software Engineering: The Current Practice Ch. 17

Anomaly “Anomaly is an important fact that directly contradicts the old paradigm” Dilemma: disregard anomaly vs. paradigm shift –to shift paradigm means to abandon large part of the investment –the anomaly must be compelling © 2012 Václav Rajlich Software Engineering: The Current Practice Ch. 18

Paradigm shift Discontinuity in the development of the discipline (revolution) –Kuhn collected extensive historical data on paradigm shift –phlogiston - > oxygen in 1770’s Lavoisier © 2012 Václav Rajlich Software Engineering: The Current Practice Ch. 19

Resistance to paradigm shift Advantages of the new paradigm is in dispute –attempts are made to extend old paradigm to accommodate anomalies –band-aid approaches try to fix old paradigm Knowledge and investment accumulated up to that point may lose its significance –some knowledge may be completely lost (knowledge of color of the chemical compounds) Final victory of the new paradigm guaranteed by a generation change Unsuccessful attempts at paradigm shift © 2012 Václav Rajlich Software Engineering: The Current Practice Ch. 110

Paradigm shift of ~ 1970 Anomaly –Previous techniques did not scale up –Brooks: “Mythical Man-Month” –demands of the new operating system OS/360 taxed the limits of the programmers, project managers, and the resources of the IBM corporation Paradigm shift established discipline of software engineering –dealt with complexity of software –software design established as an important consideration –introduced the waterfall metaphor © 2012 Václav Rajlich Software Engineering: The Current Practice Ch. 111

Waterfall metaphor (linear process) Used in construction and manufacturing –collect the requirements –create a design –follow the design during the entire construction –transfer finished product to the user –solve residual problems through maintenance Intuitively appealing metaphor –good design avoids the expensive late rework –waterfall became the dominant paradigm © 2012 Václav Rajlich Software Engineering: The Current Practice Ch. 112

Exponential cost of change major contributor to software cost © 2012 Václav Rajlich Software Engineering: The Current Practice Ch. 113

Waterfall model Requirements Design Implementation Maintenance transfer to the user © 2012 Václav Rajlich Software Engineering: The Current Practice Ch. 114

Waterfall paradigm Elaborate up-front activities –BDUF (Big Design Up Front) Textbooks –Still largely based on the waterfall © 2012 Václav Rajlich Software Engineering: The Current Practice Ch. 115

Anomaly of Requirements volatility 30% or more requirements may change during development (Cusumano and Selby) –this is the direct result of the team’s learning process and software interoperability Caper-Jones: Requirements for IT change at a rate 2 – 3% per month © 2012 Václav Rajlich Software Engineering: The Current Practice Ch. 116

Standish group anomaly In 1995 –31% of all software projects were cancelled –53% were “challenged” (completed only with great difficulty, with large cost or time overruns, or substantially reduced functionality) –only 16% could be called successful Obviously, the waterfall metaphor did not solve the problems of software development © 2012 Václav Rajlich Software Engineering: The Current Practice Ch. 117

Band-Aid: Anticipation of changes If changes can be anticipated at design time, they can be controlled by a parameterization, encapsulations, etc. –waterfall model still can be used Experience confirms: – many changes are not anticipated by the original designers – inability to change software quickly and reliably means that business opportunities are lost –only a band-aid solution © 2012 Václav Rajlich Software Engineering: The Current Practice Ch. 118

Band-Aid: Prototyping Create a prototype to capture requirements Problem: volatility continues after prototype has been completed Another band-aid © 2012 Václav Rajlich Software Engineering: The Current Practice Ch. 119

Paradigm shift of ~ 2000 New life span models emphasize software evolution –staged model of software lifespan –based on data from long-lived systems Iterative development –Rational Unified Process Agile development –SCRUM –Extreme programming © 2012 Václav Rajlich Software Engineering: The Current Practice Ch. 120

Summary of paradigms The waterfall paradigm tried to freeze requirements for the duration of software development –led to too many project failures The new paradigm emphasizes software evolution –interoperability and complexity cause volatility volatility is a consequence of essential properties © 2012 Václav Rajlich Software Engineering: The Current Practice Ch. 121

All three paradigms currently coexist Ad hoc paradigm still used by some single programmers programming as an art rather than engineering example: small games Waterfall works if there is no volatility small or short-lived projects unusually stable requirements and environments some managers still insist on it Evolutionary paradigm is the mainstream © 2012 Václav Rajlich Software Engineering: The Current Practice Ch. 122