30 research outputs found
CrocoPat 2.1 Introduction and Reference Manual
CrocoPat is an efficient, powerful and easy-to-use tool for manipulating
relations of arbitrary arity, including directed graphs. This manual provides
an introduction to and a reference for CrocoPat and its programming language
RML. It includes several application examples, in particular from the analysis
of structural models of software systems.Comment: 19 pages + cover, 2 eps figures, uses llncs.cls and
cs_techrpt_cover.sty, for downloading the source code, binaries, and RML
examples, see http://www.software-systemtechnik.de/CrocoPat
Rascal: A domain specific language for source code analysis and manipulation
Many automated software engineering tools require tight integration of techniques for source code analysis and manipulation. State-of-the-art tools exist for both, but the domains have remained notoriously separate because different computational paradigms fit each domain best. This impedance mismatch hampers the development of each new problem solution since desired functionality and scalability can only be achieved by repeated, ad hoc, integration of different techniques.
Rascal is a domain-specific language that takes away most of this boilerplate by providing high-level integration of source code analysis and manipulation on the conceptual, syntactic, semantic and technical level. We give an overview of the language and assess its merits by implementing a complex refactoring
Interactive Query Language for Code Comprehension
Code comprehension is a fundamental task for software development. Every bug fix, maintenance or new feature development requires the whole understanding of the affectedcode. There exist a number of code comprehension tools but most of them has a limitedfeature set and they are binded with a fixed (usually) graphical user interface.
This putlimitations for their use. In this thesis we will define a flexible but safe query language to execute the most fundamental comprehension queries against a large code base.
We will investigate how much this language could be language agnostic and how to support specificlanguage features. I will implement a prototype tool to prove the concept using the opensource CodeCompass code comprehension platform. In this prototype i mainly target C and C++ languages
Impact analysis of database schema changes
When database schemas require change, it is typical to predict the effects of the change, first to gauge
if the change is worth the expense, and second, to determine what must be reconciled once the change
has taken place. Current techniques to predict the effects of schema changes upon applications that use
the database can be expensive and error-prone, making the change process expensive and difficult. Our
thesis is that an automated approach for predicting these effects, known as an impact analysis, can create
a more informed schema change process, allowing stakeholders to obtain beneficial information, at lower
costs than currently used industrial practice. This is an interesting research problem because modern
data-access practices make it difficult to create an automated analysis that can identify the dependencies
between applications and the database schema. In this dissertation we describe a novel analysis that
overcomes these difficulties.
We present a novel analysis for extracting potential database queries from a program, called query
analysis. This query analysis builds upon related work, satisfying the additional requirements that we
identify for impact analysis.
The impacts of a schema change can be predicted by analysing the results of query analysis, using
a process we call impact calculation. We describe impact calculation in detail, and show how it can be
practically and efficiently implemented.
Due to the level of accuracy required by our query analysis, the analysis can become expensive,
so we describe existing and novel approaches for maintaining an efficient and computational tractable
analysis.
We describe a practical and efficient prototype implementation of our schema change impact analysis,
called SUITE. We describe how SUITE was used to evaluate our thesis, using a historical case
study of a large commercial software project. The results of this case study show that our impact analysis
is feasible for large commercial software applications, and likely to be useful in real-world software
development
A Domain Analysis to Specify Design Defects and Generate Detection Algorithms
Quality experts often need to identify in software systems design defects, which are recurring design problems, that hinder development\ud
and maintenance. Consequently, several defect detection approaches\ud
and tools have been proposed in the literature. However, we are not\ud
aware of any approach that defines and reifies the process of generating\ud
detection algorithms from the existing textual descriptions of defects.\ud
In this paper, we introduce an approach to automate the generation\ud
of detection algorithms from specifications written using a domain-specific\ud
language. The domain-specific is defined from a thorough domain analysis.\ud
We specify several design defects, generate automatically detection\ud
algorithms using templates, and validate the generated detection\ud
algorithms in terms of precision and recall on Xerces v2.7.0, an\ud
open-source object-oriented system
Meta-Language Support for Type-Safe Access to External Resources
Meta-programming applications often require access to heterogeneous sources of information, often from different technological spaces (grammars, models, ontologies, databases), that have specialized ways of defining their respective data schemas. Without direct language support, obtaining typed access to this external, potentially changing, information is a tedious and error-prone engineering task. The Rascal meta-programming language aims to support the import and manipulation of all of these kinds of data in a type-safe manner. The goal is to lower the engineering effort to build new meta programs that combine information about software in unforeseen ways. In this paper we describe built-in language support, so called \textit{resources}, for incorporating external sources of data and their corresponding data-types while maintaining type safety. We demonstrate the applicability of Rascal resources by example, sho
Rascal: From Algebraic Specification to Meta-Programming
Algebraic specification has a long tradition in bridging the gap between
specification and programming by making specifications executable. Building on
extensive experience in designing, implementing and using specification
formalisms that are based on algebraic specification and term rewriting (namely
Asf and Asf+Sdf), we are now focusing on using the best concepts from algebraic
specification and integrating these into a new programming language: Rascal.
This language is easy to learn by non-experts but is also scalable to very
large meta-programming applications.
We explain the algebraic roots of Rascal and its main application areas:
software analysis, software transformation, and design and implementation of
domain-specific languages. Some example applications in the domain of
Model-Driven Engineering (MDE) are described to illustrate this.Comment: In Proceedings AMMSE 2011, arXiv:1106.596
Generating Accurate Dependencies for Large Software
Dependencies between program elements can reflect the architecture, design, and implementation of a software project. According a industry report, intra- and inter-module dependencies can be a significant source of latent threats to software maintainability in long-term software development, especially when the software has millions of lines of code.
This thesis introduces the design and implementation of an accurate and scalable analysis tool that extracts code dependencies from large C/C++ software projects. The tool analyzes both symbol-level and module-level dependencies of a software system and provides an utilization-based dependency model. The accurate dependencies generated by the tool can be provided as the input to other software analysis suits; the results along can help developers identify potential underutilized and inconsistent dependencies in the software. Such information points to potential refactoring opportunities and assists developers with large-scale refactoring tasks.1 yea
SeamCAD: a hierarchy-oriented modeling language and a computer-aided tool for entreprise architecture
Modeling Enterprise Architecture requires representing multiple diagrams of an enterprise, which typically shows the multiples business entities, IT systems, even software components and the services they offer. This could be done by a team of stakeholders having different backgrounds. One way to do this is to structure the model into hierarchical levels each of which can be of interest of just some, not all, stakeholders. Due to the differences in their background, stakeholders – the modelers may not want to use a single modeling approach, even a widely-recognized one, to build the enterprise model, which can be shared by the whole team. Developing a modeling framework that can be applied uniformly throughout the entire enterprise model and that can be used by all stakeholders is challenging. First, the framework should have a uniform approach to specifying the services offered by business entities, IT systems and software components and to describing their implementation across hierarchical levels. Second, the framework should allow the stakeholders to represent the service specification and the service implementation of multiple business entities and IT systems, even within the same hierarchical level. Third, the services offered by those entities and systems should be represented at different levels of granularity. Last but not least, the modeling framework should maintain the well-formedness of the enterprise model and the consistency between different diagrams opened by different stakeholders of the team. Today, there exist a few modeling methods or development processes in the field of Enterprise Architecture, as well as in software and system modeling that can address these issues to some extent. Among them, Adora, KobrA and OPM best meet the aforementioned four criteria, although they were not initially developed for modeling Enterprise Architecture. As a study on the state of the art, we analyzed these methods with respect to the four aforementioned modeling challenges. In this thesis, we define a modeling language and present a computer-aided tool for modeling Enterprise Architecture hierarchically. This modeling language allows the modeler to structure an enterprise into hierarchical levels, in terms of both organization and services. The computer-aided modeling tool helps the modeler visually build her model across levels and brings all levels together to make a coherent, well-formed model. Enterprise models can be visually built and represented in a notation that is based on the Unified Modeling Language using this tool. The modeling language is formally defined in Alloy – a lightweight declarative language based on first order logic and set theory. The data manipulated in the tool is verified against the Alloy code that formalizes the language. The modeling language and the computer-aided modeling tool constitute a hierarchy-oriented framework called SeamCAD that specifically address the four aforementioned issues. This framework has been applied several projects, both in industry and academic settings. We evaluated it by inviting external practitioners, researchers and master's students in our university to use it and to give their feedback