53246444
Program generators and the tools to make them
Program generation is among the most promising techniques in the effort to increase the automation of programming tasks. In this paper, we discuss the potential impact and research value of program generation, we give examples of our research in the area, and we outline a future work direction that we consider most interesting. Specifically, we first discuss why program generators have significant applied potential. At the same time we argue that, as a research topic, meta-programming tools (i.e., language tools for writing program generators) may be of greater value. We then illustrate our views on generators and meta-programming tools with our latest work on the Meta-AspectJ meta-programming language and the GOTECH generator. Finally, we examine the problem of statically determining the safety of a generator and present its intricacies. We limit our focus to one particular kind of guarantee for generated code---ensuring that the generated program is free of compile-time errors. We believe that this research direction will see significant attention and will make a difference in the mainstream adoption of meta-programming technology.
15498474
Generating AspectJ Programs with Meta-AspectJ
Meta-AspectJ (MAJ) is a language tool for generating AspectJ programs using code templates. MAJ itself is an extension of Java, so users can interleave arbitrary Java code with AspectJ code templates. MAJ is a structured meta-programming tool: a well-typed generator implies a syntactically correct generated program. MAJ promotes a methodology that combines aspect-oriented and generative programming. Potential applications range from implementing domain-specific languages with AspectJ as a back-end to enhancing AspectJ with more powerful general-purpose constructs. In addition to its practical value, MAJ offers valuable insights to meta-programming tool designers. It is a mature meta-programming tool for AspectJ (and, by extension, Java): a lot of emphasis has been placed on context-sensitive parsing and error-reporting. As a result, MAJ minimizes the number of meta-programming (quote/unquote) operators and uses type inference to reduce the need to remember type names for syntactic entities.
14237402
cJ: enhancing java with safe type conditions
cJ is an extension of Java that allows supertypes, fields, and methods of a class or interface to be provided only under some static subtyping condition. For instance, a cJ generic class, C<P>, may provide a member method m only when the type provided for parameter P is a subtype of a specific type Q.From a practical standpoint, cJ adds to generic Java classes and interfaces the ability to express case-specific code. Unlike conditional compilation techniques (e.g., the C/C++ "#ifdef" construct) cJ is statically type safe and maintains the modular type-checking properties of Java generic classes: a cJ generic class can be checked independently of the code that uses it. Just like regular Java, checking a cJ class implies that all uses are safe, under the contract for type parameters specified in the class's signature.As a specific application, cJ addresses the well-known shortcomings of the Java Collections Framework (JCF). JCF data structures often throw run-time errors when an "optional" method is called upon an object that does not support it. Within the constraints of standard Java, the authors of the JCF had to either sacrifice static type safety or suffer a combinatorial explosion of the number of types involved. cJ avoids both problems, maintaining both static safety and conciseness.
1919715
Statically safe program generation with safegen
SafeGen is a meta-programming language for writing statically safe generators of Java programs. If a program generator written in SafeGen passes the checks of the SafeGen compiler, then the generator will only generate well-formed Java programs, for any generator input. In other words, statically checking the generator guarantees the correctness of any generated program, with respect to static checks commonly performed by a conventional compiler (including type safety, existence of a superclass, etc.). To achieve this guarantee, SafeGen supports only language primitives for reflection over an existing well-formed Java program, primitives for creating program fragments, and a restricted set of constructs for iteration, conditional actions, and name generation. SafeGen's static checking algorithm is a combination of traditional type checking for Java, and a series of calls to a theorem prover to check the validity of first-order logical sentences constructed to represent well-formedness properties of the generated program under all inputs. The approach has worked quite well in our tests, providing proofs for correct generators or pointing out interesting bugs.
12065806
On selecting software visualization tools for program understanding in an industrial context
Discusses issues related to selecting software visualization tools for program understanding in an industrial context. Visualization tools are often advocated as an effective means of aiding program understanding by creating graphical representations of the subject system through reverse engineering. However, there are numerous practical considerations related to tool selection for large, real-world projects that are unaddressed. For example, the choices are often limited to commercial tools that are widely available, that have a low cost of deployment and training, and that easily integrate into existing software engineering processes. To illustrate some of these unique issues, two types of constraints imposed on the process of software visualization tool selection to support program understanding in the domain of embedded, real-time control systems are described.
14288907
RgS-Miner: A Biological Data Warehousing, Analyzing and Mining System for Identifying Transcriptional Regulatory Sites in Human Genome
Recently, biological databases and analytical methods have become available for analyzing gene expression and transcriptional regulatory sequences. However, users must make the complicated analyses to query the data in various databases, and then they must analyze the gene upstreams using various predictive tools, before finally converting date among formats. Beyond methods for predicting transcriptional regulatory sites, new automated and integrated methods for analyzing gene upstream sequences on a higher level are urgently required. Efficient and integrated data management methods are essential, too. We present an integrated system, namely RgS-Miner, to predict transcriptional regulatory sites and detect co-occurrence of these regulatory sites. RgS-Miner comprises a biological data warehousing system, pattern discovery programs, pattern occurrence association detectors and user interfaces. The system is available at http://rgsminer.csie.ncu.edu.tw/.
14475544
Issues of content and structure for a multilingual web site
Most content on the Web today is in English, but the majority of the Earth's peoples speak languages other than English. To reach a wider audience, future Web sites will have to be multilingual, changing a Web site from one that is American-centric and single-language to one that is globally-oriented and multilingual. While the challenges in creating and maintaining a high-quality Web site in a single language are considerable, working with multiple languages simultaneously creates special challenges, both culturally and technically. This paper outlines issues related to two important aspects of the problem: content and structure. Several representative Web sites are examined to illustrate some of these considerations.
17764116
Identifying transcriptional regulatory sites in the human genome using an integrated computation
Recently, biological databases and analytical methods have become available for analyzing gene expression and transcriptional regulatory sequences. However, users must make the complicated analyses to query the data in various databases, and to analyze the gene upstreams using various predictive tools. Beyond methods for predicting transcriptional regulatory sites, new automated and integrated methods for analyzing gene upstream sequences on a higher level are urgently required. We present an integrated system to predict transcriptional regulatory sites and detect co-occurrence of these regulatory sites after a set of genes are input. The system comprises a biological data warehousing system, pattern discovery programs, pattern occurrence association detectors and user interfaces. User profiles and history pages enable users to trace the sequence analyses for transcriptional regulatory sites.
6628850
A qualitative assessment of the efficacy of UML diagrams as a form of graphical documentation in aiding program understanding
Graphical documentation is often characterized as an effective aid in program understanding. However, it is an open question exactly which types of graphical documentation are most suitable for which types of program understanding tasks (and in which specific usage contexts). The Unified Modeling Language (UML) is the de facto standard for modeling modern software applications. This paper describes an experiment to assess the qualitative efficacy of UML diagrams in aiding program understanding. The experiment had participants analyze a series of UML diagrams and answer a detailed questionnaire concerning a hypothetical software system. Results from the experiment suggest that the UML's efficacy in support of program understanding is limited by factors such as ill-defined syntax and semantics, spatial layout, and domain knowledge.