how to succeed in software engineering without really trying! baylor university computer science 1...
Post on 22-Dec-2015
222 views
TRANSCRIPT
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
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?
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
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
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.
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$.
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
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!
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.
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.
How to Succeed in Software Engineering Without Really Trying!
Baylor University Computer Science11
The Phased Life-Cycle Modelfor Software Development
AnalyzeDesign
ImplementTest
Maintain
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.
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
How to Succeed in Software Engineering Without Really Trying!
Baylor University Computer Science14
"The Abstraction Gap"
Requirements(Problem)
System(Solution)
Abstraction
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
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
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.
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?
How to Succeed in Software Engineering Without Really Trying!
Baylor University Computer Science19
Finally! How do you succeedin software engineering
without really trying?
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
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!
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
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.
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
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.
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!!!
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