Shital BK’s Expanded Definition of Version Control

TO: Prof. Jason Ellis

FROM: Shital B K

DATE: 10/21/2020

SUBJECT: Expanded Definition of Version Control

Introduction

The purpose of this document is to elaborate about the term “Version Control”. The document contains three different parts including definitions, context and working definitions. The core term to be defined and elaborated in the document will be about Git and GitHub which are known to be focus of the version control system used in these modern days.

Definitions

Version control systems are a category of software tools used to record changes of files by keeping a track of modifications done to the code. In software engineering, version control is a tool responsible for keeping track of the changes made in programs, documents, and files. Git and GitHub are one of the popular version controls used these days. Ninety percent of the software engineers use these tools to simplify their tasks while writing code. “A version control system (VCS) allows you to track the iterative changes you make to your code. Thus, you can experiment with new ideas but always have the option to revert to a specific past version of the code you used to generate particular results.” (Blischak, Davenport, Wilson, 2016, p.1).

“Git, the brainchild of Linus Torvalds, began its life in 2005 as a revision management system used for coordinating the Linux kernel’s development.” (Spinellis, 2012, p.100). Git is a distributed version control system for tracking changes in source code in the software development process. GitHub is another tool used in software development which runs with git by providing some additional features.  â€śGitHub uses a “fork & pull” collaboration model, where developers create their own copies of a repository and submit requests when they want the project maintainer to incorporate their changes into the project’s main branch, thus providing an environment in which people can easily conduct code reviews.” (Gousios, Spinellis, 2017, p.501). The additional features of GitHub include, task management, bug tracking, feature requests and collaboration ease among the developers.

Context

Today’s software development cannot be imagined without version control and specially without the use of Git and GitHub. “First, by keeping locally a complete version of a repository, git allows you to work and commit individual changes without requiring Internet connectivity. This local staging area also makes it possible for you to edit, reorder, and squash together your past commits (rebase, in git’s parlance) in order to present a coherent story to the outside world.” (Spinellis, 2012, p.101).  Git and GitHub has made the workflow of the developers convenient and efficient which allows them to be productive. “Developers don’t really care whether they work on version 8.2.72.6 of branch RELENG_8_2, but they care deeply about software revisions: changes they made to ­ x a specific­ bug, infrastructure changes that were needed to support that ­ x, another set of changes that didn’t work out, and some work in progress that was interrupted to work on that urgent bug ­ x. Fittingly for a tool written by a programmer to scratch his own itch, git supports these needs with gusto.” (Spinellis, 2012, p.100). Git allows developers a complete clone of the repository which means a complete copy of the projects that can be used in their existing work. As a result, these features are mostly required in the software development which is the reason every developer uses Git and GitHub.

Another feature of git is that it elevates the software revisions which allows developers to select precisely which one will comprise an integrated change, down to partial changes within a single file. “More importantly, git keeps as a graph a complete history of what changes have been merged into which branches, thus allowing developers to think in terms of revisions they’ve integrated rather than low-level ­ file differences between diverging branch snapshots.” (Spinellis, 2012, p.100). The merge feature allows to add the additional piece of code which can be added in the existing repository. The merge feature generally works with the branches where two branches are combined.

Working Definitions

Version Control has made the life of developers very easier and it has been one of the mandatory tools to be used in the software development environment. Some of the most popular version control systems such as Git and GitHub should be learned by every developer.

References

Gousios, G., & Spinellis, D. (2017). Mining Software Engineering Data from GitHub. ICSE: International Conference on Software Engineering, 501–502. https://doi.org/10.1109/ICSE-C.2017.164

Spinellis, D. (2012). Git. IEEE Software29(3), 100–101. https://doi.org/10.1109/MS.2012.61

Blischak, J. D., Davenport, E. R., & Wilson, G. (2016). A Quick Introduction to Version Control with Git and GitHub. PLoS Computational Biology12(1), 1–18.

https://doi.org/10.1371/journal.pcbi.1004668

Summary of Aggarwal’s “Modern Web-Development using ReactJS”

To: Prof. Ellis

From: Shital B K

Date: 09/23/2020

Subject: 500-Word Summary

This memo is a 500-word summary of the article, “Modern Web-Development using ReactJS,” by Sanchit Aggarwal (Northern India Engineering College). The article explains about the modern web-development techniques using ReactJS framework.

ReactJS is a JavaScript library used to design and develop the user interfaces that simplifies the data rendering and binding of large web-based applications. According to the writer, “React basically enables development of large and complex web-based applications which can change its data without subsequent page refreshes.” (Aggarwal, 2018, p. 133). It is mostly used to design and develop modular user interfaces which simplifies the development of complex web-based applications. It follows the MVC (Model-View-Controller) architecture where it is used as the View. It also supports rendering on server-side application using NodeJS and the rendering process in the mobile devices are supported by React Native. ReactJS has simplified the data binding and rendering process and proven to be much easier for the front-end development.

Some of the features of ReactJS are Lightweight DOM for Better Performance, Easy Learning Curve, JSX, Performance, One-way data flow and Virtual DOM. ReactJS has the feature to interact with the document object model stored in the memory that doesn’t interact with the browser directly and hence provides excellent performance of the application. It is known as one of the easiest frameworks having less complexity to learn which makes it popular among the web developers. JSX is another language that simplifies React binding events. The reason that the framework is highly efficient in performance because it has the feature called virtual DOM.

The main working principle of React is based on MVC and DOM where MVC is popular for the user interface development and DOM represents the view of the applications. React performs all its task with the use of Component. The components are generally designed as tree structure that makes the code easy and reusable. The lifecycle of ReactJS framework is generally completed in three states. The first process is the mounting process and after the mounting process, the DOM is generated and finally the last process is the conversion of the DOM placement into the container node. The property set called as props and state are used to manipulate the Component. This property enables to create the user interface of the web application using Component.

React being an excellent framework has some limitations. Some of the limitations of React are having only the view entity in the MVC where additional tools should be used to implement other tasks. Inline templates and JSX are complex to use that can be tire some while designing large applications. The issue during the compilation is also one of the limitations using ReactJS compared to other frameworks.

Modern web development has become very dynamic and interactive. As a result, there are numbers of frameworks used in the industry. ReactJS is one of the most popular frameworks having lots of features that simplifies the data rendering and binding. Hence, it is widely used these days for web development and frontend development.

References

Aggarwal, S. (2018). Modern Web-Development using ReactJS. International Journal of Recent Research Aspects, 5(1), 133–137.

http://search.ebscohost.com/login.aspx?direct=true&db=a9h&AN=129311347&site=ehost-live&scope=site