Software Engineering Chapter 3 CPSC 110 - Pascal Brent M. Dingle Texas A&M University.

Slides:



Advertisements
Similar presentations
Programming Types of Testing.
Advertisements

Chapter 6: Design of Expert Systems
16/13/2015 3:30 AM6/13/2015 3:30 AM6/13/2015 3:30 AMIntroduction to Software Development What is a computer? A computer system contains: Central Processing.
16/27/2015 3:38 AM6/27/2015 3:38 AM6/27/2015 3:38 AMTesting and Debugging Testing The process of verifying the software performs to the specifications.
Programming Fundamentals (750113) Ch1. Problem Solving
© 2006 Pearson Addison-Wesley. All rights reserved2-1 Chapter 2 Principles of Programming & Software Engineering.
Chapter 1: Introduction To Computer | SCP1103 Programming Technique C | Jumail, FSKSM, UTM, 2005 | Last Updated: July 2005 Slide 1 Introduction To Computers.
1 L07SoftwareDevelopmentMethod.pptCMSC 104, Version 8/06 Software Development Method Topics l Software Development Life Cycle Reading l Section 1.4 – 1.5.
Computer Programming and Basic Software Engineering 4. Basic Software Engineering 1 Writing a Good Program 4. Basic Software Engineering.
Introduction to Programming Prof. Rommel Anthony Palomino Department of Computer Science and Information Technology Spring 2011.
Introduction 01_intro.ppt
Problem Solving and Software Engineering Chapter 1.
CC0002NI – Computer Programming Computer Programming Er. Saroj Sharan Regmi Week 7.
© Janice Regan, CMPT 128, Jan CMPT 128 Introduction to Computing Science for Engineering Students Creating a program.
1 Advanced Computer Programming Project Management: Software Life Cycle Copyright © Texas Education Agency, 2013.
University of Palestine software engineering department Testing of Software Systems Fundamentals of testing instructor: Tasneem Darwish.
UNIT 3 TEMPLATE AND EXCEPTION HANDLING. Introduction  Program errors are also referred to as program bugs.  A C program may have one or more of four.
Comp 245 Data Structures Software Engineering. What is Software Engineering? Most students obtain the problem and immediately start coding the solution.
CPSC 171 Introduction to Computer Science 3 Levels of Understanding Algorithms More Algorithm Discovery and Design.
Programming. What is a Program ? Sets of instructions that get the computer to do something Instructions are translated, eventually, to machine language.
CS 360 Lecture 3.  The software process is a structured set of activities required to develop a software system.  Fundamental Assumption:  Good software.
The Program Development Cycle
Chapter 3: Completing the Problem- Solving Process and Getting Started with C++ Introduction to Programming with C++ Fourth Edition.
CSC-115 Introduction to Computer Programming
Computer Programming I An Introduction to the art and science of programming with C++
Programming Lifecycle
Program Development Life Cycle (PDLC)
The Software Development Life Cycle. Software Development SDLC The Software Development Life-Cycle Sometimes called the program development lifecycle.
Copyright © 2007 Pearson Education, Inc. Publishing as Pearson Addison-Wesley Slide 1- 1 October 20, October 20, 2015October 20, 2015October 20,
1 Problem Solving with C++ The Object of Programming Walter Savitch Chapter 1 Introduction to Computers and C++ Programming Slides by David B. Teague,
Software Development Process.  You should already know that any computer system is made up of hardware and software.  The term hardware is fairly easy.
DEBUGGING. BUG A software bug is an error, flaw, failure, or fault in a computer program or system that causes it to produce an incorrect or unexpected.
Problem Solving Techniques. Compiler n Is a computer program whose purpose is to take a description of a desired program coded in a programming language.
Chapter 7 Software Engineering Introduction to CS 1 st Semester, 2015 Sanghyun Park.
Program Development Cycle Modern software developers base many of their techniques on traditional approaches to mathematical problem solving. One such.
CS Data Structures I Chapter 2 Principles of Programming & Software Engineering.
The Software Development Process
1 CSCD 326 Data Structures I Software Design. 2 The Software Life Cycle 1. Specification 2. Design 3. Risk Analysis 4. Verification 5. Coding 6. Testing.
1 Program Planning and Design Important stages before actual program is written.
Software Development Problem Analysis and Specification Design Implementation (Coding) Testing, Execution and Debugging Maintenance.
© 2006 Pearson Addison-Wesley. All rights reserved 2-1 Chapter 2 Principles of Programming & Software Engineering.
Software Engineering. Acknowledgement Charles Moen Sharon White Bun Yue.
CS 1120: Computer Science II Software Life Cycle Slides courtesy of: Prof. Ajay Gupta and Prof. James Yang (format and other minor modifications by by.
Intermediate 2 Computing Unit 2 - Software Development.
CSC 480 Software Engineering Test Planning. Test Cases and Test Plans A test case is an explicit set of instructions designed to detect a particular class.
CPSC 871 John D. McGregor Module 8 Session 1 Testing.
Chapter 5 How are software packages developed?. What are the main steps in software project development? Writing Specifications - Analysis Phase Developing.
Copyright 1999 by Larry Fuhrer. Pascal Programming Branching, Loops, Predefined Functions.
5.01 Understand Different Types of Programming Errors
1 The Software Development Process ► Systems analysis ► Systems design ► Implementation ► Testing ► Documentation ► Evaluation ► Maintenance.
Software Development Process CS 360 Lecture 3. Software Process The software process is a structured set of activities required to develop a software.
Chapter 8: Maintenance and Software Evolution Ronald J. Leach Copyright Ronald J. Leach, 1997, 2009, 2014,
CPSC 372 John D. McGregor Module 8 Session 1 Testing.
Introduction to Computers and C++ Programming
5.01 Understand Different Types of Programming Errors
The Software Development Cycle
Software Development CMSC 202.
5.01 Understand Different Types of Programming Errors
Unit# 9: Computer Program Development
Problem Solving Techniques
The Object-Oriented Thought Process Chapter 05
Lecture 09:Software Testing
Programming Fundamentals (750113) Ch1. Problem Solving
Programming Fundamentals (750113) Ch1. Problem Solving
CSC128 FUNDAMENTALS OF COMPUTER PROBLEM SOLVING
Programming Fundamentals (750113) Ch1. Problem Solving
ICT Gaming Lesson 2.
Programming Fundamentals (750113) Ch1. Problem Solving
Chapter 2 – part a Brent M. Dingle Texas A&M University
The Software Development Cycle
Presentation transcript:

Software Engineering Chapter 3 CPSC Pascal Brent M. Dingle Texas A&M University

Software Engineering  Robustness of a program  Iterative Enhancement  Testing and Debugging – types of errors  Software Life Cycle

Robustness  In general a robust program is a program that does not fail due to unexpected or unlikely input.  In general a robust program will consider all forms and types of input – including input that is entered incorrectly by the user.  It will guarantee that any assumptions it had to make about the input are indeed true.  How this is accomplished is dependant on the programmer, the problem and ‘other’ things.

Iterative Enhancement  Iterative Enhancement is the process of first designing a simple program and then adding features and refinements as deemed necessary.

Testing and Debugging  This is perhaps THE most important part of programming.  If a program is NOT tested how do you know it was actually programmed correctly?  Even the best algorithms must be explained to the computer correctly.

Testing  Testing a program means running it and trying to find errors in it.  It is best to use as many forms of testing as possible.  It is best to have as many people as possible test the program – and the program’s writers are NOT very good testers because they already know what the program is supposed to do.

Debugging  Debugging is the removing of errors (bugs) from a program.  There are several ‘types’ of errors you will find: syntax errors runtime errors logical errors

Syntax Errors  Syntax errors are violations of the syntax (grammar) rules of the programming language.  These are the ONLY type of errors that the compiler will detect.

Runtime Errors  Runtime errors occur when the program is running.  Most runtime errors involve numeric calculations.  For example: Because a computer is finite you can increment a number too far – this results in an overflow error. In old video games you could ‘flip’ the score back to zero. Other runtime errors are: division by zero taking the square root of a negative number etc.  Do NOT confuse these with logical errors !  Some say runtime errors are caused by logical errors – but it is more often a failure in robustness.

Logical Errors  Logical errors are mistakes in the algorithm itself.  This means that the program compiles AND runs, but produces an incorrect result.  You will NOT receive any error from the computer concerning these types of errors.  Often these errors involve using less than ( ) or something similar.  But every now and then, they are caused by simply using an incorrect algorithm entirely.

Software Life Cycle – in general  There are several different descriptions of the software life cycle found throughout computer science.  For this class we will use the one presented in the book.  If you would like to see others, do some research on it. =)

Software Life Cycle – 6 Phases  Analysis and task specification.  Design of the software.  Implementation (coding).  Testing.  Maintenance and evolution of the system.  Obsolescence.

Analysis Phase  During this phase, many questions are answered in particular the question: WHAT must the software do?  Here it must be determined what the software is expected to do by the person paying for the development and by the expected users.  Usually specifications are set in this phase – or rather the software’s requirements.

Design Phase  This phase answers the question: HOW must the software do (whatever)? and the (whatever) was determined in the Analysis phase.  In this phase algorithms will be selected or created as needed.  The (program and data) structure of the software should also be determined here.

Implementation (coding) Phase  Once the algorithms are determined, they will be coded (programmed into the computer).  Sometimes (often) this phase will lead back to the design phase as unforeseen problems in the design are encountered.

Testing Phase  Testing is often broken down into small pieces so that each part of a piece of software is tested at first.  Once each small part is tested then larger parts are tested and eventually the final product will be tested (all this is theoretical of course =)  Testing is sometimes incorporated into the Design and/or the Implementation Phase and you will bounce back and forth as debugging takes place.

Maintenance Phase  This phase begins immediately after the program is ‘released’ for use.  Inevitably more bugs are found as time goes on and more needs will arise, so the software will need to be maintained – to fix previously unknown bugs, to modify the code to meet new needs, to fix new bugs introduced by the maintenance process itself and so on.

Obsolescence Phase  This phase is entered when a piece of software is seen to no longer have any value.  This does not always mean the software is removed completely from use.  It means that the maintenance phase will no longer occur and that using an obsolete piece of software is ‘at your own risk.’  This phase often occurs when a company changes operating systems or computer systems or when technology simply advances beyond the software and better software is available.

End Software Engineering