Results 1 - 10
of
47
An XMLbased lightweight C++ fact extractor
- in Proceedings of 11th IEEE International Workshop on Program Comprehension (IWPC'03
, 2003
"... A lightweight fact extractor is presented that utilizes XML tools, such as XPath and XSLT, to extract static information from C++ source code programs. The source code is first converted into an XML representation, srcML, to facilitate the use of a wide variety of XML tools. The method is deemed lig ..."
Abstract
-
Cited by 45 (18 self)
- Add to MetaCart
A lightweight fact extractor is presented that utilizes XML tools, such as XPath and XSLT, to extract static information from C++ source code programs. The source code is first converted into an XML representation, srcML, to facilitate the use of a wide variety of XML tools. The method is deemed lightweight because only a partial parsing of the source is done. Additionally, the technique is quite robust and can be applied to incomplete and non-compile-able source code. The trade off to this approach is that queries on some low level details cannot be directly addressed. This approach is applied to a fact extractor benchmark as comparison with other, abet heavier weight, fact extractors. Fact extractors are widely used to support understanding tasks associated with maintenance, reverse engineering and various other software engineering tasks. 1.
Source Code Files as Structured Documents
- in Proceedings of 10th IEEE International Workshop on Program Comprehension (IWPC'02
, 2002
"... A means to add explicit structure to program source code is presented. XML is used to augment source code with syntactic information from the parse tree. More importantly, comments and formatting are preserved and identified for future use by development environments and program comprehension tools. ..."
Abstract
-
Cited by 36 (12 self)
- Add to MetaCart
A means to add explicit structure to program source code is presented. XML is used to augment source code with syntactic information from the parse tree. More importantly, comments and formatting are preserved and identified for future use by development environments and program comprehension tools. The focus is to construct a document representation in XML instead of a more traditional data representation of the source code. This type of representation supports a programmer centric view of the source rather than a compiler centric view. Our representation is made relevant with respect to other research on XML representations of parse trees and program code. The highlights of the representation are presented and the use of queries and transformations discussed.
Supporting Document and Data Views of Source Code
, 2002
"... The paper describes the use of an XML format to store and represent program source code. A new XML application, srcML (SouRCe Markup Language), is presented. srcML presumes a document view of source code where information about the syntactic structure is layered over the original source code documen ..."
Abstract
-
Cited by 32 (13 self)
- Add to MetaCart
The paper describes the use of an XML format to store and represent program source code. A new XML application, srcML (SouRCe Markup Language), is presented. srcML presumes a document view of source code where information about the syntactic structure is layered over the original source code document. The resultant multi-layered document has a base layer of all the original text (and formatting). The second layer is the syntactic information, derived from the grammar of the programming language, and is encoded in XML. This multilayered view supports both the creation and viewing of the source code in its original form and the use of XML technologies (for tasks such as analysis and transformation of the source). Although directed at source code documents, (particularly C++) srcML is also applicable to other programming languages and to languages with a strict syntax. srcML represents a departure from the compiler centric manner in which source code is commonly stored, instead a document point of view is taken thus better supporting the manipulation and management of the large numbers of source documents typical in modern software systems.
A Constraint Extension to Scalable Vector Graphics
, 2001
"... Scalable Vector Graphics (SVG) is a language that describes two-dimensional vector graphics for storage and distribution on the Web. Unlike raster image formats, SVG-based images scale nicely to arbitrary resolutions and sizes. However, the current SVG standard provides little flexibility for taking ..."
Abstract
-
Cited by 19 (3 self)
- Add to MetaCart
Scalable Vector Graphics (SVG) is a language that describes two-dimensional vector graphics for storage and distribution on the Web. Unlike raster image formats, SVG-based images scale nicely to arbitrary resolutions and sizes. However, the current SVG standard provides little flexibility for taking into account varying viewing conditions, such as different screen formats, and there is little support for interactive exploration of a diagram. We introduce an extension to SVG called Constraint Scalable Vector Graphics (CSVG) that permits a more flexible description of figures. With CSVG, an image can contain objects whose positions and other properties are specified in relation to other objects using constraints, rather than being specified in absolute terms. For example, a box can be specified to remain inside another box, without being given an absolute position. The precise layout can then be left to the browser, which can adapt it dynamically to changing viewing conditions on the client side. Further extensions add support for alternate layouts, interaction, and declarative animation. Leveraging well-established methods for linear constraint solving, we implemented a prototype viewer for CSVG by embedding our Cassowary constraint solver into an existing SVG renderer.
Agile Parsing in TXL
- Journal of Automated Software Engineering
, 2003
"... Syntactic analysis forms a foundation of many source analysis and reverse engineering tools. However, a single standard grammar is not always appropriate for all source analysis and manipulation tasks. Small custom modifications to the grammar can make the programs used to implement these tasks simp ..."
Abstract
-
Cited by 16 (5 self)
- Add to MetaCart
Syntactic analysis forms a foundation of many source analysis and reverse engineering tools. However, a single standard grammar is not always appropriate for all source analysis and manipulation tasks. Small custom modifications to the grammar can make the programs used to implement these tasks simpler, clearer and more efficient. This leads to a new paradigm for programming these tools: agile parsing. In agile parsing the effective grammar used by a particular tool is a combination of two parts: the standard base grammar for the input language, and a set of explicit grammar overrides that modify the parse to support the task at hand. This paper introduces the basic techniques of agile parsing in TXL and discusses several industry proven techniques for exploiting agile parsing in software source analysis and transformation.
Aspect-Oriented Programming and Component Weaving: Using XML Representations of Abstract Syntax Trees
, 2002
"... Aspect-Oriented Programming (AOP) and related techniques propose solutions to the problem of crosscutting requirements, usually by providing a weaver that reimplements major parts of a compiler. This paper proposes XML based "operators" as an extensible aspect language. We work on XML representation ..."
Abstract
-
Cited by 14 (3 self)
- Add to MetaCart
Aspect-Oriented Programming (AOP) and related techniques propose solutions to the problem of crosscutting requirements, usually by providing a weaver that reimplements major parts of a compiler. This paper proposes XML based "operators" as an extensible aspect language. We work on XML representations of abstract syntax trees (AST) for the base language. These can be generated by modifying an existing compiler and allow us to use XML tools for tree query and manipulation. A prototype that encompasses constructs from several aspect languages, in particular AspectJ and Composition Filters, has been implemented.
Aligning development tools with the way programmers think about code changes
- In CHI ’07: Proceedings of the SIGCHI Conference on Human Factors in Computing Systems. ACM
, 2007
"... Software developers must modify their programs to keep up with changing requirements and designs. Often, a conceptually simple change can require numerous edits that are similar but not identical, leading to errors and omissions. Researchers have designed programming environments to address this pro ..."
Abstract
-
Cited by 9 (0 self)
- Add to MetaCart
Software developers must modify their programs to keep up with changing requirements and designs. Often, a conceptually simple change can require numerous edits that are similar but not identical, leading to errors and omissions. Researchers have designed programming environments to address this problem, but most of these systems are counter-intuitive and difficult to use. By applying a task-centered design process, we developed a visual tool that allows programmers to make complex code transformations in an intuitive manner. This approach uses a representation that aligns well with programmers ’ mental models of programming structures. The visual language combines textual and graphical elements and is expressive enough to support a broad range of code-changing tasks. To simplify learning the system, its user interface scaffolds construction and execution of transformations. An evaluation with Java programmers suggests that the interface is intuitive, easy to learn, and effective on a representative editing task. Author Keywords Transformations, visual languages, cognitive dimensions.
The Documentary Structure of Source Code
, 2002
"... Many tools designed to help programmers view and manipulate source code exploit the formal structure of the programming language. Language-based tools use information derived via linguistic analysis to offer services that are impractical for purely text-based tools. In order to be effective, however ..."
Abstract
-
Cited by 7 (0 self)
- Add to MetaCart
Many tools designed to help programmers view and manipulate source code exploit the formal structure of the programming language. Language-based tools use information derived via linguistic analysis to offer services that are impractical for purely text-based tools. In order to be effective, however, language-based tools must be designed to account properly for the documentary structure of source code: a structure that is largely orthogonal to the linguistic but no less important. Documentary structure includes, in addition to the language text, all extra-lingual information added by programmers for the sole purpose of aiding the human reader: comments, white space, and choice of names. Largely ignored in the research literature, documentary structure occupies a central role in the practice of programming. An examination of the documentary structure of programs leads to a better understanding of requirements for tool architectures.
Leveraging XML technologies in developing program analysis tools
- in Proceedings of 4th International Workshop on Adoption-Centric Software Engineering (ACSE'04
, 2004
"... XML technologies are quickly becoming ubiquitous within all aspects of computer and information sciences. Both industry and academics have accepted the XML standards and the large number of tools that support manipulation, transformation, querying, and storage of XML objects. Thus, tools and represe ..."
Abstract
-
Cited by 7 (1 self)
- Add to MetaCart
XML technologies are quickly becoming ubiquitous within all aspects of computer and information sciences. Both industry and academics have accepted the XML standards and the large number of tools that support manipulation, transformation, querying, and storage of XML objects. Thus, tools and representations based on XML are very attractive with respect to adoption. This paper describes the experiences of the authors in the development and application of srcML, a XML application to support explicit markup of syntactic information within source code. Additionally, XML technologies are leveraged along with srcML to support various program analysis, fact extraction, and reverse engineering tasks. A short description of these tools is given along with the motivation behind using an adoption centric XML approach. 1.
Representing and Accessing Extracted Information
- In International Conferenceon Software Maintenance
, 2001
"... Source code repositories best support program comprehension tasks when they can successfully answer the many questions a maintainer conceives. To provide the flexibility needed to answer these questions, the Jupiter repository system has been developed. Jupiter, using Maia, a Model based on Annotati ..."
Abstract
-
Cited by 6 (3 self)
- Add to MetaCart
Source code repositories best support program comprehension tasks when they can successfully answer the many questions a maintainer conceives. To provide the flexibility needed to answer these questions, the Jupiter repository system has been developed. Jupiter, using Maia, a Model based on Annotations, Indices and Attributes, can store any of the syntactic, type and flow information extractable from a program. Jupiter's query language, Mercury, formed by merging an existing query language with Scheme, is used to access the repository and manipulate query solutions. Together, these components provide a foundation on which to build systems for solving the queries that occur during program comprehension. 1

