hello everyone welcome to session 4 of module 5 configuration management in this session we will learn about the configuration management different features of configuration management tools and how configuration management is helpful in test management activities so let's get started with understanding what is configuration management so software configuration management is the discipline for systematically controlling the changes in software and supporting documents during SDLC so it's it's a systematic way of controlling the changes in software or any related documents during SDLT so it can be your software code it can be the document supporting documents like your design document etc anything that is a systematically controlled version controlled throughout the STL 3 is software configuration management so for example the test cases or test plan design documents SRS are all these things can be configuration man is true the software configuration management then as per I Triple E software configuration management is the process of identifying and defining the items in the system controlling the changes of these items throughout their lifecycle recording and reporting the status of the items and change requests and verifying the completeness and correctness of the item so the definition to elaborate it a little bit so it's controlling any changes in the items so be it your software code or any supporting document for example design requirements document throughout their lifecycle and then recording and reporting any status any changes or change requests for example if you're making any changes to the document so it records those changes in the form of audit trail if you're making any code changes it records the tool configuration management records any changes made in the code and then it verifies the completeness and correctness of the item so that is achieved through the verification process that is supported that that is available in the configuration management tool itself so you can initiate a code review or you can initiate a review process for any of the test cases test plan or design document and see whether those documents are complete or correct or some comments are being made which needs to be implemented in the document so it's it's a kind of a disciplined approach or systematic control for different software your code or any related document so what are the features of software configuration management tools software configuration management is the process of tracking and controlling the software changes so it tracks and controls the software changes then the basic features provided by any software configuration management tools are concurrency management version control and synchronization these are very basic features that any software configuration management tool you can think of will provide so concurrency management version control and synchronization so very important many very popular important software configuration tools available nowadays in the market are the latest one is gate is used for version control for the code an IBM rational team concert is used IBM clear case and then the previous versions are also their popular open-source version like CVS and subversion so these are these three features are provided by all the tools that are available in the market so let's understand what these features are one by one so what is concurrency management so when two or more tasks are happening at the same time it is known as a concurrent operation so concurrent operation is when two or more things are happening at the same time so that is known as concurrency so concurrency in context to software configuration means that same file being edited by multiple persons at the same time so for example there is a class in your software code which is being modified or which is being checked out by three or four different developers and all of them are kind of making their own changes in that piece of file in that piece of code so that that file is being concurrently changed by different multiple persons at the same time so if concurrency is not handled properly by the tool by software configuration management tool that may lead to very severe problems how it can lead to severe problems we'll discuss in a bit so let's take an example to explain how severe problems may arise if concurrency management is not handled properly so I'll take an example so suppose you have a central repository to store development resources and multiple developers are working on same features so for example a class is there and there are multiple developers that need access to same class file for making their their specific changes and then they'll they'll be you know checking in that class into central repository so there there is a possibility that all of the three four users or how our different users might be you know checking out this file at the same time and they will making the changes so the scenario in this condition would be something like first user first developer opens the file test-1 Java from common repository then at the same time user two also opens checks out and opens the file test driver from common repository user one does some changes and saves the file in common repository he checks in the file back into the common repository user two did his own changes in the Java 5 test dot Java file and he also checked in his changes into common repository so in case the concurrency management is not proper then the later changes done by user two or developer two will override any changes that are done by user one so in order to handle such a situation concurrency management is needed in software configuration management tools what concurrency management is it allows multiple users to check out the files make their changes and then check in the files back and then software configuration management tool instead of overwriting it merged the changes the algorithm run in software configuration management merges the change of multiple users so it doesn't overwrite the later lack to file it just merges any changes made by user 1 and user two so the changes made by both the users in the file are there in the four in the final checked in file so that's what concurrency management is in software configuration management tools and it is a very basic and very important feature of any software configuration management tool the other feature is version control that is also very important and very basic for software configuration management so same tools uses archiving method or saves every change made to file so how version control is done in software configuration management is big is due to the saving the changes or archiving the previous changes or a previous version of the file that is present in the software configuration management tool so it takes a snapshot of the version that is available now in SCM and as soon as there are changes made in the file it creates a new version it archives the previous version so that's how it keeps version control for in in the SEM so because of archiving or save feature it is possible for user to roll back to previous version in case of any problem so suppose a user made certain changes in test dot Java file a one developer checked it out made some changes in test dot Java file he did all those changes and check back in and do to his code due to his check in a severe problem severe integration problem occurred because the code that he checked in broke lot many other things so in order to handle such kind of situation since all the files are version control and you have the previous working version of same test dot Java file so you do not need to worry about you can just roll back to the previous version because that's already there and you can discard the new changes that are being done by the late done by developer in test or Java file so that's how you can do you can roll back because of version control you you can roll back to previous version in case any mistakes or wrong coding has been done by any developer the third very important feature of software configuration management tool is synchronization so in synchronization user is allowed to check out more than one files or entire copy of repository so user can check out more than one file or entire repository the user then works on the required files and checks in the changes back to repository so he works on the required file and then he checks in back the changes they can update synchronize their local reported repository local copy periodically to stay updated with the changes made by other team members that is another very important feature because whenever you are whenever your development team is working so there are five to ten develops depending on the on the size of the team there may be 50 or 100 developers working in a team so you have a have a centralized repository and then you check out all the code in your local system and in your local development environment and you start developing different features on your computer so since there are many number of developers working at the same time who are checking in their code in central repository always so synchronization helps you to synchronize your local development environment with the central repository so that you are always up to date with all latest changes done by all the developers so this helps whenever you are developing your code so it helps that it makes sure that you are developing with the latest replicas latest latest copy of the central repository latest changes made by any other developers so you can't synchronize your local copy with central repository periodically that's another feature made by now available in software configuration management tool so beside these features software configuration management also provide a lot more functionality like build management auditing reporting system etc so these are not these are the core features provided by a software configuration management tool but there are many other features for example building management or release management that is also provided all the trails are already there reporting is all recalled so there that those are some other features that are provided by software configuration management then what are the implications of software configuration management for testing so it allows testers to manage tests to bear and test results using same configuration management mechanisms as used for source code so testers can use same mechanism same software configuration management mechanism to manage their tests where to manage the automation code that they have to manage the other test wear or test documents that are there in the team for example test plans test strategy test cases etc so they can use same concept for managing their tests where then build process supported by configuration management is a reliable way of delivering built-in test environment so you cannot just say you cannot just test start testing based on the dates of the deployment so there has to be some version controlling done for the bills that is deployed against which the test team will start testing so the build process supported by software configuration management tool is very reliable way to deliver built in the test environment because you have a fix version of build against which you will be testing and raising the defects and developers have effects kind of idea about what version they have released against which the defects are occurring and then in which version those defects get fixed and again deployed so this build process supported by software configuration management tools is very important for testing and development then it also helps us to map what is tested against which build SEM has the build process version control mechanism which helps to make sure which helps to map which test cases are executed against which build what defects were found which defects got fixed against which build and are they verified with against those though those built or not so all these kind of mapping is possible because of the build mechanism build process or version control mechanism provided by software configuration management tool so to conclude in this session we learned about what is configuration management then we understood different features very important features of software configuration management tools so the most important features work on currency management version control and synchronization and then finally we understood the implications of software configuration management tools for testing thank you