Article, Software Development
Selecting the right approach for software development has many factors like the project quality, costs and schedule. Traditional approaches suffice when projects are based on rigidly followed processes to ensure quality output. But such methods do not encompass or cannot changes until the whole cycle is complete. But this is a world of technologies, market demands and customer behavior. Businesses today have to put up with this ever changing market and have to constantly adapt themselves to the unpredictability that is imposed upon them by this ever changing market scenario. To be able to sustain in such an environment of constant transformation, a business needs to be adaptive. The key solution is to adopt agile methodologies for business architecture and information technology. With such an approach, organizations can quickly respond to customer demands and efficiently adapt to market changes. It dramatically increases flexibility and decreases development time.
The Traditional Approach
Traditionally, the process of software development included rigid software development models. Processes included a structured layout of a step by step approach from requirements gathering to final testing and release of the product. Well, the processes were mostly aimed towards creating a flawless product in accordance to software quality standards.
There are two major ways to accomplish a successful project – SDLC (Software Development Life Cycle) and PDLC (Project Development Life Cycle). PDLC is a set of activities that go hand in hand and control the projects.
Software Development Life Cycle (SDLC) which included details about each stage of software development was completely focused on standardizing the development process to ensure that a quality product is released at the final stage.
This cycle was a 6 step process
- Planning and analysis
- Definition of requirements
- Product architecture design
- Product implementation
- Product Testing
- Market Operation and maintenance
Every organization has a specially tailored process for software development.
The standard methods however include:
Specific approaches in SDLC include (for example) the Waterfall Model and Incremental Model.
The incremental model is an improvement over the waterfall model where the requirements are divided into subsets and modules. Each module goes through the entire life cycle. This means that at the very first stage, you get a working model of the software. Well, later modules serve the purpose of adding new features at every stage. Prototypes can be submitted at an earlier stage in the project. In short, this iterative method requires good planning and a clear definition of the requirements and surely works for large projects.
With the waterfall model, the software development process is more linear and sequential. It mandates the completion of each stage of development before the next one begins. This rigidity makes testing and review of the product a pre-requisite at every stage, for compliance with customer requirements. However there is no flexibility and any new requirements added by client cannot be accommodated at any stage. It requires a complete rework. Prototype creation takes a longer time as it requires the completion of the lifecycle to be able to create one.
The steps in waterfall model are as follows:
Requirement Gathering and analysis: This is the first step of the process where the requirements of the proposed project are gathered and documented. This documentation is called as SRS (Software Requirement Specification) documents.
System Design: In this phase, the requirements that were gathered in the first phase are analysed and studied. System design helps in identifying system requirements and hardware requirements. Which helps designing the system architecture. Again the process is well documented before moving on to the next phase.
Implementation:Taking inputs from system design, the application is developed in small program units. Each unit is tested for it’s functionality before moving on to integrating the units in the next step. This is called UNIT TEST.
Integration and Testing: All the units from the previous phase are integrated into one single system. This overall system is then tested for any faults and failures. Integration testing of the application is done.
Deployment of system: In this phase of development, the software is ready to be deployed and released to the market.
Maintenance: Once deployed, the maintenance phase plays an important role in SDLC. Customers run into all types of problems and patches need to be released to fix these problems. Maintenance is done basically to make changes in the customer environment.
The Agile Approach
Agile methodologies are more customer centric and less bureaucratic. They are more flexible and tools independent. They also focus more on individuals and interactions as well as customer collaboration rather than processes, documentation and following a rigid plan. The key to a successful agile approach is a Service Oriented Architecture (SOA) and Decision Management (DM). This combination facilitates the ability to answer to the market changes and opportunities.
Agile has a unique approach:
Project Initiation: In this phase is a high level business requirement gathering is done. Product owner interviews stakeholders and goals and business processes are defined. The results take the loose form “As a I want to so I can .” From this, the developer can plan for functionality and acceptance testing. These are similar to the requirements specifications.
Sprint Planning: The acceptance levels and scope need to be understood from onset. That’s why, the product owner is involved in scope discussions and scrum master (project manager), and quality assurance (QA) teams work directly with development team.
Demo: Demos are presented to clients and end users. At this phase, the team decides whether the product meets acceptance levels.
We can clearly see that Agile methodologies focus more on output rather than planning and documentation.
Some of the methods used in Agile Methodologies are:
Crystal Methodologies: concentrates on communications and interaction between the various teams and has frequent delivery, reflexive improvement, easy to access expert users and many such features.
Dynamic Software Development Method: divides the development process into three stages, pre project, project life cycle and post project. It encourages user involvement and is an iterative method of development.
Scrum: Here feedback loops are given due importance and co-ordination with customer for requirements and customer feedback is adopted to develop a product.
There are many more agile methods, these were listed to give you a basic idea of the methods.
Comparative analysis and Conclusion
Basically, Agile methods are based on adaptive methods and traditional SDLC is based on predictive methods. While traditional methods focus on careful planning from the first stage, agile methods require just the basic requirements to begin the project. Secondly, Agile methods can accommodate any changes at any stage of development, but traditional SDLC requires a strict change control process to enable any changes once the development of the code has begun.
Agile methodology significantly reduces the documentation and increases client interaction making the entire project a collaborative effort increasing customer satisfaction.
While agile methods are suited for small and medium sized projects or projects where continuous changes are required, traditional SDLC still stands as a strong backbone for software development in large enterprises where requirements and specifications must be clear to begin the project in the first place.
In traditional methodologies, QA is done on a routine basis, Agile allows testing after each sprint. SDLC will have to wait for the product to be developed to run a test.
Client feedback in Agile is quick and all stake holders are aware of the changes taking place. In the traditional approach, the complete cycle needs to be finished to make any changes.
In conclusion, selecting what is the right approach for a particular software project depends on the requirements. Traditional SDLC or Agile, depends solely on the project size, risk, clarity of requirements, complexity, customer availability and team location. Selecting the right approach depending on the criteria will lead to a successful project implementation and completion.