Software metrics are widely used to quantify software quality; cohesion is one such metric. It is a measure of the 'inter-relatedness' of code. Sliced-based cohesion metrics use program slicing to calculate the cohesion of a software module by using `output variables' as slicing criteria. The definition of `output variables', however, varies in different studies. Unfortunately, these different definitions lead to different values for the metrics. We solve this problem by introducing standardised versions (independent of the `output variables') of previous definitions of the slice-based metrics. Our approach computes metrics based only on the maximal slices in a software module. These can be computed automatically without the need to specify which points contain `output variables'. We call the slicing criteria that generate maximal slices, in a software module, `crucial points'. Empirical evidence suggests that crucial points represent points of interest in a program and strongly correlate with previous definitions of `output variables'. We believe that using crucial points instead of output variables in slice-based metrics may lead to a more intuitively accurate measurement of cohesion.
Papers
Using Maximal Slices as a Solution to the 'Output Variable' Problem for Calculating Slice-Based Cohesion Metrics
- Add new comment
- Read more
- 397 reads
A Survey of Static Software Watermarking
Software theft, also known as software piracy, is the act of copying a legitimate application and illegally distributing that software, either free or for profit. The global revenue loss due to software piracy was estimated to be more than $50 billion in 2009. Watermarks can be classified as either static or dynamic. Static watermarks are embedded in the code and/or data of a computer program, whereas dynamic watermarking techniques store a watermark in a program's execution state. In this paper, we present a brief survey of the proposed static watermarking techniques, including a brief explanation of each technique concluding with directions for future work.
- Add new comment
- Read more
- 1035 reads
A Survey of Software Watermarking by Code Re-Ordering
We survey the proposed software watermarking algorithms based on code re-ordering. This family of static watermarks use semantics-preserving transformations to encode a watermark in a permutation of the existing code. We describe the existing techniques and highlight the short-comings of these algorithms, namely that they are highly susceptible to semantics preserving transformations attacks.
- Add new comment
- Read more
- 915 reads
An Evaluation of Current Java Bytecode Decompilers
Decompilation of Java bytecode is the act of transforming Java bytecode to Java source code. Although easier than that of decompilation of machine code, problems still arise in Java bytecode decompilation. These include type inference of local variables and exception-handling.
Since the last such evaluation (2003) several new commercial, free and open-source Java decompilers have appeared and some of the older ones have been updated.
- Add new comment
- Read more
- 2732 reads
MPhil Transfer Report
Decompilation of Java bytecode is the act of transforming Java bytecode to Java source code. Although easier than that of decompilation of machine code, problems still arise in Java bytecode decompilation. These include type inference of local variables and exception-handling.
- Add new comment
- Read more
- 971 reads
A Survey of Software Watermarking by Register Allocation (for Java Bytecode)
In this paper, we examine register allocation based software watermarking algorithms; these algorithms are constraint-based static software watermarking techniques. Figure 1 shows the evolution of this family of algorithms on which we report previous findings, describe some recent additions (including a correction to a published algorithm) and conclude by suggesting a direction for future work.
- Add new comment
- Read more
- 1098 reads
An Evaluation of Static Java Bytecode Watermarks
The rise in the use of the Internet and bytecode languages such as Java bytecode and Microsoft's Common Intermediate Language have made copying, decompiling and disassembling software easier. The global revenue loss due to software piracy was estimated to be more than $50 billion in 2008. Watermarking is a technique which attempts to protect software by inserting copyright notices or unique indentifiers into software to prove ownership.
- Add new comment
- Read more
- 1319 reads
