42 research outputs found
Recommended from our members
Object-oriented cohesion as a surrogate of software comprehension: An empirical study
The concept of software cohesion in both the procedural and object-oriented paradigm is well known and documented. What is not so well known or documented is the perception of what empirically constitutes a cohesive 'unit' by software engineers. In this paper, we describe an empirical investigation using object-oriented (OO) classes as a basis. Twenty-four subjects (drawn from IT experienced and IT inexperienced groups) were asked to rate ten classes sampled from two industrial systems in terms of their overall cohesiveness; a class environment was used to carry out the study. Four key results were observed. Firstly, class size (when expressed in terms of number of methods) did not tend to influence the perception of cohesion by any subjects. Secondly, well-commented classes were rated most highly amongst both IT experienced and inexperienced subjects. Thirdly, the empirical study suggests that cohesion comprises a combination of various class factors including low coupling, small numbers of attributes and well-commented methods, rather than any single, individual class feature per se. Finally, the research supports the view that cohesion is a subjective concept reflecting a cognitive combination of class features; as such it is a surrogate for class comprehension
A Parsing Scheme for Finding the Design Pattern and Reducing the Development Cost of Reusable Object Oriented Software
Because of the importance of object oriented methodologies, the research in
developing new measure for object oriented system development is getting
increased focus. The most of the metrics need to find the interactions between
the objects and modules for developing necessary metric and an influential
software measure that is attracting the software developers, designers and
researchers. In this paper a new interactions are defined for object oriented
system. Using these interactions, a parser is developed to analyze the existing
architecture of the software. Within the design model, it is necessary for
design classes to collaborate with one another. However, collaboration should
be kept to an acceptable minimum i.e. better designing practice will introduce
low coupling. If a design model is highly coupled, the system is difficult to
implement, to test and to maintain overtime. In case of enhancing software, we
need to introduce or remove module and in that case coupling is the most
important factor to be considered because unnecessary coupling may make the
system unstable and may cause reduction in the system's performance. So
coupling is thought to be a desirable goal in software construction, leading to
better values for external software qualities such as maintainability,
reusability and so on. To test this hypothesis, a good measure of class
coupling is needed. In this paper, based on the developed tool called Design
Analyzer we propose a methodology to reuse an existing system with the
objective of enhancing an existing Object oriented system keeping the coupling
as low as possible.Comment: 15 page
Legacy Software Restructuring: Analyzing a Concrete Case
Software re-modularization is an old preoccupation of reverse engineering
research. The advantages of a well structured or modularized system are well
known. Yet after so much time and efforts, the field seems unable to come up
with solutions that make a clear difference in practice. Recently, some
researchers started to question whether some basic assumptions of the field
were not overrated. The main one consists in evaluating the
high-cohesion/low-coupling dogma with metrics of unknown relevance. In this
paper, we study a real structuring case (on the Eclipse platform) to try to
better understand if (some) existing metrics would have helped the software
engineers in the task. Results show that the cohesion and coupling metrics used
in the experiment did not behave as expected and would probably not have helped
the maintainers reach there goal. We also measured another possible
restructuring which is to decrease the number of cyclic dependencies between
modules. Again, the results did not meet expectations
A framework for the simulation of structural software evolution
This is the author's accepted manuscript. The final published article is available from the link below. Copyright @ 2008 ACM.As functionality is added to an aging piece of software, its original design and structure will tend to erode. This can lead to high coupling, low cohesion and other undesirable effects associated with spaghetti architectures. The underlying forces that cause such degradation have been the subject of much research. However, progress in this field is slow, as its complexity makes it difficult to isolate the causal flows leading to these effects. This is further complicated by the difficulty of generating enough empirical data, in sufficient quantity, and attributing such data to specific points in the causal chain. This article describes a framework for simulating the structural evolution of software. A complete simulation model is built by incrementally adding modules to the framework, each of which contributes an individual evolutionary effect. These effects are then combined to form a multifaceted simulation that evolves a fictitious code base in a manner approximating real-world behavior. We describe the underlying principles and structures of our framework from a theoretical and user perspective; a validation of a simple set of evolutionary parameters is then provided and three empirical software studies generated from open-source software (OSS) are used to support claims and generated results. The research illustrates how simulation can be used to investigate a complex and under-researched area of the development cycle. It also shows the value of incorporating certain human traits into a simulation—factors that, in real-world system development, can significantly influence evolutionary structures
On the State of the Art of Coupling and Cohesion Measures for Service-Oriented System Design
Service-oriented computing has encountered an increasing importance for enterprises over the last years. With Web services, the major underlying technical basis is already in an advanced state. The service design area, on the other hand, still provides several research gaps such as the field of service identification and in particular the determination of an optimal granularity level for services. Granularity, assessed through coupling and cohesion considerations, is yet a rather unexplored domain when it comes to service-orientation, although several results from earlier design principles are available. In this paper we summarize the current state of the art in granularity measures and identify the implications emerging for practice and re-search. As we reveal, several existing measures for other paradigms, which might be adapted for service-orientation, are left unconsidered. Further research gaps, as the mainly missing empirical evaluation or a tighter inclusion in the development process, are also detected
Analysing the Contribution of Coupling Metrics for the Development and Management of Process Architectures
Currently, the development and modeling of enterprise architectures is an intensively discussed topic in both science and practice. Process architectures represent a core element in recent enterprise architecture frameworks. With process models being a central means for communicating and documenting the process architectures, both their quality and understandability are decisive. However, the concept of process model quality is still not fully understood. The recent development has highlighted the role of coupling in models. Coupling is expected to represent an important dimension of quality for conceptual models. Still, this perspective is hardly understood and its definition vague. Therefore, this work collects diverse coupling interpretations in the field of process modelling and integrates them to a common and precise definition. Once introduced and formally specified, the metrics serve as a basis for a discussion on coupling and on how the future development in respect to coupling could look like. The main findings are that currently metrics evaluate either the documentation of the process architecture regarding its understandability or they contribute to the individual applications of process architectures. These findings support practitioners selecting metrics for a particular task and scientists to identify research gaps for further development
Generating Accurate Dependencies for Large Software
Dependencies between program elements can reflect the architecture, design, and implementation of a software project. According a industry report, intra- and inter-module dependencies can be a significant source of latent threats to software maintainability in long-term software development, especially when the software has millions of lines of code.
This thesis introduces the design and implementation of an accurate and scalable analysis tool that extracts code dependencies from large C/C++ software projects. The tool analyzes both symbol-level and module-level dependencies of a software system and provides an utilization-based dependency model. The accurate dependencies generated by the tool can be provided as the input to other software analysis suits; the results along can help developers identify potential underutilized and inconsistent dependencies in the software. Such information points to potential refactoring opportunities and assists developers with large-scale refactoring tasks.1 yea
On the Relationship Between Coupling and Refactoring: An Empirical Viewpoint
[Background] Refactoring has matured over the past twenty years to become
part of a developer's toolkit. However, many fundamental research questions
still remain largely unexplored. [Aim] The goal of this paper is to investigate
the highest and lowest quartile of refactoring-based data using two coupling
metrics - the Coupling between Objects metric and the more recent Conceptual
Coupling between Classes metric to answer this question. Can refactoring trends
and patterns be identified based on the level of class coupling? [Method] In
this paper, we analyze over six thousand refactoring operations drawn from
releases of three open-source systems to address one such question. [Results]
Results showed no meaningful difference in the types of refactoring applied
across either lower or upper quartile of coupling for both metrics;
refactorings usually associated with coupling removal were actually more
numerous in the lower quartile in some cases. A lack of inheritance-related
refactorings across all systems was also noted. [Conclusions] The emerging
message (and a perplexing one) is that developers seem to be largely
indifferent to classes with high coupling when it comes to refactoring types -
they treat classes with relatively low coupling in almost the same way