1 Introduction to Software Engineering Outline Lecture 1

  • Slides: 31
Download presentation
1. Introduction to Software Engineering

1. Introduction to Software Engineering

Outline Lecture 1 What is software Software is Everywhere Software Crisis and Software Failures

Outline Lecture 1 What is software Software is Everywhere Software Crisis and Software Failures From Software Development to Software Engineering Development Activities Software Engineering

1. What is software Software Engineering

1. What is software Software Engineering

1. 1 Software vs. Hardware - the physical components of the computer Software -

1. 1 Software vs. Hardware - the physical components of the computer Software - programs that run on the hardware The first general-purpose electronic computer, ENIAC Glen Beck (background) and Betty Snyder (foreground) program the ENIAC in BRL building 328. (U. S. Army photo) After the program was figured out on paper, the process of getting the program "into" the ENIAC by manipulating its switches and cables took additional days. Software Engineering

Woman and Software Engineering Ada Lovelace(1815 -1852) The First Programmer Grace Murray Hopper (1906

Woman and Software Engineering Ada Lovelace(1815 -1852) The First Programmer Grace Murray Hopper (1906 -1992) The Inventor of Cobol Software Engineering

1. 2 Software Types System Software • It includes the Operating System and all

1. 2 Software Types System Software • It includes the Operating System and all the utilities that enable the computer to function. Application Software • It includes programs that do real work for user. Open Source Software • It is computer software whose source code is available under a license that permits users to use, change, and improve the software, and to redistribute it in modified or unmodified form Proprietary Software (non-free software ) • It is software with restrictions on using, copying and modifying as enforced by the proprietor. Restrictions on use, modification and copying is achieved by either legal or technical means and sometimes both. Software Engineering

What is software? Computer programs, associated documentation and configuration data Software products may be

What is software? Computer programs, associated documentation and configuration data Software products may be developed for a particular customer or may be developed for a general market Software products may be • Generic - developed to be sold to a range of different customers • Bespoke (custom) - developed for a single customer according to their specification Software Engineering

1. 4 Software Characteristics Software is developed or engineered, it is not manufactured in

1. 4 Software Characteristics Software is developed or engineered, it is not manufactured in the classical sense Software doesn’t wear out Failure Rate Wear out Failure Rate Increased failure rate due to side effects Actual curve Infant mortality Change Time Idealized curve Time Although the industry is moving toward componentbased assembly, most software continues to be custom built Software Engineering

2. Software is everywhere Software Engineering

2. Software is everywhere Software Engineering

Computer Software More and more systems are software controlled Software is sold by retail

Computer Software More and more systems are software controlled Software is sold by retail Software Engineering

The economies of ALL developed nations are dependent on software Software engineering expenditure represents

The economies of ALL developed nations are dependent on software Software engineering expenditure represents a significant fraction of total spends in all developed countries Software Engineering

3. Software Crisis and Software Failures Software Engineering

3. Software Crisis and Software Failures Software Engineering

3. 1 Software Crisis The difficulty of writing correct, understandable, and verifiable computer programs

3. 1 Software Crisis The difficulty of writing correct, understandable, and verifiable computer programs Software Engineering

3. 2 Software Failures We waste billions of dollars each year on entirely preventable

3. 2 Software Failures We waste billions of dollars each year on entirely preventable mistakes Sources: Business Week, CEO Magazine, Computerworld, Info. Week, Fortune, The New York Times, Time, and The Wall Street Journal. Software Engineering

Software Disasters 20 Famous Software Disasters Source: http: //www. devtopics. com/20 -famous-software-disasters/ 1. Mariner

Software Disasters 20 Famous Software Disasters Source: http: //www. devtopics. com/20 -famous-software-disasters/ 1. Mariner Bugs Out (1962) Cost: $18. 5 million Disaster: The Mariner 1 rocket with a space probe headed for Venus diverted from its intended flight path shortly after launch. Mission Control destroyed the rocket 293 seconds after liftoff. Cause: A programmer incorrectly transcribed a handwritten formula into computer code, missing a single superscript bar. Without the smoothing function indicated by the bar, the software treated normal variations of velocity as if they were serious, causing faulty corrections that sent the rocket off course Software Engineering

15. Y 2 K (1999) Cost: $500 billion Disaster: One man’s disaster is another

15. Y 2 K (1999) Cost: $500 billion Disaster: One man’s disaster is another man’s fortune, as demonstrated by the infamous Y 2 K bug. Businesses spent billions on programmers to fix a glitch in legacy software. While no significant computer failures occurred, preparation for the Y 2 K bug had a significant cost and time impact on all industries that use computer technology. Cause: To save computer storage space, legacy software often stored the year for dates as two digit numbers, such as “ 99″ for 1999. The software also interpreted “ 00″ to mean 1900 rather than 2000, so when the year 2000 came along, bugs would result. Software Engineering

Blue Screen of Death (or BSOD) refers to the error message displayed in Microsoft

Blue Screen of Death (or BSOD) refers to the error message displayed in Microsoft Windows operating systems. During the presentation of a Windows 98 beta at COMDEX in April 1998, the demo computer crashed as one of the assistants tried to connect a scanner in demonstrating the Windows support for Plug & Play devices. With the BSo. D message on slideshow display, the audience had a big laughter and applauded, to which Mr. Gates responded: “That must be why we’re not shipping Windows 98 yet. ” Software Engineering

These problems will become worse because of the pervasive use of software in our

These problems will become worse because of the pervasive use of software in our civic infrastructure. Software Engineering

 Factors of software development Factors affecting the success of software development • Complexity:

Factors of software development Factors affecting the success of software development • Complexity: • The problem domain is difficult • The development process is very difficult to manage • Software offers extreme flexibility • Software is a discrete system – Continuous systems have no hidden surprises (Parnas) – Discrete systems have! Software Engineering

Change: • The “Entropy” of a software system increases with each change: Each implemented

Change: • The “Entropy” of a software system increases with each change: Each implemented change erodes the structure of the system which makes the next change even more expensive (“Second Law of Software Dynamics”). • As time goes on, the cost to implement a change will be too high, and the system will then be unable to support its intended task. This is true of all systems, independent of their application domain or technological base. Software Engineering

Iron Triangle Software Engineering

Iron Triangle Software Engineering

Iron Triangle What happens when you break the triangle? 1) The project gets canceled.

Iron Triangle What happens when you break the triangle? 1) The project gets canceled. 15% of projects are cancelled before they deliver a system. A study of 1, 027 IT projects cited scope management related to serial practices as the single largest contributing factor to project failure in 82% of the projects and was given a overall weighted failure influence of 25%. Software Engineering 2

Iron Triangle What happens when you break the triangle? 2) The Project is deliver

Iron Triangle What happens when you break the triangle? 2) The Project is deliver late, over budget, or both According to the Chaos Report 51% of projects are challenged (severely over budget and/or late), with an average cost overrun of 43%. Software Engineering

Iron Triangle What happens when you break the triangle? 3) The Project delivers poor

Iron Triangle What happens when you break the triangle? 3) The Project delivers poor quality software. When development teams are forced to deliver more functionality than they have time or resources for, they are often motivated to take short cuts which inevitably result in poor quality. Software Engineering 2

Iron Triangle What happens when you break the triangle? 4) The project under delivers.

Iron Triangle What happens when you break the triangle? 4) The project under delivers. The team fails to deliver all of the required functionality. Software Engineering 2

Iron Triangle… What to do about it? Recognize that the iron triangle must be

Iron Triangle… What to do about it? Recognize that the iron triangle must be respected. So Vary the Scope Vary the Schedule Vary the Resources Vary two or more factors Software Engineering

4. From Software Development to Software Engineering

4. From Software Development to Software Engineering

4. 1 Towards the engineering of software development How to develop high quality software

4. 1 Towards the engineering of software development How to develop high quality software under the constraints of time and cost? • software development skill training • Qualified developers recruitment • Development process reengineering • …. We need a systematic approach Software Engineering

4. 2 Software Engineering: • The application of a systematic, disciplined, quantifiable approach to

4. 2 Software Engineering: • The application of a systematic, disciplined, quantifiable approach to the development, operation, and maintenance of software, and the study of these approaches; that is, the application of engineering to software. (IEEE Computer Society’s Software Engineering Body of Knowledge ) Software Engineering

4. 3 Understand the Software Engineering 1. It is a modeling activity • Model:

4. 3 Understand the Software Engineering 1. It is a modeling activity • Model: an abstract representation of a system • Software engineers need to understand the environment in which the system has to operate • Software engineers need to understand the systems they could build, to evaluate different solutions and trade-offs Software Engineering

Thanks shengbin@cs. sjtu. edu. cn

Thanks shengbin@cs. sjtu. edu. cn