Skip navigation.
Home
PhD student, teacher, programmer

Papers

Using Maximal Slices as a Solution to the 'Output Variable' Problem for Calculating Slice-Based Cohesion Metrics

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.

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.

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.

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.

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.

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.

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.

Syndicate content