Article Preview
TopIntroduction
A software application undergoes multiple and continuous adaptations in form of changes in a collaborative environment. According to Lehman (1980), it reduces the quality and reliability of the software which leads to unsustainable development (Agrawal et al., 2020). To attain sustainability, changes should be proactive. Therefore, the development teams working in the distributed environment should be aware of complex entities at different granularities such as File, Class, and Method (FCM) that are highly subjected to change (risky/unstable). It is achieved by tracking past changing behavior (history) of entities in the Version Controlled Software Application that predicts their expected behavior in the future to determine changeability (Grund et. al, 2021). Tracking the entities from the origin using the revision history helps the project managers to assign resources accordingly as per the needs of short or long-term goals. To implement any change, understanding of the entities along with the past behaviour from revision history is required. It is supported by Diff operation in version control systems that helps to provide a quick and accurate response to improve the understandability. It eases the implementation of change thereby improving the changeability. Thus, implementing the sequence of changes occurs with the use of optimal resources, that too at a low cost which enhances the quality, & reliability of the software applications (Ross et al., 2008).
Git is a frequently used Open-Source Distributed Version Control System that allows distributed teams to collaborate in the development process of the complete codebase for Open source/Commercial software applications. It helps to reduce communication barriers among the teams and allows the developer to contribute to multiple software applications at the same time to increase productivity and reduce the time to build Reuse Oriented Rapid Application Development. The collaboration occurs via Shared Repository Model or Fork & Pull model where teams must have transparency (unified and consistent view) for codebase and history. The revision history records changes at coarse granularity only that requires manual inspection for changes at finer granularities that makes the revision history incomplete. Therefore, it must be transparent for all the developers with accuracy (to detect the transformations such as renaming or shifting) and completeness (at file, class and method granularities) with timelines about the changes. Therefore, it is one of the mandatory requirements to make any change or track them further during software evolution built in collaboration with multiple developers. This transparency helps the developers to automate the processes of code review by understanding, comparing, and tracking changes in the codebase.
Moreover, changes are trackable between two versions using Diff & Merge tools (DMT) also as Meld (Meld, n.d.), Understand (Understand, n.d.), Code Compare, etc. Among them, Understand tool is proprietary and flexible to detect and track changes between versions at FCM granularity. However, it is inflexible in detecting the renaming’s and shafting’s that occur as a part of refactoring during software evolution thus, making the revision history inaccurate. Both Git and DMT use Diff and Merge operation that further automates the process of integration of distributed codes in the codebase. Therefore, the transparent, complete, and accurate revision history helps the developer track all changes that improve traceability.