A beginners guide to various Software development methodologies
Systems Development Life Cycle (SDLC) or Software Development Life Cycle is process of creating or altering the information systems which is used by people to develop these systems. It involves seven phases to complete this cycle. This process is often known as Waterfall model, a sequential process in which one activity is followed by another as shown in figure below:
The SDLC starts with the planning phase which illustrates the solid plan for developing the information system. The planning phase usually consists of mainly management tasks i.e. deciding and defining the information system which needs to developed, setting up the scope for the project and other project management tasks such as resource, task management etc.
Once the planning phase has been completed and it has been decided what needs to be developed, the SDLC moves to analysis phase. In this phase of the cycle, the business requirement are gathered which are required to be built into the information system. The requirement gathering is usually done by IT specialist in collaboration with end users. The requirements are also prioritised in this phase. One of the most important aspects of requirement gathering is that they should be as close to what user ‘really’ expects in the system. The confusion while gathering requirements often leads to bugs which translate to time, cost and effort in the later stages.
The design phase is where technical and solution architects sit together and come up with a system model and technical architecture for the information system. The goal of the phase is to have a proper and well thought design and architecture in place before moving to the development phase.
During the development phase, programmers from the development team take the blue print of the design and architecture documents. This is followed with the development of databases and programmes which are detailed in requirements specification done in analysis phase.
The testing phase of the life cycle verifies and validates the outcome of development phase i.e. the information system. Testing is important and is done by documenting and validating all the test cases and conditions. There are various types of testing done during this phase namely unit testing, system testing, integration testing and user acceptance testing.
This implementation phase of the SDLC is where the information system is made available to the end user. A detailed set of documentation is written which can help the user to get accustomed with the information system. Many large information system and organizations also set up other support procedures to help the end user and the setup of those processes also fall under implementation.
Maintaining the system is the final phase of any systems development effort. During them maintenance phase of the SDLC, you monitor and support the new system to ensure it continues to meet the business goals.
The SDLC or waterfall model takes a very singular approach to the information system development. It does not allow the development team to look around the software library and come up with generic pieces which can be reused. One of the disadvantages of this is every time the software needs to be written from beginning. This challenge has given birth to another approach which is called component based development.
In component based development, the focus is on developing small and reusable software components which can be used across multiple applications or information systems within the organization.
Rapid application development
In Rapid application development (or Rapid Prototyping) methodology, the emphasis is mostly on end user involvement during the development process. This is done by creating rapid prototypes to share with the end user and getting approval to speed up the development process. A typical RAD cycles looks like as shown below:
This end-user involvement and the use of prototyping tend to greatly accelerate the collecting of business requirements and the development of the software.
Prototyping is an excellent tool in systems development. Most often, IT specialists use prototyping in the SDLC to form a technical system blueprint. During the requirements determination portion of the systems analysis phase, system analysts gather information about the organization’s current procedures and business processes related the proposed information system. In addition, they study the current information system, if there is one, and conduct user interviews and collect documentation. This helps the analysts develop an initial set of system requirements.
Prototyping can augment this process because it converts these basic, yet sometimes intangible, specifications into a tangible but limited working model of the desired information system. The user feedback gained from developing a physical system that the users can touch and see facilitates an evaluative response that the analyst can employ to modify existing requirements as well as developing new ones.
The prototyping process involves the following phases:
Extreme Programming Methodology
The extreme programming (XP) methodology breaks a project into tiny phases and developers cannot continue on to the next phase until the current phase is complete. The primary difference between SDLC (waterfall model) and XP is that, XP divides the process into iterations. In conformity with RAD, XP as well depends a lot on development of components for the information systems.
The methodology takes its name from the idea that the beneficial elements of traditional software engineering practices are taken to “extreme” levels, on the theory that if some is good, more is better. It is unrelated to “cowboy coding“, which is more free-form and unplanned. It does not advocate “death march” work schedules, but instead working at a sustainable pace.
Agile is one form extreme programming methodology. Its main focus is on client satisfaction through continuous delivery. The focus of Agile is more on limiting the project scope than team coding in XP. An agile project sets a minimum number of requirements and turns them into a deliverable product.
Agile development methodology provides opportunities to assess the direction of a project throughout the development life cycle. By focusing on the repetition of abbreviated work cycles as well as the functional product they yield, agile methodology is described as “iterative” and “incremental”. In waterfall, development teams only have one chance to get each aspect of a project right.