Agile Methodology for Application Development
At Elegant Solutions’, we adopt Agile Unified Process (AUP) for product development. This is a combination of agile techniques of XP (Extreme Programming) and RUP (Rational Unified Process). This model enables us to model and document in an agile manner, thereby giving us a flexible approach so that we can easily adapt to the changing requirements. Agile methodology enables us to release the entire product in versions. There are two kinds of releases in this methodology.
- Development release: Development releases are small releases and have the potential of being released on the production server. However, they have not undergone pre-production steps like testing and deployment.
- Production release: These releases have been made on the production server.
Incremental releases are made by the development releases, whereas major functionalities are released in every production release. The first production release is greater in time than others.
Requirements: Every requirement (including change requirements) that needs to be implemented is prioritized and stacked. Any new requirement is added into this stack after prioritizing. An existing requirement can be removed from the stack. In addition, the priorities can change with time and therefore, the stack is reshuffled. Every iteration implements those number of highest priority task that can be implemented in the current iteration.
The four phases in Agile methodologies which Elegant Solutions’ adopt are
Phase 1- Project Initiation (Commencement): This is the first phase of the life cycle where the initial scope of the entire project is identified. Based on the initial requirements analysis, we propose the potential architecture to the client, come with an agreement and obtain the initial funding for the project.
Phase 2- Technical Design (Explanation): The second phase of the life cycle consists of proving the potential architecture of the system. We do this by making the technical design – both High Level Design and Low Level Design. We will focus on laying the overall architecture and framework for the project. It results in Project Decomposition into modules/ functions/ entities/ classes etc. Elegant Solutions’ incorporates pseudo code and definition of all technical interfaces of the project.
Phase 3- Construction (Manufacture): The third phase consists of construction phase where we build working software on a regular, incremental basis. Hence, construction phase consists of series of development releases. Development releases are small releases and have the potential of being released on the production server. However, they have not undergone pre-production steps like testing and deployment.
Phase 4 – Transition (Evolution): This last phase includes validation for quality assurance and deployment to the production server. It differs from the transition phase of RUP as instead of releasing the entire product in one release; the product is released in versions. The first production release is greater in time than others. The entire life cycle of AUP is repeated for every production release with few modifications. After every production release, the business requirements for the project are modified. Any new change requirements, after prioritizing, are added in the stack. The stack may be re-prioritized. Changes, if needed are made in the technical designs. Then, the construction and the transition phases follow, where every iteration implements those numbers of tasks that can be implemented in the current iteration.
Disciplines Agile Unified Process:
- The seven disciplines of Agile Unified Process are;
- Model: The business requirements are understood and solution is identified to address problem domain.
- Implementation: The program source code is developed and unit testing is done.
- Test: This discipline ensures quality of the system developed. It consists of finding bugs, ensuring that the system works as per the design of the system and meets all requirements mentioned in the specification documents
- Deployment: This includes planning and executing delivery of software and supporting documentations ready to be deployed and making the system available to end users.
- Configuration Management: This includes managing baselines of the project, changing and delivering configuration items and managing releases.
- Project Management: This includes assigning tasks, managing risks, tracking progress etc. to ensure on time and within budget delivery of the product.
- Environment: This includes ensuring proper tools are available whenever required.