Summary -
In this topic, we describes about the below sections -
Why Hybrid Model?
Agile development model is rapidly becoming the most used method in software development. However, waterfall model advantages can't be ignore. Both models has its own advantages and disadvantages. The decision making has became difficult to choose the specific model because the other model advantages can't fill by the choosen model. So the need of new model with the feaures of both waterfall and agile models. Hybrid model comes into play to resolve this issue.
What is Hybrid Model?
Erick Bergmann and Andy Hamilton defined the Agile-Waterfall hybrid model that allows teams developing software using Agile methodology where as hardware development teams and product managers using the Waterfall model.
The main objective of waterfall-agile hybrid model is to be able use upto requirements phase (planning, requirement gathering etc,.) using waterfall model and then move to agile model for the remaining phases of SDLC (design, development, testing, deployment and maintenance).
This is the best hybrid model among all hybrid models to produces the high quality software. Some of them call it as hybrid agile or structured hybrid or simple hybrid.
When to use Hybrid Model?
Waterfall-agile hybrid model can be choosen when -
- Lot of collaboration required between teams.
- Organization trying to transition to agile methodology. But the complexity involved in stopping the process.
- Project set for budget. However the following agile method gets more benifited.
It is upto the organization to choose the best possible waterfall-agile hybrid model from the combinations available. Some of the prossible waterfall-agile combinations at organization and project level are -
- Using Agile model at organiation level and waterfall model at project level.
- Using waterfall model at organization level and agile model at project level.
- Using both waterfall and agile models at organization level and choosing required phases at project level on need basis.
- And many more..
Correct approach can be determined based on the project and organization requirement.
Process -
Hybrid model follows all the phases of SDLC but having a flexibility of follwing the required model at each phase based on the requirement. The most known primary hybrid model phases are -
- Planning.
- Requirement Gathering.
- Design.
- Development.
- Integration.
- Testing.
- Deployment.
- Maintenance.
- Risk Analysis.
Planning Phase -
Planning is the first and foremost phase in SDLC. The senior members of the project like Manager, Delivery Manager, Domain Experts, Sales Managers etc involves in this phase. At the first step, the requirement idea and the inputs explains the overview of the estimates to everyone. Based on the inputs, the project execution approach, model used to develop the system would be decided. It also helps to do feasibility study economic and other operational aspects. In this, the overall project planning, resource planning, risk identification and overall project execution planning discussed and finalized. Risk identifying is generally done in this phase. A feasibility study is conducted on the Technical aspects which help to decide and describe the approach which could be followed to implement the project successfully with a low risk.
Requirement Gathering Phase -
Requirement Gathering is the most important and first phase of SDLC. In this phase, business analyst and project manager participate in the meetings with client to gather the requirements.
- Client is the owner of the product and provides the information about what to build, who will use it or purpose of it to all the participants.
- Business analyst is the person who gathers the high level requirements from the client and document them in the form of business requirements
- Project Manager can located at onshore/offshore who is going to handle the project.
Business requirements are generally documented in Business Requirement Document (BRS). Note that the BRS document name may gets changed based on the naming conventions defined in the project and name varies from project to project.
Examples - Business Specification (BS), Customer Requirement Specification (CRS), etc, and many more.
Analysis - Once the requirements gathering phase completed, Business Analyst (BA) converts the business requirements into technical requirements with the help senior team members like SMEs (Subject-matter experts) and team leads. The technical requirements documented in a document called SRS (Software Requirement Specification) document.
Design -
Design phase turns the requirements from SRS into a design plan called the Design Document Specification (DDS). Developers takes the requirements from SRS and creates their rough designs, working models, specifies how the software works, how the new design looks, how the control flow from screen to screen etc,. Design phase also models the design that includes - architecture, user interface, platforms, programming, communications and security etc,. In another words, overall system architecture is designed by defining their functionality of each module that includes their interaction with cross-systems.
Development/Construction -
Once the DDS gets approved, Development phase gets started. Developers start programming with the code by following organization coding standards. Once coding completed, the programmers uses the programming tools to compile and debug the programs to verify weather new code is working or not.
Developers from all levels in the team involves in this phase. The code is documented as Source Code Document (SCD). Developers has many responsibilities in this phase namely - coding and compilation of source code to make error free.
Integration -
All the individual components from different systems or different technologies integrated together to form a single product. The integrated product is an input to testing team.
Testing/Quality Assurance -
The testing process starts parallelly from the first phase namely planning and ends before the deployment phase.Testing team thoroughly tests for the defects by follwing the process defined in STLC (Software Testing Life Cycle) to make sure that each and every component or module is working fine.
Deployment Phase -
Once the software is fully tested and has no defects or errors, then the test results and articrafts gor reviewed by the client and provides approval for deployment. Once the software got deployed to production, then the new functionality available to the end-users who are currently using the system.
Deployement might be complex based on the system design if it is integrated with multiple systems.
Maintenance Phase –
Once the end-user starts using the newly deployed sofotware, there might be a possibility that the real-time issues starts coming up. The team has to fix these issues to avoid the loss in business if the issue has less priority or less impact. If the issue has high priority and has huge impact, client can take a decision to roll out or backout new changes and refine the functionalities as required. This process of taking care for the finished product is called as maintenance.
Risk Analysis Phase –
This phase parallelly run with all development phases starting with planning and finishes with maintenance. This phase is used to lists all expected risks and provides all the nexesary activities to avoid such risks.
Advantages –
- Very flexible model.
- Easy to understand and implement.
- Reinforces good habits - define-before-design and design-before-code.
- Chances of rejection would be very less.
- Easy to implement in small and medium projects.
- Development process is fast.
- Identifies deliverables and milestones.
- Works well on mature projects and weak teams.
- Model suits the project size and type.
- Simple and easy to use.
- Higher chance of success.
- Works well for small projects.
- High amount of risk analysis.
- Emphasizes final product.
- Test-based approach to requirements and quality assurance.
- Structural and Iterative.
Disadvantages –
- Not all Hybrid models are same.
- Doesn’t follow the usual standards.
- Whenever there is a change in Requirements, there would be a lot of rework to be done.
- Following and implementing this model would be more costlier.
- Can't be implemented for large projects.