Essence and Accident in Software Engineering By: Mike Hastings.

Slides:



Advertisements
Similar presentations
Software Engineering - Specifications 1 Specifications Specification document must be clear, complete and correct.
Advertisements

Ch:8 Design Concepts S.W Design should have following quality attribute: Functionality Usability Reliability Performance Supportability (extensibility,
Systems Development Environment
Object-Oriented Software Development CS 3331 Fall 2009.
© Chinese University, CSE Dept. Software Engineering / Software Engineering Topic 1: Software Engineering: A Preview Your Name: ____________________.
CS 325: Software Engineering January 13, 2015 Introduction Defining Software Engineering SWE vs. CS Software Life-Cycle Software Processes Waterfall Process.
INFORMATION TECHNOLOGY IN BUSINESS AND SOCIETY SESSION 20 – HOW SOFTWARE IS MADE SEAN J. TAYLOR.
CS540 Software Design Lecture 1 1 Lecture 1: Introduction to Software Design Anita S. Malik Adapted from Budgen (2003) Chapters 1.
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.
What is Software Engineering? And why is it so hard?
Readings in Computer Science: Software Engineering No Silver Bullet Essence and Accidents of Software Engineering Frederick P. Brooks, Jr. Prepared by.
Access 2007 Product Review. With its improved interface and interactive design capabilities that do not require deep database knowledge, Microsoft Office.
© Prentice Hall CHAPTER 9 Application Development by Information Systems Professionals.
No Silver Bullet Essence and Accidents of Software Engineering By Frederick P. Brooks Frederick P. Brooks Presentation by Yan Qi
R R R CSE870: Advanced Software Engineering (Cheng): Intro to Software Engineering1 Advanced Software Engineering Dr. Cheng Overview of Software Engineering.
1 Reusability and Portability Xiaojun Qi. 2 Reuse Concepts Reuse is the use of components of one product to facilitate the development of a different.
“No Silver Bullet” by F. Brooks
Computer Engineering 203 R Smith Agile Development 1/ Agile Methods What are Agile Methods? – Extreme Programming is the best known example – SCRUM.
Marakas: Decision Support Systems, 2nd Edition © 2003, Prentice-Hall Chapter Chapter 1: Introduction to Decision Support Systems Decision Support.
SOFTWARE CRISIS SOLUTIONS? © University of LiverpoolCOMP 319slide 1.
Software System Integration
1 CS101 Introduction to Computing Lecture 19 Programming Languages.
©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 8 Slide 1 Software Prototyping l Rapid software development to validate requirements l.
1.Database plan 2.Information systems plan 3.Technology plan 4.Business strategy plan 5.Enterprise analysis Which of the following serves as a road map.
Chapter 1 Database Systems. Good decisions require good information derived from raw facts Data is managed most efficiently when stored in a database.
© Paradigm Publishing Inc Chapter 12 Programming Concepts and Languages.
1. Human – the end-user of a program – the others in the organization Computer – the machine the program runs on – often split between clients & servers.
2 1 Chapter 2 Data Model Database Systems: Design, Implementation, and Management, Sixth Edition, Rob and Coronel.
PROGRAMMING LANGUAGES The Study of Programming Languages.
1 Integrated Development Environment Building Your First Project (A Step-By-Step Approach)
S/W Project Management Software Process Models. Objectives To understand  Software process and process models, including the main characteristics of.
Comp 245 Data Structures Software Engineering. What is Software Engineering? Most students obtain the problem and immediately start coding the solution.
1 BTEC HNC Systems Support Castle College 2007/8 Systems Analysis Lecture 9 Introduction to Design.
No Silver Bullet – Essence and Accident in Software Engineering.
Architecture Business Cycle
1 SYS366 Lecture 1: Introduction to Systems. 2 What is Software Development? Software Development implies developing some software – but it does not involve.
No Silver Bullet. CS460 - Senior Design Project I (AY2004)2 No silver bullet "No Silver Bullet" –– a paper by Fred Brooks, Professor of Computer Science.
1 No Silver Bullet Brooks rides again…. 2 Essential Difficulties What are these “essential difficulties” that Brooks is referring to? Complexity Conformity.
2Object-Oriented Analysis and Design with the Unified Process The Requirements Discipline in More Detail  Focus shifts from defining to realizing objectives.
Software Engineering Introduction and Overview Takes customer-defined goals and constraints and derives a representation of function, performance, interfaces,
Odyssey A Reuse Environment based on Domain Models Prepared By: Mahmud Gabareen Eliad Cohen.
Chapter 12: Systems Investigation and Analysis. Agenda  How to Develop a CBIS?  Systems Development Life Cycle (SDLC)  Prototyping  Join Application.
1 Systems Analysis and Design in a Changing World, Thursday, January 18, 2007.
Slide 2.1 CHAPTER 2 THE SOFTWARE PROCESS. Slide 2.2 Overview l Client, Developer, and User l Requirements Phase l Specification Phase l Design Phase l.
PROC-1 1. Software Development Process. PROC-2 A Process Software Development Process User’s Requirements Software System Unified Process: Component Based.
ECE450 - Software Engineering II1 ECE450 – Software Engineering II Today: Introduction to Software Architecture.
No Silver Bullet – Essence and Accident “Not only are there no silver bullets now in view, the very nature of software makes it unlikely that there will.
“No Silver Bullet”. No Silver Bullet  "No Silver Bullet" –– a paper by Fred Brooks, Professor of Computer Science at University of North Carolina in.
Chapter 6 CASE Tools Software Engineering Chapter 6-- CASE TOOLS
Software Prototyping Rapid software development to validate requirements.
Connecting with Computer Science2 Objectives Learn how software engineering is used to create applications Learn some of the different software engineering.
Topic 4 - Database Design Unit 1 – Database Analysis and Design Advanced Higher Information Systems St Kentigern’s Academy.
By David Sanders Title Explanation  Werewolves are quite terrifying, simply because they transform unexpectedly into horrors. To kill werewolves,
CS3320-Chap21 Office Hours TR 1:00-2:15 PM W 2:30-3:30 PM By appointment.
1 CP586 © Peter Lo 2003 Multimedia Communication Multimedia Development Team.
CS223: Software Engineering Lecture 18: The XP. Recap Introduction to Agile Methodology Customer centric approach Issues of Agile methodology Where to.
5. 2Object-Oriented Analysis and Design with the Unified Process Objectives  Describe the activities of the requirements discipline  Describe the difference.
THE PHOENIX ARCHITECTURE A New Approach to Student Satellite Software Riley Pack University of Colorado at Boulder.
Week 1 Reference (chapter 1 in text book (1)) Dr. Fadi Fayez Jaber Updated By: Ola A.Younis Decision Support System.
Software Design and Development Development Methodoligies Computing Science.
PRESENTATION 2 CS 5391 Survey of Software Engineering Chang-Ho Lee No Silver Bullet: Essence and Accidents of Software Engineering By Frederick P. Brooks,
Advanced Software Engineering Dr. Cheng
Object Oriented Systems Design
Fred Brooks - A Software Engineering Icon - “No Silver Bullet”
Informatics 43 – March 31, 2016.
Tools of Software Development
UFCE8V-20-3 Information Systems Development SHAPE Hong Kong 2010/11
“No Silver Bullet” by F. Brooks
Presentation transcript:

Essence and Accident in Software Engineering By: Mike Hastings

 “There is no single development, in either technology or management technique, which by itself promises even one order-of-magnitude improvement within a decade in productivity, in reliability, in simplicity.” Frederick P. Brooks, Jr. (1995)  Software Projects = Werewolves  Innocent but capable of becoming a monster  No Silver Bullets in Site

 Inherent  Data sets, Relationships among data items, Algorithms, Invocations of functions  Complexity  Conformity  Changeability  Invisibility

 No two parts are alike  Scaling up requires increase in elements  Results  Communication issues  Unreliability  Usage difficulties  Side effects from expansion

 Must adapt to the minds of various people  Must adapt with a variety of applications

 Constant pressures for change  Software is infinitely malleable  All software changes  Users find new uses  New hardware forces change

 Unvisualizable  No floor plans  Cannot display geometrically  Robs the mind of powerful tools  Leading cause of communication issues

 Not inherent  Three steps that attacked major difficulties  High-level Languages  Time Sharing  Unified Programming Environments

 What do they accomplish?  Frees up most accidental complexity  User friendly language  Disregards problems from the machine level

 Shortens system response time  Allows for thought retention

 Integrated libraries  Unified file formats  Pipes and filters  Helped develop whole toolbenches  Universal tools

 Ada – a high-level language of the 1980’s  Pros  Improvements in language concepts  Focused on step-by-step solutions  Encourages modern design  Cons  Just another high-level language  Low payoff after accidental complexity removal

 Two ideas – Abstract & Hierarchial  Pros  Avoids displaying unnecessary syntax  Allows a higher-order-sort of design  Cons  Makes no change to essential complexity of the design

 Pros  Using computers to solve problems only humans used to solve  Cons  Deciding what to say, not saying it

 Pros  Use of human experts to develop rules of thumb  Inference Engine & Rule Base to solve problems  Cons  Difficult to develop  Knowledge acquisition EXPERT SYSTEMS

 Pros  Solving a problem from problem specifications  Already proven to work  Cons  The solution method is usually required, not the problem

 Pros  Applying computer graphics to software design  Flowchart construction  Cons  Flow charts are poor abstractions  Today’s screens are too small  Software is difficult to visualize

 Pros  Error elimination in design phase  Secure operating system kernels  Cons  Does not save labor  Does not mean error proof

 Pros  Use of integrated databases to track details  Cons  Only marginal gains in efficiency

 Pros  Faster processing time  Cons  Still crippled by human "think time"

 Attacks on accidental difficulties are limited by the productivity equation: Time of Task = ∑ (Frequency) x (Time)  Conceptual components are time consuming  Attacks must then address the essence of software problems

 Do not construct it at all  Increase in products available for purchase  Delivery is immediate  Sharing cuts per-user cost  Adapt operation processes

 Decide what to build  Technical requirements  Interfaces  Obtain product requirements  Rapid prototyping  Simulates interfaces  Performs main functions  Minimizes hardware, and cost constraints

 The brain is grown, not built  Software should be similar  Incremental development  Make it run  Top-down growing design  Allows for easy backtracking  Lends itself to early prototypes  New functions grow organically  Easier for teams to grow than build

 Great designs come from great designers  Software construction is a creative process  Can empower the creative mind  Great designers are rare  How to grow great designers  Identify them early  Assign a career mentor  Devise a development plan  Allow them to interact with other growing designers

 Most accidental difficulties have been addressed  Focus on improving essential difficulties  Exploiting the mass market  Using rapid prototyping  Growing software organically  Developing great conceptual designers