0% found this document useful (0 votes)
11 views18 pages

COMP 211 Software Engineering Overview

This document provides an introduction and overview of COMP 211 Introduction to Software Engineering. It discusses trends in software such as the growing demand, importance, and costs. It also covers problems with software development such as inaccurate estimates, lack of quality, and difficulties maintaining software. Solutions discussed include modular development, personal development processes, and quality development. The document defines software engineering as the disciplined application of engineering principles to economically develop reliable and efficient software.

Uploaded by

sirmadamstudent
Copyright
© Attribution Non-Commercial (BY-NC)
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPT, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
11 views18 pages

COMP 211 Software Engineering Overview

This document provides an introduction and overview of COMP 211 Introduction to Software Engineering. It discusses trends in software such as the growing demand, importance, and costs. It also covers problems with software development such as inaccurate estimates, lack of quality, and difficulties maintaining software. Solutions discussed include modular development, personal development processes, and quality development. The document defines software engineering as the disciplined application of engineering principles to economically develop reliable and efficient software.

Uploaded by

sirmadamstudent
Copyright
© Attribution Non-Commercial (BY-NC)
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPT, PDF, TXT or read online on Scribd

COMP 211 INTRODUCTION TO SOFTWARE ENGINEERING

INTRODUCTION AND OVERVIEW

COMP 211

INTRODUCTION & OVERVIEW

INTRODUCTION & OVERVIEW OUTLINE

Trends
software demand importance of software software effort (cost) software maintenance

Problems
software construction software development

Solutions
modular development personal development quality development

What is Software Engineering?


INTRODUCTION & OVERVIEW 2

COMP 211

TRENDS SOFTWARE DEMAND


Software Demand Personal computing, information, education Commercial Scientific & Technical
1950

1960

1970

1980

1990

2000

several hundred billion dollars/year spent worldwide and growing essential part of almost all organizations key part of many products embedded systems essential for designing many products
INTRODUCTION & OVERVIEW 3

COMP 211

TRENDS IMPORTANCE OF SOFTWARE

shift of focus: from hardware to software


Engineering

software is becoming ubiquitous


Sales

challenges:
improve quality reduce cost meet (user) requirements
Manufacturing

Inventory

Accounting

software development is no longer a seat of the pants art

WHY?
COMP 211 INTRODUCTION & OVERVIEW 4

TRENDS SOFTWARE EFFORT (COST)


8000

Man-months

6000 4000 2000

100

200

300

400

500

600

1000s of language statements

sample code sizes:


hand-held bar code scanner: 10-50KLOC [Symbol Technologies Inc.] cellular telephone: 30KLOC [Motorola] automated teller network: 600KLOC [IBM] B-2 Stealth bomber: 3.5MLOC [Leonard Lee] telephone switch; Windows 95: 15MLOC [Nokia; Ted Lewis]
INTRODUCTION & OVERVIEW 5

COMP 211

TRENDS SOFTWARE MAINTENANCE


100%

Maintenance effort Effort New development effort

Time (years)

maintenance is generally considered to include correction, retargeting, and enhancement only useful software goes through maintenance

5,000 estimated bugs in Windows 95


COMP 211 INTRODUCTION & OVERVIEW 6

PROBLEMS SOFTWARE CONSTRUCTION


1. nature: physical versus logical

[1.1]

2. failure: hard versus soft Hardware failure curve


Infant mortality Wear out

Software failure curve


Infant mortality

Failure rate

Failure rate

Actual Idealized

Time

Time

3. development: manufactured versus created


COMP 211 INTRODUCTION & OVERVIEW 7

PROBLEMS SOFTWARE DEVELOPMENT


1. schedule and cost estimates often grossly inaccurate
over schedule over budget

2. productivity of software developers has not kept pace with demand for their services 3. quality of software is sometimes less than adequate
unreliable unsafe inflexible Hong Kong Airport Project; Ariane 5 rocket London Ambulance System; Therac-25 hard to change/maintain

abandoned

London Stock Exchange

WHY?
COMP 211 INTRODUCTION & OVERVIEW 8

PROBLEMS SOFTWARE DEVELOPMENT (contd)

lack of historical data on software development process (1) no good way to measure productivity (1, 2)

poor communication with customer/other developers (1, 3)


no systematic approach to software development (1, 2, 3) vague/unclear specification of customer requirements (1, 3) lack of systematic and complete software testing (3) little emphasis on software maintenance (3)

COMP 211

INTRODUCTION & OVERVIEW

10

SOLUTIONS MODULAR DEVELOPMENT


Large software systems are complex and changing. There is a limit to how much a human can understand at any one time.

divide and conquer The System coupling

module: any identifiable bit of a system which it makes sense to consider separately

BUT modules need to depend on each other


COMP 211 INTRODUCTION & OVERVIEW 11

SOLUTIONS MODULAR DEVELOPMENT (contd)


coupling a measure of the number and types of interconnections (dependencies) a module has with other modules

a module has the lowest coupling when it has minimal


dependencies with other modules

interface encapsulates module knowledge so the developer is prevented from using information inside the module

internally changing a module without changing its


interface will not require any changes anywhere else in the system
COMP 211 INTRODUCTION & OVERVIEW 12

SOLUTIONS MODULAR DEVELOPMENT (contd)


cohesion a measure of the number of functionally different things a module has to do

a module is most cohesive when it does only one thing


(i.e., provides an abstraction of some intuitively understood function which may nevertheless be complex to implement)

interface abstracts a module so the developer does not have to understand everything about a module to use it

developer is shielded from irrelevant information about


how the module works internally

encapsulation + abstraction = information hiding


COMP 211 INTRODUCTION & OVERVIEW 13

SOLUTIONS MODULAR DEVELOPMENT (contd)

modularity defined with interfaces allows for:


more productivity in team development fewer bugs

more maintainable software


more reusable software

and the possibility of component-based development using a suitable software architecture

CHALLENGES define good modules with the right things in their interfaces specify suitable software architectures to support components
COMP 211 INTRODUCTION & OVERVIEW 14

SOLUTIONS PERSONAL DEVELOPMENT


programming-in-the-small vs. programming-in-the-large

may use and apply several design approaches

need to translate vague requirements and desires into precise specifications


need to talk with user in terms of the application, rather than computer jargon need to move among different levels of abstraction at different stages of the project need to build a model of the application (actually several) need to choose among alternatives (tradeoffs) need to work in well-defined roles but a rigid fragmentation of roles is often counterproductive
INTRODUCTION & OVERVIEW 15

COMP 211

SOLUTIONS QUALITY DEVELOPMENT


What does this mean?
correct user friendly evolvable understandable

reliable
robust efficient

verifiable
maintainable repairable

reusable
portable interoperable

productive
timely visible

How do we measure it?

How do we achieve it?

COMP 211

INTRODUCTION & OVERVIEW

16

WHAT IS SOFTWARE ENGINEERING?

[1.2]

The establishment and use of sound engineering principles in order to obtain economically software that is reliable and works efficiently on real machines. Frtiz Bauer ... multi-person construction of multi-version software. Dave Parnas

engineering principles disciplined effort: methodology, tools economicallyreliableefficiently built-in quality: metrics multi-person team effort: management, training multi-version not a one-shot effort: documentation, maintenance
INTRODUCTION & OVERVIEW 18

COMP 211

WHAT IS SOFTWARE ENGINEERING?

a modeling activity
problem domain model models the application domain solution model models the system to be built

a problem solving activity


search for an appropriate solution in the presence of change not algorithmic, but should be systematic

a knowledge acquisition activity


not a linear process may need to start over!

a rationale management activity


my need to revisit decisions already made bugs, technology, etc. Why did we make this choice?

COMP 211

INTRODUCTION & OVERVIEW

19

SOFTWARE ENGINEERING COMPONENTS


project management team organization, dynamics

requirements based development


systematic use of methodologies, techniques and tools modular approach to system building phases formal testing of modules and system as a whole meaningful quality assurance (e.g., standards) excellent documentation store of relevant knowledge, architectures and components
INTRODUCTION & OVERVIEW 20

COMP 211

You might also like