2Data Processes Human computer interface Features of the SD Process - IntroductionIn the development of software, the three aspects that the developer must consider are:Data Processes Human computer interfaceIn traditional structured design, the primary tasks are to focus on the processes. A process is the work that a program carries out on data or in response to inputs.Sometimes there will only be an outline of the problem. At other times, a specification will be available. The specification must be agreed with the clients. Work on the problem and the solution is often carried out by a group of people, called the development team.The aim of the team is to produce a new software system that will solve the problem.
3Stages of the SD Process AnalysisDesignImplementationTestingDocumentationEvaluationMaintenanceThe traditional software development process contains a sequence of stages. In this course we will consider the following stages:
4Stages of the SD Process An important aspect of the software development process is that it is an iterative process. An iterative process is one that incorporates feedback and involves an element of repetition. Ideally, you would start a process with the analysis and work through the stages in turn, doing everything only once. In practice, this happens rarely. People make mistakes; faults become apparent that can only be corrected by going back to an earlier stage of the process.
5Stages of the SD Process - Analysis Analysis is an attempt to understand a given problem, clearly and exactly, and to generate a solution. The outcome will be a software specification that is used as the basis for all subsequent work. The specification is an agreement between the client and the systems analyst on the scope and boundaries of the problem. Any assumptions and/or constraints of the problem should be detailed. This software specification may become part of the legal contract between the client and software development team.
6Questions to be asked at this stage would include: Stages of the SD Process - AnalysisQuestions to be asked at this stage would include:What are the new system requirements?What are the costs involved?How long will it take to implement?Details would be gathered by a variety of methods such as interviews, observation of the current system, inspection of the information sources (ie, examination of the existing system and all paperwork associated with it), and questionnaires.Analysis, sometimes called systems analysis, is the job of a specialist person – the systems analyst.Documentation Produced – The software specification (part of legal contract).
7Stages of the SD Process - Design The design process is methodical, using techniques such as structure charts and pseudo-code. The problem is approached by breaking it down into a collection of relatively small and simple tasks until it can’t be further refined. This approach is known as top-down design or stepwise refinement.
8The dev team attempt to make the design:- Stages of the SD Process - DesignThe dev team attempt to make the design:-Robust – the resulting software should be able to cope with mistakes that users might make or unexpected conditions that might occur. These should not lead to wrong results or cause the program to hang. Eg the printer being out of paper, or a disc drive not being available because the user forgot to enter the floppy.Reliable - if it runs well, and is never brought to a halt by a design flaw. It should cope with errors and unexpected events during its execution.Possible outcomes of error encounter could be:inform the user; die gracefully;recover reasonably within a minimum time period.Free from design and coding bugs.
9Stages of the SD Process - Design Portability - can run on a variety on machine architectures under different operating systems with little or no modification. A portable program is one which is machine independent. The growth of the internet made this more of a problem. Solution lay in Java. Programs written in Java are compiled into bytecode that can be run using a Java interpreter. This is available for different machine platforms eg Apple Macs, PCs etc. A machine with a Java interpreter installed is Java-enabled. This approach works very well for small programs or applets on the Web, but interpreters tend to run slowly, so the porting of large computer programs remains a problem.
10Stages of the SD Process - Design Efficiency – the program does not use resources disproportionate to the size and scale of the program. Eg doesn’t use up the processor for longer than necessary, doesn’t use up too much RAM or hard disk space.Maintainability – subsequent changes can be effected easily and quickly. To help in this the program should be modular, readable, fully documented at each stage, use internal commentary, meaningful variable and meaningful procedure names.Fit for Purpose – does the program do what the client wants it to do? Does it meet the specification and fulfill the legal contract?
11expertise of the software development team Stages of the SD Process - DesignOne of the matters for decision at this point is that of the language of implementation and the Software Development Environment. Factors which may affect this decision are:-the portability of the resulting code i.e. can the software be moved to a different hardware platform and still work effectivelyexpertise of the software development teamobjects and operations identified in the design will allow a languages objects and operations to be compared making sure the correct language is chosen to match the problem
12Stages of the SD Process - Design The Test Data is also constructed at this stage. The Test Harness created must test all possible cases including Normal, Boundary and Exceptions testing. (This will be discussed in detail later in these notes).
13Design Method 1 - Pseudo-Code Stages of the SD Process - DesignDesign Method 1 - Pseudo-CodePseudo-code is a cross between a programming language and English. It is sufficiently like English to allow you to concentrate initially on your program design without worrying about the complexities of the programming language and yet it contains enough programming language features to enable you to code your finished design quickly in your chosen program language. When designing and describing language facilities, you may find it helpful to use pseudo-code, although there are other methods used for describing the design of software, including flowcharts and structure diagrams.
14An example of Pseudo-code:- set counter to 0 set total to 0 REPEAT Stages of the SD Process - DesignAn example of Pseudo-code:-set counter to 0set total to 0REPEATadd 1 to counteradd counter to totalUNTIL counter = 10display total
15Design Method 2 - Flowcharts Stages of the SD Process - DesignDesign Method 2 - FlowchartsA flowchart is often used to illustrate an algorithm (set of instructions) to solve a problem. A flowchart is a diagram which uses different shapes and arrows to show the steps in a problem solution. Particular box shapes represent different data flow and control structures.
16Stages of the SD Process - Design Whenever the data is processedStart or stop the flow of dataWhenever data is input or outputWhenever a decision is madeStopCalculate area usingheight * baseStartInputheightbaseDisplay area
17Design Method 3 - Structure diagram Stages of the SD Process - DesignDesign Method 3 - Structure diagramA structure diagram uses linked boxes to represent different sub-programs of the problem and are organised to show the hierarchy of each sub-program.
18Stages of the SD Process - Design Creating a phone directory which you can searchStore the names and numbers in two listsRepeat the following until “XXX” is typedAsk for a nameFind the position of the name in the listPrint the number stored at that same position
19The box at the top describes what the whole program does. Stages of the SD Process - DesignThe box at the top describes what the whole program does.The boxes below are arranged in logical order from left to right. Each box shows a different section of the program.The box with a double line at each side shows a procedure or subroutine.Documentation Produced - the Design of User Interface and on of the design methods of pseudo-code, flowchart or structure chart.
20At this stage, the programming team will make use of test data. Stages of the SD Process - ImplementationAt this stage, the programming team will make use of test data.This data is designed to check that the program works properly, and that it is reliable and robust. Testing is often confused with the debugging of a program, but these are not the same, though they are very closely related.Testing establishes the presence of faults in a programDebugging is the finding and removing of these faults.Also at this stage will be included internal documentation. This is commentary within the program to explain the various stages and to record any changes that might be implemented in the coding during debugging.
21Finding maximum and minimum Stages of the SD Process - ImplementationStandard AlgorithmsMost projects will use certain standard algorithms. Programmers need to be familiar with these common algorithms. Ones that you will become familiar with later include:Linear searchingCounting occurrencesFinding maximum and minimum
22Stages of the SD Process - Implementation Module LibrariesIt is often possible to use, with or without alteration, modules that have been previously written and have been retained in a module library. A module library will include code for these standard algorithms. Most development environments come with a large library of modules. Programmers can use these in the code they are developing. These libraries will include mathematical functions, modules for converting text to numbers, etc.Documentation Produced - the structured listing (ie the formatted output of program code, formatted with white space, line numbers, indentation, comments).
23Testing has several purposes. It should check that: Stages of the SD Process - TestingTesting has several purposes. It should check that:The software meets the specification i.e. is correctIt is robustIt is reliable.Testing follows a test plan or strategy, involving carefully selected test data, with a view to ensuring that a reliable product has been constructed. Important aspects would be:What part of the program is being tested?What is the expected output using suitable test data?
24Stages of the SD Process - Testing Testing can never show that a program is correct. Even with extensive or exhaustive testing, it is almost certain that undetected errors exist. Testing can only demonstrate the presence of errors; it cannot demonstrate their absence. A program can be regarded as succeeding if it passes a test; the test can be regarded as succeeding if it makes the program fail.
25Stages of the SD Process - Testing Testing follows a test plan or strategy. With most software projects, the usual strategy is to test the software twice. The methods are called:Alpha testing is carried out when the code is roughly ready. The software programmers have made initial checks to ensure the specifications have been met. The code then goes to an independent testing team that have the task of formally checking the code. The members of the ITG were not involved with the design or implementation of the software and are not part of the client company.Beta testing where the software is tested by personnel outside the organisation orby certain members of the public. This is sometimes called acceptance testing.
26Data will be designed to test three aspects of the program: Stages of the SD Process - TestingAlpha testingData will be designed to test three aspects of the program:Normal OperationBoundaryExceptionsNormal operation: data that the program has essentially been built to process; all outputs should be satisfactory.
27Stages of the SD Process - Testing Alpha testingBoundary testing: data to test that the program functions properly with data at the extremes of its operation; for example, if a number entered is meant to be limited, the program’s performance is tested just within the limit, on the limit, and just beyond the limit; as another example, if a table is supposed to have a maximum number of elements, the program is tested to see if it can cope with exactly the maximum and if it can cope when an attempt is made to exceed the maximum.
28Stages of the SD Process - Testing Alpha testingExceptions testing: data that lie beyond the extremes of the program’s normal operation; these should include a selection of what might be called silly data, to test the program’s robustness, that a user might enter in a moment of confusion or mischief.A standard technique to identify potential errors is to conduct a dry run. This involves taking test data and a listing of the relevant part of the code, and calculating exactly what would happen to the data if it were to pass through that code. It is a pencil and paper exercise.
29Have you ever used a beta version of software before? Stages of the SD Process - TestingBeta testingThe idea is to subject a completed program to testing under actual working conditions.If a program has been developed for use by particular clients, it is installed on their site. The clients use the program for a given period and then report back to the development team. The process might be iterative, with the development team making adjustments to the software. When the clients regard the program’s operation as acceptable, the testing stage is complete.Have you ever used a beta version of software before?
30The Documentation Stage Stages of the SD Process - DocumentationThe Documentation StageUsers will need to be able to read and learn about the new system. The documentation should include a user guide for people who will be using the system, and a technical guide for those who will be maintaining it.User GuideThe user guide contains information about how to install, start and use software. It should also contain a list of commands and how to use them. Where there is a significant HCI, the guide will show each form, menu, and icon, and associated instructions about their use.
31Stages of the SD Process - Documentation Technical GuideThe technical guide will contain information about the hardware and software requirements of the program. The hardware specification will include details of the processor type and speed, RAM required, RAM desired, monitor resolution, graphics/sound card specs etc. It will also contain instructions about configuring the program.Other documentation is largely for the benefit of the development team and will include all the documents produced in the course of the development process. This documentation is essential for certain kinds of maintenance or for future revisions of the software. Final documentation will include a structured listing of the program.
32Stages of the SD Process - Evaluation The Evaluation StageEvaluation is the formal monitoring of a system to ensure that it is performing its purpose accurately, efficiently, cost effectively and in a timely manner. The performance of the system must be matched against a given set of criteria such as the initial project specification.The basis of evaluation is methods using techniques such as observation, interviews, and questionnaires.The key criterion in evaluating a software product has to be whether it is fit for purpose, i.e. does it meet the original specification and allow the client to carry out their tasks?
33There are three types of software maintenance: Corrective Adaptive Stages of the SD Process - EvaluationThe Maintenance StageThis, as a rule, is the most time consuming stage. Software does not wear out but it usually needs subsequent modification. Some bugs or design shortcomings only become apparent over time. In addition changes might have to be made to adapt the system to new demands or legislation (data protection guidelines for example).There are three types of software maintenance:CorrectiveAdaptivePerfective
34Stages of the SD Process - Evaluation Corrective maintenance is concerned with errors that escaped detection during testing but which occur during actual use of the program.Adaptive maintenance is necessary when the program’s environment changes. It allows the authors to provide a program that responds to changes in the operating environment. For example, a change of operating system could require changes in the program, or a new printer might call for a new printer driver to be added to the program.Perfective maintenance occurs in response to requests from the user to enhance the performance of the program. This may be due to changes in the requirements or new legislation.
35Stages of the SD Process - Evaluation Corrective maintenance is concerned with errors that escaped detection during testing but which occur during actual use of the program.Adaptive maintenance is necessary when the program’s environment changes. It allows the authors to provide a program that responds to changes in the operating environment. For example, a change of operating system could require changes in the program, or a new printer might call for a new printer driver to be added to the program.Perfective maintenance occurs in response to requests from the user to enhance the performance of the program. This may be due to changes in the requirements or new legislation.