how to succeed in software engineering without really trying! baylor university computer science 1...

25
How to Succeed in Software Engineering Without Really Trying! Baylor University Computer Science 1 How to succeed as a software engineer without really trying. by Dr. William B. Poucher, Ph.D., FACM Professor of Computer Science November 2001

Post on 22-Dec-2015

222 views

Category:

Documents


1 download

TRANSCRIPT

Page 1: How to Succeed in Software Engineering Without Really Trying! Baylor University Computer Science 1 How to succeed as a software engineer without really

How to Succeed in Software Engineering Without Really Trying!

Baylor University Computer Science1

How to succeed as a software engineer

without really trying.

byDr. William B. Poucher, Ph.D., FACM

Professor of Computer Science

November 2001

Page 2: How to Succeed in Software Engineering Without Really Trying! Baylor University Computer Science 1 How to succeed as a software engineer without really

How to Succeed in Software Engineering Without Really Trying!

Baylor University Computer Science2

Before we can answer that question,we need to have a little background.

Let’s start by asking, Why do we need

software engineering?

Page 3: How to Succeed in Software Engineering Without Really Trying! Baylor University Computer Science 1 How to succeed as a software engineer without really

How to Succeed in Software Engineering Without Really Trying!

Baylor University Computer Science3

Hardware and software advances

have made it possible to build bigger software systems.

CategoryEducational

Small

Medium

Large

Very Large

Extremely Large

Humongous

Developers1

1

2-5

5-10

100-1000

2000-5000

pop. of Redmond, WA

Development1-4 wks.

1-6 mos.

1-2 yrs.

2-3 yrs.

4-5 yrs.

5-10 yrs.

10-30 yrs.

Size500 source lines

1,000-2,000

5K-50K

50K-100K

1M-10M

10M-100M

1G-10G

Page 4: How to Succeed in Software Engineering Without Really Trying! Baylor University Computer Science 1 How to succeed as a software engineer without really

How to Succeed in Software Engineering Without Really Trying!

Baylor University Computer Science4

Big systems are too expensive unless•we build them to last longer, or

•share the cost among many users

– Everett Dirksen, U.S. Senator

A billion dollars here. A billion dollars there. You know, before long it adds up to real money!

$1,000,000,000

10 years

$1,000,000,000

10,000,000= $100 per user

= $100,000,000 per year

Page 5: How to Succeed in Software Engineering Without Really Trying! Baylor University Computer Science 1 How to succeed as a software engineer without really

How to Succeed in Software Engineering Without Really Trying!

Baylor University Computer Science5

Longer lasting software

is hard to maintain. Software tends to get more complex with age.

Software tends to lose structural integrity with age. It picks up traits of changing design methods.

Changes in software requirements can have drastic affects.

Software doesn’t wear out. Software designers do. It’s often easier to design a replacement than to repair an existing product.

Page 6: How to Succeed in Software Engineering Without Really Trying! Baylor University Computer Science 1 How to succeed as a software engineer without really

How to Succeed in Software Engineering Without Really Trying!

Baylor University Computer Science6

Software stabilityis hard to maintain.

o Software systems often must share resources.

o Software systems are layered. Changes in hardware and operating systems require changes in the software, often to no benefit to the user.

o To attract new users, the software must compete. This means changes in $oftware requirement$.

o To stay in business, you must have money. Once everyone has your software, how do you get the money to support it? … more change$.

Page 7: How to Succeed in Software Engineering Without Really Trying! Baylor University Computer Science 1 How to succeed as a software engineer without really

How to Succeed in Software Engineering Without Really Trying!

Baylor University Computer Science7

Changing Software/HardwareCost Distribution [BOEHM76]

0

10

20

30

40

50

60

70

80

90

100

Hardware SoftwareDevelopment

SoftwareMaintenance

1955 1978 1985

Page 8: How to Succeed in Software Engineering Without Really Trying! Baylor University Computer Science 1 How to succeed as a software engineer without really

How to Succeed in Software Engineering Without Really Trying!

Baylor University Computer Science8

Why Does $oftware Cost So Much?

It's HARD to designreliable, adaptable, and repairablesoftware systemsthat perform the desired choresin a world of changing expectations!

Page 9: How to Succeed in Software Engineering Without Really Trying! Baylor University Computer Science 1 How to succeed as a software engineer without really

How to Succeed in Software Engineering Without Really Trying!

Baylor University Computer Science9

$oftware systems cost even morethan we thing they do!

o Training costs – primary and secondary

o Loss of productivity – getting in sync

o Inappropriate use. We feel obliged to make software work - even if it works us to death.

o We become dependent on software.

o The “product” business model in the software industry introduces change for the sake of revenue.

Page 10: How to Succeed in Software Engineering Without Really Trying! Baylor University Computer Science 1 How to succeed as a software engineer without really

How to Succeed in Software Engineering Without Really Trying!

Baylor University Computer Science10

What do software designersand engineers do about it?

Such design methods will: Permit detection and repair of defects as early as possible

in the product life cycle.

Introduce architecture to reduce spontaneous complexity to make defects easier to find and repairs easier to test.

Introduce architecture that makes the product easier to adaptable and enhance over its lifetime.

Introduce architecture that permits adapting components to other uses.

Search for and use design methods that arecost-effective over the lifetime of the productand not just during the development stages.

Page 11: How to Succeed in Software Engineering Without Really Trying! Baylor University Computer Science 1 How to succeed as a software engineer without really

How to Succeed in Software Engineering Without Really Trying!

Baylor University Computer Science11

The Phased Life-Cycle Modelfor Software Development

AnalyzeDesign

ImplementTest

Maintain

Page 12: How to Succeed in Software Engineering Without Really Trying! Baylor University Computer Science 1 How to succeed as a software engineer without really

How to Succeed in Software Engineering Without Really Trying!

Baylor University Computer Science12

What is the focus of each phase?

AnalyzeDesign

ImplementTest

Maintain

What is requiredof the product?

How shouldit be built?

Let's build it!Is it reliable?Does it do whatis required?

Adapt, fix,enhance it.

Page 13: How to Succeed in Software Engineering Without Really Trying! Baylor University Computer Science 1 How to succeed as a software engineer without really

How to Succeed in Software Engineering Without Really Trying!

Baylor University Computer Science13

What is the cost of detecting adefect late in the software life-cycle?

AnalyzeDesign

ImplementTest

Maintain

Page 14: How to Succeed in Software Engineering Without Really Trying! Baylor University Computer Science 1 How to succeed as a software engineer without really

How to Succeed in Software Engineering Without Really Trying!

Baylor University Computer Science14

"The Abstraction Gap"

Requirements(Problem)

System(Solution)

Abstraction

Page 15: How to Succeed in Software Engineering Without Really Trying! Baylor University Computer Science 1 How to succeed as a software engineer without really

How to Succeed in Software Engineering Without Really Trying!

Baylor University Computer Science15

Bridging the Abstraction GapWith Composite Design Methods

Requirements(Problem)

System(Solution)

Abstraction

Page 16: How to Succeed in Software Engineering Without Really Trying! Baylor University Computer Science 1 How to succeed as a software engineer without really

How to Succeed in Software Engineering Without Really Trying!

Baylor University Computer Science16

Narrowing the Abstraction GapWith Object-Oriented Systems

Requirements(Problem)

System(Program)

Abstraction

Page 17: How to Succeed in Software Engineering Without Really Trying! Baylor University Computer Science 1 How to succeed as a software engineer without really

How to Succeed in Software Engineering Without Really Trying!

Baylor University Computer Science17

So What is Software Engineering?

• Ask Dennis Frailey.

• Ask Fred Brooks.

• Ask Peter Denning.

• Ask some of the 100,000 people with business cards issued by their companies that identify them as Software Engineers.

• Ask software engineer recruiters about pay and benefits.

Page 18: How to Succeed in Software Engineering Without Really Trying! Baylor University Computer Science 1 How to succeed as a software engineer without really

How to Succeed in Software Engineering Without Really Trying!

Baylor University Computer Science18

Software Engineering asks…

• How can we build software requirements that accurately describe the behavior of the desired system?

• How can we build software systems that meet the requirements and deliver them on time and within budget?

• How can we build software systems to keep the cost of maintaining the systems in control?

• How can we build software systems to keep the cost of managing the systems in control?

Page 19: How to Succeed in Software Engineering Without Really Trying! Baylor University Computer Science 1 How to succeed as a software engineer without really

How to Succeed in Software Engineering Without Really Trying!

Baylor University Computer Science19

Finally! How do you succeedin software engineering

without really trying?

Page 20: How to Succeed in Software Engineering Without Really Trying! Baylor University Computer Science 1 How to succeed as a software engineer without really

How to Succeed in Software Engineering Without Really Trying!

Baylor University Computer Science20

1. Print some business cardsand sell your servicesto your dad.

Soft Systems Associates

I. M. A. Swindler, BBSEVice President of Software Engineering

[email protected]

Make sure that there are some capital letters after your name. They must have B’s, S’s, and E’s in them. You can buy a certificate from some credential granting business if you want, but remember – they may be looking for easy money too!

Page 21: How to Succeed in Software Engineering Without Really Trying! Baylor University Computer Science 1 How to succeed as a software engineer without really

How to Succeed in Software Engineering Without Really Trying!

Baylor University Computer Science21

2. Marry someone with a rich dad.Print some business cards and sell your services to your father-in-law.

Soft Systems Associates

I.M.A. Swindler, BBSEVice President of Software Engineering

[email protected]

If he won’t buy in, tell him that you will have to move in with him until you can get your business started. That always works.

Page 22: How to Succeed in Software Engineering Without Really Trying! Baylor University Computer Science 1 How to succeed as a software engineer without really

How to Succeed in Software Engineering Without Really Trying!

Baylor University Computer Science22

3. Put “E” in front of the name ofyour business. Print stock certificates and sell it to greedy businessmen.

ESoft Systems Associates“If you have the money, we have the time!”

I.M.A. Swindler, BBSE

Vice President of Software Engineering

[email protected]

Page 23: How to Succeed in Software Engineering Without Really Trying! Baylor University Computer Science 1 How to succeed as a software engineer without really

How to Succeed in Software Engineering Without Really Trying!

Baylor University Computer Science23

Or maybe you could use your brainsfor something other than

a shock absorber!

Let’s start by revisitingthis presentation.

Page 24: How to Succeed in Software Engineering Without Really Trying! Baylor University Computer Science 1 How to succeed as a software engineer without really

How to Succeed in Software Engineering Without Really Trying!

Baylor University Computer Science24

You are more likely to survive building the right product wrong, than the wrong product right.

In the end, you must deliver value!!!

Page 25: How to Succeed in Software Engineering Without Really Trying! Baylor University Computer Science 1 How to succeed as a software engineer without really

How to Succeed in Software Engineering Without Really Trying!

Baylor University Computer Science25

Granny's Ice Cream

Homemade Vanilla Ice CreamIngredients

InstructionsBeat eggs until light and lemony. Add sugar, vanilla, evaporated milk, water, and regular milk. Mix and pour in ice cream freezer. Makes one gallon. (Can substitute 2 cans milk for 1 can of milk and 1 can of water)

6 large eggs 2 c. sugar 2 tsp. vanilla

1 can evaporated milk 1 can water 1 quart whole milk