What is Software Engineering? Engineering is about getting technology to do what it does well so humans can do what they do well Jeff Offutt Professor of Software Engineering Volgenau School of Engineering George Mason University http://www.cs.gmu.edu/~offutt/ Who Am I ? Jeff Offutt Parent : Steffi (24), Joyce (20), Andrew (12) Education : BS (Math & Data Processing), PhD (Computer Science, 1988) Professor : GMU, Software Engineering, Volgenau School Scientist : >160 refereed papers Leader : Journal of Software Testing, Verification, and Reliability, IEEE Conference on Software Testing CS 101, February 2015 © Jeff Offutt 2 Outline of Today’s Talk 1. What is Software Engineering and how is it related to Computer Science? 2. What Software Engineering educational opportunities does GMU offer? 3. Software Engineering quality attributes A. Testing: Can I break it? Yes I can! B. Usability: Can I use it? CS 101, February 2015 © Jeff Offutt 3 Comparing Computing Fields Calc-1, discrete math, graphs, logic design, test, maintenance, programming, web apps, … Calc-2, discrete math, CS theory Programming, … Calc-3, discrete math (logic, algebra) 3-4 programming / CS Calc-4 1-2 programming Calc-4, real analysis, … 1 programming CS 101, February 2015 Software Engineering Computer A b Science s t r a c t i o n How to design, test, maintain & build large, high quality programs How to make computers work Algorithms, programming, … Computer Engineering Computer components Chips, memory, cpu, … Electrical Engineering Anything that uses power Transistors, batteries, transformers, … Physics How the unoverse works … © Jeff Offutt 4 Engineers and Scientists Science is about adding to the knowledge base Engineering uses the knowledge to solve problems Science is discovery Engineering is invention Engineers use science to build things to improve our lives CS 101, February 2015 © Jeff Offutt 5 Goals of Science and Engineering Behaviors observe achieve Science Engineering find and describe design and develop Structures CS 101, February 2015 © Jeff Offutt 6 Computer Science and Software Engineering Computer Science is about fundamentally understanding what we can do with computing devices Software engineering is about building high quality computing solutions to real-life problems CS 101, February 2015 © Jeff Offutt 7 Outline of Today’s Talk 1. What is Software Engineering and how is it related to Computer Science? 2. What Software Engineering educational opportunities does GMU offer? 3. Software Engineering quality attributes A. Testing: Can I break it? Yes I can! B. Usability: Can I use it? CS 101, February 2015 © Jeff Offutt 8 Undergraduate Opportunities Applied Computer Science Concentration in Software Engineering Minor in Software Engineering 8 undergrad SWE courses Accelerated program into the MS-SWE program Offered by the Department of Computer Science CS 101, February 2015 © Jeff Offutt 9 Distinguishing SWE and CS Reliability Building High Quality Software specifying, modeling, designing, implementing, evaluating, deploying, maintaining, … Fact: Engineering software is distinct from the science of computing Goal: Give UG students a coherent treatment of engineering software CS 101, February 2015 © Jeff Offutt 10 ACS Software Engineering ACS Foundation: CS 101, 105, 112, 211; Math 113, 114, 125, 203 ACS Core: CS 262, 310, 330, 367, 321, 465, 483, 4xx; ECE 301 SWE Foundation and Core: SWE Related: SWE 205: Software Usability SWE 432, 443 SWE 301/401: Intern Prep & Reflect CS 363, 450, 455, 468, 471, 475 SWE 332: OO Design & Impl SWE 437: Software Test & Maint STAT 344; CS 306 15 Hours From Cross Disciplinary: ENGL 410: Prof / Tech Writing One of PSYC 333, COMM 320, COMM 335 Essentials of Computer Science Degree Software Engineering Essentials Communication/Organizational Skills CS 101, February 2015 © Jeff Offutt 11 Software Engineering Minor CS 112 (4 hrs) CS 211 (3 hrs) 9 hours from these 6 courses SWE 205 CS/SWE 332 CS/SWE 321 SWE 432 SWE 437 SWE 443 • SWE 205 – Usability Analysis and Design • CS / SWE 332 – OO software • CS / SWE 321 – Intro to software engineering • SWE 432 – Software usability and web software • SWE 437 – Software testing and maintenance • SWE 443 – Software architectures CS 101, February 2015 © Jeff Offutt 12 Outline of Today’s Talk 1. What is Software Engineering and how is it related to Computer Science? 2. What Software Engineering educational opportunities does GMU offer? 3. Software Engineering quality attributes A. Testing: Can I break it? Yes I can! B. Usability: Can I use it? CS 101, February 2015 © Jeff Offutt 13 Software is a Skin that Surrounds Our Civilization Quote due to Dr. Mark Harman CS 101, February 2015 © Jeff Offutt 14 Outline of Today’s Talk 1. What is Software Engineering and how is it related to Computer Science? 2. What Software Engineering educational opportunities does GMU offer? 3. Software Engineering quality attributes A. Testing: Can I break it? Yes I can! B. Usability: Can I use it? CS 101, February 2015 © Jeff Offutt 15 Spectacular Software Failures NASA’s Mars lander : September 1999, crashed due to a units integration fault Mars Polar Lander crash site? Toyota brakes : Dozens dead, thousands of crashes Major failures : Ariane 5 explosion, Financial engines, Intel’s Pentium FDIV bug Poor testing of safety-critical software can kill : THERAC-25 radiation machine: 3 dead Ariane 5: exception-handling bug : forced self destruct on maiden flight (64-bit to 16bit conversion: about 370 million $ lost) THERAC-25 design We need our software to work (be reliable) Testing is how we evaluate whether it works. CS 101, February 2015 © Jeff Offutt 16 Airbus 319 Safety Critical Software Control Loss of autopilot Loss of most flight deck lighting and intercom Loss of both the commander’s and the co-pilot’s primary flight and navigation displays ! CS 101, February 2015 © Jeff Offutt 17 Northeast Blackout of 2003 508 generating units and 256 power plants shut down Affected 10 million people in Ontario, Canada Affected 40 million people in 8 US states Financial losses of $6 Billion USD The alarm system in the energy management system failed due to a software error and operators were not informed of the power overload in the system CS 101, February 2015 © Jeff Offutt 18 What is Testing & Why is It Hard? Software Testing tries to find software faults before users do A program can have quadrillions of inputs. And will work correctly on most! If a million inputs trigger the fault. Only .00000000025 chance of finding it ... Software Testers try to find test inputs that will trigger the faults before they get to users CS 101, February 2015 © Jeff Offutt 19 Testing Student Programs Programming Assignment Submit Debugging Does it work ? All the time ? Maybe not … Customers care ! Thus … Industry cares ! Who cares ? CS 101, February 2015 © Jeff Offutt 20 Software Testing in Real Life Needs or idea Requirements Deployment System Test Architecture Future Evolution Unrecoverable Common !! Disaster! Very expensive Full System Design CS 101, February 2015 Programming Integration Test Unit Test Integrate © Jeff Offutt Expensive 21 Google’s Motto Debugging Sucks Testing Rocks CS 101, February 2015 © Jeff Offutt 22 Cost Of Late Testing 60 Assume $1000 unit cost, per fault, 100 faults 50 40 Fault origin (%) 30 Fault detection (%) 20 Unit cost (X) 10 0 Software Engineering Institute; Carnegie Mellon University; Handbook CMU/SEI-96-HB-002 Finding faults early saves LOTS of money CS 101, February 2015 © Jeff Offutt 23 What Do Testing Researchers Do? Software Testing Researchers invent clever ways to design inputs that will find software faults Build software tools to create tests Run experiments to find out how well the testing ideas work Tell industry how to use the ideas Teach students – the next generation of software testers CS 101, February 2015 © Jeff Offutt 24 Outline of Today’s Talk 1. What is Software Engineering and how is it related to Computer Science? 2. What Software Engineering educational opportunities does GMU offer? 3. Software Engineering quality attributes A. Testing: Can I break it? Yes I can! B. Usability: Can I use it? CS 101, February 2015 © Jeff Offutt 25 What is Usability? The ability for a typical user to effectively accomplish a task without needing external help Usable software should be : • Learnable within with reasonable effort • Tolerant of reasonable user mistakes • Efficient to use without undue effort CS 101, February 2015 © Jeff Offutt 26 Example: Error Message People are poor at being perfect … but pretty good at getting “close” Make all actions undoable Make it easy to discover mistakes (visibility) Make it easy to correct mistakes Do not think in terms of “users making errors,” think in terms of users getting close CS 101, February 2015 © Jeff Offutt 27 A Poor Error Message 1-Jul-16 © Offutt, 2010-2012 28 A Poor Error Message I did! Maybe I need 50 cents … 50 1-Jul-16 © Offutt, 2010-2012 29 A Poor Error Message Must enter 2 zeros (other values not allowed) 00 50 1-Jul-16 © Offutt, 2010-2012 30 More Bad Examples ! HT ACCESS: Error accessing “http://www.cs.gmu.edu/offutt.html”: “HTTP: File/directory does not exist” ☺ The requested web page /offutt.html was not found on http:// ... !PrintMonitor is currently printing “Doc 1: Bad Examples” from “WordPerfect 2.1”. If PrintMonitor quits now, “Doc 1: Bad Examples" will be printed when the system is restarted with MultiFinder. Do you want to finish printing before PrintMonitor quits? (Windows 95) ☺ Currently printing. If you shut the computer down now, the document will not be printed until MS Word restarts. You can still delay shutdown until the document finishes printing. Wait and shutdown after printing: Shutdown now and cancel printing: 1-Jul-16 © Offutt, 2010-2012 31 Another Bad Example http://www.inwarehouse.se/ : Microsoft OLE DB Provider for ODBC Drivers error '80004005' [Microsoft][ODBC SQL Server Driver][SQL Server]Your transaction (process ID #85) was deadlocked with another process and has been chosen as the deadlock victim. Rerun your transaction. /script/webkatalogen/pb.asp, line 221 ☺ Internal failure, please try again. 1-Jul-16 © Offutt, 2010-2012 32 More Bad Examples Bus error, core dumped (Unix) ☺ Access through a nil pointer in function GetNext() Terminating thread, due to a stack overflow problem. A VxD, possibly recently installed, has consumed too muhc stack space. Increase the setting of MinSPs in SYSTEM.INI or remove recently installed VxDs. There are currently 5 SPs allocated. (Windows 2000) ☺ ??? 1-Jul-16 © Offutt, 2010-2012 33 Summary 1. Software Engineering & Computer Science 2. Software Engineering education @ Mason 3. Software Engineering quality attributes A. What is software testing? B. What is software usability? Jeff Offutt offutt@gmu.edu http://cs.gmu.edu/~offutt/ 4430 Engineering Building CS 101, February 2015 © Jeff Offutt 34