Coming up: Why worry about SW Engineering? 1 Software Engineering CS 421 / SWE 421 Dan Fleck.

Slides:



Advertisements
Similar presentations
These courseware materials are to be used in conjunction with Software Engineering: A Practitioners Approach, 6/e and are provided with permission by R.S.
Advertisements

Developed by Reneta Barneva, SUNY Fredonia
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.
Lecture 2 1 Introduction to Software Engineering.
Slide Set to accompany Web Engineering: A Practitioner’s Approach
These slides are designed to accompany Software Engineering: A Practitioner’s Approach, 7/e (McGraw-Hill 2009). Slides copyright 2009 by Roger Pressman.1.
1 SWE Introduction to Software Engineering Lecture 3 Introduction to Software Engineering.
SWE Introduction to Software Engineering
CS487 Software Engineering Omar Aldawud
1 Chapter 1 Software and Software Engineering Software Engineering: A Practitioner’s Approach, 6th edition by Roger S. Pressman.
These courseware materials are to be used in conjunction with Software Engineering: A Practitioner’s Approach, 6/e and are provided with permission by.
These courseware materials are to be used in conjunction with Software Engineering: A Practitioner’s Approach, 6/e and are provided with permission by.
Software Engineering Introduction. Why are you here? …alternatively, why do we think you need to be here? Why a course on software engineering? How is.
1 Software Engineering Muhammad Fahad Khan Software Engineering Muhammad Fahad Khan University Of Engineering.
INTROSE Introduction to Software Engineering Raymund Sison, PhD College of Computer Studies De La Salle University Software: Definitions,
Two-dimension view: time (long life) and space (large group)
These slides are designed to accompany Software Engineering: A Practitioner’s Approach, 7/e (McGraw-Hill 2009). Slides copyright 2009 by Roger Pressman.1.
1 Chapter 1 Software and Software Engineering. 2 Scope of Software Engineering Historical Aspects 1968 NATO Conference, Garmisch Aim: to solve the “Software.
1 Software Engineering: A Practitioner’s Approach, 6/e Chapter 1 Software and Software Engineering Software Engineering: A Practitioner’s Approach, 6/e.
These courseware materials are to be used in conjunction with Software Engineering: A Practitioner’s Approach, 6/e and are provided with permission by.
1 Supplementary Slides for Software Engineering: A Practitioner's Approach, 6/e Part 1 Supplementary Slides for Software Engineering: A Practitioner's.
These courseware materials are to be used in conjunction with Software Engineering: A Practitioner’s Approach, 6/e and are provided with permission by.
CPSC 871 John D. McGregor MMS1 Maintenance & a new trend.
Chapter : Introduction to Software Engineering Ref. book : Software Engineering by Roger Pressman.
1 Software Engineering: A Practitioner's Approach R.S. Pressman Textbook.
Chapter 1 Software and Software Engineering. A Quick Quiz 1. What percentage of large projects have excess schedule pressure? 25% 50% 75% 100% 2. What.
Chapter 2 소프트웨어공학 Software Engineering 임현승 강원대학교
These courseware materials are to be used in conjunction with Software Engineering: A Practitioner’s Approach, 6/e and are provided with permission by.
These courseware materials are to be used in conjunction with Software Engineering: A Practitioner’s Approach, 6/e and are provided with permission by.
Software Engineering CS 421 / SWE 421 Kinga Dobolyi
Chapter 2 Process: A Generic View
Object-Oriented Software Engineering Practical Software Development using UML and Java Chapter 1: Software and Software Engineering.
1 These courseware materials are to be used in conjunction with Software Engineering: A Practitioner’s Approach, 5/e and are provided with permission by.
 CS 5380 Software Engineering Chapter 9 Software Evolution.
CS 3610: Software Engineering – Fall 2009 Dr. Hisham Haddad – CSIS Dept. Chapter 1 Software and Software Engineering Discussion of the Software Product.
Object-Oriented Software Engineering Practical Software Development using UML and Java Chapter 1: Software and Software Engineering.
1.1 The Evolving Role of Software
1 Software Engineering CS 421 / SWE 421 Kinga Dobolyi.
1 Chapter 1 The Product. 2 What is Software?  Pressman Instruction (computer programs) Data Structures Documents  Sommerville Software is computer programs.
SWE311_Ch01 (071) Software & Software Engineering Slide 1 Chapter 1 Software and Software Engineering Chapter 1 Software and Software Engineering.
1 Chapter 1 Software and Software Engineering Chapter 1 Software and Software Engineering copyright © 1996, 2001, 2005 R.S. Pressman & Associates, Inc.
These courseware materials are to be used in conjunction with Software Engineering: A Practitioner’s Approach, 6/e and are provided with permission by.
Coming up: Why worry about SW Engineering? 1 Software Engineering CS 421 / SWE 421 Dan Fleck.
Coming up: Why worry about SW Engineering? 1 Software Engineering CS 421 / SWE 421 Dan Fleck.
Software Engineering (CSI 321) Introduction to Software Engineering 1.
Overview: Software and Software Engineering n Software is used by virtually everyone in society. n Software engineers have a moral obligation to build.
Amit Singh Introduction to Software Engineering. What is Software? The product that software professionals build and then support over the long term.
Software Engineering Introduction.
CS223: Software Engineering Lecture 2: Introduction to Software Engineering.
1 These courseware materials are to be used in conjunction with Software Engineering: A Practitioner’s Approach, 5/e and are provided with permission by.
1 These courseware materials are to be used in conjunction with Software Engineering: A Practitioner’s Approach, 5/e and are provided with permission by.
PI2134 Software Engineering IT Telkom.  Software definition  Characteristic of software  Software myths  Software Engineering definition  Generic.
Part 1 Introduction to Software Engineering 1 copyright © 1996, 2001, 2005 R.S. Pressman & Associates, Inc. For University Use Only May be reproduced ONLY.
1 Software Engineering: A Practitioner’s Approach, 6/e Chapter 1 Introduction to Software Engineering.
1 Chapter 1 Software and Software Engineering Software Engineering: A Practitioner’s Approach, 7th edition by Roger S. Pressman.
Chapter 1 The Nature of Software
Chapter 2 Software Engineering
Chapter : Introduction to Software Engineering
Chapter : Introduction to Software Engineering
Software What Is Software?
Chapter 2 Software Engineering
For University Use Only
Overview: Software and Software Engineering
Chapter : Introduction to Software Engineering
Chapter : Introduction to Software Engineering
1.1.1 Software Evolution.
Software Engineering (CSI 321)
What is Software? Software is: (1) instructions (computer programs) that when executed provide desired features, function, and performance; (2) data structures.
Software and Software Engineering
Chapter 2 Software Engineering
Presentation transcript:

Coming up: Why worry about SW Engineering? 1 Software Engineering CS 421 / SWE 421 Dan Fleck

Coming up: Why is it so hard? 2 Why worry about SW Engineering? History of SW failures from History of SW failures from “…Toyota announced a recall of 160,000 of its Prius hybrid vehicles following reports of vehicle warning lights illuminating for no reason, and cars' gasoline engines stalling unexpectedly.” “…Toyota announced a recall of 160,000 of its Prius hybrid vehicles following reports of vehicle warning lights illuminating for no reason, and cars' gasoline engines stalling unexpectedly.” Therac-25 medical accelerator. Software replaces electromechanical safety controls. Operating system race condition kills 5 people Therac-25 medical accelerator. Software replaces electromechanical safety controls. Operating system race condition kills 5 people. November National Cancer Institute, Panama City. Doctors “work-around” software problem that wouldn’t allow them to use 5 radiation shields. Their work-around had unintended consequences that killed 8 patients. Doctor’s indicted for murder. November National Cancer Institute, Panama City. Doctors “work-around” software problem that wouldn’t allow them to use 5 radiation shields. Their work-around had unintended consequences that killed 8 patients. Doctor’s indicted for murder. Many more incidents… Many more incidents…

How many parts? How many parts (on average) make up a car? How many parts (on average) make up a car? How many parts (on average) make up the space shuttle ? How many parts (on average) make up the space shuttle ? How many parts make up my class tracker? How many parts make up my class tracker? How many parts make up a typical OS? How many parts make up a typical OS? 3 14, m 2, libraries 30 million

Coming up: Why is it so hard? (continued) 4 Why is it so hard? Lots of “parts”. Many more than mechanical devices Lots of “parts”. Many more than mechanical devices Dishwasher parts Dishwasher parts Car - 14,000 parts Car - 14,000 parts Space shuttle million parts Space shuttle million parts Red Hat Linux million source lines of code (SLOC) Red Hat Linux million source lines of code (SLOC) Mac Office - 30 million SLOC Mac Office - 30 million SLOC Using 70 programmers = 428,000 SLOC / programmer Using 70 programmers = 428,000 SLOC / programmer But those are big… what about “normal size programs”? But those are big… what about “normal size programs”? Average programmer SLOC (Source lines of code) / day = 100 Average programmer SLOC (Source lines of code) / day = days/week * 52 weeks/year = 26,000 SLOC / year 5 days/week * 52 weeks/year = 26,000 SLOC / year 15 programmer team = 390,000 SLOC / year 15 programmer team = 390,000 SLOC / year

Coming up: Why do projects fail? 5 Why is it so hard? (continued) We’re a young field We’re a young field ENIAC/ MARK-I in 1946 ENIAC/ MARK-I in 1946 FORTRAN FORTRAN But giant - As of 2004, the U. S. Bureau of Labor Statistics counts 760,840 software engineers holding jobs in the U.S.; for comparison, in the U.S. there are some 1.4 million practitioners employed in all other engineering disciplines combined. - But giant - As of 2004, the U. S. Bureau of Labor Statistics counts 760,840 software engineers holding jobs in the U.S.; for comparison, in the U.S. there are some 1.4 million practitioners employed in all other engineering disciplines combined. - Still more art than science Still more art than science Everything we do is “new”. (We don’t build the exact same house 30 times.) Everything we do is “new”. (We don’t build the exact same house 30 times.) Need to have more reproducible results Need to have more reproducible results Need to have more measurements Need to have more measurements

Coming up: How do we fix it? 6 Why do projects fail? Why do projects fail so often? Unrealistic or unarticulated project goals Unrealistic or unarticulated project goals Inaccurate estimates of needed resources Inaccurate estimates of needed resources Badly defined system requirements Badly defined system requirements Poor reporting of the project's status Poor reporting of the project's status Unmanaged risks Unmanaged risks Poor communication among customers, developers, and users Poor communication among customers, developers, and users Use of immature technology Use of immature technology Inability to handle the project's complexity Inability to handle the project's complexity Sloppy development practices Sloppy development practices Poor project management Poor project management Stakeholder politics Stakeholder politics Commercial pressures Commercial pressures List from: How many of these are caused by technical imcompentence in your developers? A.0 B.5 C.8 D.All of them How many of these are caused by technical imcompentence in your developers? A.0 B.5 C.8 D.All of them Question:

Coming up: Software Engineering: A Practitioner’s Approach, 6/e Chapter 1 Software and Software Engineering (Slides modified by Dan Fleck) copyright © 1996, 2001, 2005 R.S. Pressman & Associates, Inc. For University Use Only May be reproduced ONLY for student use at the university level when used in conjunction with Software Engineering: A Practitioner's Approach. Any other reproduction or use is expressly prohibited. 7 How do we fix it? Need to have more reproducible results Need to have more reproducible results Standard processes / procedures to produce good outcomes Standard processes / procedures to produce good outcomes Design patterns Design patterns Object oriented programming (reuse) Object oriented programming (reuse) More measurements of both the software and the process More measurements of both the software and the process More testing at all stages of development More testing at all stages of development By creating a better understanding of the process we use to create software, we’ll create better software faster. By creating a better understanding of the process we use to create software, we’ll create better software faster. “Software engineering is the application of a systematic, disciplined, quantifiable approach to the development, operation, and maintenance of software.” - IEEE Standard Glossary of Software Engineering Terminology

Coming up: Software’s Dual Role 8 Software Engineering: A Practitioner’s Approach, 6/e Chapter 1 Software and Software Engineering (Slides modified by Dan Fleck) Software Engineering: A Practitioner’s Approach, 6/e Chapter 1 Software and Software Engineering (Slides modified by Dan Fleck) copyright © 1996, 2001, 2005 R.S. Pressman & Associates, Inc. For University Use Only May be reproduced ONLY for student use at the university level when used in conjunction with Software Engineering: A Practitioner's Approach. Any other reproduction or use is expressly prohibited.

Coming up: What is Software? 9 Software’s Dual Role Software is a product Software is a product Delivers computing potential Delivers computing potential Produces, manages, acquires, modifies, displays, or transmits information Produces, manages, acquires, modifies, displays, or transmits information Software is a vehicle for delivering a product Software is a vehicle for delivering a product Supports or directly provides system functionality Supports or directly provides system functionality Controls other programs (e.g., an operating system) Controls other programs (e.g., an operating system) Effects communications (e.g., networking software) Effects communications (e.g., networking software) Helps build other software (e.g., software tools) Helps build other software (e.g., software tools)

Coming up: Why is software different than hardware? Or manufacturing? 10 What is Software? Software is a set of items or objects that form a “configuration” that includes programs documents data...

Coming up: What can wear out because of overuse? 11 Why is software different than hardware? Or manufacturing? software is engineered software is engineered software doesn’t wear out software doesn’t wear out software is complex software is complex

What can wear out because of overuse? 1. Mechanical devices 2. Computer Hardware 3. Computer software 4. Michael Phelps Answers: A. 1 A. 1 B. 2 B. 2 C. 3 C. 3 D. 1 & 2 D. 1 & 2 12

Coming up: Software Applications 13 Wear vs. Deterioration

Coming up: Software—New Categories 14 There are many types of applications system software - OS, file management, networking, drivers, etc… system software - OS, file management, networking, drivers, etc… application software - data processing, point of sale, other business functions… application software - data processing, point of sale, other business functions… engineering/scientific software - CAD, stress analysis, orbital mechanics engineering/scientific software - CAD, stress analysis, orbital mechanics embedded software - microwave oven keypad, automobile control, cell phone software, etc… embedded software - microwave oven keypad, automobile control, cell phone software, etc… product-line software - word processing, inventory control, etc… product-line software - word processing, inventory control, etc… WebApps (Web applications) - many different things today WebApps (Web applications) - many different things today AI software - robotics, data mining, expert systems AI software - robotics, data mining, expert systems

Coming up: Software Evolution 15 Legacy Software software must be adapted to meet the needs of new computing environments or technology. software must be adapted to meet the needs of new computing environments or technology. software must be enhanced to implement new business requirements. software must be enhanced to implement new business requirements. software must be extended to make it interoperable with other more modern systems or databases. software must be extended to make it interoperable with other more modern systems or databases. software must be re-architected to make it viable within a network environment software must be re-architected to make it viable within a network environment. Why must it change?

Coming up: Software Myths 16 Software Evolution The Law of Continuing Change (1974): E-type systems must be continually adapted else they become progressively less satisfactory. The Law of Continuing Change (1974): E-type systems must be continually adapted else they become progressively less satisfactory. The Law of Increasing Complexity (1974): As an E-type system evolves its complexity increases unless work is done to maintain or reduce it. The Law of Increasing Complexity (1974): As an E-type system evolves its complexity increases unless work is done to maintain or reduce it. The Law of Self Regulation (1974): The E-type system evolution process is self-regulating with distribution of product and process measures close to normal. The Law of Self Regulation (1974): The E-type system evolution process is self-regulating with distribution of product and process measures close to normal. The Law of Conservation of Organizational Stability (1980): The average effective global activity rate in an evolving E-type system is invariant over product lifetime. The Law of Conservation of Organizational Stability (1980): The average effective global activity rate in an evolving E-type system is invariant over product lifetime. The Law of Conservation of Familiarity (1980): As an E-type system evolves all associated with it, developers, sales personnel, users, for example, must maintain mastery of its content and behavior to achieve satisfactory evolution. The Law of Conservation of Familiarity (1980): As an E-type system evolves all associated with it, developers, sales personnel, users, for example, must maintain mastery of its content and behavior to achieve satisfactory evolution. The Law of Continuing Growth (1980): The functional content of E-type systems must be continually increased to maintain user satisfaction over their lifetime. The Law of Continuing Growth (1980): The functional content of E-type systems must be continually increased to maintain user satisfaction over their lifetime. The Law of Declining Quality (1996): The quality of E-type systems will appear to be declining unless they are rigorously maintained and adapted to operational environment changes. The Law of Declining Quality (1996): The quality of E-type systems will appear to be declining unless they are rigorously maintained and adapted to operational environment changes. The Feedback System Law (1996): E-type evolution processes constitute multi-level, multi-loop, multi-agent feedback systems and must be treated as such to achieve significant improvement over any reasonable base. The Feedback System Law (1996): E-type evolution processes constitute multi-level, multi-loop, multi-agent feedback systems and must be treated as such to achieve significant improvement over any reasonable base. Source: Lehman, M., et al, “Metrics and Laws of Software Evolution—The Nineties View,” Proceedings of the 4th International Software Metrics Symposium (METRICS '97), IEEE, 1997, can be downloaded from:

Coming up: A Generic Framework 17 Software – A.True or B.False? 1. If we get behind schedule we can add more programmers to catch up 2. A general statement of objectives is sufficient to begin writing programs - we can fill in the details later 3. Project requirements change, but change can be easily accommodated because software is flexible 4. Once we write the program and get it working our job is done 5. Software engineering will make us create unnecessary documentation and will invariably slow us down

Coming up: Software Myths 18 Software Myths Affect managers, customers (and other non-technical stakeholders) and practitioners Affect managers, customers (and other non-technical stakeholders) and practitioners Are believable because they often have elements of truth, Are believable because they often have elements of truth, but … Invariably lead to bad decisions, Invariably lead to bad decisions, therefore … Insist on reality as you navigate your way through software engineering Insist on reality as you navigate your way through software engineering One of the goals in this class is to learn you how to determine what reality is!

Fixing the problem Software engineering! Software engineering is really just a set of ideas and tools to use (when it makes sense) to give you a higher liklihood of success on a software project. Software engineering is really just a set of ideas and tools to use (when it makes sense) to give you a higher liklihood of success on a software project. Will your project fail if you don’t use any software engineering techniques? No…. but you have a better chance at success if you do. Will your project fail if you don’t use any software engineering techniques? No…. but you have a better chance at success if you do. 19

Coming up: A Generic Framework 20 A Generic Framework Communication Communication Heavy collaboration with the customer, other stakeholders and encompasses requirements gathering and related activities Heavy collaboration with the customer, other stakeholders and encompasses requirements gathering and related activities Planning Planning Establish a plan for the work. Technical task to be conducted, risks, needed resources, work products to be created, and a schedule Establish a plan for the work. Technical task to be conducted, risks, needed resources, work products to be created, and a schedule Modeling Modeling Creation of models to allow the customer and the developer to better understand the requirements and design that will achieve those requirements Creation of models to allow the customer and the developer to better understand the requirements and design that will achieve those requirements Construction Construction Combines code generation and testing required to uncover errors in the code Combines code generation and testing required to uncover errors in the code Deployment Deployment The software (as a complete entity or partially complete increment) is delivered to the customer who evaluates it and provides feedback. The software (as a complete entity or partially complete increment) is delivered to the customer who evaluates it and provides feedback.