Your development team is working on the version 1.0 of a software code base. Thi
ID: 3675145 • Letter: Y
Question
Your development team is working on the version 1.0 of a software code base. This version will be the main version used for team X. Beyond that point the development team will start working on version 2.0 for team Y. However, the team should maintain version 1.0 based on the bugs found by team X and these fixes should be always applied to the 1.0 version and also to 2.0 code stream. However, bugs found in the 2.0 stream should be applied to the 1.0 code stream after close consideration to make sure that version 1.0 is not disturbed. In order to keep track of the development and the versions under development, you will need a repository for the software that includes mechanisms for recording and tracking versions. Based on the above scenario and your understanding, you need to: Identify and explain the best way to configure your repository to allow for maximum flexibility and maximum stability for your released code. Develop a method for configuring and managing a software repository. After creating the solution, search for available version control tools. Select the tool you believe to be the best to implement your solution. Describe how you would configure and manage your repository, focusing on required flexibility and stability. Provide a table of version control tools that you researched upon, including a description and strengths and weaknesses of each tool with respect to your configuration solution. Describe the version control tool you decided to implement, along with a justification explaining why you believe this tool is the best fit. Provide a specification of how you would set up and configure the tool to effectively handle your solution.
Explanation / Answer
Repository management strategy: For this scenario, the strategy to be adopted is the use of branches to keep the work more organized. Using branches allows to maintain the "under development" work separately from released code that is already completed, tested and stable.
Method for configuring and managing repository: Following steps should be followed in order to configure and manage the repository:
1. Create a main branch, called Production, for version 1.0. Team X will use this branch.
2. Create another branch, called Stable-1.0, for version 1.0. This branch will contain code that has been completed and tested for version 1.0.
3. There will be another branch for version 1.0, called as feature/bugfix-1.0. This branch will contain all code related to feature development and bug fixes with respect to version 1.0.
4. For vesion 2.0, there will also be branch, Stable-2.0. This branch will contain code that has been completed and tested for version 2.0. Team Y will use this branch.
5. For vesion 2.0, there will also be a feature/bugfix branch, called feature/bugfix-2.0. This branch will contain all code related to feature development and bug fixes with respect to version 2.0.
6. Whenver features or bug fixes are completed in feature/bugfix-1.0, they will be merged in Stable-1.0 as well as in Stable-2.0.
7. Changes committed to Stable-1.0 will be further tested and if ok, will be committed to Production so that they are made available to team X users.
8. Whenver features or bug fixes are completed in feature/bugfix-2.0, they will be merged in Stable-2.0 so that they are available to team Y.
9. Changes committed to Stable-2.0 will be further tested and if ok, will be committed to Stable-1.0 where they will be tested whether they can be committed to Production branch.
Version control tool to be used: For the current scenario, SVN (SubVersioN) can be used for maintaining the repository.
Reasons to recommened SVN:
1. It is a Free/Open Source Software (FOSS) so there is no question to pay for licensing fees.
2. It is the most widely adopted system for version control.
3. It is based on Client/Server architecture and offers rich features for version control like directorry versioning, contant time branching and tagging, merge tracking, file locking and interactive conflict resolution etc.
4. It is cross-platform. Rich clients (GUI-based also) for all major platforms like GNU/Linux, Windows and Mac are available for checking out and code browsing.
Other famous tools for version control:
1. CVS: Oldest system. Not much used now-a-days.
2. Git: New kid on the block and rapidly growing, but has long learning curve. Mainly suitable for applications of distributed nature.
Related Questions
drjack9650@gmail.com
Navigate
Integrity-first tutoring: explanations and feedback only — we do not complete graded work. Learn more.