There are fundamentally seven principle causes of system failure.
- Improper development practices occur because of the intricate features of today’s software. Also, incorrect specification provided for the system leads to its failure.
- Inaccurate assumptions are made by the software developers or the development team regarding the various system requirements.
- The inadequate user interface can also cause system failures. It creates major problems for the users who in turn have an increased possibility of being introduced to important system data and thus, causing the system to fail. Sometimes erroneous data can also cause the system to fail.
- Severe system failures can be caused by faulty hardware. However, they do not occur as often as software faults but can still be damaging. Poorly designed, aged and damaged hardware leaves the system unusable causing the system to fail.
- If the user of a system is poorly trained then there is a possibility of system failure due to his or her errors since they do not have enough knowledge to handle the system. Also without proper documentation, the users can make mistakes leading to system failures.
- If the software developers and end-users do not understand the workings of the new system a mismatch between the system and organization takes place. A shortage becomes evident between the requirements of the system and the resources available leading to failure.
- Periodical or emergency hardware replacement, adding new services, spike attacks, and traffic, applying emergency patches, and modifying the facility system can also result in a system failure.
To avoid system failure the following measures should be taken.
- The delivery system should be adequately tested so that poor development practices can be avoided. The systems which are already operating should also be tested as this prepares us for probable system failures. It is the responsibility of the development team to reduce inadequate development practices as much as possible. Methodology and architecture design needs to be reviewed so that errors in the package design do not cause a system failure.
- Avoiding system failure due to faulty hardware is very difficult. Although it is not up to the software developers to repair faulty hardware, it should be considered during the designing of the system so that the effect of the failure can be lessened. Important instructions and functions should have proper backup components, like disc duplexing, in case of a hardware failure to minimize its effect. The failed sections should be isolated and tasks degenerated so that services can be provided to the system
- Users need to be adequately trained to efficiently handle the system to avoid making errors that may result in system failures. This also improves data integrity for our computer systems. Documentation should be properly reviewed so that the users receive unambiguous instructions for operating the system thus, avoiding system failure due to erroneous instructions.
- System developers should follow the given specifications of the system to avoid making mistakes that may cause a system failure. Unclear specification standards should be avoided during the development of the system since it leads to presumptions and erroneous results finally leading to system failure.
- Information and ideas should constantly be interchanged between the developers and users so that potential problems can be identified while implementing the system. This type of open interchange of ideas highlights the problem areas thus, minimizing system failures.
- If the system failure is a result of a software bug then the codes should be reviewed and advance evaluations should be carried out after separating the failed sections.
- System failures that occur due to spike attacks and traffic can be avoided by controlling the traffic, threads, and sessions suppression and through network regulation.
The Systems Development Life Cycle or SDLC is a procedure that alters and creates systems and includes the various methodologies and models necessary for developing those systems. We can divide SDLC into ten interdependent phases which can sometimes be combined, based on the complexity and size of the project. The phases are:
- Initiation – The 1st phase of SDLC begins when an opportunity or requirement is identified by a sponsor and a theoretical plan or concept proposal of the software is created for determining the goals and views of the intended project.
- System Concept Development and Feasibility Study – The 2nd phase defines the boundaries or the scope of the concepts determined in the earlier phase. Thus, it includes Risk Management Planning, System Boundary Documentation, Cost-Benefit Analysis, and Feasibility Study. The project is assessed in 3 feasibility areas – technical, economical, and operational. Studies are conducted to determine the cost of the project, how it affects the end-user and whether the software is required or not. Feasibility Study also helps to maintain the right course of the project and for evaluating the development of the MIS group.
- Planning – This phase provides the development team with a basis needed to acquire the necessary resources for achieving the intended goals. Along with other planning documents, a Project Management Plan is also developed here. Planning also involves estimating the budget of the entire project, determining the schedules, setting the required targets, and locating the goals.
- Requirement Analysis – After a theoretical plan has been created and the user needs have been determined the technical requirements needed for making the proposed software are determined in this phase by analyzing the goals and breaking down the functions which have to be created. A workflow is created by the technical development team along with a thorough Functional Requirement Document.
- Design – The detailed requirements are transformed into comprehensive System Design Documents which include operations and functions, process diagrams, business rules, etc. This phase focuses on delivering the necessary functionality and its output describes the system through subsystems and modules.
- Development or Coding – The designs are converted into absolute Information Systems as subsystem and modular program coding is carried out here. Procurement actions and test readiness reviews are performed. Refining programs, test files, and test case processes are prepared. Databases are created and tested and the codes are compiled here.
- Integration and Testing – After the software has been created many tests are performed at various levels to ensure that the developed system conforms to the specified requirements. Firstly, Unit and Module testing are performed along with User acceptance and System testing and then Beta testing is done. The bugs in the system are determined and after some other tests, like Integration, Black box, White box, Regression, and Automation testing, the software is integrated with its working environment.
- Implementation – In this phase, the system is implemented into the production environment and the problems that were identified during Testing and Integration are resolved here.
- Operations and Maintenance – After the program is ready to be used publicly it is deployed with all the components and enhancements. Maintaining the system is also important since when new changes are implemented in the system we will need to update it too. Software performance needs to be monitored and necessary adjustments for maintaining the software are created here.
- Disposition – The final phase of SDLC takes place when we no longer require the software and it is then disposed of. Users can look for better software after uninstalling the disposed of one.
SDLC was formulated to develop Information Systems through a systematic, deliberate, planned, and structured manner so that each stage of the life cycle of software could be reiterated. Also, it was developed so that deployment problems and delays, cost overruns and ambiguous objectives could be avoided and a system could be easily built.
The main strength of SDLC is that it completely sticks by the basic and important phases necessary for software developers in developing an efficient system. When using SDLC all the plans and requirements are laid out even before the actual codes are written. Thus, the goal is clear in the minds of the developers and they can implement the software exactly on time. Controlling and implementing the program becomes easier since SDLC ensures that the control of software remains stable if a bug is found in the system or something goes wrong with the software.
Another major advantage of SDLC is that it gives us a high-quality software system that almost always meets and sometimes even exceeds the expectations of the customers. It reaches the finishing point always on time within the estimated costs and it always works efficiently and effectively in the given infrastructure. Also, its maintenance is highly economical and also cost-efficient when it comes to enhancements.
By using SDLC we can monitor and control larger projects which might be difficult if we use other development models. SDLC gives the developers the power to efficiently handle the complex needs of the programs. They also have a very clear idea about what they should create and should not. It has extremely detailed steps covering all that is needed for a software development model. Its design and development standards are also among its strengths and SDLC can even tolerate changes that are made in the MIS staffing. Software developed using SDLC has extensive documentation which supports implementation, troubleshooting, and development of the software. Also, without proper documents, we will not be able to duplicate a program. Thus, this serves as one of its major advantages.
One of the major disadvantages of using SDLC is that its time frame is quite long even though the SDLC models have been created keeping time restrictions in mind. Since timing is an important element during software development, even a small delay in the development phase can cause major problems in the market. This disadvantage can be overcome by using the Rapid Application Development or RAD and the Prototyping Models. This is because RAD is a linear sequential development model which has a very small development cycle and the Prototyping model has a limited number of iterations making the whole development process short.
SDLC also has other disadvantages like increased development cost mainly since it requires a huge number of MIS staff. Sometimes it also suffers from limitations regarding user input and difficulties in determining the project overruns and estimated costs. All these disadvantages are overcome in the RAD model since it combines the uses of Joint Application Development or JAD model, Prototyping model and sometimes even implements CASE Tools.
Another disadvantage of using the SDLC model is its rigidity. It supports strict and inflexible implementations and thus, has no room for creativity in the software. It always sticks to what is required, although it is the main necessity, and does not allow the developers to freely implement their knowledge based on the working environment. Although sometimes it is better if the developers adhere to what is required, sometimes a lot of limitations do not work in the favor of the users.
We should not think that just because SDLC is among the oldest software development models it is also the most efficient at all times. It is the most preferred and used among all other development models since it helps to fulfill the specific needs and requirements of the users. Every software development model has its advantage and disadvantage but SDLC has an upper hand since its advantages overshadow the disadvantages.
A good Information System is indeed a major asset to a company and a bad one can even cause a company to fail. The power of a good Information System is such that it can even give smaller companies the opportunity of taking on the larger ones. A good Information system allows a company to manipulate data for obtaining a consistent forecast whose formulation is especially important for companies having an online component and marketing strategies.
Using the internet even smaller but strong companies can easily compete with larger ones if they have a good Information System supporting them. For a company to meet its goal and thus, prosper a lot of data and information needs to be considered all the time, and the decisions made need to reach all the members at the proper time. This is among the major objectives of a modern-day company. So, with the help of a good Information System not only will a company be able to manage its information and data-efficient but also maintain a proper communication channel among the employees, employers, customers, and other entities of the company.
The various innovation of the technology world along with a good Information System enhances the performance of a company resulting in its success. The business application and services of a good Information System package even helps the company to improve its strategies thus, making it more competitive than others. It enables the company to develop a top-class business plan which when incorporated with its systems and functions becomes major assets for the company and this is responsible, in certain manners, for its success.
But for the Information System to yield the proper results, a company needs to constantly update it so that its workings can be modified according to the present needs and goals of the company. A good Information System also helps when a company is experimenting with its existing assets and systems. Experiments may or may not be successful and thus, needs to be carried out on small scale first. Also investing huge amounts of money into a new project without testing it may cause the company to suffer heavy losses from which it may never recover. But, if the company has a good Information System then it will be able to estimate the potential success or failure of the new project based on which the company can decide to either proceed with a successful plan or drop otherwise.
A good Information System will not only empower the company but also provide it with the best information required for its effective working. A good Information System also reduces the time its employees spend on carrying out a particular task since they can quickly access and easily understand all the important data and respond on time. It helps to convert current and important data into valuable information which can be delivered to other people in almost no time so that they can work with it and respond quickly.
The Information System can be modified according to the individual user and requirements of the company so that it works towards the success of the company. Although initially, the benefits of an Information System may not be completely clear, it is very important that the Information System is allowed to grow as the business evolves so that it becomes better and in the process helps the company achieve its goals for becoming successful. An inert Information System may not always be a good one since it needs to evolve with modern technological innovations. Thus, only those Information Systems which are allowed to evolve according to requirements play a big hand in the success and failure of the company.