290 likes | 424 Views
Lecture 1 Introduction. CSCE 492 Software Engineering. January 13, 2009. Overview. Today’s Lecture Course Pragmatics Overview References: Next Time:. Course Pragmatics. Goal: To give you “real world” experience in team development of a large software system
E N D
Lecture 1 Introduction CSCE 492 Software Engineering January 13, 2009
Overview Today’s Lecture • Course Pragmatics • Overview References: Next Time:
Course Pragmatics Goal: • To give you “real world” experience in team development of a large software system • To provide you an opportunity to show your skills, build a portfolio Web Site: • http://www.cse.sc.edu/~rose/492/index.html • Lectures • Resources • Links to papers/readings • Links to other Software Engineering Project sites
State of the Art in UML tools • Argo UML • Ideogramic • Rational Rose • Together • General Diagram Tools: • Dia • Kivio • Visio • Umbrello http://jriddell.org/programs/umbrello/html/index.html
Why does software engineering matter? Software’s contribution to US economy • Based on 1996 figures: greatest trade surplus of exports • $24B software exported, $4B imported, $20B surplus· • compare: agriculture 26-14=12, • aerospace 11-3=8, • chemicals 26-19=7, • vehicles 21-43=(-22), • manufactured goods 200-265=(-64)·
Role in infrastructure Not just the Internet· • Transportation • Energy • Medicine • Finance
Software Quality How many errors do you think exist in a released software product? How do you measure the quality of code? • Error counts • Total errors • #Errors/size of code • Severity How do you measure the size of code • LOC – lines of code • ?
How do you Quantify Software? Software metrics • http://sel.gsfc.nasa.gov/website/documents/online-doc/94-102.pdf How do you measure the size of code • Megabytes • LOC – lines of code • http://en.wikipedia.org/wiki/Source_lines_of_code • Programs for counting lines of code • Characters?
Why Measure Software? Key Reasons for Measurement of Software 1. Understanding 2. Managing 3. Guiding improvement Profit = Sales - Cost
Software Failures IBM survey1994 55% of systems cost more than expected 68% overran schedules 88% had to be substantially redesigned
Examples Advanced Automation System (FAA, 1982-1994) • industry average was $100/line • expected to pay $500/line • ended up paying $700-900/line • $6B worth of work discarded
Predictions Bureau of Labor Statistics (1997) • for every 6 new systems put into operation • 2 cancelled • probability of cancellation is about 50% for biggest systems • average project overshoots schedule by 50% • 3/4 systems are regarded as ‘operating failures’
Accidents Nathaniel Borenstein • http://www.artwanted.com/imageview.cfm?id=234508
Ariane-5 Ariane-5 (June 1996) • European Space Agency • complete loss of unmanned rocket shortly after takeoff • due to exception thrown in Ada code • faulty code was not even needed after takeoff • due to change in physical environment: undocumented assumptions violated Reference • http://archive.eiffel.com/doc/manuals/technology/contract/ariane/page.html
Therac-25 Therac-25 (1985-87) • radiotherapy machine with software controller • hardware interlock removed, but software had no interlock • software failed to maintain essential invariants: • either electron beam mode • and plate intervening, to generate X-rays • several deaths due to burning • programmer had no experience with concurrent programming
So What’s Good Software? Software Quality Measure: bugs/kloc • measured after delivery • industry average is about 10 • high quality: 0.1 or less
Quality Software Praxis CDIS system (1993) • UK air-traffic control system for terminal area • used formal methods: precise specification • no increase in net cost • much lower bug rate: about 0.75 defects/kloc • even offered warranty to client!
Software Contracts Cosmotronic Software Unlimited Inc. does not warrant that the functions contained in the program will meet your requirements or that the operation of the program will be uninterrupted or error-free. …
Software Testing Strategies Victor R. Basili and Richard W. Selby. Comparing the Effectiveness of Software Testing Strategies. IEEE Transactions on Software Engineering. Vol. SE-13, No. 12, December 1987, pp. 1278–1296. This paper compares 3 state-of-practice software testing techniques: • Code reading by stepwise Abstraction • Functional testing using equivalence partitioning and boundary value abstraction • Structural testing (100 percent statement coverage criteria) The three aspects that are compared for the test are: • Fault Detection effectiveness • Fault detection Cost • Classes of fault detected
Collection of Software Bugs Collection of Software Bugs • http://www5.informatik.tu-muenchen.de/~huckle/bugse.html The first bug • http://www.waterholes.com/~dennette/1996/hopper/bug.htm
Software as a Business Cost • $ • Time • Estimated time estimate dollars • Mythical Man-Month • http://en.wikipedia.org/wiki/The_Mythical_Man-Month
Software Crisis "[The major cause of the software crisis is] that the machines have become several orders of magnitude more powerful! To put it quite bluntly: as long as there were no machines, programming was no problem at all; when we had a few weak computers, programming became a mild problem, and now we have gigantic computers, programming has become an equally gigantic problem." • Edsger Dijkstra: The Humble Programmer (PDF, 473Kb)
Water Fall Model • requirements analysis • Design • Implementation • Testing (validation) • Integration • maintenance Reference • http://en.wikipedia.org/wiki/Waterfall_process
Requirements Analysis Software requirements analysis is the activity of eliciting, analyzing, and recording requirements for software systems. 1 Eliciting Requirements 2 Analyzing Requirements 3 Recording Requirements
Design OODA
Software testing Software testing is the process used to help identify the correctness, completeness, security and quality of developed computer software. • testing can never completely establish the correctness of arbitrary computer software. • computability theory, a field of computer science, an elegant mathematical proof concludes that it is impossible to solve the halting problem,
Current trends in software engineering • Aspects • Agile • Software architectures • Software Product lines
Capability Maturity Model Capability Maturity Model (CMM) is a collection of instructions an organization can follow with the purpose to gain better control over its software development process. The CMM ranks software development organizations in a hierarchy of five levels, each with a progressively greater capability of producing quality software. • Chaos 75% organizations here. • . • . • . • .