Top Banner
The Software Development Process Higher Computing - Soft Dev Software Development Process Infosheet 1 Produced by S Lambert, R Simpson and HSDU for The City of Edinburgh Council, 2004 Most computerised systems that we use in every day life we take for granted, but how did they come into existence? Where did the "hole in the wall" banking, batch sent bills, store cards, software such as word processors etc. actually come from? How were they developed? Who was responsible for developing them? What was their role in the creation of these systems? First Steps Most creations start with an idea in someone's head. For example, questions like: "Wouldn't it be great if...", "Is it possible to improve what we are doing by...?" Sometimes groups of people are involved in brainstorming these ideas. Ideas, however, are not precise specifications of what the imagined system should do, nor of how it should be built. They are merely the first steps in the creation of a system. Need Computerised systems are developed, as are most creations and inventions, from perceived needs and a reckoning that certain advantages will arise. Consider the banking systems of today. What can we see as the benefits that computers have brought to these businesses? What advantages were foreseen by the managers and directors who commissioned the construction of these systems, investing millions of pounds in the process? Perhaps they were thinking along the lines of: improving the efficiency of dispensing and depositing cash a more flexible service for customers which provided 24 hour access to their accounts giving more accurate and up to the minute reporting of transactions expanding their customer base and the management of larger databases of information reducing their staffing levels Solution Often people who generate such ideas have no expertise in building the final product. We don't really expect managers and directors of companies to be expert programmers. So how do these ideas become reality? There has to be a method of transforming these ideas into a form that can map onto a computer system. There has to be a way of translating a verbal or textual description of an idea into a programming language and its hardware environment. So what are these steps and who is responsible for taking them? Management Personnel The clients are the persons who require the new system. They are the ones who need the new software developed. The project manager is the leader of the software house. This person is responsible for the whole project and must supervise all steps and stages required. Initially the clients would meet with the project manager to ensure that the system that needs to be developed is economically, technically and feasibly possible. If the system is possible only then will it be taken on by the software house. The Software Development Process can be divided into seven stages Analysis, Design, Implementation, Testing, Documentation, Evaluation and Maintenance. Each of these steps must be implemented correctly if the final product is to meet the needs of the client. The process is carried out in this order but it is possible to go back and correct any errors that may occur.
12

Software Development Process (Higher)

Mar 13, 2016

Download

Documents

Mark Cunningham

Software Development Process (Higher)
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Software Development Process (Higher)

The Software Development Process

Higher Computing - Soft Dev – Software Development Process Infosheet 1

Produced by S Lambert, R Simpson and HSDU for The City of Edinburgh Council, 2004

Most computerised systems that we use in every day life we take for granted, but how did they come into

existence? Where did the "hole in the wall" banking, batch sent bills, store cards, software such as word

processors etc. actually come from? How were they developed? Who was responsible for developing

them? What was their role in the creation of these systems?

First Steps

Most creations start with an idea in someone's head. For example, questions like: "Wouldn't it be great

if...", "Is it possible to improve what we are doing by...?"

Sometimes groups of people are involved in brainstorming these ideas. Ideas, however, are not precise

specifications of what the imagined system should do, nor of how it should be built. They are merely the

first steps in the creation of a system.

Need

Computerised systems are developed, as are most creations and inventions, from

perceived needs and a reckoning that certain advantages will arise. Consider the

banking systems of today. What can we see as the benefits that computers have

brought to these businesses? What advantages were foreseen by the managers

and directors who commissioned the construction of these systems, investing

millions of pounds in the process? Perhaps they were thinking along the lines of:

• improving the efficiency of dispensing and depositing cash

• a more flexible service for customers which provided 24 hour access to their accounts

• giving more accurate and up to the minute reporting of transactions

• expanding their customer base and the management of larger databases of information

• reducing their staffing levels

Solution

Often people who generate such ideas have no expertise in building the final product. We don't really

expect managers and directors of companies to be expert programmers. So how do these ideas become

reality? There has to be a method of transforming these ideas into a form that can map onto a computer

system. There has to be a way of translating a verbal or textual description of an idea into a programming

language and its hardware environment. So what are these steps and who is responsible for taking them?

Management Personnel

The clients are the persons who require the new system. They are the ones who need the new software

developed. The project manager is the leader of the software house. This person is responsible for the

whole project and must supervise all steps and stages required.

Initially the clients would meet with the project manager to ensure that the system that needs to be

developed is economically, technically and feasibly possible. If the system is possible only then will it be

taken on by the software house.

The Software Development Process can be divided into seven stages

Analysis, Design, Implementation, Testing, Documentation, Evaluation and

Maintenance.

Each of these steps must be implemented correctly if the final product is to

meet the needs of the client. The process is carried out in this order but it is

possible to go back and correct any errors that may occur.

Page 2: Software Development Process (Higher)

Analysis

Higher Computing - Soft Dev – Software Development Process Infosheet 2

Produced by S Lambert, R Simpson and HSDU The City of Edinburgh Council, 2004

When a project is given the go ahead, obviously it cannot be programmed straight

away. A number of questions and an exploration of the idea must be carried out first.

Systems Analyst

A systems analyst is the person with whom the company will deal initially. It is this person's job to carry

out an analysis of the situation. In other words the need for exploring the original idea more closely.

A systems analyst observes, clarifies and models an existing system to assess its suitability for

computerisation. In the process, the analyst could also find ways of improving the system.

Skills and Techniques Of A Systems Analyst

Systems analysts need to have a very sound technical background. It is likely that they were once

themselves programmers, highly skilled in coding, testing and debugging software. They will be

knowledgeable in a variety of hardware platforms and operating systems. As analysts they will also have

to acquire new and quite different skills, the most important of which is the ability to communicate well

with their clients. It is fundamentally important that a system is developed which meets the needs of the

client. Anything less is simply useless. The client will be dissatisfied, with money and time misspent.

If we bear in mind that the clients are not usually technically skilled, then we can see that the analyst must

develop ways of extracting their needs, documenting these needs in some formalised way and finally

communicating then to the team of designers and programmers who will build the system. We can

consider the analyst as a "go between" the client and the development team.

Extracting The Client's Needs

This can be a long task, because, at the start, the client may not be fully aware of the possibilities of a

computerised system, and the systems analyst will probably not be fully familiar with the client's business

operations. The analyst will:

• interview the client's management personnel

• take observation notes of the client's business

• make an inspection of the information sources

When the analyst has completed this task, functional reports will have to be drafted. One of these will be

the software specification. This is the most important report as this document is the basis for everything

the design team uses. It is also a legal binding document that provides a contract between the client and

the software house. It clearly states what the client wants and what the system is supposed to do.

Prepared For Change

Obviously the client may have a change of mind or communication between the client and analyst may

not be clear. Hence an iterative process is carried out where the client and the analyst may meet on

several occasions until both sides are in complete agreement.

There may also be technical and/or financial limitations which will require changes to the original idea.

Sometimes ideas are too costly or there just isn't the technical capability to carry out the idea. Sometimes

the analyst may want to produce a solution more advanced than the client's needs. Therefore it is

necessary to limit the scope and boundaries of the development.

It is very important that changes in the requirements are identified early, so that the changes in the design

can be made without additional work, and the project can be kept within its planned timescale and budget.

Page 3: Software Development Process (Higher)

Design

Higher Computing - Soft Dev – Software Development Process Infosheet 3.1

Produced by S Lambert, R Simpson and HSDU for The City of Edinburgh Council, 2009

Once the needs of the user are clearly understood and documented, software development can move onto

the next stage. This involves designing the system.

So instead of asking what needs to be done it is now necessary to ask how it is going to be done. It is

necessary to use a structured and methodical approach to the planning of the solution.

Design of the User Interface Design of a good user interface is one of the most important indicators of a high quality piece of software,

and should be given much consideration. It is, after all, the link between those intricate sections of code

that have been worked on for months and the end user.

It doesn't matter how clever the programmer and designers have been in optimising the speed of the code,

or minimising the memory overheads of the program, the code is not acceptable if it is too complex, or

unintelligible in its interaction with the final user.

Looking at the design of conventional WIMP operating systems, and their success in the world market, it

is easy to appreciate that the most influential selling point is how the system appears to the user, and how

easily such a wide audience of people are able to interact with it, and get it to do things for them.

There are many different ways of having a dialogue with the user, including:

Command driven interfaces which allow users to type in commands to activate various tasks.

These normally benefit expert or power users as they can achieve tasks faster without

navigating through various menus or windows.

Screen menus, where the user selects from a choice of options. The selection device can be a

mouse, or a light pen, or indeed their finger, if a touch sensitive screen is being used.

A WIMP style interface, where icons are used to symbolise objects, such as the wastebasket,

or the hard drive, or files and folders on backing storage. Pointing devices such as the mouse,

or light pens can be used to select commands from menus and issue commands to the system.

Choosing the Interface

A set of guidelines are used when setting up a dialogue that suits the client’s needs. It

does not matter what form of interface that is selected to be presented to the user, or

the devices that are opted to use for interaction, these guidelines should be met in

order to provide the best solution for the client.

Design Methodologies

Design methodologies include modular design, Jackson Structured Development and object-orientated

design.

Modular Design is a method of constructing a computer program using self-contained parts called

modules. These are constructed to be designed, coded and maintained independently. Top down design

and Bottom-up design are forms of modular design.

Top down design involves looking at the whole problem and breaking it down into smaller sub-problems.

Each sub-problem may then be further sub-divided. This is called stepwise refinement. When stepwise

refinement is complete you have created an algorithmn.

Bottom-up design involves writing modules first and then joining them together. A bit like a jigsaw.

Page 4: Software Development Process (Higher)

Design

Higher Computing - Soft Dev – Software Development Process Infosheet 3.2

Produced by S Lambert, R Simpson and HSDU for The City of Edinburgh Council, 2009

Design Notation There are two methods of representing a design. The first is the representation of the structure of the

software using a graphical design notation. This could either be a structure diagram or a flowchart.

The second is the representation of the logic of the software using pseudocode. Some developers use

only pseudocode, to document the various stages of their refinement and outline the structure of the

software; some use only structure charts; others may use yet another design method or a combination of

methods.

The important point is that there must be some documented evidence of this stage of the design. It is far

easier to correct logical mistakes, or to upgrade a piece of software, by using structure charts or

pseudocode listings, than by referring to the actual program code, because the structure charts or

pseudocode listings make it easier to understand how the software was built in the first place.

Pseudocode

Pseudocode is a cross between a programming

language and English. It is sufficiently like

English to allow concentration initially on

program design without worrying about the

complexities of the programming language.

However it contains enough programming

language features that allow coding of the

finished design quickly in the chosen program

language. Although the description can be

easily converted into high-level language code,

it is NOT simply a set of language statements.

Structure Diagram

A structure diagram shows the different sections

of the program. It is a treelike diagram,

representing component modules and their

interrelationships.

Flowcharts

A flowchart is often used to illustrate an algorithm

(set of instructions) to solve a problem. A

flowchart is a diagram that uses different shapes

and arrows to show the steps in a problem

solution. Particular box shapes are used to

represent different aspects of coding.

1. ask user for number of hours

2. ask user for rate of pay

3. calculate wages

4. display wages

refine step 1

1.1 ask user for number of hours worked

1.2 store response in hours

refine step 2

2.1 ask user for rate of pay

2.2 store response in rate

refine step 3

3.1 if hours greater than 40

3.2 calculate overtime

3.3 calculate wages

3.4 else

3.5 calculate wages using (hours x rate)

3.6 end if

You have Failed

PROBLEM

Grade Tests

Get Test Mark

Is Mark > 49

Is Mark > 59You have an A pass

You have a C pass

You have a B pass

Is Mark > 69

Yes No

NoYes

NoYes

Page 5: Software Development Process (Higher)

Implementation

Higher Computing - Soft Dev – Software Development Process Infosheet 4.1

Produced by S Lambert, R Simpson and HSDU for Queensferry High School Computing Department 2004

This is the third stage of the software development process and involves the

translation of the design that has been constructed, through screen layouts,

structured charts and pseudocode, into a form that the computer can understand,

i.e. a program code. Programmers are responsible for constructing the code.

The aim of the implementation stage is to create a program that is :

• CORRECT meets the software specification.

• EASILY MAINTAINED subsequent changes can be effected easily and quickly.

• RELIABLE is free of design and coding bugs, correct for all specified

output. It should work correctly every time it is run.

• READABLE has design and code that can be easily understood by

other programmers.

• PORTABLE may be adapted to run on computers other than that on

which it was designed.

• EFFICIENT should not require processor time or storage resources

disproportional to the scale of the program.

ROBUST should not fail no matter what input is entered by the user.

The program code as part of the Documentation

Often this program or source code may need to be tested, updated and maintained by developers who did

not take part in the original programming exercise. A common technique in trying to test a piece of

software is to conduct a structured walkthrough (step through each line of logic in the code) using a

structured listing, which is simply a formatted display or printout of the code. It is important that the

code is written in such a way that helps the above activities. The following points are needed in good

code:

1 The code should be modular (split up into manageable parts) - procedures and functions should be

used.

2 Use should be made of library modules. The programmer who needs a particular routine is saved

the trouble of having to design and write one if it is available in the library. The modules should

already be tested and be free from errors.

3 Meaningful variable names and procedure names should be used.

4 There should be internal commentary explaining what each section of the code does.

5 Where parameters are being used in a module, they should be described in the commentary of the

module. This is particularly important in library modules.

6 Parameter lists should be small and manageable. If a procedure or function requires a set of

parameters which is very big, then it is likely that it is performing more than one program function.

Page 6: Software Development Process (Higher)

Implementation

Higher Computing - Soft Dev – Software Development Process Infosheet 4.2

Produced by S Lambert, R Simpson and HSDU for Queensferry High School Computing Department 2004

User Interface

A correct program is unsatisfactory if the user finds it difficult to understand or confusing to use. Three

important aspects for implementing the user interface are:

1 The suitability of the start up procedures.

These should be clear and simple, e.g. an autoexec batch file or boot file which automatically

loads any requisite files, then displays the program logo and user instructions.

2 The standard of the general presentation. Factors to consider here include:

• consistent operating instructions,

i.e. always using the same “Press <SPACE> to continue” prompt rather than intermingling

other types of proceed prompt.

• clear uncluttered screen layout.

i.e. headings should be centred on screen ; text scrolling should be

avoided ; text should be upper and lower case ; highlights, graphics,

colours or sounds should be used meaningfully.

• menus/help screens.

i.e. the choice, meaning, and consequence of available actions

should be clear.

• clear prompts

i.e. for inputs, indicating type and source of response required.

If alternative output devices are to be used, prompts must be

given to the user before output commences.

3 Software must be robust. Factors to consider here include:

• echo-printing

i.e. input should be „echoed‟ to the screen so that the user can proof read her/his own data

entry, and make amendments if necessary.

• validation

i.e. All input data must be validated. If an illegal entry is attempted,

the user should be informed where and what the error is (error

messages should be helpful rather than cryptic!) The user should be

warned about an invalid entry.

• reliability

i.e. reliable results must be given for ALL valid entries.

• defensive programming

i.e. potential errors should be anticipated and trapped, to prevent run-time errors (such as

„divide by zero‟).

Page 7: Software Development Process (Higher)

Testing

Higher Computing - Soft Dev – Software Development Process Infosheet 5.1

Produced by S Lambert, R Simpson and HSDU for The City of Edinburgh Council, 2004

In software engineering studies, a report suggests that

analysis and design accounts for 40% of development

costs, implementation 20% and testing around 40%.

These proportions are illustrated on the pie-chart

opposite.

It is therefore too late, and too costly, to discover that

errors in the analytical or design phase have been made

when you finally come to test the final code. By this

stage 60% of the total project resources will have been

used!

Although design errors introduced in the analysis phase are more costly than programming errors (usually

developed late in the software development cycle, easier to detect and costing less to remedy), they do

occur. Half of all errors encountered are due to misunderstanding the problem specification, and not in

fact due to programming!

So why do all these problems occur and what can be done once they have happened? Obviously the best

solution is not to allow errors to happen in the first place, but unforeseen circumstances can obviously

cause unforeseen problems.

So what can be done to sort out errors which have been realised after the analysis, design and

implementation stages and what sort of errors can happen?

Common Errors

The following is a brief classification of the most common design errors and the project phase at which

they more readily occur.

Errors during the detailed design stage.

Incomplete logic Neglect of special cases

Poor error handling Neglect of time consideration

Incorrect interpretation of the problem specification

Errors during coding stage.

Syntax errors Initialisation errors

Confusion of parameters Errors in loop counters

Incorrect handling of results of a decision Multiple or non-definition of variables

Errors in writing variable names Incorrect declaration of type and dimensions

Errors during translation

Compiler errors External symbols wrongly resolved

Confusion of names of library procedures

We should therefore build monitoring and review into every stage of the software development process,

and not merely leave it to the end to find out that we have made mistakes.

Sof tware dev elopment Costs

Implementation

Analy sis

Testing

Page 8: Software Development Process (Higher)

Testing

Higher Computing - Soft Dev – Software Development Process Infosheet 5.2

Produced by S Lambert, R Simpson and HSDU for The City of Edinburgh Council, 2004

Test Data

In earlier courses, you should have come across the idea of creating sets of test data to feed to your

software to find out how it behaves under different conditions. The test data need to cover different cases

(conditions) Here are some of the important points about making up such sets:

The expected results from a test data set must be known in advance, so that they can be checked

against the actual results.

Normal - tOne set should test 'normal' operation of the software, to make sure that there are no

unexpected results in ordinary work.

Extreme - One set should test the operation limits of the software, to make sure that the boundary

conditions identified in the design stage are being handled properly.

Exceptional - One set should test 'exceptions' to the normal operating conditions. This set will

show whether or not the software can react to unexpected inputs in an effective way, without

crashing. This set of test data provides useful evidence about the robustness of the software.

Logic Testing

At this stage of the software development process we are concerned with proving that the logic of the

software is correct, and that it meets the requirements of the original specification.

Testing can never prove conclusively that a program is correct. No matter how exhaustive the testing, it

will always be possible for the system to contain errors which have not been detected.

Testing - Who Does It?

Developing a piece of software is a creative task. Being a creative activity, the programmer will naturally

take some pride in his/her creation, and will not necessarily wish to show that it doesn't in actual fact

work properly! The programmer's approach of demonstrating through selective test cases that his/her

software works, is unsatisfactory, and this approach to testing is unhelpful.

Systematically destroying a piece of software using this approach must be handled delicately and tactfully

by the design team. Criticism can be difficult to handle for some people. On the one hand thorough

testing must be carried out, and this must be destructive, aiming to identify faults so that they can be

removed, improving the reliability of the system. On the other hand the programmer must still remain

motivated and continue to work on the development. What is the best way of achieving this?

One approach is to involve outsiders from other areas of the development

team. In some development environments these are known as Independent

Test Groups, (ITGs). These groups work with the programmer to ensure that

thorough testing is carried out. Any errors uncovered are recorded and the

software is returned to the programmer for correction.

Testing - When Should It Be Done?

Software systems can be very complex, consisting of large subsystems which themselves consist of

modules consisting of procedures. Look back at the hierarchical diagram to appreciate this structure. A

system designed by the author of this text to control the distribution of electricity for London Electricity

Board, was implemented in over 250,000 lines of code. This was merely a component of a much larger

system! It would be madness to delay the start of testing for software of this magnitude until the entire

system has been coded.

Page 9: Software Development Process (Higher)

Documentation

Higher Computing - Soft Dev – Software Development Process Infosheet 6

Produced by S Lambert, R Simpson and HSDU for The City of Edinburgh Council, 2004

When a new piece of software a is being used for the first time, the first place to look in order to gain an

understanding of how it operates, what commands to use and how to solve any problems encountered,

will be in the documentation which usually accompanies it.

Software companies vary in the nature and quality of documentation that

they provide. However, two essential pieces of documentation which

need to be developed are the User Guide and a Technical Guide.

The quality of this documentation is also normally a good indicator of the

quality of the software. Good documentation should be concise,

comprehensive and above all complete. All of which can only arise from

a well-structured systems analysis and design approach. For instance, any

alterations to the system, through upgrades or corrective maintenance

should also be reflected in the necessary document i.e. documentation

should also be maintained up-to-date.

The User Guide

This document should describe how to use the software. Ideally there should also be tutorial files which

can take the user through examples of a piece of work, and allow them to become familiar with the

commands, and the various sections of the software. Nowadays it is becoming more common for

developers to provide this documentation in electronic form, as an on-line reference system, with

interactive help and tutorial displays. This saves in the cost of producing paper-based documents, and

also allows upgrades to be reflected in the help system upon subsequent releases of new software

versions.

The Technical Guide

This document should provide information on how to install the software, its memory

and processor requirements, the version number of the software and any associated

help files or systems extensions that may also need to be installed. The guide should

also contain a reference section on troubleshooting, that will help the user to get

around any system problems that they may encounter.

Other Types Of Guides

Although the User and Technical Guides should be given with the software, most companies give out

other guides to aid the user.

Examples

1 Extra features or functions guide - these are normally given with

packages which have been upgraded so that familiar users can see directly

the new aspects of the package.

2 Printing guides - these are normally given with DTP packages to help the

user think about the most appropriate output for their publication.

3 Shortcut guides - these are normally pieces of card with shortcuts for

users to use to enable them to access features quickly.

4 Tutorial guides - these can be given in either manual or video format.

The user can go through step-by-step tuition in order to learn how the package works.

Page 10: Software Development Process (Higher)

Evaluation

Higher Computing - Soft Dev – Software Development Process Infosheet 7

Produced by S Lambert, R Simpson and HSDU for The City of Edinburgh Council, 2004

To evaluate a completed application, the developers are mainly concerned with answering the question:

Does this software meet the user requirements?

To answer this, you need to return to the original aims of the software development,

and judge this against a set of criteria.

What are the criteria that you should use?

Robustness - the ability of the software to cope with errors during processing.

Reliability - how well the software operates without stopping due to design faults. It should

give correct and predictable results.

Portability - the software should run on a system other than the one it was designed for.

Efficiency - the amount of processing power and RAM should be within reason as to the task

of the program.

Maintainability - the ease to which a program can be altered. This is helped by the readability of

the code, the modularity of the code and the amount of internal commentary.

The most important aspect of the evaluation is "Fitness for purpose". Does the software solve the original

problem.

If you are at the analysis stage, then you are measuring how well you have

understood the client's problem. Some say that the proof of this lies in the

final development. However, as we have pointed out, this is far too late a

stage at which to judge success. By interacting with the client, taking notes

of all meetings, agreeing on what has been said - in other words, using the

recommended tools and techniques of analysis you will have increased the

likely success of this stage. You will also have generated a list of user

requirements that can be used as a checklist to help you validate your product as you proceed through the

design, implementation and testing stages.

At the design stage, there are criteria that have been introduced in order to

help you to measure the quality of the HCI. This, together with a

structured and methodical approach to developing screen layouts,

structured charts and algorithms, can all be used to measure the success of

your design. They also help to validate that you are building the correct

product. Guidelines given on how to select a programming language, and

the attributes that good source code should contain, can all be used as

criteria in evaluating the modularity and portability of the software. It is

structure, readability, and the test, used to validate it, that will provide a measure of its reliability,

maintainability and finally its robustness.

Page 11: Software Development Process (Higher)

Maintenance

Higher Computing - Soft Dev – Software Development Process Infosheet 8.1

Produced by S Lambert, R Simpson and HSDU for The City of Edinburgh Council, 2004

Maintenance comes into effect as soon as the system is delivered to the client and it enters productive use.

....it is impossible to produce systems of any size which do not need to

be maintained. Over the lifetime of a system, its original requirements

will be modified to reflect changing needs, the system's environment

will change, and obscure errors, undiscovered during system

validation, will emerge.

Sommerville, Systems Analysis and Design, 1985

Maintenance Activities

Research has identified the following three maintenance activities, and the associated percentage of time

spent on each. These figures are typical of a development company's maintenance procedures:

1. Corrective maintenance (17%)

During the use of the system, errors emerge which were undetected during system

testing. These should be reported to the developer and corrective action taken to

remove them from the original code.

2. Adaptive Maintenance (18%)

The software environment of the system, such as the operating

system or the hardware environment of the system, such as

peripheral devices, processor etc., have altered since the code was

originally developed and these have caused the original code either

to fail, or to operate less effectively. The system must be altered

in order to adapt to these new surroundings

3. Perfective Maintenance (65%)

This is a response to a user's request to change the existing system by adding new or

altering existing functions, or catering for general enhancements to the system.

Categories 2 and 3 are also likely to force the developers to revisit the early stages in the design process -

another iteration of the design. This particular iteration is likely to take place after some years of use of

the software. It may be that the original developers are no longer available to take part in this phase. It is

only likely to be effective if the original design documentation is of high quality, so that it can be

followed and amended easily.

Maintenance Costs

It may come as quite a surprise to learn that during the 1970s maintenance accounted for between 35%

and 40% of the software budget for a typical information system project. This number jumped to 60%

during the 1980s, and if it continues at this rate then we might expect that by the year 2030 there could be

100% of development time spent on the maintenance of existing software. A contradiction in terms!

This could prove very costly for software developers, with most of their time and effort tied up in

maintaining existing software. Very little revenue is received by way of maintenance contracts, compared

with new developments. Maintenance is therefore very expensive.

Page 12: Software Development Process (Higher)

Maintenance

Higher Computing - Soft Dev – Software Development Process Infosheet 8.2

Produced by S Lambert, R Simpson and HSDU for The City of Edinburgh Council, 2004

Factors Affecting Maintainability

Among some of the classic problems associated with software maintenance are the following:

• The application being supported

If the application being supported is new then it is likely that users will request changes to

the initial requirements as they gain experience with the new system. There will therefore

be a high level of perfective maintenance.

• Staff mobility

The original programmer is often not around to explain the original source code. It is

always easier to change something that you have written yourself than alter something

that someone else has done. Unless the code is crystal clear and well documented then

you may require the input of the original developer. The nature of the programming

profession is such that individuals change jobs regularly and it is fairly unusual for one

person to develop and maintain a program throughout its useful life.

• Too many versions

It is often difficult to trace the evolution of the software through many versions or

releases. Changes throughout the new releases may not have been adequately

documented and this can make understanding the code very difficult.

• Not enough documentation

Documentation of the software design does not exist, or is not worth the effort of reading

because it has not been kept up-to-date with code changes.

•Dependence on external environment

For example a program may depend on the information

generated by an external source. If this source alters,

then the program may need to alter.

•Hardware and software stability

Software which depends on a particular hardware platform

or operating system may require modification if either

of these is upgraded.

Design Factors Affecting Maintainability

There are also program design factors which can affect a system's maintainability.

Module independence

In tightly coupled systems, where procedures communicate

using many parameters, and the same parameter may be used by

many procedures, a change in data type of this parameter will

require modification to many parts of the system.

Programming language & programming style

Some programming languages, by nature of their development

environment, their syntax and semantics, provide simpler

maintenance environments than others.