software development process higher computing unit 2 – software development

46
Software Development Software Development Process Process Higher Computing Higher Computing Unit 2 – Software Unit 2 – Software Development Development

Upload: stephany-haynes

Post on 06-Jan-2018

231 views

Category:

Documents


2 download

DESCRIPTION

What I need to know  Description and exemplification of top-down design and stepwise refinement  Explanation of the need for systematic and comprehensive testing  Explanation of the need for documentation at each stage  Evaluation of software in terms of robustness, reliability, portability, efficiency and maintainability  Description and exemplification of corrective, adaptive and perfective maintenance

TRANSCRIPT

Page 1: Software Development Process Higher Computing Unit 2 – Software Development

Software Development Software Development ProcessProcess

Higher ComputingHigher ComputingUnit 2 – Software Unit 2 – Software

DevelopmentDevelopment

Page 2: Software Development Process Higher Computing Unit 2 – Software Development

What I need to knowWhat I need to know Explanation of the iterative nature of the software development Explanation of the iterative nature of the software development

process process

Description of the purposes of the software specification, and its Description of the purposes of the software specification, and its status as a legal contract status as a legal contract

Explanation of the importance of each stage (analysis, design, Explanation of the importance of each stage (analysis, design, implementation, testing, documentation, evaluation, implementation, testing, documentation, evaluation, maintenance) of the development process maintenance) of the development process

Identification of the personnel at each stage (client, systems Identification of the personnel at each stage (client, systems analyst, project manager, programmer, independent test group) analyst, project manager, programmer, independent test group) and brief description of their roles and brief description of their roles

Description and exemplification of pseudocode and one Description and exemplification of pseudocode and one graphical design notation (structure diagram or other suitable) graphical design notation (structure diagram or other suitable) including data flow including data flow

Page 3: Software Development Process Higher Computing Unit 2 – Software Development

What I need to knowWhat I need to know Description and exemplification of top-down design Description and exemplification of top-down design

and stepwise refinement and stepwise refinement

Explanation of the need for systematic and Explanation of the need for systematic and comprehensive testing comprehensive testing

Explanation of the need for documentation at each Explanation of the need for documentation at each stage stage

Evaluation of software in terms of robustness, Evaluation of software in terms of robustness, reliability, portability, efficiency and maintainability reliability, portability, efficiency and maintainability

Description and exemplification of corrective, adaptive Description and exemplification of corrective, adaptive and perfective maintenance and perfective maintenance

Page 4: Software Development Process Higher Computing Unit 2 – Software Development

Iterative Nature of SDPIterative Nature of SDP

DefinitionDefinition:: Stages may be revisited as a result of Stages may be revisited as a result of

information gathered at a later stage. information gathered at a later stage. The solution is constantly being refined.The solution is constantly being refined.

ExampleExample An error is found during testing so the An error is found during testing so the

programmer revisits implementation to fix programmer revisits implementation to fix the code.the code.

Page 5: Software Development Process Higher Computing Unit 2 – Software Development

Software Development ProcessSoftware Development Process

Analysis

Evaluation

Maintenance

Design

Implementation

Testing

Documentation

Page 6: Software Development Process Higher Computing Unit 2 – Software Development

AnalysisAnalysis PurposePurpose

To get a clear understanding of the problem in To get a clear understanding of the problem in order to provide the solution.order to provide the solution.

The analyst extracts unambiguous information The analyst extracts unambiguous information from the client, and other relevant people, from the client, and other relevant people, during requirements elicitation. This may take during requirements elicitation. This may take the form of interviews with staff, observation the form of interviews with staff, observation of system or document sampling.of system or document sampling.

The client and the analyst agree the scope The client and the analyst agree the scope and boundaries which are included in the and boundaries which are included in the software specification.software specification.

Page 7: Software Development Process Higher Computing Unit 2 – Software Development

AnalysisAnalysis Documentation ProducedDocumentation Produced

Software SpecificationSoftware Specification A formal specification of the scope and A formal specification of the scope and

boundaries of the problem. It is part of a legal boundaries of the problem. It is part of a legal binding document between client and binding document between client and development team.development team.

The client uses the software spec so that they The client uses the software spec so that they know exactly what they are getting.know exactly what they are getting.

The development team refer to this document The development team refer to this document to ensure they are producing the correct to ensure they are producing the correct solutionsolution

Page 8: Software Development Process Higher Computing Unit 2 – Software Development

AnalysisAnalysis PersonnelPersonnel

ClientClient The client commissions the software, The client commissions the software,

describing the scope and boundaries of the describing the scope and boundaries of the problem to the analyst.problem to the analyst.

Systems analystSystems analyst Agrees with the client the detailed Agrees with the client the detailed

specification of the software to be written. specification of the software to be written. This should be completed to the satisfaction of This should be completed to the satisfaction of both parties before the design or coding is both parties before the design or coding is carried out.carried out.

Page 9: Software Development Process Higher Computing Unit 2 – Software Development

DesignDesign PurposePurpose

Program design is the process of planning Program design is the process of planning the solution.the solution.

The design of the program is very The design of the program is very important for its success. Any mistakes at important for its success. Any mistakes at this stage will prove costly.this stage will prove costly.

Page 10: Software Development Process Higher Computing Unit 2 – Software Development

DesignDesign Documentation ProducedDocumentation Produced

Algorithms;Algorithms;

Structured Diagrams; &Structured Diagrams; &

Flow ChartsFlow Charts

These will be covered under Design NotationThese will be covered under Design Notation

Page 11: Software Development Process Higher Computing Unit 2 – Software Development

DesignDesign PersonnelPersonnel

ProgrammerProgrammer The programmer uses the system specification The programmer uses the system specification

to produce the design using an appropriate to produce the design using an appropriate design methodology.design methodology.

Project ManagerProject Manager Is the person within the software company Is the person within the software company

who overseas the whole project.who overseas the whole project.

Page 12: Software Development Process Higher Computing Unit 2 – Software Development

Design MethodologiesDesign Methodologies This is the approach that the This is the approach that the

programmer takes to design the programmer takes to design the solution;solution;

Design methodologies are:Design methodologies are: Modular;Modular;

Jackson Structured Programming (JSP); &Jackson Structured Programming (JSP); &

Object-oriented Programming (OOP’s).Object-oriented Programming (OOP’s).

We only look at modular.We only look at modular.

Page 13: Software Development Process Higher Computing Unit 2 – Software Development

Modular DesignModular Design This is when we take a large program and break This is when we take a large program and break

it down into self contained parts called modules.it down into self contained parts called modules.

Each module can be developed by a member of Each module can be developed by a member of the programming team, speeding up the programming team, speeding up programming.programming.

Each module is constructed so that it works Each module is constructed so that it works completely independent of other modules.completely independent of other modules.

Some are linked to other code whilst some are Some are linked to other code whilst some are separate programs.separate programs.

Page 14: Software Development Process Higher Computing Unit 2 – Software Development

Modular DesignModular Design Top-down DesignTop-down Design

This involves looking at the whole program and This involves looking at the whole program and breaking it down into smaller, easier to solve, sub-breaking it down into smaller, easier to solve, sub-programs. programs.

Each sub-program may be further broken down Each sub-program may be further broken down into smaller steps. This is called Stepwise into smaller steps. This is called Stepwise Refinement (remember 1.3.4?)Refinement (remember 1.3.4?)

When the sub-program can be no longer refined When the sub-program can be no longer refined the process is finished and you have your the process is finished and you have your algorithm. algorithm.

At this point each step can be converted into code.At this point each step can be converted into code.

Page 15: Software Development Process Higher Computing Unit 2 – Software Development

Modular DesignModular Design Bottom-Up DesignBottom-Up Design

This begins with the lowest levels of detail This begins with the lowest levels of detail and works upwards to the highest level of and works upwards to the highest level of the idea.the idea.

Using a bottom-up design approach means Using a bottom-up design approach means writing modules or procedures first. writing modules or procedures first. This is called prototyping, where you construct a This is called prototyping, where you construct a

procedure separately before joining it together procedure separately before joining it together with the rest of the program.with the rest of the program.

Page 16: Software Development Process Higher Computing Unit 2 – Software Development

Design NotationDesign Notation The way of representing the program design is The way of representing the program design is

called the design notation.called the design notation.

Common design notations are:Common design notations are: Pseudocode;Pseudocode; Structured diagram; &Structured diagram; & Flow chart.Flow chart.

Pseudocode uses English-like sentences.Pseudocode uses English-like sentences.

Structured Diagrams and Flow Charts use Structured Diagrams and Flow Charts use graphical objects to represent the design.graphical objects to represent the design.

Page 17: Software Development Process Higher Computing Unit 2 – Software Development

Design NotationDesign Notation PseudocodePseudocode

Pseudocode is the name given to the language used to Pseudocode is the name given to the language used to define problems before they are changed into code.define problems before they are changed into code.

Algorithms show the logical flow of the program.Algorithms show the logical flow of the program.

One line of pseudocode can usually be translated into One line of pseudocode can usually be translated into one line of code.one line of code.

Pseudocode is very useful when writing in a HLL, Pseudocode is very useful when writing in a HLL, because it fits in neatly with the structure of the code. because it fits in neatly with the structure of the code. The main steps in the algorithm relate directly to the The main steps in the algorithm relate directly to the main program, the refinements of each sub-program main program, the refinements of each sub-program become the code in the procedures.become the code in the procedures.

Page 18: Software Development Process Higher Computing Unit 2 – Software Development

Design NotationDesign Notation PseudocodePseudocode

1.1. initialiseinitialise2.2. take in numberstake in numbers3.3. calculate averagecalculate average4.4. display messagedisplay messageRefine Step 2Refine Step 2

2.12.1 looploop2.22.2 increment counterincrement counter2.32.3 ask user for numberask user for number2.42.4 accept numberaccept number2.52.5 until counter = amount requireduntil counter = amount required

Refine Step 2.4Refine Step 2.42.4.12.4.1 looploop2.4.22.4.2 get number from userget number from user2.4.32.4.3 if number is out of range thenif number is out of range then2.4.42.4.4 display error messagedisplay error message2.4.52.4.5 end ifend if2.4.62.4.6 until number is within an acceptable rangeuntil number is within an acceptable range

Page 19: Software Development Process Higher Computing Unit 2 – Software Development

Design NotationDesign Notation Flow ChartsFlow Charts

These use diagrams made up of boxes These use diagrams made up of boxes connected with arrows to show each step connected with arrows to show each step in a program.in a program.

One problem with this type of One problem with this type of representation is that even the simplest representation is that even the simplest program that has several conditions can program that has several conditions can quickly become unreadable.quickly become unreadable.

Page 20: Software Development Process Higher Computing Unit 2 – Software Development

Design NotationDesign Notation Flow ChartsFlow Charts

Start

End

Initialise

Calc Average

Get Numbers

Display Msg

Get Numbers

Display Error

Is no within range?

Page 21: Software Development Process Higher Computing Unit 2 – Software Development

Design NotationDesign Notation Structured DiagramsStructured Diagrams

Like flow charts, these use linked boxes to Like flow charts, these use linked boxes to represent different sub-programs within a represent different sub-programs within a program.program.

The boxes in a structured diagram are The boxes in a structured diagram are organised to show the level or hierarchy of organised to show the level or hierarchy of each sub-program within the solution.each sub-program within the solution.

Structured diagrams follow a left to right Structured diagrams follow a left to right solution.solution.

Page 22: Software Development Process Higher Computing Unit 2 – Software Development

Design Notation – Structured Design Notation – Structured DiagramDiagram

Average Program

Initialise Get Numbers Calc Average Display Msg

Loop until counter = no required

Add 1 to counter Ask user for number Accept number

Loop until numberIs within range

Get NumberFrom user

Is no within range?

Get Numbers

Page 23: Software Development Process Higher Computing Unit 2 – Software Development

Data FlowData Flow Giving an indication of the flow of data Giving an indication of the flow of data

between modules is important.between modules is important.

Some design notations allow data flow to be Some design notations allow data flow to be shown clearly.shown clearly.

Pseudocode uses the terms Pseudocode uses the terms in:,in:, out:out: and and in-in-out:out: to represent the flow of data in sub- to represent the flow of data in sub-programs.programs.

This is covered in more detail in a later topicThis is covered in more detail in a later topic

Page 24: Software Development Process Higher Computing Unit 2 – Software Development

ImplementationImplementation PurposePurpose

To turn the design into a set of computer To turn the design into a set of computer instructions that the computer can instructions that the computer can understand.understand.

The program will probably be in high level The program will probably be in high level language that is easy for the programmer language that is easy for the programmer to write.to write.

This usually means programming in a This usually means programming in a computer language such as C++, VB, Java.computer language such as C++, VB, Java.

Page 25: Software Development Process Higher Computing Unit 2 – Software Development

ImplementationImplementation The programmer will choose the computer The programmer will choose the computer

language that they will write the program in.language that they will write the program in.

The chosen language will depend on a number of The chosen language will depend on a number of factors, e.g. the computer platform the software is factors, e.g. the computer platform the software is expected to run on, the operating system in use.expected to run on, the operating system in use.

All of these factors affect the All of these factors affect the portabilityportability of the of the software. software.

A program that is portable is one that can be used on more A program that is portable is one that can be used on more than one platform. Runrev is cross platform, therefore it is than one platform. Runrev is cross platform, therefore it is portable.portable.

Page 26: Software Development Process Higher Computing Unit 2 – Software Development

ImplementationImplementation Also at this stage will be Also at this stage will be internal internal

documentation/commentary:documentation/commentary:

This is commentary that is written within the This is commentary that is written within the program to explain what the program is program to explain what the program is doing. doing.

This makes maintenance easier and the This makes maintenance easier and the program is more readable. program is more readable.

Internal commentary is also used to record Internal commentary is also used to record any changes that might be implemented in any changes that might be implemented in the coding during debugging/testing.the coding during debugging/testing.

Page 27: Software Development Process Higher Computing Unit 2 – Software Development

ImplementationImplementation Documentation ProducedDocumentation Produced

Program/Structured ListingProgram/Structured Listing This is a hard copy of the program codeThis is a hard copy of the program code

PersonnelPersonnel ProgrammerProgrammer

The programmer uses the design and converts The programmer uses the design and converts it into codeit into code

Project ManagerProject Manager Is the person within the software company Is the person within the software company

who overseas the whole project.who overseas the whole project.

Page 28: Software Development Process Higher Computing Unit 2 – Software Development

TestingTesting PurposePurpose

To test that the program actually meets To test that the program actually meets the specification.the specification.

You have to run the program to see You have to run the program to see whether or not it behaves as expected.whether or not it behaves as expected.

To carry out proper comprehensive and To carry out proper comprehensive and systematic testing it is necessary to systematic testing it is necessary to develop a test plan for every part of the develop a test plan for every part of the program.program.

Page 29: Software Development Process Higher Computing Unit 2 – Software Development

TestingTesting A test plan should outline what you are trying A test plan should outline what you are trying

to test and how you are going to do it:to test and how you are going to do it:

What programs (or module) is being testedWhat programs (or module) is being tested

What the program (or module) should doWhat the program (or module) should do

List suitable List suitable test datatest data (normal, extreme and (normal, extreme and exceptional)exceptional) which can be input into the which can be input into the programprogram

Expected results or desired outcomes from the Expected results or desired outcomes from the test datatest data

Page 30: Software Development Process Higher Computing Unit 2 – Software Development

TestingTesting ComprehensiveComprehensive testing means that you testing means that you

test your program as thoroughly and test your program as thoroughly and completely as you can.completely as you can.

It would be ideal if it was possible to test It would be ideal if it was possible to test every every part of a program with all kinds of part of a program with all kinds of test data. This is called test data. This is called exhaustive exhaustive testingtesting..

Page 31: Software Development Process Higher Computing Unit 2 – Software Development

TestingTesting Testing can never show that a program is Testing can never show that a program is

correct or completely free of errors. correct or completely free of errors.

Even with extensive or Even with extensive or exhaustive testingexhaustive testing it it is almost certain that undetected errors/bugs is almost certain that undetected errors/bugs still exist. still exist.

Exhaustive testing can only show the presence Exhaustive testing can only show the presence of errors, it cannot demonstrate their absence. of errors, it cannot demonstrate their absence.

A program can be regarded as succeeding if it A program can be regarded as succeeding if it passes a test; the test can be regarded as passes a test; the test can be regarded as succeeding if it makes the program fail.succeeding if it makes the program fail.

Page 32: Software Development Process Higher Computing Unit 2 – Software Development

TestingTesting After the program has been written, it is After the program has been written, it is

given to a group of trusted users so that given to a group of trusted users so that it can be used under normal it can be used under normal circumstances.circumstances.

The users fill in a report, which is passed The users fill in a report, which is passed back to the development team to make back to the development team to make any adjustments or improvements prior any adjustments or improvements prior to release.to release.

This is call beta/acceptance testing.This is call beta/acceptance testing.

Page 33: Software Development Process Higher Computing Unit 2 – Software Development

TestingTesting DocumentationDocumentation

Set of test dataSet of test data Test Report (Summary of Testing)Test Report (Summary of Testing)

PersonnelPersonnel Independent Test GroupIndependent Test Group

Carries out testing of the software. This may be modular Carries out testing of the software. This may be modular testing and/or component testing, looking at important testing and/or component testing, looking at important subsections of the code.subsections of the code.

ProgrammerProgrammer The programmer will carry out testing at component, The programmer will carry out testing at component,

modular and system level.modular and system level. Project LeaderProject Leader

Carries out testing at system level ensuring that the Carries out testing at system level ensuring that the program meets the software spec before being tested at program meets the software spec before being tested at Beta level.Beta level.

Page 34: Software Development Process Higher Computing Unit 2 – Software Development

DocumentationDocumentation During this stage the documentation which is During this stage the documentation which is

to be distributed with the software is produced. to be distributed with the software is produced.

There are two types of user documents There are two types of user documents produced:produced:

User GuideUser Guide Explains how to operate the software once it is installedExplains how to operate the software once it is installed May include getting started notes, tutorial guide and a May include getting started notes, tutorial guide and a

reference guidereference guide

Technical GuideTechnical Guide Includes a description of the technical requirements Includes a description of the technical requirements

needed to run the software. Also Installation instructions.needed to run the software. Also Installation instructions.

Page 35: Software Development Process Higher Computing Unit 2 – Software Development

EvaluationEvaluation Evaluation is reviewing the solution Evaluation is reviewing the solution

against a given criteria.against a given criteria.

The criteria against which you should The criteria against which you should evaluate software are:evaluate software are: Robustness;Robustness; Reliability;Reliability; Portability;Portability; Efficiency;Efficiency; Maintainability; &Maintainability; & ReadabilityReadability..

Page 36: Software Development Process Higher Computing Unit 2 – Software Development

EvaluationEvaluation RobustnessRobustness

Is the software able to cope with errors Is the software able to cope with errors during execution without crashing? during execution without crashing? Including good error/exception handling Including good error/exception handling makes a program robust.makes a program robust.

ReliabilityReliability How well does the software operate How well does the software operate

without stopping due to design faults? without stopping due to design faults? The software should not crash if the data The software should not crash if the data entered is within acceptable limits.entered is within acceptable limits.

Page 37: Software Development Process Higher Computing Unit 2 – Software Development

EvaluationEvaluation PortabilityPortability

Is the ability of the software to run on a Is the ability of the software to run on a system other than the one it was designed system other than the one it was designed for. A program which is portable should for. A program which is portable should require no changes to run on a new systemrequire no changes to run on a new system

EfficiencyEfficiency Does the software require excessive Does the software require excessive

memory, backing storage and processor memory, backing storage and processor resources to run?resources to run?

Page 38: Software Development Process Higher Computing Unit 2 – Software Development

EvaluationEvaluation MaintainabilityMaintainability

How easy will it be to correct/update the How easy will it be to correct/update the software in the future.software in the future.

Factors affecting maintainability are:Factors affecting maintainability are: Readability of the code (incl. meaningful Readability of the code (incl. meaningful

variable names)variable names) Modular ProgrammingModular Programming Available system documentationAvailable system documentation Is the program written in an established Is the program written in an established

language.language.

Page 39: Software Development Process Higher Computing Unit 2 – Software Development

EvaluationEvaluation ReadabilityReadability

How easy is it for another person to How easy is it for another person to understand the program code?understand the program code?

Have you used:Have you used: Meaningful variable namesMeaningful variable names Structured listingsStructured listings ModularityModularity Internal documentationInternal documentation

Page 40: Software Development Process Higher Computing Unit 2 – Software Development

EvaluationEvaluation Fitness for PurposeFitness for Purpose

Does the solution solve the original Does the solution solve the original problem? problem?

Does it meet the software specification?Does it meet the software specification?

Page 41: Software Development Process Higher Computing Unit 2 – Software Development

EvaluationEvaluation PersonnelPersonnel

ProgrammerProgrammer Project LeaderProject Leader

Both complete the evaluation based on how Both complete the evaluation based on how the project went and focusing on test the project went and focusing on test data/questionnaires retrieved from clientsdata/questionnaires retrieved from clients

Document ProducedDocument Produced Evaluation ReportEvaluation Report

Page 42: Software Development Process Higher Computing Unit 2 – Software Development

MaintenanceMaintenance Maintenance is when the programmerMaintenance is when the programmer

makes changes in the form of makes changes in the form of corrections or updates to the program corrections or updates to the program at some time in the future, once the at some time in the future, once the client has the software, and is made client has the software, and is made easier by good practice and easier by good practice and development.development.

Page 43: Software Development Process Higher Computing Unit 2 – Software Development

MaintenanceMaintenance There are three types of maintenance:There are three types of maintenance:

Corrective MaintenanceCorrective Maintenance To fix errors not found during the testing stage. The To fix errors not found during the testing stage. The

cost of these are the responsibility of the development cost of these are the responsibility of the development teamteam

Adaptive MaintenanceAdaptive Maintenance Carried out to adapt the software to a change in its Carried out to adapt the software to a change in its

environment. Cost is usually met by the client.environment. Cost is usually met by the client.

Perfective MaintenancePerfective Maintenance Carried out to add new features at the request of the Carried out to add new features at the request of the

client. Cost is met by the client.client. Cost is met by the client.

Page 44: Software Development Process Higher Computing Unit 2 – Software Development

MaintenanceMaintenance DocumentationDocumentation

There will be a maintenance report.There will be a maintenance report.

Depending on the extent of the Depending on the extent of the maintenance, all documents may have to maintenance, all documents may have to be revisited and re-done.be revisited and re-done.

Page 45: Software Development Process Higher Computing Unit 2 – Software Development

MaintenanceMaintenance Personnel InvolvedPersonnel Involved

ProgrammerProgrammer Required to make changes to design, code, to Required to make changes to design, code, to

re-test etcre-test etc

ClientClient Required to explain what need to be changed Required to explain what need to be changed

within the program.within the program.

Page 46: Software Development Process Higher Computing Unit 2 – Software Development

Project DocumentationProject Documentation There are two types of documentation There are two types of documentation

produced during a project:produced during a project:

User DocumentationUser Documentation Any documents that go to the client – User Guide and Any documents that go to the client – User Guide and

Technical GuideTechnical Guide

System DocumentationSystem Documentation Any documents that stay with the programming team – Any documents that stay with the programming team –

software spec, analysis report, pseudocode, structured software spec, analysis report, pseudocode, structured diagram, flow charts, test report, copies of user diagram, flow charts, test report, copies of user documentation, evaluation report and maintenance documentation, evaluation report and maintenance report.report.