Скачать презентацию Introduction to Software Engineering Software is hard Скачать презентацию Introduction to Software Engineering Software is hard

5369b6cf0b19e8d96a876e3e2cdf2b3e.ppt

  • Количество слайдов: 36

Introduction to Software Engineering “Software is hard. ” ---Donald Knuth Introduction to Software Engineering “Software is hard. ” ---Donald Knuth

Context and motivation for course topics Context and motivation for course topics

Software is pervasive throughout our economy and culture • Modern civilization runs on software. Software is pervasive throughout our economy and culture • Modern civilization runs on software. • Nearly all of the products, services and innovations that power the industrialized world depend on software. • If you aren’t amazed by the extent to which our economy and culture depend on software, I’ll forgive you because software is largely invisible. You can’t see it. You can only experience it indirectly. Let’s make it tangible.

For Example • Did you know there is a ton of software in the For Example • Did you know there is a ton of software in the average luxury car? • No, I mean that literally. The average luxury car contains almost 100 million lines of code. • Printed and bound, 100 million lines of code weighs over 3, 000 lbs or 1. 5 tons!

Printed out, the software contained in a premium automobile is enough to fully cover Printed out, the software contained in a premium automobile is enough to fully cover a two-lane highway for 13. 5 miles

The Demand for Software is Strong and Growing • • • Moore’s Law Software The Demand for Software is Strong and Growing • • • Moore’s Law Software replacing hardware Product differentiation with software Open Source Growing interest in mobile devices (smart phones, tablet computers, etc. ) (Post-PC era) • Autonomous Vehicles

Average Industry Performance Isn’t Flattering Results from the 2011 Standish Survey Average Industry Performance Isn’t Flattering Results from the 2011 Standish Survey

Project performance by methodology Project performance by methodology

Industry Progress Industry Progress

Larger projects are much more prone to failure than smaller ones Larger projects are much more prone to failure than smaller ones

Defects by application size Defects by application size

Spectacular Failures are Particularly Worrisome • Ariane-5 • Denver International Airport baggage handling system Spectacular Failures are Particularly Worrisome • Ariane-5 • Denver International Airport baggage handling system • Patriot Missile • Therac-25 – • Add to this list the terrible tragedy of _____ in 20__.

Why do projects fail? • Estimation error. Projects that are estimated poorly are doomed Why do projects fail? • Estimation error. Projects that are estimated poorly are doomed from the start. • Performance failure – Poor planning (bad methodology choice) – Incorrect and optimistic status reporting – Unrealistic schedule pressure – New and changing requirements during development – Inadequate quality control – Poor communication

Why do projects fail? [Cont] • Perceived failure is the sum of estimation failure Why do projects fail? [Cont] • Perceived failure is the sum of estimation failure and performance failure.

The difficulties in software development are rooted in the fundamental nature of software • The difficulties in software development are rooted in the fundamental nature of software • Intangibility – software is not far removed from pure thought stuff [Brooks]. • Complexity – Software is dynamic – Software automates complex processes (lower bound for complexity) – Software has a greater number of discrete states than any other human artifact and transitioning between these states is not a smooth and continuous process [tbd: find Fred Brooks ref] – Software complexity and project complexity grows more than linearly with size of product and size of team (see next slide) • Changeability – software is soft which leads to change requests • Scalability – projects don’t scale up easily.

Software complexity and project complexity grows more than linearly with size of product and Software complexity and project complexity grows more than linearly with size of product and size of team

Software is not constrained by physical laws or the properties of materials. The software Software is not constrained by physical laws or the properties of materials. The software equivalent of the following is just the starting point for many applications.

No Silver Bullet • In 1987 Fred Brooks wrote an influential paper entitled “No No Silver Bullet • In 1987 Fred Brooks wrote an influential paper entitled “No Silver Bullet—Essence and Accidents of Software Engineering”. • In this paper he argues, “there is no single development, in either technology or management technique, which by itself promises even one order of magnitude [tenfold] improvement within a decade in productivity, in reliability, in simplicity”

Silver Bullet Syndrome • Silver Bullet Syndrome = expecting exceptional productivity gains from one Silver Bullet Syndrome • Silver Bullet Syndrome = expecting exceptional productivity gains from one tool or technique. – – – – Switch from batch programming to online terminals 3 Rd generation languages Case Tools AI OOP Ruby on Rails Process improvement initiatives and methodologies (CMMI, Agile Methods, TQM, etc. ) – Software Craftsmanship – Frameworks!

Essence and Accidents • To make his point, Fred Brooks, makes the distinction between Essence and Accidents • To make his point, Fred Brooks, makes the distinction between two types of difficulties associated with software development: – Essential Difficulties – Accidental Difficulties • Most of what software engineers now do is devoted to the essential. • Essential complexities aren’t easily resolved. For example, you can address accidental complexity of memory leaks by switching to a language that supports garbage collection. There is no instant resolution to the problem of eliciting requirements or creating a flexible design.

Accidental Complexities • The accidental complexities of software development are consequential to the tangible Accidental Complexities • The accidental complexities of software development are consequential to the tangible form of the solution, what you might call self-inflicted problems. If you choose Java as your implementation language, you will have to deal with the complications—large and small—that go along with programming in Java (e. g. how to convert a string to an int, how to read data from a file, etc. ). • Examples of accidental complexities: – Expressing conceptual constructs with a programming language – Learning to use IDE’s such as Visual Studio and Eclipse – Learning to use configuration management tools such as SVN Git and ant gradle. – Testing the fidelity of the representation – Special tricks need to get C preprocessor macros to work correctly. For example, needing to wrap do { … }while(0) around statements in a macro definition in order to preserve the semantics when a semicolon is added after the macro use.

Essential Complexities • Essential complexities are inherent in the problem. They can’t be avoided. Essential Complexities • Essential complexities are inherent in the problem. They can’t be avoided. • Examples: – Defining precisely what to build – Coming up with the conceptual construct of the solution – Validating the problem definition and solution construct

History of Software Engineering 1968 NATO Conference on Software Engineering History of Software Engineering 1968 NATO Conference on Software Engineering

Software Engineering • Software engineering is “the application of a systematic, disciplined, quantifiable approach Software Engineering • Software engineering is “the application of a systematic, disciplined, quantifiable approach to the development, operation, and maintenance of software, that is, the application of engineering to software” [IEEE]

What is Engineering? • Engineers apply science and technology to develop costeffective solutions to What is Engineering? • Engineers apply science and technology to develop costeffective solutions to practical problems. • The Accreditation Board for Engineering and Technology (ABET) defines Engineering as: “The profession in which a knowledge of the mathematical and natural sciences gained by study, experience, and practice is applied with judgment to develop ways to utilize, economically, the materials and forces of nature for the benefit of mankind” • Engineering disciplines have a core body of knowledge or underlying science that can be used to solve practical problems. For example, chemical engineering has chemistry and electrical engineering has math and physics.

Simple Quiz for better understanding accidental and essential complexities. • For each of the Simple Quiz for better understanding accidental and essential complexities. • For each of the following 4 quotes, indicate whether it was a statement made during the 1968 conference on software engineering or the 2011 conference on software engineering.

A. “The discussions were recorded by several reporters and most were also recorded on A. “The discussions were recorded by several reporters and most were also recorded on magnetic tape. ” B. “There is probably no single ‘correct’ order in which to take a series of design decisions, though some orderings can usually be agreed to be better than others. Almost invariably some early decisions, thought at the time to have been clearly correct, will turn out to have been premature. ” C. “Few large systems have been written in high-level languages. This is not surprising since there are inevitable penalties in size and performance of compiled code, and these factors have been paramount in people’s minds. ” D. “Users are interested in systems requirements and buy systems in that way. But that implies that they are able to say what they want. Most of the users aren’t able to. ”

Success with Software is Possible • There are organizations that are succeeding with their Success with Software is Possible • There are organizations that are succeeding with their software development efforts. Being successful with software means: – Having the ability to give accurate estimates that get more precise over time – Delivering on schedule and within budget – Being able to control software quality – Satisfied customers – High morale among staff members – High productivity

No Universal Solutions • No one solution is appropriate for all projects No Universal Solutions • No one solution is appropriate for all projects

Important Factors in Project Success • • • Management experience Technical staff experience Appropriate Important Factors in Project Success • • • Management experience Technical staff experience Appropriate quality control measures Stable requirements Component reuse Use of specialists Use of appropriate methodologies Use of appropriate estimating techniques and tools Use of appropriate planning techniques and tools Formal progress tracking Experienced clients Adequate tools

Software Engineering Software Engineering

Software • “Computer programs, procedures, and possibly associated documentation and data pertaining to the Software • “Computer programs, procedures, and possibly associated documentation and data pertaining to the operation of a computer system. ”

Stop here Stop here

Characteristics of successful practice looks a lot like engineering • • Disciplined Systematic Quantitative Characteristics of successful practice looks a lot like engineering • • Disciplined Systematic Quantitative Growing body of knowledge that can be applied in a systematic way • Applying well-understood knowledge to solve practical problems

Economic value of software to companies • Companies invest in software in order to: Economic value of software to companies • Companies invest in software in order to: – Reduce cost, and/or – Increase revenue

Software Categories • It is important to be aware of the different types of Software Categories • It is important to be aware of the different types of software. A technique or methodology that works well for the development of one type of software could be a disaster when used in the production of another type of software. The categories are: – – – Shrink-wrapped or packaged software Custom or bespoke software Consultingware Embedded software Throwaway or one-off programs