Attribute-oriented programming (source code annotations) is a program level marking technique that enables enrichment of program elements with custom metadata. In this paper we hypothesize that there is a corresponden...
详细信息
ISBN:
(纸本)9788360810668
Attribute-oriented programming (source code annotations) is a program level marking technique that enables enrichment of program elements with custom metadata. In this paper we hypothesize that there is a correspondence between source code annotations and conventional formal languages in general. We analyze our observations about source code annotations from three aspects of language description: concrete syntax, abstract syntax, and semantics. The discussion provides evidence of the hypothesized correspondence and we use it as a basis for our definition of an annotation-based language (abbreviated: @L). However, the analysis also shows that compared to conventional formal languages, source code annotations have some specificities mainly connected to their binding to host program elements. The presented analysis contributes to the field of attribute-oriented programming by discussing the relationship between annotations and conventional formal languages, and by surveying relational idioms in annotations' usage that can be inspirational for annotations' authors.
A concern can be characterized as a developer's intent behind a piece of code, often not explicitly captured in it. We discuss a technique of recording concerns using source code annotations (concern annotations)....
详细信息
A concern can be characterized as a developer's intent behind a piece of code, often not explicitly captured in it. We discuss a technique of recording concerns using source code annotations (concern annotations). Using two studies and two controlled experiments, we seek to answer the following 3 research questions: (1) Do programmers' mental models overlap? (2) How do developers use shared concern annotations when they are available? (3) Does using annotations created by others improve program comprehension and maintenance correctness, time and confidence? The first study shows that developers' mental models, recorded using concern annotations, overlap and thus can be shared. The second study shows that shared concern annotations can be used during program comprehension for the following purposes: hypotheses confirmation, feature location, obtaining new knowledge, finding relationships and maintenance notes. The first controlled experiment with students showed that the presence of annotations significantly reduced program comprehension and maintenance time by 34%. The second controlled experiment was a differentiated replication of the first one, focused on industrial developers. It showed a 33% significant improvement in correctness. We conclude that concern annotations are a viable way to share developers' thoughts. (C) 2016 Elsevier Ltd. All rights reserved.
Context: Developers possess mental models containing information far beyond what is explicitly captured in the sourcecode. Objectives: We investigate the possibility to use source code annotations to capture parts of...
详细信息
ISBN:
(纸本)9788360810668
Context: Developers possess mental models containing information far beyond what is explicitly captured in the sourcecode. Objectives: We investigate the possibility to use source code annotations to capture parts of the developers' mental models and later reuse them by other programmers during program comprehension and maintenance. Method: We performed two studies and a controlled experiment. Results: Developers' mental models overlap and thus can be shared. Possible use cases of shared annotations are hypotheses confirmation, feature location, obtaining new knowledge, finding relationships and maintenance notes. In the experiment, the presence of annotations reduced program comprehension and maintenance time by 34%. Conclusion: annotations are a viable way to share programmers' thoughts.
Combinatorial testing (CT) is an efficient and effective black-box testing technology, combinining mathematically guaranteed input space coverage with comparatively small test sets. However, it requires a current and ...
详细信息
ISBN:
(纸本)9783031808883;9783031808890
Combinatorial testing (CT) is an efficient and effective black-box testing technology, combinining mathematically guaranteed input space coverage with comparatively small test sets. However, it requires a current and complete model of all input parameters to a system under test (SUT), their respective value domains, and any constraints between parameters. This factor greatly hinders the adoption of CT in real-world development settings, as creating and maintaining an input parameter model requires signficant effort and is often not sufficiently integrated into relevant workflows in the face of software evolution. To alleviate this drawback, we propose an annotation-based method that aims to improve the locality of model information. It allows developers to define parameter values as well as constraints in immediate vicinity to function or method definitions, enabling them to incorporate modeling into their workflows with minimal overhead. Required oracles are implemented following a common structure and interface, permitting flexible evaluation of results while retaining low complexity for common cases. By incorporating the automated generation and execution of combinatorial test sets into continuous integration processes, our method streamlines the practical application of CT and thus aims to facilitate the industrial adoption of this high-assurance testing approach. A practical implementation targeting the Kotlin programming language serves as the basis for our evaluation, which verifies the applicability of our method when incorporated into an existing medium-sized codebase. At the same time, it offers directions for future work, including improvements regarding stateful testing in object-oriented languages.
Dynamic Geometry Software (DGS) are widely accepted as tools for creating and presenting visually rich interactive teaching and learning materials, called dynamic drawings. Dynamic drawings are specified by writing ex...
详细信息
Dynamic Geometry Software (DGS) are widely accepted as tools for creating and presenting visually rich interactive teaching and learning materials, called dynamic drawings. Dynamic drawings are specified by writing expressions in functional domain-specific languages. Due to wide acceptance of DGS, there has arisen a need for their extensibility, by adding new semantics and visuals. We have developed the SLGeometry dynamic geometry software with a genericized functional language and the corresponding expression evaluator that act as a framework into which specific semantics is embedded in the form of code annotated with metadata. SLGeometry is implemented in C# on the NET Framework. Although attributes are a preferred mechanism to provide association of declarative information with C# code, they have certain restrictions which limit their application to representing complex structured metadata. By developing a metadata infrastructure which is independent of attributes, we were able to overcome these limitations. Our solution, presented in this work, provides extensibility to simple and complex data types, unary and binary operations, type conversions, functions and visuals, thus enabling developers to seamlessly add new features to SLGeometry by implementing them as C# classes annotated with metadata. It also provides insight into the way a domain specific functional language of dynamic geometry software can be genericized and customized for specific needs by extending or restricting the set of types, operations, type conversions, functions and visuals. (C) 2017 Elsevier Ltd. All rights reserved.
Problem: Reoccurring software documentation fragments called documentation phrases crosscut documentation body and introduce undesired redundancy. The redundancy imposes problems with software documentation developmen...
详细信息
Problem: Reoccurring software documentation fragments called documentation phrases crosscut documentation body and introduce undesired redundancy. The redundancy imposes problems with software documentation development and evolution. Objective: We want to reduce the negative effect caused by documentation phrases redundancy by centralizing the documentation phrases sources. This way a documentation phrase will have a single source that can be used for maintenance and evolution. Method: We discuss the nature of documentation phrases and argue for the support of their parametrization. We present a new documentation phrase instantiation method based on source code annotations. The provides free IDE support for writing documentation and is aided by our tool prototype. Results and contributions: Our contributions of this paper include identification of documentation phrase parametrization and the annotation- based documentation phrase instantiation. The annotation- based documentation phrase instantiation method enables to reduce the effort needed for documentation development and evolution.
暂无评论