Introduction - CSE CSE 216: Software Engineering ---...

Info iconThis preview shows page 1. Sign up to view the full content.

View Full Document Right Arrow Icon
This is the end of the preview. Sign up to access the rest of the document.

Unformatted text preview: CSE CSE 216: Software Engineering --- Introduction Gang Tan Department of Computer Science & Engineering Lehigh University * Some slides are adapted from the ones by Glenn Blank 1 Course Course Info Instructor: Gang Tan ◦ My research interests: how to create reliable and secure software systems ◦ Research areas: programming languages, computer security, software engineering Web sites ◦ Public website: syllabus, schedule, assignments, use useful links ◦ Blackboard website: course slides; submit homework; grades 2 WHY WHY SOFTWARE ENGINEERING ENGINEERING 3 Demand Demand for larger software systems systems is growing dramatically What growth pattern do you see in the following? ◦ F4 fighter had no digital computer and software (Early (Early 70’s). ◦ F16A had 50 digital processors and 135,000 SLOC (Late 70’s). ◦ F16D had 300 digital processors and 236,000 SLOC (Late 80’s). ◦ B-2 has over 200 digital processors and 5,000,000 SLOC. Exponential growth? 4 Another Another Example Year 1993 1994 1996 2000 2001 2006 Operating System Windows NT 3.1 Windows NT 3.5 Windows NT 4.0 Windows 2000 Windows XP Windows Vista Windows 7 SLOC (Million) 4-5 7-8 11-12 More than 29 40 ~50 ??? 5 Software Software development costs What can you infer from the graph? Hardware costs vs. Software costs Hardware costs Software costs are increasing as hardware costs continue to decline. •Hardware technology has made great advances •Simple and well understood tasks are encoded in hardware •Least understood tasks are encoded in software •Demands of software are growing so •Size of the software applications is also increasing •Hence “the software crisis” 6 Software costs Time State State of the practice What can you infer from this chart? Estimate 13,000 130,000 1,300,000 13,000,000 Early 6.06% 1.24% 0.14% 0.00% On Time 74.77% 60.76% 28.03% 13.67% Delayed 11.83% 17.67% 23.83% 21.33% Canceled 7.33% 20.33% 48.00% 65.00% Source: Patterns of software failures and successes, Capers Jones, 1996 •Delays common with mid- to –large projects. •Majority of the large projects are canceled. 7 What What can you infer from this chart? 60 50 40 30 20 10 0 Cost overrun Successful Cancelled Source: The Standish Group, 1994 •Successful projects (16.2%) - Delivered fully functional on time and on budget. •Challenged (52.7%) - Deliver less than full functionality, over-budget and late. •Impaired (31.1%) - Cancelled during development. 8 Software Software failures Failures resulting from software errors have varied consequences ranging from minor inconveniences to catastrophic loss of life & property: •Air Traffic Control (FAA modernization): - $5.6 billion cost overrun. - 8 year delay. - 2 systems are canceled - Requirements for the third have been decreased by 48%. •US Navy Finance System: - 4 times cost overrun. - Canceled after 9 years. •Voting machines 9 Software Software disasters Northeast blackout in 2003 ◦ Price tag: $ 7-10 billion ◦ A programming error in the grid control software software NASA Mars Climate Orbiter Crash in 1999 ◦ Price tag: $125 million ◦ Again, software errors See more at “A Collection of Well-Known Software Failures” ◦ html 10 Software Software crisis It refers to the difficulty of writing correct, understandable, and verifiable computer programs. ◦ The roots of the software crisis are complexity, expectations, and change. 11 Why Why are software projects late? Modern software systems are complex The sheer size Imagine 50 million lines of code! Management hell: coordination between architects, developers testers developers, testers and others is nontrivial All kinds of functionalities GUI; connecting to databases; web connections; complex application application logic Third party modules Poorly designed interfaces; poor documentation Multiple programming languages lan Java, C, C++, C#, Python, Perl, … Backward compatibility 12 Why Why are software projects late? Estimating techniques are poorly developed •Estimates are based on optimism: - Programmers are optimistic. - Assume “All will go well” with the project. with - Don’t plan for slippage. - “This is the last bug.” - “It’s going to work this time!” ti •Optimism could be because of the nature of creativity: creativity: - Conception of an idea and its implementation. - Medium of creation constrains our ideas. - In case of software the medium is infinitely malleable. - Expect a few problems in implementation. 13 Why Why are software projects late? Software are changed all the time Why the change? New features New technologies Customer Customer requirements changed Changes introduce Bugs Maintenance headaches 14 WHAT WHAT IS SOFTWARE ENGINEERING ENGINEERING 15 Definition Definition of Software Engineering We discussed why SE is important IEEE definition of SE ◦ Software engineering is the application of a Software systematic, disciplined, quantifiable approach to the development, operation, and maintenance of software; that is, the application of engineering to software. 16 So, it’s engineering, not science … So, Sometimes, there are no single correct answers, only better or worse There are no best solutions, only good ones or better ones Similar to engineering bridges ◦ Thousands of ways of building good bridges 17 Engineering: Engineering: a lot guidelines Guidelines are useful ◦ But they can be fuzzy, can be contradictory, … ◦ They are not like those formulas in your calculus book, which are precise and with proofs For example, model-view separation ◦ UI objects should be separate from application logic (or domain objects) 18 Software Software Engineering Mind Map 19 ...
View Full Document

Ask a homework question - tutors are online