250 likes | 505 Vues
How to succeed as a software engineer without really trying. by Dr. William B. Poucher, Ph.D., FACM Professor of Computer Science. November 2001. Before we can answer that question, we need to have a little background. Let’s start by asking, Why do we need software engineering?. Development
E N D
How to succeed as a software engineerwithout really trying. by Dr. William B. Poucher, Ph.D., FACM Professor of Computer Science November 2001
Before we can answer that question,we need to have a little background.Let’s start by asking,Why do we needsoftware engineering?
Development 1-4 wks. 1-6 mos. 1-2 yrs. 2-3 yrs. 4-5 yrs. 5-10 yrs. 10-30 yrs. Hardware and software advanceshave made it possible to build bigger software systems. Developers 1 1 2-5 5-10 100-1000 2000-5000 pop. of Redmond, WA Category Educational Small Medium Large Very Large Extremely Large Humongous Size 500 source lines 1,000-2,000 5K-50K 50K-100K 1M-10M 10M-100M 1G-10G
we build them to last longer, or share the cost among many users Big systems are too expensive unless • A billion dollars here. A billion dollars there. You know, before long it adds up to real money! – Everett Dirksen, U.S. Senator $1,000,000,000 = $100,000,000 per year 10 years $1,000,000,000 = $100 per user 10,000,000
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. Longer lasting softwareis hard to maintain.
Software systems often must share resources. Software systems are layered. Changes in hardware and operating systems require changes in the software, often to no benefit to the user. To attract new users, the software must compete. This means changes in $oftware requirement$. To stay in business, you must have money. Once everyone has your software, how do you get the money to support it? … more change$. Software stabilityis hard to maintain.
Changing Software/HardwareCost Distribution [BOEHM76] 100 90 80 70 60 50 40 30 20 10 0 1955 1978 1985 Hardware Software Software Development Maintenance
Why Does $oftware Cost So Much? It's HARD to designreliable, adaptable, and repairablesoftware systemsthat perform the desired choresin a world of changing expectations!
Training costs – primary and secondary Loss of productivity – getting in sync Inappropriate use. We feel obliged to make software work - even if it works us to death. We become dependent on software. The “product” business model in the software industry introduces change for the sake of revenue. $oftware systems cost even morethan we thing they do!
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. What do software designersand engineers do about it? Search for and use design methods that are cost-effective over the lifetime of the product and not just during the development stages.
The Phased Life-Cycle Modelfor Software Development Analyze Design Implement Test Maintain
What is the focus of each phase? What is required of the product? How should it be built? Let's build it! Is it reliable? Does it do what is required? Analyze Adapt, fix, enhance it. Design Implement Test Maintain
What is the cost of detecting adefect late in the software life-cycle? Analyze Design Implement Test Maintain
"The Abstraction Gap" Requirements (Problem) Abstraction System (Solution)
Bridging the Abstraction GapWith Composite Design Methods Requirements (Problem) Abstraction System (Solution)
Narrowing the Abstraction GapWith Object-Oriented Systems Requirements (Problem) System (Program)
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. So What is Software Engineering?
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? Software Engineering asks…
Finally! How do you succeedin software engineeringwithout really trying?
Soft Systems Associates I. M. A. Swindler, BBSE Vice President of Software Engineering IMASwindler@SSA.com Print some business cardsand sell your servicesto your dad. 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!
Soft Systems Associates I.M.A. Swindler, BBSE Vice President of Software Engineering IMASwindler@SSA.com 2. Marry someone with a rich dad.Print some business cards and sell your services to your father-in-law. 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.
ESoft Systems Associates “If you have the money, we have the time!” I.M.A. Swindler, BBSE Vice President of Software Engineering IMASwindler@ESSA.com 3. Put “E” in front of the name ofyour business. Print stock certificates and sell it to greedy businessmen.
Or maybe you could use your brainsfor something other thana shock absorber!Let’s start by revisitingthis presentation.
You are more likely to survive building the right product wrong, than the wrong product right.In the end, you must deliver value!!!