Topic 7 Software Development and Reliability
| In the exam you are expected to
know about: Software
development
-
Understand that there are different ways of providing
software solutions to specialist applications, e.g. user written, internal
development team/department, external software house to specification.
-
Describe the possible criteria for selection of software
solutions to specialist applications and the place within the corporate
strategy.
Software Reliability
-
Describe methods of ensuring
that software is reliable: a
testing, b
testing, agreements between software houses and purchaser for testing.
-
Understand the reasons why fully-tested software may fail
to operate successfully when implemented as part of an information
technology system.
-
Understand the need for maintenance releases.
|
Software development
When a feasibility study is being carried out to
decide whether an ICT system is warranted, software comes in at an early stage.
There are a number of different approaches that we will look at:
- The software is written by the end user.
This is viable for a small project, probably carried out by an enthusiastic
employee who has good computer skills. They know the precise
requirements of the department and the software can be developed very quickly.
In effect the employee does something very similar to your Module 6 Project.
However there is often little documentation. If that employee leaves,
then it is quite likely that the software will rapidly fall into disuse.
This approach is suitable for projects with only a limited lifespan.
- Writing the software in-house. Large
organisations have many specialist computer staff whose job it is to maintain
the existing software and to develop new software. The advantage of this
is that any confidential information is kept in-house and does not risk
getting into the wrong hands, as might be the case if external consultants
were used. The disadvantage is that specialists may need to be recruited
on short-term contracts.
- Getting in consultants. This is a more
expensive option. A software house will design, construct, test, and
implement the software. Quotations may be sought from several different
companies, but cost should not be the only consideration. If the project
is complex, there may well be many pitfalls. A good track-record in
implementing complex systems may well justify the extra money.
Question 1
What criteria would a company use in deciding between several different software
houses when a new system is going to be delivered?
ANSWER

The alternative to solutions devised in-house or by
a software house is to buy a package. It is a safe and relatively less
expensive way of buying software compared to a bespoke solution:
- The software is much less expensive, several
hundred euros compared to hundreds of thousands of euros for a bespoke
solution;
- It is immediately available and thoroughly
tested, so there are likely to be fewer bugs in it;
- There will be extensive documentation (often a .pdf
file), tutorials, or third-party training;
- Technical support is available from a website or
a phone line (often premium rate);
- Other users will be able to give views about the
package;
- Regular upgrades may be available.
There are, of course, drawbacks:
- The package may not do exactly what the
organisation wants it to do;
- It may not run on the hardware;
- It may not be compatible with other software in
the organisation.
It may be possible to lease the software, in which
case regular upgrades get made available. The initial expense is less, but
it may be more expensive in the long run.
Some organisations try to modify proprietary
software, but this can be dangerous; the functionality may well be reduced, or
worse...

Criteria for
Selection of a Solution
The following criteria can be applied:
- Functionality - how well the software will
perform key tasks. We have seen how weightings can be applied, and a
numerical ranking can be produced for several different packages;
- Robustness - error free, handling large amounts
of data without crashing;
- Performance - how quickly queries, etc. are
handled;
- Support - both initial training, and support to
deal with any problems that do arise;
- Portability - how well the files can be used by
different applications;
- Transferability - how well existing data are
transferred to the new system without having to type it all in again;
- Security - to protect sensitive data;
- Upgradability - the package will be in use for a
long time, so it will need upgrading from time to time.
Question 2 A large
market research company is considering several different software packages to
assist with the analysis of data that are collected on behalf of clients.
Give three criteria that should be considered when evaluating software packages.
For each criterion, explain why it may be important to the company. (AQA
Past Question) ANSWER
Software Testing
All software is tested rigorously before it's
released. You have done testing as an important part of your projects (you
did, didn't you?). You may remember using normal data, boundary data, out
of range data, or invalid data. There are five key stages:
- Unit testing - each component (subroutine, code)
is tested.
- Module testing - the module is made up of
several components that are put together. These are tested.
- Subsystem testing - collections of modules are
tested. The Purchase Order system is a subsystem of the Accounts system.
- System testing - testing all the sub-systems put
together to make up the whole system. The interaction of the subsystems
may produce unpredicted results. Also the testing is carried out to
ensure that it matches all the requirements in the specification. Do you
remember doing that in your project?
- Acceptance testing - as installed at the user's
site. Rather than dummy data, real data from the user are used.
Testing is an iterative process whereby results at
each stage can be used to inform earlier stages (like the Waterfall Model).
For example a problem at Module Testing may show that one of the units needs to
be re-thought.
Acceptance testing is sometimes called
Alpha (a)
testing. Alpha testing reveals errors and omissions. The user may
well find that the system does not do various functions because they were not
explained clearly enough in the original specification.
Beta (b)
testing is carried out before a package is released for general sale. The
package is given to a number of different end users for testing in real
environments. Errors get shown up and these can be corrected before the
product is released.
The more complex software is, the more likely it is
to contain errors. If you look at a good A2 project, you will see how much
testing is done for even a relatively simple project. A2 projects are
simple compared to large corporate databases. Almost all software contains
errors which may well not get shown up in testing:
- Desire to be the first on the market with a
product may lead to skimping on the testing;
- There may be a deadline for the completion, so
not all the tests are done;
- The test plan or data may have been inadequate.
Some aspects may not even be tested at all.
- The user may well use the software in a manner
not anticipated by the developer, therefore not tested.
Question 3 Explain
what is meant by alpha and beta testing. In your answer explain which type
of testing applies to bespoke and proprietary software.
ANSWER
Question 4
Some bespoke software is tested by the software house, but when it is installed
at the client's site, its functionality is poor. Give two reasons why this
might have happened. ANSWER
Software
Maintenance
Software needs to be maintained:
- Errors may well be found;
- Requirements will change as needs change;
- Hardware developments will allow software
developments;
- New legislation may alter the requirements that
the software runs under.
There are three main categories of maintenance:
- Corrective maintenance - gets rid of bugs that
might take time to show up. Often this is done by downloading corrective
patches from websites;
- Adaptive maintenance - systems may be adapted to
changing requirements, for example changing single-user software to multi-user
software. A new operating system may require some adaptive maintenance
to be done;
- Perfective maintenance - the system can be made
to work even better without changing its functionality. For example
reports can be made in a clearer format.
Generally the maintenance time is about 65 %
perfective, 18 % adaptive, and 17 % corrective.
The manufacturers of software respond to feedback
from users, and will carry out modifications before releasing a later version (a
release). Minor changes are shown by Versions 3.0, 3.1, etc.
Major
changes are shown in Versions 4.0, 5.0, etc. Or even a completely new
name.
Maintenance is rather looked down on by developers,
so ends up in the hands of less experienced staff, which is why a high
proportion of software costs goes on maintenance. In large systems,
maintenance can lead to other errors, which necessitate more changes.
Sometimes it's not worth the trouble.
Generally maintenance is one of the highest costs
of running software, so it is well worth-while to make the systems as easy as
possible to maintain.
Question 5
State three different types of maintenance. Explain why maintenance is
such a high proportion of the cost of running software.
ANSWER
Now try the
Topic Quiz