motivation computer programs and associated documentation software products may be developed for a...

59
Introduction to Software Engineering

Upload: arleen-ward

Post on 29-Dec-2015

215 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Motivation  Computer programs and associated documentation  Software products may be developed for a particular customer or may be developed for a

Introduction toSoftware Engineering

Page 2: Motivation  Computer programs and associated documentation  Software products may be developed for a particular customer or may be developed for a

Motivation

Page 3: Motivation  Computer programs and associated documentation  Software products may be developed for a particular customer or may be developed for a

What is software?

Computer programs and associated documentation

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› Custom - developed for a single customer according

to their specification

Page 4: Motivation  Computer programs and associated documentation  Software products may be developed for a particular customer or may be developed for a

What is Good Software?

Software has number of attributes which decide whether it is a good or bad

. The definition of a good software changes with the person who evaluates

it. The software is required by the customer , used by the end users of an

organization and developed by software engineer . Each one will evaluate

the different attributes differently in order to decide whether the software

is good.

Page 5: Motivation  Computer programs and associated documentation  Software products may be developed for a particular customer or may be developed for a

What are the attributes of good software?

The software should deliver the required functionality and performance to the user and should be maintainable, dependable and usable.

• Maintainability› Software must evolve to meet changing needs

Dependability› Software must be trustworthy

Efficiency› Software should not make wasteful use of system resources

Usability› Software must be usable by the users for which it was designed

Page 6: Motivation  Computer programs and associated documentation  Software products may be developed for a particular customer or may be developed for a

Software - Characteristics

Software has a dual role. It is a product, but also a vehicle for delivering a product.

Software is a logical rather than a physical system element.

Software has characteristics that differ considerably from those of hardware.

- Software is developed or engineered, it is not manufactured in the classical sense.

- Software doesn’t “wear out”.

- Most software is custom-built, rather than being assembled from existing components.

Page 7: Motivation  Computer programs and associated documentation  Software products may be developed for a particular customer or may be developed for a

Types of Software

System Software- A collection of programs written to service other programs at system level.

For example, compiler, operating systems.

Real-time Software- Programs that monitor/analyze/control real world events as they occur.

Business Software- Programs that access, analyze and process business information.

Engineering and Scientific Software - Software using “number crunching” algorithms for different science and applications. System simulation, computer-aided design.

Page 8: Motivation  Computer programs and associated documentation  Software products may be developed for a particular customer or may be developed for a

Types of Software

Embedded Software-: Embedded software resides in read-only memory and is used to control

products and systems for the consumer and industrial markets. It has very limited and esoteric functions and control capability.

Artificial Intelligence (AI) Software: Programs make use of AI techniques and methods to solve complex

problems. Active areas are expert systems, pattern recognition, games

Page 9: Motivation  Computer programs and associated documentation  Software products may be developed for a particular customer or may be developed for a

Types of Software

Internet Software : Programs that support internet accesses and applications. For

example, search engine, browser, e-commerce software, authoring tools.

Software Tools and CASE environment : Tools and programs that help the construction of application software and systems. For example, test tools,

version control tools.

Page 10: Motivation  Computer programs and associated documentation  Software products may be developed for a particular customer or may be developed for a

Software can have a hugeimpact in any aspect of society.

Importance of software

Page 11: Motivation  Computer programs and associated documentation  Software products may be developed for a particular customer or may be developed for a

Where can you find software?

Page 12: Motivation  Computer programs and associated documentation  Software products may be developed for a particular customer or may be developed for a

Some popular ones…

Page 13: Motivation  Computer programs and associated documentation  Software products may be developed for a particular customer or may be developed for a

Some popular ones…

Page 14: Motivation  Computer programs and associated documentation  Software products may be developed for a particular customer or may be developed for a

Some popular ones…

Page 15: Motivation  Computer programs and associated documentation  Software products may be developed for a particular customer or may be developed for a

And even in…

Page 16: Motivation  Computer programs and associated documentation  Software products may be developed for a particular customer or may be developed for a

Conclusion

Software is Almost Everywhere.

Page 17: Motivation  Computer programs and associated documentation  Software products may be developed for a particular customer or may be developed for a
Page 18: Motivation  Computer programs and associated documentation  Software products may be developed for a particular customer or may be developed for a
Page 19: Motivation  Computer programs and associated documentation  Software products may be developed for a particular customer or may be developed for a
Page 20: Motivation  Computer programs and associated documentation  Software products may be developed for a particular customer or may be developed for a

Can you develop this?

Page 21: Motivation  Computer programs and associated documentation  Software products may be developed for a particular customer or may be developed for a

•The final Software doesn´t fulfill the needs of the customer.

•Hard to extend and improve: if you want to add a functionality later is mission impossible.

•Bad documentation.

•Bad quality: frequent errors, hard to use, ...

•More time and costs than expected

Common issues

Page 22: Motivation  Computer programs and associated documentation  Software products may be developed for a particular customer or may be developed for a
Page 23: Motivation  Computer programs and associated documentation  Software products may be developed for a particular customer or may be developed for a

But

That never happens,

right?

Page 24: Motivation  Computer programs and associated documentation  Software products may be developed for a particular customer or may be developed for a

Wrong!

Page 25: Motivation  Computer programs and associated documentation  Software products may be developed for a particular customer or may be developed for a

Problems in software development

Page 26: Motivation  Computer programs and associated documentation  Software products may be developed for a particular customer or may be developed for a

Requirements

Software

Limitations of Non-engineered Software

Here is the problem!!

Page 27: Motivation  Computer programs and associated documentation  Software products may be developed for a particular customer or may be developed for a

Software Production has a Poor Track Record Example: Space Shuttle Software

Cost: $10 Billion, millions of dollars more than planned Time: 3 years late Quality: First launch of Columbia was cancelled because of a

synchronization problem with the Shuttle's 5 onboard computers. › Error was traced back to a change made 2 years earlier when a

programmer changed a delay factor in an interrupt handler from 50 to 80 milliseconds.

› The likelihood of the error was small enough, that the error caused no harm during thousands of hours of testing.

Substantial errors still exist.› Astronauts are supplied with a book of known software problems

"Program Notes and Waivers".

Page 28: Motivation  Computer programs and associated documentation  Software products may be developed for a particular customer or may be developed for a

Ariane 5 Flight 501

Cause: design errors in the software

Page 29: Motivation  Computer programs and associated documentation  Software products may be developed for a particular customer or may be developed for a

Chaos Report

Page 30: Motivation  Computer programs and associated documentation  Software products may be developed for a particular customer or may be developed for a

It is not enough to do your best: you must Know what to do, and THEN do your best.-- W. Edwards Deming

Conclusion

Programming is NOT enough!

Page 31: Motivation  Computer programs and associated documentation  Software products may be developed for a particular customer or may be developed for a

And Since…

A clever person solves a problem.A wise person avoids it.- Albert Einstein

Page 32: Motivation  Computer programs and associated documentation  Software products may be developed for a particular customer or may be developed for a

Solution

Page 33: Motivation  Computer programs and associated documentation  Software products may be developed for a particular customer or may be developed for a

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. -Wikipedia

What is it?

Page 34: Motivation  Computer programs and associated documentation  Software products may be developed for a particular customer or may be developed for a

???

Page 35: Motivation  Computer programs and associated documentation  Software products may be developed for a particular customer or may be developed for a

Software Engineering

The study and application of methodologies to develop quality software that fulfill customer needs.

What is it?

Page 36: Motivation  Computer programs and associated documentation  Software products may be developed for a particular customer or may be developed for a

Software Engineering

“A systematic approach to the analysis, design, implementation and maintenance of software.”

(The Free On-Line Dictionary of Computing) “ The systematic application of tools and techniques in the development

of computer-based applications.”

(Sue Conger in The New Software Engineering) “ Software Engineering is about designing and developing high-quality

software.”

(Shari Lawrence Pfleeger in Software Engineering -- The Production of Quality Software)

Page 37: Motivation  Computer programs and associated documentation  Software products may be developed for a particular customer or may be developed for a

What is Software Engineering?

Although hundreds of authors have developed personal definitions of software engineering, a definition proposed by Fritz Bauer[NAU69] provides a basis:

“[Software engineering is] the establishment and use of sound engineering principles in order to obtain economically software that is reliable and works efficiently on real machines.”

The IEEE [IEE93] has developed a more comprehensive definition when it states:

“Software Engineering: (1) The application of a systematic, disciplined, quantifiable approach to the development, operation, and maintenance of software; that is, the application of engineering to software. (2) The study of approaches as in (1).”

Page 38: Motivation  Computer programs and associated documentation  Software products may be developed for a particular customer or may be developed for a

Software Engineering

The study of approaches as in Application of a systematic, disciplined, quantifiable approach to the development, operation and maintenance of software; that is, the application of engineering to software. (IEEE 93)

Page 39: Motivation  Computer programs and associated documentation  Software products may be developed for a particular customer or may be developed for a

• By “Systematic” we mean Following a well-defined sequence of activities,

- in which desired outputs (deliverables) are well-defined

- by using well-defined inputs(i.e. documented syntax, semantics, context and other relevant properties of the input)

- in a well-defined process (e.g. using organizational standards for interprocess communication, data formats, error handling etc.)

- whose outputs are in turn used similarly as inputs in subsequent process(es),

- until the final output is achieved,

- and where the correctness of the output is verifiable. Note: The “inputs” and “outputs” most often refer to requirements, software specifications, the software itself, documentation, test inputs/outputs and similar software artifacts.Back

Page 40: Motivation  Computer programs and associated documentation  Software products may be developed for a particular customer or may be developed for a

Software Engineering - Introduction 40

By “disciplined” we mean:

Each process is followed using organizational principles (e.g. who manages whom, who is responsible for what?),

Intermediate results are carefully documented, as well as final results,

Actions are traceable as to their causes, individuals involved, time of occurrence and circumstances.

Back

Page 41: Motivation  Computer programs and associated documentation  Software products may be developed for a particular customer or may be developed for a

Software Engineering - Introduction 41

By “quantifiable” we mean:

The size and extent of the required effort

(size of output code, data, documentation, manpower, duration, budget for development, expected error rate and user support)

are predictable within justifiable and acceptable bounds

Page 42: Motivation  Computer programs and associated documentation  Software products may be developed for a particular customer or may be developed for a

What is the difference between software engineering and computer science?

Computer science is concerned with theory and fundamentals; software engineering is concerned with the practicalities of developing and delivering useful software

Computer science theories are currently insufficient to act as a complete underpinning for software engineering

Page 43: Motivation  Computer programs and associated documentation  Software products may be developed for a particular customer or may be developed for a

Software EngineeringObjective

To produce software that is:

• On time: is deliver at the established date.

• Reliable: doesn´t crash.

• Complete: good documentation, fulfill customer needs.

Page 44: Motivation  Computer programs and associated documentation  Software products may be developed for a particular customer or may be developed for a

The team

Page 45: Motivation  Computer programs and associated documentation  Software products may be developed for a particular customer or may be developed for a

Stages for software development

Requirements Analysis

Software Design

Implementation

Testing

Maintenance

Page 46: Motivation  Computer programs and associated documentation  Software products may be developed for a particular customer or may be developed for a

1. Requirements Analysis

Find out what the client want the software to do

Page 47: Motivation  Computer programs and associated documentation  Software products may be developed for a particular customer or may be developed for a

2. Design

Planning the software solution

Page 48: Motivation  Computer programs and associated documentation  Software products may be developed for a particular customer or may be developed for a

3. Implementation

Code!!!

Page 49: Motivation  Computer programs and associated documentation  Software products may be developed for a particular customer or may be developed for a

4. Testing

Executing the application trying to find software bugs

Page 50: Motivation  Computer programs and associated documentation  Software products may be developed for a particular customer or may be developed for a

5. Maintenance

Any activity oriented to change an existing software product.

Page 51: Motivation  Computer programs and associated documentation  Software products may be developed for a particular customer or may be developed for a
Page 52: Motivation  Computer programs and associated documentation  Software products may be developed for a particular customer or may be developed for a
Page 53: Motivation  Computer programs and associated documentation  Software products may be developed for a particular customer or may be developed for a
Page 54: Motivation  Computer programs and associated documentation  Software products may be developed for a particular customer or may be developed for a
Page 55: Motivation  Computer programs and associated documentation  Software products may be developed for a particular customer or may be developed for a
Page 56: Motivation  Computer programs and associated documentation  Software products may be developed for a particular customer or may be developed for a

Why Software Engineering?

Major Goals:- To increase software productivity and quality.

- To effectively control software schedule and planning.

- To reduce the cost of software development.

- To meet the customers’ needs and requirements.

- To enhance the conduction of software engineering process.

- To improve the current software engineering practice.

- To support the engineers’ activities in a systematic and efficient manner.

Page 57: Motivation  Computer programs and associated documentation  Software products may be developed for a particular customer or may be developed for a

Programming versus Software Engineering

Programming 1. The process of translating a problem from its physical environment

into a language that a computer can understand and obey. (Webster’s New World Dictionary of Computer Terms)

2. The art of debugging a blank sheet of paper. 3. A pastime similar to banging one's head against a wall, but with

fewer opportunities for rewards. (2 and 3 from The New Hacker’s Dictionary)

Software Engineering (according to Fritz Bauer)

“The establishment and use of sound engineering principles in order to obtain economically software that is reliable and works efficiently on real machines.”

Page 58: Motivation  Computer programs and associated documentation  Software products may be developed for a particular customer or may be developed for a

What is the difference between software engineering and computer science?

Computer Science Software Engineering

is concerned with

Computer science theories are currently insufficient to act as a complete underpinning for software engineering, BUT it is a

foundation for practical aspects of software engineering

theory fundamentals

the practicalities of developing delivering useful software

Page 59: Motivation  Computer programs and associated documentation  Software products may be developed for a particular customer or may be developed for a

What is the difference between software engineering and system engineering?

Software engineering is part of System engineering System engineering is concerned with all aspects of computer-based

systems development including › hardware, › software and › process engineering

System engineers are involved in

system specification

architectural design

integration and deployment