Software Engineering Topics Computer science v. software - - PowerPoint PPT Presentation

software engineering topics
SMART_READER_LITE
LIVE PREVIEW

Software Engineering Topics Computer science v. software - - PowerPoint PPT Presentation

Software Engineering Topics Computer science v. software engineering Definition of software engineering Types of software The nature of software Software history and the software crisis Software quality Elements of


slide-1
SLIDE 1

Software Engineering

slide-2
SLIDE 2

Topics

  • Computer science v. software engineering
  • Definition of software engineering
  • Types of software
  • The nature of software
  • Software history and the “software crisis”
  • Software quality
  • Elements of a software engineering discipline
  • Software development personnel
  • Software development process models
slide-3
SLIDE 3

Science vs. Engineering

The difference between science and engineering:

– Science seeks to explain phenomena through theory,

hypothesis, and experiment, in an effort to ascertain natural laws

  • For example, chemistry investigates the structure of

chemicals and their interactions

– Engineering seeks to apply natural laws to the solution

  • f practical problems
  • For example, chemical engineering might use the results of

chemistry to come up with a better way of refining gasoline

slide-4
SLIDE 4

Computer Science as a Science

  • Theory:

– Computability, automata, discrete computational

structures

– Algorithm analysis

  • Hypothesis:

– That a certain algorithm will solve a problem

  • Experiment:

– Run a program implementing the algorithm

slide-5
SLIDE 5

Computer Science as a Science (cont'd)

Computer Science

Theory of Computation Algorithms & Data Structures Programming Languages

. . .

Theory Hypothesis Experiment

slide-6
SLIDE 6

Adding a Customer

Customer Problem

Requirements

Computer Science

Theory of Computation Algorithms & Data Structures Programming Languages

. . .

slide-7
SLIDE 7

The Difference Between Computer Science and Software Engineering

Computer Science

Theory of Computation Algorithms & Data Structures Programming Languages

. . . Customer Software Engineering Problem Tools and Techniques to Solve Problem

slide-8
SLIDE 8

Definition of Software Engineering

The process of solving customers’ problems by the systematic development and evolution of large, high-quality software systems within cost, time and

  • ther constraints.
slide-9
SLIDE 9

Solving Customers’ Problems

  • This is the goal of software engineering
  • Sometimes the solution is to buy, not build
  • Adding unnecessary features does not help solve

the problem

  • Software engineers must communicate effectively

to identify and understand the problem

slide-10
SLIDE 10

Definition of Software Engineering (again)

The process of solving customers’ problems by the systematic development and evolution of large, high-quality software systems within cost, time and

  • ther constraints.
slide-11
SLIDE 11

Systematic Development and Evolution

  • An engineering process involves applying well

understood techniques in an organized and disciplined way

  • Many well-accepted practices have been formally

standardized

– e.g. by the IEEE or ISO

  • Most development work is evolution
slide-12
SLIDE 12

Definition of Software Engineering (again)

The process of solving customers’ problems by the systematic development and evolution of large, high-quality software systems within cost, time and

  • ther constraints.
slide-13
SLIDE 13

Large, High-Quality Software Systems

  • Software engineering techniques are needed

because large systems cannot be completely understood by one person

  • Teamwork and co-ordination are required
  • Key challenge: Dividing up the work and

ensuring that the parts of the system work properly together

  • The end-product that is produced must be of

sufficient quality

slide-14
SLIDE 14

Definition of Software Engineering (again)

The process of solving customers’ problems by the systematic development and evolution of large, high-quality software systems within cost, time and

  • ther constraints.
slide-15
SLIDE 15

Cost, Time and Other Constraints

  • Finite resources
  • The benefit must outweigh the cost
  • Others are competing to do the job cheaper and

faster

  • Inaccurate estimates of cost and time have caused

many project failures

slide-16
SLIDE 16

Types of Software

  • Custom

– For a specific customer

  • Generic

– Sold on open market – Often called “COTS” (commercial off-the-shelf) or

“shrink-wrapped”

  • Embedded

– Built into hardware – Hard to change

slide-17
SLIDE 17

More Types of Software

  • Real time

– E.g., control and monitoring systems – Must react immediately – Safety often a concern

  • Data-processing

– Used to run businesses – Accuracy and security of data are key

slide-18
SLIDE 18

The Nature of Software

  • Software is intangible

– Hard to understand development effort

  • Software is easy to reproduce

– Cost is in its development – in other engineering products, manufacturing is the

costly stage

  • The industry is labor-intensive

– Hard to automate

slide-19
SLIDE 19

The Nature of Software (cont'd)

  • Untrained people can hack something together

– Quality problems are hard to notice

  • Software is easy to modify

– People make changes without fully understanding it

  • Software does not ‘wear out’

– Deteriorates through design change that increases its

complexity and decreases its maintainability

slide-20
SLIDE 20

The Nature of Software (cont'd)

  • Conclusions

– Much software has poor design and is getting worse – Demand for software is high and rising – We are in a perpetual ‘software crisis’ – We have to learn to ‘engineer’ software

slide-21
SLIDE 21

History of the Role of Software

  • In the 1950's software development was de-

emphasized, because it only contributed to about 20% of overall system cost

slide-22
SLIDE 22

History of the Role of Software

  • In the 1950's software development was de-

emphasized, because it only contributed to about 20% of overall system cost

  • Programmers moved from machine language, to

assembly language, to high-level language

slide-23
SLIDE 23

History of the Role of Software

  • In the 1950's software development was de-

emphasized, because it only contributed to about 20% of overall system cost

  • Programmers moved from machine language, to

assembly language, to high-level language

  • In 1968, a NATO report coined the term

"software engineering"

slide-24
SLIDE 24

History of the Role of Software

  • In the 1950's software development was de-

emphasized, because it only contributed to about 20% of overall system cost

  • Programmers moved from machine language, to

assembly language, to high-level language

  • In 1968, a NATO report coined the term "software

engineering"

  • Hardware became faster and cheaper, outpacing

the ability of software to keep up

slide-25
SLIDE 25

History of the Role of Software

  • In the 1950's software development was de-

emphasized, because it only contributed to about 20% of overall system cost

  • Programmers moved from machine language, to

assembly language, to high-level language

  • In 1968, a NATO report coined the term "software

engineering"

  • Hardware became faster and cheaper, outpacing

the ability of software to keep up

  • By the 1980's the software cost of a system had

risen to 80%, and many experts pronounced the field "in crisis"

slide-26
SLIDE 26

Elements of the Continuing Software Crisis

  • Software is not delivered on time
slide-27
SLIDE 27

Elements of the Continuing Software Crisis

  • Software is not delivered on time
  • Software is over budget (usually by a factor of 2 or

more) Dramatic example: in the early 1980's the IRS hired Sperry to automate tax form processing for $103

  • million. By 1985 the cost had tripled, the system

could not handle the workload, and it had to be replaced.

slide-28
SLIDE 28

Elements of the Continuing Software Crisis

  • Software is not delivered on time
  • Software is over budget (usually by a factor of 2 or

more) Dramatic example: in the early 1980's the IRS hired Sperry to automate tax form processing for $103

  • million. By 1985 the cost had tripled, the system

could not handle the workload, and it had to be replaced.

  • Software is too complex. Complexity does not scale

linearly: a 1000 line program is more than 10 times as complex as a 100 line program

slide-29
SLIDE 29

Elements of the Software Crisis (cont'd)

  • Software is unmaintainable due to:

– poor design – poor documentation (most software can be understood

  • nly by its author, and then only within a few months
  • f writing it)
slide-30
SLIDE 30

Elements of the Software Crisis (cont'd)

  • Software is unmaintainable due to:

– poor design – poor documentation (most software can be understood

  • nly by its author, and then only within a few months
  • f writing it)
  • Software is inefficient (new versions of complex

software require machine upgrades)

slide-31
SLIDE 31

Elements of the Software Crisis (cont'd)

  • Software is unmaintainable due to:

– poor design – poor documentation (most software can be understood

  • nly by its author, and then only within a few months
  • f writing it)
  • Software is inefficient (new versions of complex

software require machine upgrades)

  • Software is unreliable due to:

– poor design (Therac-25 disaster) – inadequate testing (market pressures, beta releases) – impossible testing (SDI)

slide-32
SLIDE 32

Elements of a Software Engineering Discipline

1 Abstraction: Identifying hierarchical classes of

  • bjects to reason about, ignoring detail
slide-33
SLIDE 33

Elements of a Software Engineering Discipline

1 Abstraction: Identifying hierarchical classes of

  • bjects to reason about, ignoring detail

2 Analysis and Design Methods and Notations:

For example, use of design patterns and UML

slide-34
SLIDE 34

Elements of a Software Engineering Discipline

1 Abstraction: Identifying hierarchical classes of

  • bjects to reason about, ignoring detail

2 Analysis and Design Methods and Notations:

For example, use of design patterns and UML

3 User Interface Prototyping: To help user and

developer agree on requirements and software functions

slide-35
SLIDE 35

Elements of a Software Engineering Discipline

1 Abstraction: Identifying hierarchical classes of

  • bjects to reason about, ignoring detail

2 Analysis and Design Methods and Notations: For

example, use of design patterns and UML

3 User Interface Prototyping: To help user and

developer agree on requirements and software functions

4 Software Architecture: striving for independence

  • f parts through modularity
slide-36
SLIDE 36

Elements of a Software Engineering Discipline (cont'd)

1 Software Process (see later)

slide-37
SLIDE 37

Elements of a Software Engineering Discipline (cont'd)

1 Software Process (see later) 2 Reuse: Not just of software, but also sets of

requirements, parts of designs, or groups of test scripts

slide-38
SLIDE 38

Elements of a Software Engineering Discipline (cont'd)

1 Software Process (see later) 2 Reuse: Not just of software, but also sets of

requirements, parts of designs, or groups of test scripts

3 Measurement: Trying to quantify project goals

to evaluate progress (for example, number of bugs per 100 lines of code)

slide-39
SLIDE 39

Elements of a Software Engineering Discipline (cont'd)

1 Software Process (see later) 2 Reuse: Not just of software, but also sets of

requirements, parts of designs, or groups of test scripts

3 Measurement: Trying to quantify project goals to

evaluate progress (for example, number of bugs per 100 lines of code)

4 Tools and Integrated Environments: For

example, CASE (computer-aided software engineering) tools

slide-40
SLIDE 40

Software Engineering Stakeholders

  • Users

– Those who use the software

  • Customers

– Those who pay for the software

  • Software developers
  • Development managers

Software quality means different things to different stakeholders.

slide-41
SLIDE 41

The Goal of Software Engineering: Software Quality

Three perspectives on software quality:

1)Manager view: does product conform to a good process, and does it meet specs? (externally measured)

slide-42
SLIDE 42

The Goal of Software Engineering: Software Quality

Three perspectives on software quality:

1)Manager view: does product conform to a good process, and does it meet specs? (externally measured) 2)User/customer view: product characteristics measured by fitness for purpose, e.g., correctness, reliability, maintainability (externally measured)

slide-43
SLIDE 43

The Goal of Software Engineering: Software Quality

Three perspectives on software quality:

1)Manager view: does product conform to a good process, and does it meet specs? (externally measured) 2)User/customer view: product characteristics measured by fitness for purpose, e.g., correctness, reliability, maintainability (externally measured) 3)Developer view: quality measured by internal characteristics (software "metrics") thought to be indicators of good external characteristics

slide-44
SLIDE 44

User/Customer Views of Quality

Correctness Reliability Efficiency Integrity Usability Maintainability Testability Flexibility Portability Reusability Interoperability

slide-45
SLIDE 45

Developer Views of Quality

Completeness Consistency Accuracy Error tolerance Execution efficiency Storage efficiency Access control Operability Training Communicativeness Simplicity Conciseness Instrumentation Self-descriptiveness Expandability Generality Modularity Software system independence Machine independence Communications commonality Data commonality

slide-46
SLIDE 46

Relating the Views

Correctness Reliability Efficiency Integrity Usability Maintainability Testability Flexibility Portability Reusability Interoperability Completeness Consistency Accuracy Error tolerance Execution efficiency Storage efficiency Access control Operability Training Communicativeness Simplicity Conciseness Instrumentation Self-descriptiveness Expandability Generality Modularity Software system independence Machine independence Communications commonality Data commonality

slide-47
SLIDE 47

Software Development Steps

Requirements Analy- sis and Definition System Design Program Design Program Implementation Unit Testing Integration Testing System Testing System Delivery Maintenance

slide-48
SLIDE 48

Software Developer Roles

Requirements Analy- sis and Definition System Design Program Design Program Implementation Unit Testing Integration Testing System Testing System Delivery Maintenance

Analyst Designer Programmer Tester Trainer

slide-49
SLIDE 49

Programming Team Organization

Chief Programmer

  • Assist. Chief

Programmer Administra- tion Librarian

Senior Programmers

Test Team

Junior Programmers

slide-50
SLIDE 50

Software Process Models

A process is a series of steps involving activities, constraints, and resources that produce an intended

  • utput of some kind.

Two approaches to software process models:

1 Prescribe the way that software development should

progress

2 Describe the way that software development is done in

actuality

In theory, these two kinds of models should be similar

  • r the same. In practice, they are not.

Every software development model has requirements as input and a delivered product as output.

slide-51
SLIDE 51

The Opportunistic Model

  • Why this model is inadequate:

– Ignores requirements and design – No plan – No systematic testing – Resulting maintenance costs will be high

slide-52
SLIDE 52

The Waterfall Model

Requirements Analysis System Design Program Design Coding Unit & Integration Testing System Testing Acceptance Testing Operation & Maintenance

slide-53
SLIDE 53

Elements of the Waterfall Model

  • Proposed around 1970
  • Assumes that one development stage completes

before the next begins

  • Has been used to prescribe software development

activity

  • For example, Department of Defense Standard 2167-A
  • Useful for explaining steps to customers who are

not familiar with software development

slide-54
SLIDE 54

Drawbacks of the Waterfall Model

  • Incorrectly treats software as a manufacturing

process

  • Manufacturing produces a particular item and

reproduces it many times

  • Software is not like this, incorporating both

problem solving and creativity

  • Creativity involves trying alternative solutions,

contrasting designs, and learning from failure

  • Except for well understood problems, the software

process is characterized by iteration

slide-55
SLIDE 55

The Uncontrolled Software Process

Requirements Analysis System Design System Design Program Design Coding Unit & Integra- tion Testing System Testing Acceptance Testing Mainenance

slide-56
SLIDE 56

Prototyping

  • In practice, neither users nor developers know in

advance all the factors that affect desired outcome

  • Thus considerable "thrashing" between one activity

and back may take place in order to gain knowledge about the problem

  • One way to control such thrashing: develop a

partial product and allow customers and developers to examine it for feasibility

  • Advantage: revisions made at requirements stage

rather than the more costly testing stage

  • The partially developed product is a prototype
slide-57
SLIDE 57

Waterfall Model With Prototyping

Requirements Analysis System Design Program Design Coding Unit & Integration Testing System Testing Acceptance Testing Operation & Maintenance Prototyping

slide-58
SLIDE 58

Validation and Verification

  • Prototyping attempts to minimize surprises

encountered during system testing

  • Goals of system testing:

1 Validation: ensuring that the system has implemented

all of the requirements (coverage)

2 Verification: ensuring that each function works

correctly (quality)

slide-59
SLIDE 59

Validation and Verification (cont'd)

Requirements Analysis System Design Program Design Coding Unit & Integration Testing System Testing Acceptance Testing Operation & Maintenance Prototyping Validate Verify

slide-60
SLIDE 60

Software Development Focus

Two Views:

– The Waterfall Model is a product-oriented focus,

regarding software as a product on its own, consisting of a set of programs and defining texts

– This approach "does not permit us to treat systematically

questions pertaining to the relationship between software and the living human world" (C. Floyd)

– The process-oriented approach "views software in

connection with human learning, work, and communication" (C. Floyd)

– The V Model is an example of a process-oriented model

slide-61
SLIDE 61

The V Model

Requirements Analysis Unit & Integration Testing System Testing Acceptance Testing Operation & Maintenance System Design Program Design Coding Analysis and Design Testing Validate Requirements Verify Design Verify Design

slide-62
SLIDE 62

The Prototype as a Central Element

List of Revisions Prototype Requirements Prototype Design Prototype System Test List of Revisions List of Revisions

User/ Customer review revise prototype

System Requirements (sometimes informal

  • r incomplete)

Delivered System If a prototype is used in the Waterfall Model, it is usually thrown

  • away. In the Prototyping Model, the prototype becomes the

product:

slide-63
SLIDE 63

The Spiral Model

Explicitly embraces prototyping and iterative develop- ment

slide-64
SLIDE 64

Reducing "Cycle" Time: Phased Development

Build Release 1 Build Release 2 Build Release 3 Use Release 1 Use Release 2 Use Release 3 Time DEVELOPERS U S E R S

slide-65
SLIDE 65

Evolution of Phased Development

slide-66
SLIDE 66

Two Approaches to Phased Development

Incremental Development Iterative Development

slide-67
SLIDE 67

"Automatic" Programming: AI Meets Compiler Theory

Formal Specification Program Code Test Compare with requirements; update as needed

System Requirements (sometimes informal

  • r incomplete)

Delivered System

This transformation has automated support