SCM had its origins around the time of 1950s when configuration management, which was being implemented in hardware development, started being applied to software, being first applied manually into the cards and tapes that were used at the time. It was a very crucial implementation due to having to keep a budget and a schedule. Eventually the tools used evolved into more practical systems and were used in a broader scope with company´s growing use of computers.
Having different versions of software can bring a lot of confusion and errors. That’s why “software configuration management” intends to establish policies and standards for evaluating, coordinating, approving or disapproving, and implementing changes. This is mainly done through design, implementation, testing, baselining, building, release, and maintenance.
Software configuration is quite important right now in order to keep track of all the creation, changes, and keeping together a correct visualization of what’s being done or how are the files used in a project. Metadata such as dates that a file was modified, date it was create, author, people that have modified it, is important in order to have a clear and transparent representation of the work that is being done in certain projects. The CM also helps to have less confusion that can be caused by having different versions of the same file. It also helps in keeping a correct order of things when working in a project.
Several practices (which you can find here https://www.pearsonhighered.com/samplechapter/0321200195.pdf) are commonly considered best for CM. Let’s try explaining them…
1: identifying and storing artifacts in a secure repository, so that it’s easy to keep track of and identify artifact versions. This repository should be able to accept faults in the code, as in this stage interaction between artifacts is not expected to be
2: Then, there must be some sort of control over who gets to modify what, when and why. This is called the audit information. This makes it possible to identify mistakes and correct them.
3: Now, all these individual artifacts (files and directories) are grouped into “components”, implementing them in some logical system design components. This reduces complexity and preserves the integrity of software architecture.
4: Of course, there should come a point where individual components are grouped into subsystems. From there on, each subsystem can be independently controlled and managed. There’s even a possibility that these subsystems could be reused again in a later project!
5:Having a baseline in every milestone helps you keep track of the versions of all of the components that are being used and make up the system and subsystems at specific times.
6: Change request management bases itself on the tracking of requests which are found by testing either by the customer or organization. these requests are recorded whether or not they are implemented.
7: Although there’s tools that can help a software engineer to keep track of it’s files they also have to deal with the fact that they sometimes need to track the versions of this files too. This can lead to various errors in the development of software. Due to this SCM helps the tracking of this versions.
8: Maintenance involves periodically synchronizing the changes with other team members so that everyone is the same level, that way productivity can be maximized. A stable workspace is required to keep track of its own work
9: Although more than a person shouldn’t be working on the same file at a time, or a team working on a block of the project. This way of working can be frustrating (and inefficient) need to wait your coworker finish its part.
An alternative was that if I for example need to work on a file you are working on, I make a copy of it and make changes externally without verifying the corrections it have been through. So this can actually lead to other problems such as ignoring bugs that you may think have been resolved or so. So thanks to the SCM way of working, you are able to work at the time and merge changes with your coworkers at real time, having descriptions about what have been added, removed or replaced, and the who.
10: Now, to avoid problems with interfaces and design, try integrating it all as often as you can since the very beginning. The trick is not to leave workspaces isolated for too long. There should be a balance between this isolation and integration, so it doesn’t negatively impact productivity and you can keep updated about new technologies in team with the project manager.
11: When developing and working on a project, you may not be sure about its full compatibility on all the environments. Obviously it is impossible to run your build on any computer or configuration in the world; but you must have a kind of automatic process which may help you compare the results and the success aside of descriptions in all of them so you have a feedback and record.
Have you ever thought about how big is the data around the world? How all those petas and petas of bytes of information passing and going through the web (aside of being storage which is completely awesome) are being able to be found and identified.
Well, it is definitively a not simple task. Actually, someone thought about this some time ago. METADATA, metadata? Yep, metadata. MetaData is data about data, information about information. Descriptions, important characteristics; MetaData has even its own metaData. This information is identified usually by the search engines’ algorithms in the web so it is easier to find what we need to find, and indeed, predict stuff. But actually there is all kind of metadata in any files we have.
The kind of “quotes” that help with this are:
- Kind of file, size, date or language.
- Copyright information
- The concept
- Authentication of the resource
Aaaaand here is a metadata song (which I found thanks to metadata)