What is Software Engineering?

Slides:



Advertisements
Similar presentations
Demonstrators: Mudasir Nazir(08-CS-41).  I am highly addicted to this field.  Working with W3C in research program(building CSS for creating web site.
Advertisements

Model-Driven Test Design Based on the book by Paul Ammann & Jeff Offutt Jeff Offutt Professor, Software Engineering.
Introduction to Software Testing Chapter 9.2 Challenges in Testing Software – Software Testability Paul Ammann & Jeff Offutt
Introduction to Software Testing Chapter 9.3 Challenges in Testing Software Test Criteria and the Future of Testing Paul Ammann & Jeff Offutt
Of 46 How To Teach Testing Based on the book Introduction to Software Testing with Paul Ammann Jeff Offutt Professor,
SBSE Course 3. EA applications to SE Analysis Design Implementation Testing Reference: Evolutionary Computing in Search-Based Software Engineering Leo.
Department of Mathematics and Computer Science
1 Basic Definitions: Testing What is software testing? Running a program In order to find faults a.k.a. defects a.k.a. errors a.k.a. flaws a.k.a. faults.
Introduction to Software Testing (2nd edition) Chapter 1 Why Do We Test Software? Paul Ammann & Jeff Offutt
1 SWE Introduction to Software Engineering Lecture 28 – Introduction to Software Testing.
THE IMPORTANCE OF ERROR MESSAGES (and other feedback messages) IN THE USER INTERFACE “The needs of both people and machines can be reconciled; users will.
Computing MS Degrees Masters Degrees in Computing at GMU Jeff Offutt Professor of Software Engineering Chair, Graduate Studies Committee Coordinator, MS-SWE.
CS527: (Advanced) Topics in Software Engineering Overview of Software Quality Assurance Tao Xie ©D. Marinov, T. Xie.
Introduction to Software Testing Paul Ammann & Jeff Offutt Updated 24-August 2010.
USS Yorktown (1998) A crew member of the guided-missile cruiser USS Yorktown mistakenly entered a zero for a data value, which resulted in a division by.
Introduction to Software Testing Chapter 9.3 Challenges in Testing Software Test Criteria and the Future of Testing Paul Ammann & Jeff Offutt
CS451 Computer Graphics JYH-MING LIEN DEPARTMENT OF COMPUTER SCIENCE GEORGE MASON UNIVERSITY.
SOFTWARE ENGINEERING Hoang Huu Hanh, Hue University hanh-at-hueuni.edu.vn.
SOFTWARE ENGINEERING1 Introduction. Software Software (IEEE): collection of programs, procedures, rules, and associated documentation and data SOFTWARE.
Software Software is omnipresent in the lives of billions of human beings. Software is an important component of the emerging knowledge based service.
SWE ACS/Minor 2009 Software Engineering Two Undergraduate Degrees Applied Computer Science and Minor Offered by the Department of Computer Science New.
CS 430/530 Formal Semantics Paul Hudak Yale University Department of Computer Science Lecture 1 Course Overview September 6, 2007.
Ranga Rodrigo. The purpose of software engineering is to find ways of building quality software.
Software Testing and Quality Assurance Software Quality Assurance 1.
Software Engineering. Acknowledgement Charles Moen Sharon White Bun Yue.
Introduction to Software Testing Why Do We Test Software? Dr. Pedro Mejia Alvarez From Book: Introduction to Software Testing, P.Ammann&J.Offutt.
Introduction to Software Testing Model-Driven Test Design and Coverage testing Paul Ammann & Jeff Offutt Update.
Department of Mathematics and Computer Science
1 Chapter 1- Introduction How Bugs affect our lives What is a Bug? What software testers do?
SWE minor 2007 Minor in Software Engineering Offered by the Departments of Computer Science and Information & Software Engineering New for Fall 2007.
Testing Your Program: Input Space Partitioning
Usability Overview Upsorn Praphamontripong CS
Paul Ammann & Jeff Offutt
Paul Ammann & Jeff Offutt
Introduction to Unique Aspects of Web Applications
Responsible Authorship
Introduction Edited by Enas Naffar using the following textbooks: - A concise introduction to Software Engineering - Software Engineering for students-
Error Messages and Other Feedback
Software Testing Introduction CS 4501 / 6501 Software Testing
Lecture 1 What is Software Engineering? CSC 4700 Software Engineering
The Software Development Cycle
Introduction SOFTWARE ENGINEERING.
Jeff Offutt SWE 637 Software Testing
Hierarchical Architecture
IBM Start Now Host Integration Solutions
Software Testing and Maintenance Introduction
Introduction Edited by Enas Naffar using the following textbooks: - A concise introduction to Software Engineering - Software Engineering for students-
Norman Chapter 5 Error Messages and Other Feedback
Error Messages and Other Feedback
Paul Ammann & Jeff Offutt
Cooper Part II Making Well-Behaved Products Error Handling
Software Usability and Design
Paul Ammann & Jeff Offutt
Introduction to Software Testing
Introduction to Software Testing
Software Testing and Maintenance Modifying Code
Operating Systems Bina Ramamurthy CSE421 11/27/2018 B.Ramamurthy.
Testing and Test-Driven Development CSC 4700 Software Engineering
11/29/2018 Department of Software Engineering and IT Engineering
Minor in Software Engineering
(some of) My Research Engineering is about getting technology to do what it does well so humans can do what they do well Jeff Offutt Professor of Software.
Jeff Offutt SWE 637 Software Testing
Norman Chapter 5 Error Messages and Other Feedback
User Interface Design and Development
Test Cases, Test Suites and Test Case management systems
Review for Final – Spring 2018
Error Handling in Java Servlets
Review for Final – Spring 2019
The Software Development Cycle
Presentation transcript:

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 https://www.cs.gmu.edu/~offutt/

Who Am I ? Jeff Offutt Parent : Steffi (26), Joyce (22), Andrew (14) Education : BS (Math, Data Processing), PhD (Computer Science, 1988) Professor : GMU, Software Engineering, Volgenau School Scientist : >175 refereed papers Leader : Journal of Software Testing, Verification, and Reliability; IEEE Conference on Software Testing; MS-SWE program CS 101, February 2017 © Jeff Offutt

Today’s Talk What is Software Engineering and how is it related to Computer Science? What Software Engineering educational opportunities does GMU offer? Software Engineering quality attributes Testing: Can I break it? Yes I can! Usability: Can I use it? CS 101, February 2017 © Jeff Offutt

Comparing Computing Fields Software Engineering A b s t r a c i o n Calc-1, discrete math, graphs, logic design, test, maintenance, programming, web apps, … How to design, test, maintain & build large, high quality programs Computer Science Calc-2, discrete math, CS theory Programming, … How to make computers work Algorithms, programming, … Computer Engineering Calc-3, discrete math (logic, algebra) 3-4 programming / CS Computer components Chips, memory, cpu, … Electrical Engineering Anything that uses power Transistors, batteries, transformers, … Calc-4 1-2 programming Calc-4, real analysis, … 1 programming Physics How the universe works … CS 101, February 2017 © Jeff Offutt

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 2017 © Jeff Offutt

Goals of Science and Engineering Behaviors observe achieve find and describe Science Engineering design and develop Structures CS 101, February 2017 © Jeff Offutt

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 2017 © Jeff Offutt

Outline of Today’s Talk What is Software Engineering and how is it related to Computer Science? What Software Engineering educational opportunities does GMU offer? Software Engineering quality attributes Testing: Can I break it? Yes I can! Usability: Can I use it? CS 101, February 2017 © Jeff Offutt

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 2017 © Jeff Offutt

Distinguishing SWE and CS Reliability Maintainability Building High Quality Software specifying, modeling, designing, implementing, evaluating, deploying, maintaining, … Scalability Usability Security Availability etc. ... Fact: Engineering software is distinct from the science of computing Goal: Give UG students a coherent treatment of engineering software CS 101, February 2017 © Jeff Offutt

ACS Software Engineering Essentials of Computer Science Degree 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 Software Engineering Essentials SWE Foundation and Core: SWE 205: Software Usability SWE 301/401: Intern Prep & Reflect SWE 332: OO Design & Impl SWE 437: Software Test & Maint STAT 344; CS 306 SWE Related: 15 Hours From SWE 432, 443 CS 363, 450, 455, 468, 471, 475 Communication/Organizational Skills Cross Disciplinary: ENGH 410: Prof / Tech Writing One of PSYC 333, COMM 320, COMM 335 CS 101, February 2017 © Jeff Offutt

SWE Advising Notes If you are ACS / SWE, your advisor should be one of : Paul Ammann Jon Bell Kinga Dobolyi When meeting your advisor, you should first visit the degree requirements page: https://cs.gmu.edu/current-students/undergraduates/bs-in-applied-computer-science/software-engineering-concentration/ Then fill out the ACS / SWE study plan spreadsheet: https://cs.gmu.edu/media/uploads/programs/undergraduate/acs/coursePlanner-ACSSWE.xlsx Hassan Gomaa Thomas Latoza Jeff Offutt CS 101, February 2017 © Jeff Offutt

Software Engineering Minor CS 112 (4 hrs) CS 211 (3 hrs) 9 hours from these 6 courses CS/SWE 332 SWE 432 CS/SWE 321 SWE 437 SWE 443 SWE 205 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 2017 © Jeff Offutt

Outline of Today’s Talk What is Software Engineering and how is it related to Computer Science? What Software Engineering educational opportunities does GMU offer? Software Engineering quality attributes Testing : Can I break it? Yes I can! Usability : Can I use it? CS 101, February 2017 © Jeff Offutt

Software is the Nervous System of Our Civilization Quote partially due to Dr. Mark Harman CS 101, February 2017 © Jeff Offutt

Outline of Today’s Talk What is Software Engineering and how is it related to Computer Science? What Software Engineering educational opportunities does GMU offer? Software Engineering quality attributes Testing: Can I break it? Yes I can! Usability: Can I use it? CS 101, February 2017 © Jeff Offutt

Spectacular Software Failures NASA’s Mars lander : September 1999, crashed due to a units integration fault Ariane 5: exception-handling bug : forced self destruct on maiden flight (64-bit to 16-bit conversion: about 370 million $ lost) 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 THERAC-25 design Software testers try to find faults before the faults find users CS 101, February 2017 © Jeff Offutt

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 2017 © Jeff Offutt

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 2017 © Jeff Offutt

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 2017 © Jeff Offutt

Testing Student Programs Programming Assignment Submit Debugging Does it work ? All the time ? Maybe not … Customers care ! Thus … your employer will care ! Who cares ? CS 101, February 2017 © Jeff Offutt

Software Testing in Real Life Needs or idea Requirements Deployment Future Evolution Unrecoverable Common !! System Test Architecture Disaster! Very expensive Full System Design Expensive Integration Test Programming Unit Test Integrate CS 101, February 2017 © Jeff Offutt

Debugging Sucks Testing Rocks Google’s Motto CS 101, February 2017 © Jeff Offutt

Finding faults early saves LOTS of money Cost Of Late Testing 60 50 40 30 20 10 Assume $1000 unit cost, per fault, 100 faults $250K $35K $360K $150K Fault origin (%) Fault detection (%) Unit cost (X) $18K $20K $100K $13K $100K $6K $50K Total Savings $190K Requirements 28-Oct-2010, at GTAC, added the animation to demonstrate increasing the number of faults found early, thereby decreasing the number of faults found late, and finally saving money. Lots of it! This animation is fairly complicated … must practice first!! Design Prog / Unit Test Integration Test System Test Production Software Engineering Institute; Carnegie Mellon University; Handbook CMU/SEI-96-HB-002 Finding faults early saves LOTS of money CS 101, February 2017 © Jeff Offutt

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 2017 © Jeff Offutt

Outline of Today’s Talk What is Software Engineering and how is it related to Computer Science? What Software Engineering educational opportunities does GMU offer? Software Engineering quality attributes Testing: Can I break it? Yes I can! Usability: Can I use it? CS 101, February 2017 © Jeff Offutt

Usable software should be : 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 2017 © Jeff Offutt

User Manuals are Just Wrong If a simple interface needs a user manual, something is probably wrong CS 101, February 2017 © Jeff Offutt

Example: Error Messages 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 2017 © Jeff Offutt

A Poor Error Message CS 101, February 2017 © Jeff Offutt

A Poor Error Message I did! Maybe I need 50 cents … 50 CS 101, February 2017 © Jeff Offutt

A Poor Error Message Must enter 2 zeros (other values not allowed) 00 50 00 CS 101, February 2017 © Jeff Offutt

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:// ... 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. CS 101, February 2017 © Jeff Offutt

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) ??? CS 101, February 2017 © Jeff Offutt

https://cs.gmu.edu/~offutt/ Summary Software Engineering & Computer Science Software Engineering education @ Mason Software Engineering quality attributes What is software testing? What is software usability? Jeff Offutt offutt@gmu.edu https://cs.gmu.edu/~offutt/ 4430 Engineering Building CS 101, February 2017 © Jeff Offutt