Скачать презентацию How to Succeed in Software Engineering Without Really Скачать презентацию How to Succeed in Software Engineering Without Really

946a31334649dabf68024907f294e8d4.ppt

  • Количество слайдов: 25

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

How to Succeed in Software Engineering Without Really Trying! Before we can answer that How to Succeed in Software Engineering Without Really Trying! Before we can answer that question, we need to have a little background. Let’s start by asking, Why do we need software engineering? Baylor University Computer Science 2

How to Succeed in Software Engineering Without Really Trying! Hardware and software advances have How to Succeed in Software Engineering Without Really Trying! Hardware and software advances have made it possible to build bigger software systems. Category Developers Educational 1 1 -4 wks. 500 source lines Small 1 1 -6 mos. 1, 000 -2, 000 Medium 2 -5 1 -2 yrs. 5 K-50 K Large 5 -10 2 -3 yrs. 50 K-100 K Very Large 100 -1000 4 -5 yrs. 1 M-10 M Extremely Large 2000 -5000 5 -10 yrs. 10 M-100 M pop. of Redmond, WA 10 -30 yrs. 1 G-10 G Humongous Development Size Baylor University Computer Science 3

How to Succeed in Software Engineering Without Really Trying! Big systems are too expensive How to Succeed in Software Engineering Without Really Trying! Big systems are too expensive unless • • we build them to last longer, or share the cost among many users 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 10 years $1, 000, 000 10, 000 = $100, 000 per year = $100 per user Baylor University Computer Science 4

How to Succeed in Software Engineering Without Really Trying! Longer lasting software is hard How to Succeed in Software Engineering Without Really Trying! 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. Baylor University Computer Science 5

How to Succeed in Software Engineering Without Really Trying! Software stability is hard to How to Succeed in Software Engineering Without Really Trying! Software stability is 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$. Baylor University Computer Science 6

How to Succeed in Software Engineering Without Really Trying! Changing Software/Hardware Cost Distribution [BOEHM How to Succeed in Software Engineering Without Really Trying! Changing Software/Hardware Cost Distribution [BOEHM 76] 100 90 80 70 60 50 40 30 20 10 0 1955 Hardware 1978 Software Development 1985 Software Maintenance Baylor University Computer Science 7

How to Succeed in Software Engineering Without Really Trying! Why Does $oftware Cost So How to Succeed in Software Engineering Without Really Trying! Why Does $oftware Cost So Much? It's HARD to design reliable, adaptable, and repairable software systems that perform the desired chores in a world of changing expectations! Baylor University Computer Science 8

How to Succeed in Software Engineering Without Really Trying! $oftware systems cost even more How to Succeed in Software Engineering Without Really Trying! $oftware systems cost even more than 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. Baylor University Computer Science 9

How to Succeed in Software Engineering Without Really Trying! What do software designers and How to Succeed in Software Engineering Without Really Trying! What do software designers and 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. 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. Baylor University Computer Science 10

How to Succeed in Software Engineering Without Really Trying! The Phased Life-Cycle Model for How to Succeed in Software Engineering Without Really Trying! The Phased Life-Cycle Model for Software Development Analyze Design Implement Test Maintain Baylor University Computer Science 11

How to Succeed in Software Engineering Without Really Trying! What is the focus of How to Succeed in Software Engineering Without Really Trying! What is the focus of each phase? What is required of the product? How should it be built? Let's build it! Analyze Is it reliable? Does it do what is required? Design Implement Adapt, fix, enhance it. Test Maintain Baylor University Computer Science 12

How to Succeed in Software Engineering Without Really Trying! What is the cost of How to Succeed in Software Engineering Without Really Trying! What is the cost of detecting a defect late in the software life-cycle? Analyze Design Implement Test Maintain Baylor University Computer Science 13

How to Succeed in Software Engineering Without Really Trying! How to Succeed in Software Engineering Without Really Trying! "The Abstraction Gap" Requirements (Problem) Abstraction System (Solution) Baylor University Computer Science 14

How to Succeed in Software Engineering Without Really Trying! Bridging the Abstraction Gap With How to Succeed in Software Engineering Without Really Trying! Bridging the Abstraction Gap With Composite Design Methods Requirements (Problem) Abstraction System (Solution) Baylor University Computer Science 15

How to Succeed in Software Engineering Without Really Trying! Narrowing the Abstraction Gap With How to Succeed in Software Engineering Without Really Trying! Narrowing the Abstraction Gap With Object-Oriented Systems Requirements (Problem) System (Program) Baylor University Computer Science 16

How to Succeed in Software Engineering Without Really Trying! So What is Software Engineering? How to Succeed in Software Engineering Without Really Trying! 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. Baylor University Computer Science 17

How to Succeed in Software Engineering Without Really Trying! Software Engineering asks… • How How to Succeed in Software Engineering Without Really Trying! 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? Baylor University Computer Science 18

How to Succeed in Software Engineering Without Really Trying! Finally! How do you succeed How to Succeed in Software Engineering Without Really Trying! Finally! How do you succeed in software engineering without really trying? Baylor University Computer Science 19

How to Succeed in Software Engineering Without Really Trying! 1. Print some business cards How to Succeed in Software Engineering Without Really Trying! 1. Print some business cards and sell your services to your dad. Soft Systems Associates I. M. A. Swindler, BBSE Vice President of Software Engineering IMASwindler@SSA. com 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! Baylor University Computer Science 20

How to Succeed in Software Engineering Without Really Trying! 2. Marry someone with a How to Succeed in Software Engineering Without Really Trying! 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, BBSE Vice President of Software Engineering IMASwindler@SSA. com 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. Baylor University Computer Science 21

How to Succeed in Software Engineering Without Really Trying! 3. Put “E” in front How to Succeed in Software Engineering Without Really Trying! 3. Put “E” in front of the name of your 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 IMASwindler@ESSA. com Baylor University Computer Science 22

How to Succeed in Software Engineering Without Really Trying! Or maybe you could use How to Succeed in Software Engineering Without Really Trying! Or maybe you could use your brains for something other than a shock absorber! Let’s start by revisiting this presentation. Baylor University Computer Science 23

How to Succeed in Software Engineering Without Really Trying! 1. You are more likely How to Succeed in Software Engineering Without Really Trying! 1. You are more likely to survive building the right product wrong, than the wrong product right. In the end, you must deliver value!!! Baylor University Computer Science 24

How to Succeed in Software Engineering Without Really Trying! Granny's Ice Cream Baylor University How to Succeed in Software Engineering Without Really Trying! Granny's Ice Cream Baylor University Computer Science 25