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 ADanceIn TheDark Every Monday
Iteration 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
People Involved Systems Analyst Project Manager Client Programmer Independent Test Group
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
What is Analysis? Analysis is a fact finding process aimed at answering the following questions : • WHO? • WHEN? • WHAT? • WHY? • WHERE? 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.
Tasks the Systems Analyst Carries Out 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.
System Analyst Skills 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.
Analysis- Gathering Requirements 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.
Design 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- What are Algorithms? 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- Using Pseudocode 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) Pseudocode is not specific to any programming language. It is a design notation that can be implemented by programmers in any programming language
Pseudocode – Another Example 1. Get tax details 2. Do tax calculation 3. Display tax payable Refine step 1 1.1 display prompt 1.2 get wages 1.3 while wages out of range 1.4 display error message 1.5 get wages 1.6 loop Top level design Simple English words in a familiar program form Notice the numbering system
Design- Using Structure Diagrams 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 Set temp(°C) = temp(°F)*0.556 Set temp(°F) = temp(°F)-32 Display temp(°C) Get temp(°F)
Design -Common Structure Diagram Symbols A procedure A loop A decision A single task
Tax payment IF earns > Display amount Get details 30000 to be paid NO YES Low rate High rate payable payable Design- Another Example Structure Diagram This example is for a simple tax payment procedure that decides what rate of tax a user must pay.
Design- Top-down Design Is the process of breaking a big problem down in to smaller sub-problems. 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.
Design- Stepwise Refinement Stepwise-refinement is the process of refining stages down into steps until each step can be easily turned into code in a programming language.
Implementation 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- Structured Listings 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. ‘Program Code tempF = txtTempF.Text tempF = tempF-32 tempC = tempF*0.556 lblTempC.Caption = tempC
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 < min Or 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 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- 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.
Testing- Test Data Tables The program tester should set up a test log • 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- “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.
Testing- Types of Test Data The three types of testing are normal, extreme and exceptional. 1. Normal data - typical data that would be expected. 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. 3. Exceptional data - the data is not suitable for the program e.g. (i) values outside agreed ranges (ii) letters instead of numbers.
Testing- Example Test Data Example Program should only accept whole values in the range 0 to 100: Test Data Normal data: 2, 34, 66 etc. Extreme data: 0, -1 ,100, 101 Exceptional: -1, 1 000 000, abc, 2.9
Testing - Stages of Testing Testing is itself a structured process starting with individual lines of code and building up to a test of the entire system. 1. Structured Walkthrough - Each line of logic in the code is stepped through by the programmer using a printed listing. 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.
Testing - Stages of Testing 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. 4. Sub System testing - In the same way, groups of modules which are designed to communicate are tested. 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
Documentation Key Task: To produce documentation to be distributed with the software. Personnel: Client, Programmer, Project Manager Documentation: User Guide and Technical Guide
User Guide can include the following Documentation- User Guide how to install the software how to start and use the software a list of commands and how to use them 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 the hardware requirements the software requirements how to customise the software how to troubleshoot any problems 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 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- 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