Software Development Process. Software Development Process Stages 1. Analysing the problem: What do we need to do? 2. Designing the program: How do we.

Slides:



Advertisements
Similar presentations
Testing Relational Database
Advertisements

Software development process. Explanation of the iterative nature of the software development process.
Int 2 Computing Software Development.
Programming Types of Testing.
Computer Programming Rattapoom Waranusast Department of Electrical and Computer Engineering Faculty of Engineering, Naresuan University.
Alford Academy Business Education and Computing1 Advanced Higher Computing Based on Heriot-Watt University Scholar Materials Implementation and Testing.
© The McGraw-Hill Companies, 2006 Chapter 9 Software quality.
System Design and Analysis
Programming Fundamentals (750113) Ch1. Problem Solving
Chapter 1 Program Design
Chapter 3 Planning Your Solution
BPC.1 Basic Programming Concepts
PRE-PROGRAMMING PHASE
Copyright © 2001 by Wiley. All rights reserved. Chapter 1: Introduction to Programming and Visual Basic Computer Operations What is Programming? OOED Programming.
The Project AH Computing. Functional Requirements  What the product must do!  Examples attractive welcome screen all options available as clickable.
Systems Life Cycle A summary of what needs to be done.
DCT 1123 PROBLEM SOLVING & ALGORITHMS INTRODUCTION TO PROGRAMMING.
Introduction to Systems Analysis and Design Trisha Cummings.
Higher Grade Computing Studies 1. Software Development Cycle Higher Computing Software Development S. McCrossan 1 Introduction The development of a piece.
Languages and Environments Higher Computing Unit 2 – Software Development.
1 Shawlands Academy Higher Computing Software Development Unit.
Learning Objectives Data and Information Six Basic Operations Computer Operations Programs and Programming What is Programming? Types of Languages Levels.
Chapter 8: Systems analysis and design
Extended Prelude to Programming Concepts & Design, 3/e by Stewart Venit and Elizabeth Drake Chapter 2: Developing a Program.
Simple Program Design Third Edition A Step-by-Step Approach
สาขาวิชาเทคโนโลยี สารสนเทศ คณะเทคโนโลยีสารสนเทศ และการสื่อสาร.
Higher Computing Software Development. Software Development Process There are 7 main stages involved in developing a new software program: Analysis Design.
1 The Software Development Process  Systems analysis  Systems design  Implementation  Testing  Documentation  Evaluation  Maintenance.
School of Computer Science & Information Technology G6DICP - Lecture 9 Software Development Techniques.
Describe the Program Development Cycle. Program Development Cycle The program development cycle is a series of steps programmers use to build computer.
Programming for Beginners Martin Nelson Elizabeth FitzGerald Lecture 5: Software Design & Testing; Revision Session.
© 2011 Pearson Addison-Wesley. All rights reserved. Addison Wesley is an imprint of Stewart Venit ~ Elizabeth Drake Developing a Program.
Software Development Process.  You should already know that any computer system is made up of hardware and software.  The term hardware is fairly easy.
1 Software Development Topic 1 The Software Development Process.
I Power Higher Computing Software Development The Software Development Process.
An Object-Oriented Approach to Programming Logic and Design Fourth Edition Chapter 6 Using Methods.
Intermediate 2 Software Development Process. Software You should already know that any computer system is made up of hardware and software. The term hardware.
C++ Basics C++ is a high-level, general purpose, object-oriented programming language.
Iterative Nature of the Development Process Iteration = repetition or doing something over again. The software development process can be repetitive, especially.
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.
Chapter One An Introduction to Programming and Visual Basic.
Top-down approach / Stepwise Refinement & Procedures & Functions.
Intermediate 2 Computing Unit 2 - Software Development.
Computer Programming CONTENTS Introduction to Operating Systems Introduction to programming languages Introduction to perl programming language Programming.
Topic 4 - Database Design Unit 1 – Database Analysis and Design Advanced Higher Information Systems St Kentigern’s Academy.
Software Development Process Higher Computing Unit 2 – Software Development.
 Software Development Life Cycle  Software Development Tools  High Level Programming:  Structures  Algorithms  Iteration  Pseudocode  Order of.
1 The Software Development Process ► Systems analysis ► Systems design ► Implementation ► Testing ► Documentation ► Evaluation ► Maintenance.
Testing.
GCSE ICT 3 rd Edition The system life cycle 18 The system life cycle is a series of stages that are worked through during the development of a new information.
1 The System life cycle 16 The system life cycle is a series of stages that are worked through during the development of a new information system. A lot.
CMSC 2021 Software Development. CMSC 2022 Software Development Life Cycle Five phases: –Analysis –Design –Implementation –Testing –Maintenance.
Software Design and Development Development Methodoligies Computing Science.
 Problem Analysis  Coding  Debugging  Testing.
AS Level Computing 8 CHAPTER: Fundamentals of structured programming The basics of good programming Algorithms System Flow Charts Symbol Conventions Steps.
IL Marking Get out your CPU / Memory answers Swap with someone else
Higher Software Development
Data Types Variables are used in programs to store items of data e.g a name, a high score, an exam mark. The data stored in a variable is entered from.
Programming Fundamentals (750113) Ch1. Problem Solving
Programming Fundamentals (750113) Ch1. Problem Solving
Chapter One: An Introduction to Programming and Visual Basic
Programming Fundamentals (750113) Ch1. Problem Solving
Software Development Process
Software development process
Programming Fundamentals (750113) Ch1. Problem Solving
The Software Development Process
CHAPTER 6 Testing and Debugging.
Presentation transcript:

Software Development Process

Software Development Process Stages 1. Analysing the problem: What do we need to do? 2. Designing the program: How do we do it? 3. Implementing the design: Writing the program 4. Testing the design: Making sure it works 5. Documenting the design:User guides, Technical manuals 6. Evaluating the design:Limitations and improvements 7. Maintaining the software:Correcting, adapting and perfecting A Dance In The Dark Every Monday

An important aspect of software development is that it is a iterative process New information discovered in one stage of the process might result in previous stages being altered. For example errors in the testing stage might mean changes have to be made to the design or the implementation of the program Iteration

People Involved Client Systems Analyst Programmer Independent Test Group Project Manager

Analysis Stage

What Happens in the Analysis Stage? Key Task: To define the extent of the software task to be carried out. Personnel: Client and Systems Analyst Documentation: The legally binding Software Specification

Analysis is the most important part of the software development process. Changes can be identified early on thus reducing the amount of extra work and cost involved in trying to make changes later. Analysis is a fact finding process aimed at answering the following questions : WHO? WHAT? WHERE? WHEN? WHY? What is Analysis?

Analysis starts with discussions between the client and a systems analyst. The analyst will carry out three main tasks. observe the system currently in use. clarify the system currently in use. model the system currently in use. Tasks the Systems Analyst Carries Out

The systems analyst needs to be able to extract the needs of the client who may not be technically skilled. document these needs in some formal way. communicate these needs to the people who will actually design the computerised system. System Analyst Skills

This can be called requirements elicitation and can take some time. Difficulties may arise due to either the client’s lack of awareness of the capabilities of the computerised system or the analyst’s lack of knowledge of the client’s business operations. The analyst will proceed through: a series of interviews with the client’s management team and workforce make observation notes of what actually happens in the workplace, use questionnaires and literature, e.g. manuals, to determine how the existing system operates. Analysis- Gathering Requirements

Design Stage

Key Task: To design a method of solving the stated problem. Personnel: Systems Analyst and Project manager Documentation: A description of how the problem will be solved. This algorithm may be text based (pseudocode) or graphical (structured diagram) Design

An algorithm is a sequence of actions that, when performed in the correct order, will solve a problem or task in a finite number of steps. Example Here is a simple algorithm to convert a Fahrenheit temperature to Celsius: 1 Subtract 32 from Fahrenheit temperature 2 Multiply by 5/9ths to get Celsius temperature So, 98.6°F - 32 = * 5/9ths = 37°C What happens if you swap steps 1 and 2 - do you get the same answer? Design- What are Algorithms?

Pseudocode is not specific to any programming language. It is a design notation that can be implemented by programmers in any programming language Here is the Fahrenheit conversion algorithm represented as pseudocode to be implemented as program code: 1.1 Get temp(°F) 1.2 Set temp(°F) = temp(°F) Set temp(°C) = temp(°F)* Display temp(°C) 1.1 Get temp(°F) 1.2 Set temp(°F) = temp(°F) Set temp(°C) = temp(°F)* Display temp(°C) Design- Using Pseudocode

Pseudocode – Another Example 1.Get tax details 2.Do tax calculation 3.Display tax payable Refine step 1 1.1display prompt 1.2get wages 1.3while wages out of range 1.4display error message 1.5get wages 1.6loop Top level design Notice the numbering system Simple English words in a familiar program form

A Structure Diagram is another design notation that represents algorithms in a chart or graphical form Here is the Fahrenheit conversion algorithm represented as a structure diagram to be implemented as program code: Convert °F to °C Get temp(°F) Set temp(°C) = temp(°F)*0.556 Display temp(°C)Set temp(°F) = temp(°F)-32 Design- Using Structure Diagrams

Design -Common Structure Diagram Symbols A procedureA loop A decisionA single task

Design- Another Example Structure Diagram This example is for a simple tax payment procedure that decides what rate of tax a user must pay. Tax payment Get details IF earns > High rate payable Low rate payable Display amount to be paid YESNO

Top-down design is where a task or problem is broken down into stages that can be solved as individual parts. This structure diagram illustrates a top-down approach to identifying the stages of the problem solution. Is the process of breaking a big problem down in to smaller sub-problems. Design- Top-down Design

Stepwise-refinement is the process of refining stages down into steps until each step can be easily turned into code in a programming language. Design- Stepwise Refinement

Implementation Stage

Key Task: Write code in a chosen programming language based on the design. Personnel: Programmer and Project manager Documentation: A structured listing of the programming code showing formatting features such as colour coded commands, indentation, comments. Implementation

‘Program Code tempF = txtTempF.Text tempF = tempF-32 tempC = tempF*0.556 lblTempC.Caption = tempC ‘Program Code tempF = txtTempF.Text tempF = tempF-32 tempC = tempF*0.556 lblTempC.Caption = tempC Pseudocode 1.1 Get temp(°F) 1.2 Set temp(°F) = temp(°F) Set temp(°C) = temp(°F)* Display temp(°C) Pseudocode 1.1 Get temp(°F) 1.2 Set temp(°F) = temp(°F) Set temp(°C) = temp(°F)* Display temp(°C) A formatted printout of the program code is known as a structured listing. It includes indentation, white space, internal commentary and colour coded keywords. Implementation- Structured Listings

Implementation- Creating Maintainable Code Code is easier to maintain when it is also very easy to read and understand. To achieve this you need.  short main programs  wise use of procedures and functions, creating variables close to where they’re used  meaningful variable, constant, procedure and function names  appropriate internal documentation using comments  good program layout, including indentation, single statement lines, and spacing between sub-routines

Implementation- Example of Good Maintainability ' PROGRAM NAME : Final Circle Program ' AUTHOR : The teacher ' PROGRAM DESCRIPTION ' This program will ask the user to enter the radius of a circle ' which must be between 0 and 100. The program will then calculate ‘ and display the area and the circumference of the circle. ' Must declare all variables Option Explicit Private Sub Form_Load() 'Declare variables Dim radius As Single Dim area As Single Dim circumference As Single 'Get the radius Call get_radius(radius) 'Calculate the area of the circle Call calculate_area(radius, area) 'Calculate the circumference of the circle Call calculate_circumference(radius, circumference) 'Display the results of the calculation Call display_circle_details(area, circumference) End Sub

Implementation- Example of Good Maintainability Private Sub get_radius(radius) ' User enters the radius radius = InputBox("Please enter the radius", "Enter radius", _ "0", 1000, 3000) Call number_in_range(radius, 0, 100) ' Display radius lblRadius.Visible = True lblRadius.Caption = "Radius = " & radius End Sub Private Sub calculate_area_ (ByVal radius As Single, ByRef area As Single) 'Create a constant to represent pi Const pi = 3.14 'Calculate area area = pi * radius ^ 2 End Sub

Implementation- Example of Good Maintainability Private Sub number_in_range _ (ByRef number As Single, ByVal min As Single, ByVal max As Single) 'This is a Library Subroutine to check that a number is within a 'specific range 'The user is asked to renter when an invalid number is entered. 'Parameter number holds the value entered by the user 'Parameter min holds the minimum possible value that can be entered 'Parameter max holds the maximum possible value that can be entered Do If number max Then number = InputBox("Number is out of range._ Please re-enter a number between " & min & " and " & max, _ "Wrong entry", 0, 1000, 1000) End If Loop Until number >= min And number <= max End Sub

Implementation- Example of Poor Maintainability Private Sub Form_Load() x = inputbox(“Enter the radius”) y = x * x * 3.14 z = (2 * x) * 3.14 lblMadonna = "Area = " & y lblEltonJohn = "Circumference = " & z End Sub

Testing Stage

Key Task: To test that the program meets the specification and that it is reliable and robust Personnel: Independent Test Group (ITG) Documentation: Sets of test data and test reports. The test data will have predicted (before running) and actual (after running) output. Testing

Testing- Features of High Quality Testing Creating a set of test data that tests every possible combination of inputs is extremely difficult and unrealistic. Testing should therefore strive to be both systematic and comprehensive i.e a sample of different kinds of inputs should be used to test the full range of operating conditions. Testing can only show errors but can’t guarantee that a program is 100% error free.

The program tester should set up a test log InputReasonExpected Output Actual Output 15Normal Test Mark You have passed You have failed Faults that become evident are known as bugs The test logs will be sent back to the programmers who then go through the process of debugging Testing- Test Data Tables

Testing- “Bug Type 1” Syntax Errors Syntax errors- breaking the rules for creating valid instructions in a particular programming language. Common sources include  Missing out some keywords  Using keywords in the wrong order  Spelling mistakes in keywords, function or procedure, variable and object names

Testing- “Bug Type 2” Logic Errors Logic errors- carrying out valid instructions that don’t solve the problem the program is designed to solve. Common sources include  Carrying out the wrong type of calculation  Performing the wrong type of comparison  Creating loops that do not execute the correct number of times

Testing- “Bug Type 3” Run Time Errors Run time errors- errors that only occur when the program is executed. Common sources include  Referring to an object or control that doesn’t exist  Trying to access an array value that doesn’t exist because it’s outside the index range of the array  Opening a file or other operating system object that isn’t there.

The three types of testing are normal, extreme and exceptional. Testing- Types of Test Data 3. Exceptional data - the data is not suitable for the program e.g. (i)values outside agreed ranges (ii)letters instead of numbers. 2. Extreme data - the data is at the extreme limits allowed and rejected data. e.g. if an age is to be between 0 and 120 then these two values are tested as well as -1 and Normal data - typical data that would be expected.

Example Program should only accept whole values in the range 0 to 100: Example Program should only accept whole values in the range 0 to 100: Testing- Example Test Data Test Data Normal data: 2, 34, 66 etc. Extreme data: 0, -1,100, 101 Exceptional: -1, , abc, 2.9

Testing is itself a structured process starting with individual lines of code and building up to a test of the entire system. 2. Component or procedural testing - A procedure can be tested by creating another procedure called a driver procedure to provide the necessary data. Once the test has proved satisfactory, the driver procedure is deleted. 1. Structured Walkthrough - Each line of logic in the code is stepped through by the programmer using a printed listing. Testing - Stages of Testing

4. Sub System testing - In the same way, groups of modules which are designed to communicate are tested. 3. Module testing - This involves testing a number of already tested individual procedures to make sure that they link together correctly as a module. Again a driver procedure is used to call the module procedures in the correct sequence. 5. System (Alpaha) testing - Finally, the overall system made up of tested sub systems is tested. Testing - Stages of Testing

6. Acceptance (Beta) testing - is when independent test groups and/or the client try out the software and report back any bugs to the development team prior to final release. If the program has been developed for a specific client it will be installed and tested by the clients If the program has been developed for general sale it will be installed on potential clients’ systems Testing - Stages of Testing

Documentation Stage

Key Task: To produce documentation to be distributed with the software. Personnel: Client, Programmer, Project Manager Documentation: User Guide and Technical Guide Documentation

Documentation- User Guide User Guide can include the following 1.how to install the software 2.how to start and use the software 3.a list of commands and how to use them 4.it may also contain pictures of forms, menus and icons For everyone who will use the new software

Documentation- Technical Guide Technical Guide can include the following 1.the hardware requirements 2.the software requirements 3.how to customise the software 4.how to troubleshoot any problems 5.any problems when installing and running software across a network For anyone installing and setting up the software

Documentation- Developers These documents are created during the other stages of the software development process Software (Requirements) Specification Design of the program Structured Listing of the program Test Data Tables Software Evaluation

Evaluation Stage

Key Task: To report upon the quality of the software according to given criteria. Personnel: Systems Analyst and Project manager Documentation: A evaluation report accompanying the software to the client. It compares the software to the original specification and also comments on the quality of the software. Evaluation

Evaluation- Key Areas in the Evaluation Report Evaluation RobustnessReliabilityPortabilityEfficiencyMaintainability Fitness for Purpose

Evaluation- What do robustness and reliability mean? Robustness  A program is robust if it does not crash when invalid data is input or unexpected results are generated. Reliability  A program is reliable if for all normal and extreme inputs the output from the program matches the expected output. This happens when the program is free from errors.

Evaluation- What do portability and efficiency mean? Portability  A program is portable if it can run on a range of different computer hardware and operating systems software with little or no changes needed to the program code Efficiency  A program is efficient if it runs as fast as possible and does not use up more system resources than necessary. System resources include things like processor time, main memory and backing storage requirements

Evaluation- What do maintainability and fitness for purpose mean? Maintainability  A program is maintainable if it can easily be modified and updated to fix errors, add new features or work with new hardware and software. Fitness for Purpose  A program is fit for purpose if it fulfils

Maintenance Stage

Key Task: To make changes to the software after it has been handed over to the client. Personnel: Usually the project manager, programmer and client will be involved. Documentation: A maintenance report will detail and confirm the maintenance carried out. Maintenance

Types of maintenance carried out and typical values for each kind of maintenance  Corrective (17%)  Adaptive (18%)  Perfective (65%)

Begins once the software has been released and put into use. Involves the client who uses the software and the programmers to make any necessary changes. There are 3 types of maintenance. Corrective: Fixing any errors that were not detected during the testing phase. Adaptive: To alter the software to work with a new operating system or new hardware. Perfective: Add new functionality at the request of the client. Corrective: Fixing any errors that were not detected during the testing phase. Adaptive: To alter the software to work with a new operating system or new hardware. Perfective: Add new functionality at the request of the client. Maintenance

Maintenance- Who pays for it? Adaptative and perfective maintenance are paid for by the client Corrective maintenance is paid for by the developer because it’s due to errors that should have been detected and corrected during the Testing phase.