Presentation on theme: "Software Development Process. Software Development Process Stages 1. Analysing the problem: What do we need to do? 2. Designing the program: How do we."— Presentation transcript:
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
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
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 = 66.6 66.6 * 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)-32 1.3 Set temp(°C) = temp(°F)*0.556 1.4 Display temp(°C) 1.1 Get temp(°F) 1.2 Set temp(°F) = temp(°F)-32 1.3 Set temp(°C) = temp(°F)*0.556 1.4 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 > 30000 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
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)-32 1.3 Set temp(°C) = temp(°F)*0.556 1.4 Display temp(°C) Pseudocode 1.1 Get temp(°F) 1.2 Set temp(°F) = temp(°F)-32 1.3 Set temp(°C) = temp(°F)*0.556 1.4 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
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 121. 1. 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, 1 000 000, 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
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
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
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.