30 research outputs found

    CrocoPat 2.1 Introduction and Reference Manual

    Full text link
    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

    Get PDF
    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

    Get PDF
    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

    Get PDF
    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

    Get PDF
    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

    Get PDF
    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

    Full text link
    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

    Get PDF
    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

    Get PDF
    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
    corecore