SYSTEMS DEVELOPMENT MODELS
We all have done on knowing how the System Analyst works in developing a certain task or project. This time, we are going to explore what are the aids or tools in developing a system. In developing a system, there are common system development process models that are used to guide the analysis, design, development, and maintenance of information systems. There are many different methods and techniques used to direct the life cycle of a software development project. Most techniques and methods have similarity in goals and share common task while each is designed for a specific purpose or reason. This topic will explore the similarities and differences among these various models and will also discuss how different approaches are chosen and combined to address practical situations.
The Waterfall Model
This model is said to be the earliest method of structured system development in a traditional approach. The simplest possible process model and therefore, the least likely to be correct. The waterfall model is widely used despite of being too inflexible and linear when it comes to meeting its customer’s needs. It models the software development process as a stately and chronological through the previously mentioned phases. As we can see in this model, Waterfall development has distinctive goals for each phase of development where each phase is completed for the next one is started and there is no turning back. Though it is orderly, simple to understand, and represents a process that is easy to manage and measure, the problem is that not even the simplest systems actually get built that way. But of course, in such methods and techniques, there’s always an advantage on it despite of the negative. And the seeming advantage of the waterfall process is that it allows for departmentalization and managerial control. It is because there is a schedule that is typically set with deadlines for each stage of development and a product can proceed through the development process. In theory, this process leads to the project being delivered on time because each phase has been planned in detail.
Each phases…
Requirements Gathering and Analysis – this is the phase where all possible system requirements to be developed are identified. System requirements are those set of functional and non-functional that the end-user expects from the system. There are tools in gathering requirements, either consultation, interviews, surveys, etc. The goal of this phase is to determine how these requirements will be accommodated in the system. There should be broad communication between the customer and the developer. Finally, a Requirement Specification document is created which serves the purpose of guideline for the next phase of the model.
Software & System Design – once all the requirements have been collected and analyzed, this time is to identify on how the system will be constructed to carry out their task. It is very important to understand what we are creating and what it should look like. The system has to be properly designed before any implementation is started. This phase is focused on the data requirements, software construction and the system interfacing. This phase also will defined the hardware and software needed. The aim of this phase is to generate a System Architecture document that serves as an input for the software design phase of the development, but also as an input for hardware design or selection activities.
Implementation – the software and system design is now translated into machine readable computer codes. Once the system design documents are done, the work is said to be divided in modules/units and coding is started. Different high level programming languages like C, C++, Pascal, Java are used for coding. Each modules/units will be integrated after the coding phase will be done. There is now a unit testing to test the system functionality and verify if the modules/units meet the specifications.
Testing – In this phase the system is tested. More often than not programs are written separately by modules/units. The separate modules are brought together and tested as a complete system to check if all modules/units coordinate between each other. There is a test to ensure that interfaces between modules work, the system works on the intended platform, and that the system does what the user requires. After successfully testing the software, it is delivered to the customer.
Maintenance – this phase is said to be never ending because it is believed that problems of the system developed will arise after its practical use starts, therefore, the problems in the system will be solved after its deployment. Software will definitely undergo change once it is delivered to the customer. And since not all the time, these problems will come directly at a time; it needs to be solved whenever it will arise. And this process is so-called maintenance.
The Spiral Model
The Spiral Model is inspired by the Waterfall Model and Prototyping Models. This model is simply designed to include best features that the two models has, and of course to enhance and introduce new features that can be used to design a good system. The term spiral is used to describe the process that is followed as the development of the system takes place. Like the Prototyping Model, primary version of the system is developed, and then repeatedly customized based on input received from customer evaluations. However, unlike the Prototyping Model, the development of each version of the system is carefully designed using the steps involved in the Waterfall Model. That is why this model is said to be a combination of both Prototyping and Waterfall.
Like a spiral, the process begins at the center position in this model. It moves clockwise. And each movement of the spiral usually results in a deliverable. Though it is not clearly defined what this deliverable is, there is changes as it traverse along the development of the system. Like for example, the first traversals may result in a requirement specification. The second will result in a prototype, and the next one will result in another prototype or sample of a product, until the last traversal leads to a product which is now ready to be sold. Thus the related activities and their documentation will also establish towards the outer traversals. And since there is iteration around the spiral, increasingly more complete versions of the system are built.
Similar to the waterfall model, the spiral model has chronological cycles/stages, with each stage having to be completed before moving on to next. Primary, the difference between the waterfall model and the spiral model is that the project system development cycle moves towards eventual completion in both the models but in the spiral model the cycles go back several times over to earlier stages in a repetitive sequence.
The Rapid Application Development
Above models are helpful and successful, in response to rigid, cascading, one-way steps of Waterfall Models of development, Spiral Model is introduced. Through this model, there is a way of reducing risk. But in order to ensure high responsiveness, projects are designed with fixed timescales. Sometimes leads to sacrificing functionality if necessary. This allows the development team to focus on the pieces of functionality that have the highest business value, and deliver that functionality rapidly. That is where the Rapid Application Development or RAD takes part. The RAD methodology was developed to respond to the need to deliver systems very fast. This method has a task list and a work breakdown structure that is designed for speed. However the major difference in RAD is a set of management techniques that are optimized for speed.
Change is often the reason for delays in application development. In long development processes, changes in functionality requirements or project scope after a lot of time has cause many months to be lost and significant expense to be incurred for redesigning and redevelopment. RAD minimizes scope and requirements creep by limiting the project's exposure to change and shortening the development cycle and limiting the cost of change by incorporating it up-front before large investments are made in development and testing.
However, the RAD approach is not appropriate to all projects. Say large real-time projects on RAD would not instill much confidence. The success of a RAD approach is determined on its project scope, size and circumstances.
The structure of the RAD lifecycle as we noticed is designed to ensure that developers build the systems that the users really need. This lifecycle includes all of the activities and tasks required to scope and define business requirements and design, develop, and implement the application system that supports those requirements. Below are the four stages that RAD has:
Requirements Planning – this stage is also known as the Concept Definition Stage where defines the business functions and data subject areas that the system will support and determines the system’s scope. Like the other models, it has to list all the requirements needed for the system in order to design appropriate concepts. It consists of a review of the areas associated with the proposed system. This review produces a broad definition of the system requirements in terms of the functions the system will support.
User Design – this stage is also known as the Functional Design Stage where uses workshops to model the system’s data and processes and to build a working prototype of critical system components. It consists of a detailed analysis of the business activities related to the proposed system. Following the analysis, the design of the system is outlined. System procedures are designed, and preliminary layouts of screens are developed. The requirements being gather is now being used for designing user’s views and designing the system itself.
Construction – this stage is also known as the Development Stage where completes the construction of the physical application system, builds the conversion system, and develops user aids and implementation work plans. There is now a small team of developers, working directly with users, finalizes the design and builds the system. The construction process consists of a series of design-and-build steps in which the users have the opportunity to modify the requirements and review the resulting software implementation. Construction includes documentation and instructions necessary to operate the new application, and routines and procedures needed to put the system into operation.
Implementation – this is the last stage of the system development and is also known as the Deployment Stage, this stage includes final user testing and training, converting data, and the implementation of the application system. It also involves managing the change from the old system environment to the new one. This may include implementing bridges between existing and new systems. User acceptance is the end point of the implementation stage.
Images Sources:
For waterfall model: Image @ http://www.buzzle.com/showImage.asp?image=1449
For Spiral Model: Image @http://www.instructionaldesign.org/models/spiral_model.html
For RAD: Image @ http://www.casemaker.com/download/products/totem/rad_wp.pdf