Amjed Tahir
Massey University
Network
Latest external collaboration on country level. Dive into details by clicking on the dots.
Publication
Featured researches published by Amjed Tahir.
international conference on software maintenance | 2012
Amjed Tahir; Stephen G. MacDonell
Several important aspects of software product quality can be evaluated using dynamic metrics that effectively capture and reflect the softwares true runtime behavior. While the extent of research in this field is still relatively limited, particularly when compared to research on static metrics, the field is growing, given the inherent advantages of dynamic metrics. The aim of this work is to systematically investigate the body of research on dynamic software metrics to identify issues associated with their selection, design and implementation. Mapping studies are being increasingly used in software engineering to characterize an emerging body of research and to identify gaps in the field under investigation. In this study we identified and evaluated 60 works based on a set of defined selection criteria. These studies were further classified and analyzed to identify their relativity to future dynamic metrics research. The classification was based on three different facets: research focus, research type and contribution type. We found a strong body of research related to dynamic coupling and cohesion metrics, with most works also addressing the abstract notion of software complexity. Specific opportunities for future work relate to a much broader range of quality dimensions.
international conference on computer research and development | 2010
Amjed Tahir; Rodina Ahmad
Software quality is gaining more attention from the software industry. Quality metrics are usually utilized to provide a quantitative measure of the software quality. Although dynamic metrics can provide a clearer insight into the software quality issue, it is observed that usually static metrics are used for such a purpose. This is due mainly to the technical difficulties associated with the collection of dynamic metrics. One of the known issues when dealing with dynamic metrics is the need to instrument code by inserting points for data collection. This is a very tedious and counterproductive task. Aspect Oriented Programming (AOP) is a promising technology that is used in the present time to add cross-cutting concerns to the software applications. AOP can be used to transparently instrument the code at compile-time. This research is suggesting AOP as a new technique that can be used for collecting software maintainability dynamic metrics data. Therefore, an AOP-based framework for collecting dynamic metrics has been designed and implemented, and finally, it has been evaluated. The evaluation results showed that the framework is a reasonable approach for collecting a maintainability dynamic metrics. The AOP-based framework provides an effective way for the transparent collection of a maintainability dynamic metrics data.
computational intelligence | 2010
Amjed Tahir; Rodina Ahmad
Requirement Engineering (RE) phase has been regarded as one of the important phases in the development process. Inadequate engineering of requirements can lead to more expensive errors in the later software development phases. Even though there are many methods and techniques which have been proposed in the literatures, many of these methods and techniques have not been widely practiced in the industry. To be able to rectify the situation, the assessment of the current practice is crucial. The main goal of this work is to investigate the software engineering practices especially the requirements engineering practices in the Malaysian software industry. Many of the practicing software developers are the product of the local educational institutions. The findings may help the industries to plan for enhancements in the requirement engineering practices. This research uses a survey instrument to gather data from 27 Malaysian based software firms. The main contribution of this research is the identification of the most practiced requirements engineering activities and the least practiced requirements engineering activities in the software firms.
international conference on evaluation of novel approaches to software engineering | 2014
Amjed Tahir; Stephen G. MacDonell; Jim Buchan
It is generally acknowledged that software testing is both challenging and time-consuming. Understanding the factors that may positively or negatively affect testing effort will point to possibilities for reducing this effort. Consequently there is a significant body of research that has investigated relationships between static code properties and testability. The work reported in this paper complements this body of research by providing an empirical evaluation of the degree of association between runtime properties and class-level testability in object-oriented (OO) systems. The motivation for the use of dynamic code properties comes from the success of such metrics in providing a more complete insight into the multiple dimensions of software quality. In particular, we investigate the potential relationships between the runtime characteristics of production code, represented by Dynamic Coupling and Key Classes, and internal class-level testability. Testability of a class is considered here at the level of unit tests and two different measures are used to characterise those unit tests. The selected measures relate to test scope and structure: one is intended to measure the unit test size, represented by test lines of code, and the other is designed to reflect the intended design, represented by the number of test cases. In this research we found that Dynamic Coupling and Key Classes have significant correlations with class-level testability measures. We therefore suggest that these properties could be used as indicators of class-level testability. These results enhance our current knowledge and should help researchers in the area to build on previous results regarding factors believed to be related to testability and testing. Our results should also benefit practitioners in future class testability planning and maintenance activities.
international conference on software technology and engineering | 2010
Amjed Tahir; Rodina Ahmad; Zarinah Mohd Kasirun
This paper presents the results of an empirical study on the use of standards and procedures in software development industry. Even though there are several studies which have been conducted for this purpose, there is none or very few which have been carried out in the South East Asia region. Hence, this survey study intends to fill up this gap. The survey was conducted based on data collected from questionnaire and interview sessions. It is a part of our continuous research on software engineering practices in the Malaysian software industry. As a result, this survey shows that Malaysian software companies are aware of the importance of using standards and procedures in the software development. Still, there are some gaps in the implementation of these standards and procedures in real-world projects. Decipher these findings will help these companies to improve the overall quality of their software products.
european conference on object-oriented programming | 2017
Jens Dietrich; Kamil Jezek; Shawn Rasheed; Amjed Tahir; Alex Potanin
In recent years, multiple vulnerabilities exploiting the serialisation APIs of various programming languages, including Java, have been discovered. These vulnerabilities can be used to devise in- jection attacks, exploiting the presence of dynamic programming language features like reflection or dynamic proxies. In this paper, we investigate a new type of serialisation-related vulnerabilit- ies for Java that exploit the topology of object graphs constructed from classes of the standard library in a way that deserialisation leads to resource exhaustion, facilitating denial of service attacks. We analyse three such vulnerabilities that can be exploited to exhaust stack memory, heap memory and CPU time. We discuss the language and library design features that enable these vulnerabilities, and investigate whether these vulnerabilities can be ported to C#, Java- Script and Ruby. We present two case studies that demonstrate how the vulnerabilities can be used in attacks on two widely used servers, Jenkins deployed on Tomcat and JBoss. Finally, we propose a mitigation strategy based on contract injection.
Proceedings of the 6th ACM SIGPLAN International Workshop on State Of the Art in Program Analysis | 2017
Jens Dietrich; Li Sui; Shawn Rasheed; Amjed Tahir
One of the inherent advantages of static analysis is that it can create and reason about models of an entire program. However, mainstream languages such as Java use numerous dynamic language features designed to boost programmer productivity, but these features are notoriously difficult to capture by static analysis, leading to unsoundness in practice. While existing research has focused on providing sound handling for selected language features (mostly reflection) based on anecdotal evidence and case studies, there is little empirical work to investigate the extent to which particular features cause unsoundness of static analysis in practice. In this paper, we (1) discuss language features that may cause unsoundness and (2) discuss a methodology that can be used to check the (un)soundness of a particular static analysis, call-graph construction, based on soundness oracles. These oracles can also be used for hybrid analyses.
DARTS - Dagstuhl Artifacts Series | 2017
Jens Dietrich; Kamil Jezek; Shawn Rasheed; Amjed Tahir; Alex Potanin
This artefact demonstrates the effects of the serialisation vulnerabilities described in the companion paper. It is composed of three components: scripts, including source code, for Java, Ruby and C# serialisation-vulnerabilities, two case studies that demonstrate attacks based on the vulnerabilities, and a contracts-based mitigation strategy for serialisation-based attacks on Java applications. The artefact allows users to witness how the serialisation-based vulnerabilities result in behavior that can be used in security attacks. It also supports the repeatability of the case study experiments and the benchmark for the mitigation measures proposed in the paper. Instructions for running the tasks are provided along with a description of the artefact setup.
asia-pacific software engineering conference | 2016
Amjed Tahir; Steve Counsell; Stephen G. MacDonell
While a substantial body of prior research has investigated the form and nature of production code, comparatively little attention has examined characteristics of test code, and, in particular, test smells in that code. In this paper, we explore the relationship between production code properties (at the class level) and a set of test smells, in five open source systems. Specifically, we examine whether complexity properties of a production class can be used as predictors of the presence of test smells in the associated unit test. Our results, derived from the analysis of 975 production class-unit test pairs, show that the Cyclomatic Complexity (CC) and Weighted Methods per Class (WMC) of production classes are strong indicators of the presence of smells in their associated unit tests. The Lack of Cohesion of Methods in a production class (LCOM) also appears to be a good indicator of the presence of test smells. Perhaps more importantly, all three metrics appear to be good indicators of particular test smells, especially Eager Test and Duplicated Code. The Depth of the Inheritance Tree (DIT), on the other hand, was not found to be significantly related to the incidence of test smells. The results have important implications for large-scale software development, particularly in a context where organizations are increasingly using, adopting or adapting open source code as part of their development strategy and need to ensure that classes and methods are kept as simple as possible.
empirical software engineering and measurement | 2018
Amjed Tahir; Kwabena Ebo Bennin; Stephen G. MacDonell; Stephen Marsland
BACKGROUND: In object oriented (OO) software systems, class size has been acknowledged as having an indirect effect on the relationship between certain artifact characteristics, captured via metrics, and fault-proneness, and therefore it is recommended to control for size when designing fault prediction models. AIM: To use robust statistical methods to assess whether there is evidence of any true effect of class size on fault prediction models. METHOD: We examine the potential mediation and moderation effects of class size on the relationships between OO metrics and number of faults. We employ regression analysis and bootstrapping-based methods to investigate the mediation and moderation effects in two widely-used datasets comprising seventeen systems. RESULTS: We find no strong evidence of a significant mediation or moderation effect of class size on the relationships between OO metrics and faults. In particular, size appears to have a more significant mediation effect on CBO and Fan-out than other metrics, although the evidence is not consistent in all examined systems. On the other hand, size does appear to have a significant moderation effect on WMC and CBO in most of the systems examined. Again, the evidence provided is not consistent across all examined systems CONCLUSION: We are unable to confirm if class size has a significant mediation or moderation effect on the relationships between OO metrics and the number of faults. We contend that class size does not fully explain the relationships between OO metrics and the number of faults, and it does not always affect the strength/magnitude of these relationships. We recommend that researchers consider the potential mediation and moderation effect of class size when building their prediction models, but this should be examined independently for each system.