BITS Faculty Publications
Permanent URI for this communityhttp://localhost:4000/handle/123456789/1867
Browse
Item Application of Java Relationship Graphs (JRG) to plagiarism detection in Java Projects: A Neo4j Graph Database Approach(ACM Digital Library, 2021) Sharma, Yashvardhan; Arora, RituA significant role is played by visualization of complex projects as graphs with nodes and edges in the area of software engineering. A graphical visualization of the whole project is the best way to understand it as a whole and effectively comprehend the dependencies between the participating entities. Graph databases are always easy to understand and work with, when it comes to complex projects. Leveraging the concepts of graph database for software engineering education, plagiarism detection, component evaluation etc. can be accomplished. This paper shows how to make use of a graph database obtained from a Java project for plagiarism detection. Graph databases along with graph algorithms have great applications in the field of software testing, plagiarism detection, partial evaluation and many more.Item Application of Java Relationship Graphs to Academics for Detection of Plagiarism in Java Projects(Springer, 2022-01) Arora, Ritu; Sharma, YashvardhanIn today’s online learning environment, plagiarism detection tools are increasingly used by teachers and instructors to restrain students from plagiarism. Moreover, need for plagiarism detection tools to detect plagiarism in programming assignments has also increased manifolds. In this paper, we present the application of Neo4j Graph Databases to detect similarity between Java program submissions by students, in academics. This is done by converting a Java program into a specialized dependency graph and then implementing various comparison techniques on this graph. The two graph comparison techniques proposed and implemented in this paper are based on structural comparison of graphs by node-type count comparison and elemental comparison of method nodes in graphs by body-element-count comparison. The results of these two techniques are combined with the call graph-based technique, proposed in an earlier work, to calculate overall similarity index between program codes. This study captures a large category of changes that may be introduced to the code for plagiarism.Item Collaboration in software development: a spotlight(ACM Digital Library, 2012-09) Arora, RituSome models of collaborative software development and the associated technology of groupware are reviewed in this paper. The paper concludes with a discussion about a research agenda for proposing a model for collaborative software development using agile methodologies.Item A comprehensive framework and tool for supporting progressive learning of software development in an academic learning environment(Wiley, 2021-09) Sharma, Yashvardhan; Arora, RituThe use of technology-enabled environments to facilitate online education has increasingly gained importance to promote learning. Tools like learning management systems, virtual laboratory platforms, online monitoring, and mentoring tools, all form a concrete technology bed for augmenting online education. However, successful use of these segregated tools is possible only through the implementation of a structured process or framework of usage of these tools for learning. In this paper, we propose a comprehensive framework for supporting progressive learning of software development by students. This framework provides guidelines for structuring individual and collaborative programming activities of students at various levels and is realized through the implementation of a tool named eGuru. This tool is used for managing, monitoring, mentoring, and facilitating collaborative programming activities of students and also provides a detailed user interface for facilitating the academic activities of teachers and lab instructors. Peers, alumni, and industry experts also play important roles in providing online mentoring using this tool. The execution structure proposed in the framework is effective not only for promoting online programming education but also creates a virtual environment analogous to the collaborative development environment existing in the software industry, and thus helps in preparing students for the future.Item Continuous Conflict Prediction during Collaborative Software Development: A step-before Continuous Integration(ACM Digital Library, 2020) Sharma, Yashvardhan; Arora, RituConcurrent activities of collaborative developers over shared project repositories might lead to direct and indirect conflicts. Software Configuration Management systems are designed to capture direct or merge conflicts which arise due to concurrent editing of same shared artifact. However, inconsistencies caused owing to indirect conflicts which arise because of concurrent editing of related artifacts might enter the codebase, since SCM systems have limited capabilities to capture these. Although, Continuous Integration process which is deployed to build the entire codebase with every commit, is quite effective in capturing several type of inconsistencies. However, still few categories of behavioral semantic inconsistencies might evade the build process and penetrate into codebase. In this paper, we propose the Continuous Conflict Prediction Framework which describes a cyclic, real-time, continuous process for conflict prediction which is executed during the process of code creation by collaborative developers. This framework entails a critical conflict-prediction and awareness-generation process which helps in capturing conflicts during development process itself and hence minimizes the number of conflicts entering the project codebase. The proposed framework is realized through implementation of the tool named Collaboration Over GitHub.Item Investigating syntactic and semantic inconsistencies in Collaborative Software Development(IEEE, 2015) Arora, RituSince more than a few decades now, Software Configuration Management (SCM) systems have played a key role in orchestrating concurrent activities of collaborative developers. These SCM systems help in maintaining consistency of volatile codebases that are being frequently modified in order to accommodate change. Additionally, various Collaborative Software Development (CSD) tools have been developed to supplement the underlying SCMs, and provide workspace awareness information to software developers. These tools inform developers about possibilities of arising inconsistencies in project codebase due to concurrent activities by collaborative developers on shared artifacts. This paper elaborates on scenarios of collaborative activities of software developers that introduce syntactic and semantic inconsistencies in the project repositories. Furthermore, a discussion on the current state-of-art research in the area of CSD tools is presented, together with their major contributions. The paper identifies, the crucial problem of semantic inconsistencies caused due to behavioral changes on artifacts that has not been sufficiently addressed by existing CSD tools. Finally, a novel method to capture indirect conflicts (syntactic and semantic) is proposed which uses dependency graphs, with proposed additional notations.Item JavaRelationshipGraphs (JRG): Transforming Java Projects into Graphs using Neo4j Graph Databases(ACM Digital Library, 2019) Arora, RituUnderstanding dependency relationship between various program elements in an object-oriented system is essential for many software engineering applications. In this paper, we propose a novel approach of transforming a Java project into a connected graph comprising of program elements (represented as graph nodes) connected to each other using ownership and dependency relationships (represented as edges). These graphs, named as JavaRelationshipGraphs (JRG) are created and stored using Neo4j Graph Database. Additionally, the proposed JavaRelationshipGraphs framework provides details about the two-staged conversion process along with the algorithms involved. The JRG framework uses compiled Java project to obtain the corresponding graph, which can be effectively visualized and queried using the Neo4j browser. JRG is capable of representing most of the important object-oriented features like inheritance, encapsulation, method overloading and overriding. Hence, they are suitable for use in software engineering applications like program dependence analysis, code mining, etc.Item Learning to Write Programs with Others: Collaborative Quadruple Programming(IEEE, 2012) Arora, RituMost software development is carried out by teams of software engineers working collaboratively to achieve the desired goal. Consequently software development education not only needs to develop a student's ability to write programs that can be easily comprehended by others and be able to comprehend programs written by others, but also the ability to write programs with others. However, the academic curriculum hardly puts any structured emphasis on nurturing these competencies. Hence, collaboration in program development needs special attention in our engineering curriculum. For this, we propose a three-staged model for collaborative program development, termed as the Collaborative Quadruple Programming, which is an extension of the collaborative pair programming approach proposed earlier by the second author. The proposed model combines all the levels of collaborative engagements in the four-dimensional taxonomy of pedagogic engagements in software development education proposed by the second author.Item Software Engineering Approach for Teaching Development of Scalable Enterprise Applications(IEEE, 2009) Arora, RituEnterprise applications have recently gained immense focus as an important part of the computing curriculum. Moreover, due to their increasing complexities and ever-increasing volatility, it is required that a software engineering approach is applied to the development of these applications so that they become more maintainable and scalable. This paper presents a model for teaching an integrated course that aims toward technology-specific infusion of software engineering practices in the development of enterprise systems. The model is based on experiences that we have gained, for the past four years, in teaching one such course.Item Supporting collaborative software development in academic learning environment: A collaborative pair and quadruple programming based approach(IEEE, 2017) Arora, RituCollaborative Software Development (CSD) practices in software industry engage team of developers, to work over shared codebases hosted over distributed Configuration Management Systems. Several academicians and researchers have focused their efforts to inculcate these collaborative software development practices in engineering curriculum. In order to make this more effective, it is necessary that we replicate a similar environment, as existing in the software industry, and position it in the academic domain. A technology-enabled, teamoriented and collaboration-intensive environment facilitating structured collaborative programming practices is required to foster the collaborative programming competencies of students. In this paper, we propose a technology-enabled academic learning environment for promoting collaborative programming engagements of students. The collaborative activities of the students are structured as pairs and quadruples and are facilitated using the tool named Collaboration Over GitHub (COG). Real-time dashboards, combined with COG, facilitate monitoring and evaluation by teachers during collaborative programming activities. The environment also provides support for remote presence of teachers and students, facilitating remote laboratories, distance education, remote monitoring and evaluation and cross-university software development projects.Item Supporting collaborative software development over GitHub(Wiley, 2016-12) Arora, RituGitHub is a web-based, distributed Software Configuration Management (SCM) system build over Git, which enables developers to host shared repositories over the Internet and access them from any location, at any time. It helps developers to effectively orchestrate their activities over shared codebases by capturing direct conflicts arising because of concurrent editing on the same shared artifact. However, SCM systems have limited support for capturing inconsistencies arising because of indirect conflicts which arise because of software dependency relationships that exist between related artifacts, and lead to the introduction of syntactic and semantic inconsistencies in codebases. In this paper, we propose a novel collaborative software development (CSD) tool named, Collaboration Over GitHub (COG), that provides real-time information about arising direct and indirect conflicts among collaborative developers, working over GitHub, through a collection of workspace awareness widgets. These widgets provide people-centric information about direct and indirect collaborators over GitHub. Resource-centric information about current and conflicting activities of real-time collaborators is captured and propagated to others, based on the dependency relationships between software artifacts being manipulated by them.Item Supporting E-Mentoring for Programming Labs in Engineering Education(IEEE, 2018) Arora, RituMentoring by teachers, lab instructors or peers during programming labs of engineering students, proves highly beneficial in acquiring the required programming competencies. Electronic mentoring (e-mentoring) uses computer-mediated communication in order to facilitate the mentoring process between the mentor and the mentee. Practicing e-mentoring to facilitate the mentoring process can benefit the students, since it is not bound by temporal or geographical differences. Emails, discussion forums, interactive virtual environments, blogs, wikis, etc., are the most common electronic media that have been used for e-mentoring. In this paper, we present a novel framework and design of a tool to support e-mentoring during programming laboratories. Students can share their codes and errors with the mentors, in real-time, and receive corrections/suggestions for the same. The framework also supports an asynchronous mode, which facilitates e-mentoring by alumni and industry experts. The tool interfaces with the Eclipse IDE of individual student and creates a virtual mentoring environment for facilitating e-mentoring of programming assignments.Item Using dependency graphs to support collaboration over GitHub: The Neo4j graph database approach(IEEE, 2016) Arora, RituSoftware Configuration Management Systems capture direct conflicts which arise due to concurrent editing of same shared artifact. However, indirect conflicts, arising due to concurrent editing of related artifacts by collaborative developers, might eventually evade the build process employed by the underlying SCM. Additional collaborative software development tools have been developed, that supplement existing SCM systems, by providing change awareness information about potential indirect conflicts. In this paper, we propose the tool named Collaboration Over GitHub (COG), that provides support for collaborative software development over GitHub and also captures indirect conflicts at finer levels of granularity. For this, COG converts project repositories into dependency graphs which are stored as Neo4j Graph Databases. These graphs store structural and dependency information obtained from codebases and are used for identifying conflicts and affected artifacts.