Girish Maskeri Rama
Infosys
Network
Latest external collaboration on country level. Dive into details by clicking on the dots.
Publication
Featured researches published by Girish Maskeri Rama.
IEEE Transactions on Software Engineering | 2007
Santonu Sarkar; Girish Maskeri Rama; Avinash C. Kak
We present in this paper a new set of metrics that measure the quality of modularization of a non-object-oriented software system. We have proposed a set of design principles to capture the notion of modularity and defined metrics centered around these principles. These metrics characterize the software from a variety of perspectives: structural, architectural, and notions such as the similarity of purpose and commonality of goals. (By structural, we are referring to intermodule coupling-based notions, and by architectural, we mean the horizontal layering of modules in large software systems.) We employ the notion of API (application programming interface) as the basis for our structural metrics. The rest of the metrics we present are in support of those that are based on API. Some of the important support metrics include those that characterize each module on the basis of the similarity of purpose of the services offered by the module. These metrics are based on information-theoretic principles. We tested our metrics on some popular open-source systems and some large legacy-code business applications. To validate the metrics, we compared the results obtained on human-modularized versions of the software (as created by the developers of the software) with those obtained on randomized versions of the code. For randomized versions, the assignment of the individual functions to modules was randomized
international conference on software engineering | 2010
Jae Young Bang; Daniel Popescu; George Edwards; Nenad Medvidovic; Naveen N. Kulkarni; Girish Maskeri Rama; Srinivas Padmanabhuni
Large, multinational software development organizations face a number of issues in supporting software design and modeling by geographically distributed architects. To address these issues, we present CoDesign, an extensible, collaborative, event-based software modeling framework developed in a distributed, collaborative setting by our two organizations. CoDesigns core capabilities include real-time model synchronization between geographically distributed architects, as well as detection and resolution of a range of modeling conflicts via several off-the-shelf conflict detection engines.
asia-pacific software engineering conference | 2006
Santonu Sarkar; Girish Maskeri Rama; Shubha R
The layered architecture pattern has been widely adopted by the developer community in order to build large software systems. The layered organization of software modules offers a number of benefits such as reusability, changeability and portability to those who are involved in the development and maintenance of such software systems. But in reality as the system evolves over time, rarely does the actual source code of the system conform to the conceptual horizontal layering of modules. This in turn results in a significant degradation of system maintainability. In order to re-factor such a system to improve its maintainability, it is very important to discover, analyze and measure violations of layered architecture pattern. In this paper we propose a technique to discover such violations in the source code and quantitatively measure the amount of non-conformance to the conceptual layering. The proposed approach evaluates the extent to which the module dependencies across layers violate the layered architecture pattern. In order to evaluate the accuracy of our approach, we have applied this technique to discover and analyze such violations to a set of open source applications and a proprietary business application by taking the help of domain experts wherever possible.
Software - Practice and Experience | 2015
Girish Maskeri Rama; Avinash C. Kak
In this age of collaborative software development, the importance of usable APIs is well recognized. There already exists a rich body of literature that addresses issues ranging from how to design usable APIs to assessing qualitatively the usability of a given API. However, there does not yet exist a set of general‐purpose metrics that can be pressed into service for a more quantitative assessment of API usability. The goal of this paper is to remedy this shortcoming in the literature. Our work presents a set of formulas that examine the API method declarations from the perspective of several commonly held beliefs regarding what makes APIs difficult to use. We validate the numerical characterizations of API usability as produced by our metrics through the APIs of several software systems. Copyright
international conference on software maintenance | 2010
Girish Maskeri Rama; Naineet Patel
There exists a number of large business critical software systems written in newer languages such as C and Java that are fast becoming legacy and increasingly difficult to maintain. Unlike older monolithic systems, where modularization primarily involves splitting the monolithic code base into modules, for such newer systems which already have some basic modular structure, code decomposition is only one of the many possible activities. Even though the area of software modularization has received considerable attention over these past years, there are hardly any case studies documented in literature on modularizing large C and Java systems. We still do not fully comprehend the activities experienced developers perform when they have to modularize such newer systems. The goal of this paper is to learn from past software modularization projects and identify common recurring patterns. This paper formalizes 6 such patterns, which we term as modularization operators, that are likely to be the basic building blocks of any software modularization activity. The operators presented in this paper are validated using modularization case studies of open source software systems and a proprietary software system and several observations and insights are presented.
india software engineering conference | 2010
Girish Maskeri Rama
There exists number of large business critical software systems of recent vintage that are becoming increasingly difficult to maintain. These systems, written in newer languages such as C and Java are fast becoming legacy and showing the same symptoms of modularity deterioration reminiscent of older legacy systems written in Cobol and PL1. However, this problem has not received much attention from the software modularization community. In this paper, we argue that the modularization needs of these relatively newer systems, which generally have some modular structure, is significantly different from the needs of older, mainly monolithic, legacy systems. We emphasize the need for incrementally improving modularity and propose a software refactoring based approach to solve this problem, thereby, uniting hitherto two disparate threads of research - software modularization and software refactoring. As part of this refactoring based modularity improvement approach, we identify a set of modularity smells and specify how to detect these smells in poorly modularized software systems. A validation of these modularity smells is carried out using several open source systems.
international conference on software maintenance | 2010
Hari Shanker Gupta; Deepak D'Souza; Raghavan Komondoor; Girish Maskeri Rama
A number of companies are trying to migrate large monolithic software systems to Service Oriented Architectures. A common approach to do this is to first identify and describe desired services (i.e., create a model), and then to locate portions of code within the existing system that implement the described services. In this paper we describe a detailed case study we undertook to match a model to an open-source business application. We describe the systematic methodology we used, the results of the exercise, as well as several observations that throw light on the nature of this problem. We also suggest and validate heuristics that are likely to be useful in partially automating the process of matching service descriptions to implementations.
automated software engineering | 2014
Girish Maskeri Rama; Raghavan Komondoor
Creation of large numbers of co-existing long-lived isomorphic objects increases the memory footprint of applications significantly. In this paper we propose a dynamic-analysis based approach that detects allocation sites that create large numbers of long-lived isomorphic objects, estimates quantitatively the memory savings to be obtained by sharing isomorphic objects created at these sites, and also checks whether certain necessary conditions for safely employing object sharing hold. We have implemented our approach as a tool, and have conducted experiments on several real-life Java benchmarks. The results from our experiments indicate that in real benchmarks a significant amount of heap memory, ranging up to 37% in some benchmarks, can be saved by employing object sharing. We have also validated the precision of estimates from our tool by comparing these with actual savings obtained upon introducing object-sharing at selected sites in the real benchmarks.
IEEE Transactions on Software Engineering | 2008
Santonu Sarkar; Avinash C. Kak; Girish Maskeri Rama
Archive | 2006
Santonu Sarkar; Girish Maskeri Rama; Avinash Kak