explain the impact of the ‘Software Crisis’;
explain the need for software systems that meet the needs of organisations and/or individuals;
explain the main factors affecting systems development; the user needs, time and cost;
understand that a computer system consists of a user interface, processes and data;
describe the roles of the following during systems development:
o The systems analyst;
o The project manager; and
o The programmer.
The Software crisis is a term used in the early days of computing science for the difficulty of writing useful and efficient computer programs in the required time.
The software crisis was created when the hardware developments, such as the speed of RAM and processing power, were growing at a much faster pace than software developments. As computer technology became more sophisticated, organisations were demanding more complex problems to be solved. Programmers struggled to keep pace with developments which led to the software crisis.
It became evident as:
Software Projects running over-time
Software being delivered over budget
Software did not meet requirements/the user interface did not match the users’ IT skills
Software was very inefficient/advances in hardware and software under-utilised/HW developing faster than software/software systems were becoming more complex
Projects were poorly managed Code was difficult/expensive to maintain
It was recognised that the way in which software is developed must be radically changed [1]
...because users’ needs were not being met/ users’ needs were being met [1].
This is to ensure software meets the user requirements [1].
Software is developed on time/not on time [1]
...and within budget/outside budget [1].
Quality process not being followed [1].
Effective advances in hardware and software were not being used in the production of software e.g. IDE [1]
Organisations and individuals demand software to solve problems. In most cases software is bought as either:
Generic packages or Off the shelf packages refer to the packages that meet a wide range of user requirements for a wide audience e.g. Office 365. We sometimes refer to these as productivity tools such as an individual using Word processing software to produce personal letters. In some cases an organisation may purchase an application software package which focuses on a given task such as payroll. In this application the inputs, processes and outputs are the same for all organisations. Rather than each organisation developing their own software it would save on development time and costs to purchase a payroll software package “off-the-shelf”. Each business would only pay a fraction of the development costs.
If the business functions are very specialised such as manufacturing robot arms the software may have to be tailor made or custom built which involves using an ICT development team to create a specialised software package. This will be more expensive as the organisation will have to meet the full development costs and there will also be time required to fully develop and test the custom made software. When developing systems it is vital that the systems developed meet the needs of the users, be they individuals or organisations. The user’s requirements must be established at an early stage in the process.
There is an enormous difference between the large-scale commercial production of software and an individual writing a program for their own use. The problems are much larger, too large for one person to manage. As this is the case professional software, intended for use by someone apart from its developer, is usually developed by teams rather than individuals. It is maintained and changed throughout its life. Software engineering is intended to support professional software development, rather than individual programming. It includes techniques that support program specification, design, and evolution, none of which are normally relevant for personal software development.
A new system has to be developed due to a number of reasons. The current system may no longer be suitable for its purpose as the requirements of the business may have changed or the business may have expanded. The current system may also be too inflexible or expensive to maintain. The technical support for the old system may no longer be available or it could be available but very expensive. Technological developments could also make the current system outdated or redundant. Advances in hardware and operating systems may also necessitate a new system, as they may not support the old system.
Development Costs
Costs related to the uniqueness of the system application
Investments in hardware and related equipment
On-going operational costs
The later in the development (SDLC) an error is detected the more expensive it is to correct. This is related to mounting costs as previous phases may need to be reworked and also more people are affected.
Carries out a feasibility study/produces a feasibility report
Liaises with the client/users
Identifies the user requirements
Undertakes fact finding/interviews/observation/questionnaires /documentation sampling
Defines the system specification
To oversee the development of the new system
To schedule/manage the project/budget
To monitor progress
To identify/respond to risk or bottlenecks
To liaise with clients
Allocate resources
Hardware
Software
Personnel
Writes/produces the code
... from the module specifications/algorithms/flowcharts
Tests the code/performs application testing/alpha testing
...during module, integration, system testing/using black box, white box testing
... using the test plan/test data
Debugs/corrects the code
Documents code
… to make code meaningful/readable
... by including indentation/comments/white space