Software Engineering EE422C.

Slides:



Advertisements
Similar presentations
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.
Advertisements

1 CMSC 132: Object-Oriented Programming II Software Development I Department of Computer Science University of Maryland, College Park.
©Ian Sommerville 2004Software Engineering, 7th edition. Chapter 4 Slide 1 Software Processes.
Software Life Cycle Model
CS527: (Advanced) Topics in Software Engineering Overview of Software Quality Assurance Tao Xie ©D. Marinov, T. Xie.
©Ian Sommerville 2004Software Engineering, 7th edition. Chapter 4 Slide 1 Software Processes.
CS527: (Advanced) Topics in Software Engineering (Software Testing and Analysis) Darko Marinov August 23, 2011.
CS 360 Lecture 3.  The software process is a structured set of activities required to develop a software system.  Fundamental Assumption:  Good software.
©Ian Sommerville 2000, Mejia-Alvarez 2009 Slide 1 Software Processes l Coherent sets of activities for specifying, designing, implementing and testing.
Instructor: Peter Clarke
©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 1 Slide 1 Software Processes (Chapter 3)
©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 3 Slide 1 Software Processes l Coherent sets of activities for specifying, designing,
CS CS 5150 Software Engineering Lecture 3 Software Processes 2.
University of Palestine software engineering department Testing of Software Systems Testing throughout the software life cycle instructor: Tasneem Darwish.
Cs498dm Software Testing Darko Marinov January 22, 2008.
Lecture 3 Software Engineering Models (Cont.)
Historical Aspects Origin of software engineering –NATO study group coined the term in 1967 Software crisis –Low quality, schedule delay, and cost overrun.
Cs498dm Software Testing Darko Marinov January 17, 2012.
Software Engineering - Abdul Majeed. What is software? Definition of Software Engineering Software Process Generic view of Software Engineering Software.
Software Engineering. Lesson 2 Explain what is a software life cycle model. Identify the different software life cycle models. – Classical Waterfall Model.
EE422C Software Design and Implementation II Vallath Nandakumar Fall 2015.
WATERFALL DEVELOPMENT MODEL. Waterfall model is LINEAR development lifecycle. This means each phase must be completed before moving onto the next!!! WHAT.
Software Engineering. Acknowledgement Charles Moen Sharon White Bun Yue.
Software Engineering Jon Walker. What is Software Engineering? Why do we call it Software Engineering? Why not just call it programming or software development?
Software Development Life Cycle (SDLC)
Software Engineering, 8th edition. Chapter 4 1 Courtesy: ©Ian Sommerville 2006 FEB 13 th, 2009 Lecture # 5 Software Processes.
Software Development Process CS 360 Lecture 3. Software Process The software process is a structured set of activities required to develop a software.
Lectures 2 & 3: Software Process Models Neelam Gupta.
CS527: (Advanced) Topics in Software Engineering (Software Testing and Analysis) Darko Marinov August 24, 2010.
Cs498dm Software Testing Darko Marinov January 24, 2012.
CS 310 Ch 4: Software Processes Software process: a set of activities that lead to a software system specification design and implementation validation.
Laurea Triennale in Informatica – Corso di Ingegneria del Software I – A.A. 2006/2007 Andrea Polini II. Software Life Cycle.
Announcements/Assignments
Embedded Systems Software Engineering
Software engineering (cs3529) target classes: cs14: A,B
CS223: Software Engineering
Software Development.
Flight Software Conference 2016
Why study Software Design/Engineering ?
Cs498st Software Testing Tao Xie.
Software Testing Introduction CS 4501 / 6501 Software Testing
Integrating Quality Activities in the Project Life Cycle
Software Development methodologies
PROJECT LIFE CYCLE AND EFFORT ESTIMATION
Software Processes (a)
Agile Software Development Brian Moseley.
Life Cycle Models PPT By :Dr. R. Mall.
Software Engineering: A Practitioner’s Approach, 7/e Chapter 2 Prescriptive Process Models copyright © 1996, 2001, 2005 R.S. Pressman & Associates, Inc.
Software Engineering: A Practitioner’s Approach, 7/e Chapter 2 Prescriptive Process Models copyright © 1996, 2001, 2005 R.S. Pressman & Associates, Inc.
Software Processes.
COMP 350: Object Oriented Analysis and Design Lecture 2
How to Successfully Implement an Agile Project
Paul Ammann The Agile Heresy: What Drives Traditional Software Engineering, and Why Agile Turns it Upside Down Paul Ammann.
Software life cycle models
An Overview of Software Processes
Chapt 2 Iterative Evolutionary Agile.
Process Models Coming up: Prescriptive Models.
An Overview of Software Processes
Gathering Systems Requirements
Introduction If you have got a call for an Agile testing interview, then congratulations are in order. You may be feeling nervous, but it sure to be felt.
Welcome to Corporate Training -1
Software Processes Process should be
UNIT 5 EMBEDDED SYSTEM DEVELOPMENT
Software Processes.
UNIT 5 EMBEDDED SYSTEM DEVELOPMENT
Gathering Systems Requirements
CS527: Advanced Topics in Software Engineering (Software Testing and Analysis) Darko Marinov August 26, 2008.
Agile software development
CSCI 360: Software Architecture & Design
Presentation transcript:

Software Engineering EE422C

What is Software Engineering? SWEs use a disciplined approach to the development of software- driven systems SWE ! = programmer; SE is a relatively new field of study that applies to all types of systems that are developed as usable products There are many different jobs that SWEs do Software Engineering is a challenging career because of the inherent problems of software - as well as the rate of change in computing technologies, and the ever broadening range of applications

Software is complex malleable intangible abstract solves complex problems interacts with other software and hardware consequently, often software is buggy

What is a bug? etymology [wikipedia] perhaps first use of term in hardware engineering to describe mechanical failures, e.g., It has been just so in all of my inventions. The first step is an intuition, and comes with a burst, then difficulties arise—this thing gives out and [it is] then that "Bugs"—as such little faults and difficulties are called—show themselves and months of intense watching, study and labor are requisite before commercial success or failure is certainly reached. Thomas Edison, 1878

First actual case of bug being found Harvard Mark II

Ariane-5, 1996 crashed–went off-course 37 sec into flight sequence Crashed 37 sec after initiation of flight sequence Unhandled numerical overflow exception Details at: http://www.ima.umn.edu/~arnold/disasters/ariane5rep.html Photos: ESA/CNES

Mars polar lander, 1999 crashed–premature shut down at 40 meters altitude Crashed on landing Descent engine to shut down prematurely Error traced to a single bad line of code Details at: ftp://ftp.hq.nasa.gov/pub/pao/reports/2000/2000_mpl_report_1.pdf Photos: JPL/NASA

Therac-25 The Therac-25 was a radiation therapy machine produced by Atomic Energy of Canada Limited (AECL) in 1982 after the Therac-6 and Therac-20 units (the earlier units had been produced in partnership with CGR of France).

Therac-25 (cont.) Involved in at least six accidents between 1985 and 1987, in which patients were given massive overdoses of radiation. Because of concurrent programming errors, it sometimes gave its patients radiation doses that were hundreds of times greater than normal, resulting in death or serious injury. These accidents highlighted the dangers of software control of safety-critical systems, and they have become a standard case study in health informatics and software engineering. (Wikipedia)

What is the Heartbleed bug? Exploits a vulnerability in OpenSSL software library, used to implement the Transport Layer Security protocol used in web, instant messaging etc. Exposes user’s passwords, cookies and other data to the attacker. Not a virus. One small bug in Open-Source software that made millions of computers vulnerable.

Heartbleed…

Buffer over-read bug The extra data that is sent back is fetched from the server’s memory, due to the bug. It could include passwords and private keys. Like if someone you had called in to fix your plumbing were to look through your closets for information. Russell and Norvig, Artificial Intelligence, a Modern Approach, 2003

Warranties–two decades ago ACM SIGSOFT Software Engineering Notes, Vol. 12, No. 3, July 87

Warranties–two decades ago (cont.) ACM SIGSOFT Software Engineering Notes, Vol. 12, No. 3, July 87

Warranties–today Apple Google Microsoft “Apple warrants the media on which the Apple Software is recorded and delivered by Apple to be free from defects in materials and workmanship under normal use for a period of ninety (90) days from the date of original retail purchase.” “... THE APPLE SOFTWARE IS PROVIDED "AS IS", WITH ALL FAULTS AND WITHOUT WARRANTY OF ANY KIND ...” Google “... is provided "as is," with no warranties whatsoever.” Microsoft “... the Software will perform substantially in accordance with the accompanying materials for a period of ninety (90) days ...”

Economic impact “The Economic Impact of Inadequate Infrastructure for Software Testing” NIST Report, May 2002 $59.5B annual cost of inadequate software testing infrastructure $22.2B annual potential cost reduction from feasible infrastructure improvements

Correctness common (partial) properties specific properties segfaults, uncaught exceptions resource leaks data races, deadlocks specific properties requirements specification

Traditional waterfall model requirements analysis design checking implementation unit testing integration system testing maintenance verification

Phases Requirements Design specify what the software should do analysis: eliminate/reduce ambiguities, inconsistencies, and incompleteness Design specify how the software should work split software into modules, write specifications checking: check conformance to requirements

Phases (cont.) Implementation Integration Maintenance specify how the modules work unit testing: test each module in isolation Integration specify how the modules interact integration testing: test module interactions system testing: test entire system Maintenance evolve software as requirements change regression testing: test changes

Testing effort Reported to be >50% of development cost [eg. Beizer’90] Microsoft: 75% time spent testing 50% testers who spend all time testing 50% developers who spend half time testing

When to test The later a bug is found, the higher the cost orders of magnitude increase in later phases also the smaller chance of a proper fix Old saying: test often, test early New methodology: test-driven development write tests before code

Software still buggy folklore: 1-10 (residual) bugs per 1000 lines of code (after testing) consensus: total correctness impossible to achieve for complex software risk-driven finding/elimination of bugs focus on specific correctness properties

A Newer Approach Agile Program Development describes a set of values and principles for software development under which requirements and solutions evolve through the collaborative effort of self-organizing cross-functional teams. It advocates adaptive planning, evolutionary development, early delivery, and continuous improvement, and it encourages rapid and flexible response to change. These principles support the definition and continuing evolution of many software development methods. (Wikipedia)

Agile Development Iterative, incremental and evolutionary Short “sprints” Planning, analysis, design, coding, unit testing, and acceptance testing for a subset of the larger problem. Efficient and face-to-face communication Customer and product manager are part of the team. Very short feedback loop and adaptation cycle Daily scrum (short meeting) Quality focus Continuous integration Working product. Don’t break the build!

Pros and Cons Pros Cons More flexibility Immediate feedback. Helps customer determine needs. Product always in a tested “release state”. Finds bugs earlier. Everything is unit tested as it is built. Cons Flexibility can create “scope creep.” Customer sees more possibilities as the product is created. Harder to provide documentation Because the features can change more rapidly, it can be harder to keep up with the product documentation.

Questions and comments