Methodologies
BestSoft is concerned that all projects we deliver meet our customer' s needs and expectations. Our Project Management focuses on three aspects:
- Code Quality
- Assurance Schedule
- Budget Control
which have been proved to guarantee the successful delivery in our software development practice.
In answer to different requirements from various clients, BestSoft has developed and implemented Outsourcing Software Development Methodology. Integrating the core idea of CMM with our long-term project practice, BestSoft has created a matured process management methodology to suit offshore development projects.
BestSoft's methodology and technical approach provides our customers with cost-effective and efficient business solutions, we are glad to share our experience with you.
Agile MethodologiesBusiness requirements change rapidly with product development. In order to launch new generation products and stay ahead of the competitors, it is essential to adopt a highly flexible model for development so that changing requirements can easily be incorporated.
At BestSoft, we adopt Agile Unified Process (AUP) for product development. This is a combination of agile techniques of XP (Extreme Programming) and RUP (Relational 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 versions. There are two types 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 preproduction steps like testing and deployment
- Production release. These releases have been made on the production server.
Incremental releases are made by the development releases. Major functionalities are released in every production release. The first production release typically takes more time than subsequent Production releases.
RequirementsEvery requirement (including change requirement) that needs to be implemented is prioritized and stacked.
Any subsequent requirment will be added to the stack and prioritised accordingly. In addition an existing requirement can be removed from the stack, the priorities can change with time, in this case, the stack is reshuffled. Our aim is to implement the high priority requirements for each iteration.
The four phases in Agile methodologies are:
- Project Initiation - Inception
- Technical Design - Elaboration
- Construction - Coding
- Transition
Phase 1 - Project Initiation (Inception): 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 (Elaboration): The second phase of the life cycle consists of proving the potential architecture of the system. We do this by making technical design - both High Level Design and Low Level Design. HLD will focus on laying the overall architecture and framework for the project. It results in Project Decomposition into modules/functions/entities/classes etc. LLD incorporates the pseudo code and definition of all technical interfaces of the project.
Phase - Construction (Coding) : 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 non undergone pre-production steps like testing and deployment.
Phase 4 - Transition: 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 reprioritized. 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 ProcessThe 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.