Technologies that Support Software Engineering

There are lots of interesting technologies that can be used to support software engineering. This is a resource that lists some technologies. In order for the technologies to be on the list they should have some interesting features and are likely to be related to modelling, DSL, LOP or programming languages. The technologies are intended to be useful to me, project students and researchers. In most cases the accompanying text is the blurb that comes with the technology. In most cases the technology is open-source or at least free to HE institutions and researchers.

NB: The links, information etc is up-to-date when entered.

Converge

Converge is a dynamically typed object orientated programming language with compile-time meta-programming facilities - put simply, Converge has a macro-like facility that can embed domain specific languages with arbitrary syntaxes into source files.
converge
JaMoPP: The Java Model Parser and Printer

JaMoPP consists of (1) a complete Java5 Ecore Metamodel (2) a complete Java5 EMFText Syntax and (3) an implementation of Java5's static semantics analysis. Through JaMoPP, any Java program can be processed as any other EMF model. JaMoPP therefore bridges the gap between modelling and Java programming. JaMoPP enables the application of arbitrary EMF-based tools on full Java programs. Since JaMoPP is developed through metamodelling and code generation, extending Java and embedding Java into other modelling languages, using standard metamodeling techniques and tools, is now possible. To ensure the quality of JaMoPP, it has been successfully tested on a code base of 79.017 Java files of today's most famous Java projects.

JaMoPP has already been utilised successfully in a number of applications:

  • to create a safe template language for Java
  • to generate code through model-2-model transformations
  • to embed Java statements into UML
  • to visualize Java programs using GMF
  • to map features to Java programs using the FeatureMapper
  • to extend Java with new reuse concepts processable by Reuseware
  • to perform static source code analysis with OCL
Meta Programming System (MPS)

In our professional software development, we have focused on finding ways to help developers work more effectively. Despite the range of programming languages available today, we are still limited by them. It makes sense to extend the existing languages to create more domain-oriented ones, which allow writing programs on a higher level and in a manner that is more natural to each domain. With an instrument that allows creating language constructs as simple as creating classes or methods is in a conventional language, you can significantly change the way you develop software. This new style of programming, when you create specialized languages, use them to develop software, and extend them when and how required, is called Language Oriented Programming (LOP).

mps
StarUML

StarUML is an open source project to develop fast, flexible, extensible, featureful, and freely-available UML/MDA platform running on Win32 platform. The goal of the StarUML project is to build a software modeling tool and also platform that is a compelling replacement of commercial UML tools such as Rational Rose, Together and so on.
staruml
Stratego/XT

Stratego/XT is a language and toolset for program transformation. The Stratego language provides rewrite rules for expressing basic transformations, programmable rewriting strategies for controlling the application of rules, concrete syntax for expressing the patterns of rules in the syntax of the object language, and dynamic rewrite rules for expressing context-sensitive transformations, thus supporting the development of transformation components at a high level of abstraction.

The XT toolset offers a collection of extensible, reusable transformation tools, such as powerful parser and pretty-printer generators and grammar engineering tools. Stratego/XT supports the development of program transformation infrastructure, domain-specific languages, compilers, program generators, and a wide range of meta-programming tasks.

stratego
TXL

TXL is best at tasks that involve structural analysis and transformation of formal notations such as programming languages, specification languages, structured documents and so on. But it has been used in a wide range of other applications, including database schema translation,VLSI layout, handwritten math recognition, network packet analysis, security auditing and the semantic web. Useful for:
  • Programming Language Processing
    • Rapid prototyping of new languages, extensions and DSLs.
    • Source-to-source translation of programs.
  • Program Analysis and Instrumentation
    • Program instrumentation, measurement and comparison.
    • Program restructuring, remodularization and class discovery.
  • Software Engineering
    • Design recovery and architecture extraction from source.
    • Reverse engineering and re-engineering.
  • Database and Document Processing
    • Database query optimization, translation and evaluation.
    • XML and HTML document analysis and transformation.
TXL
WebDSL

WebDSL is a domain-specific language for developing dynamic web applications with a rich data model.
WebDSL
WebML

The Web Modelling Language is a visual notation for specifying the content, composition, and navigation features of hypertext applications, building on ER and UML.
WebML
XMF

XMF is an industry strength extensible programming language designed for Language Oriented Programming. All aspects of XMF can be easily extended or redefined at run-time allowing the dynamic construction of domain specific languages (DSLs) which can be used either standalone or weaved into existing DSLs. XMF is also a mature full-featured stand alone language that has been used in industry for modeling and data intelligence applications.
XMF

XText

Xtext is a framework for development of textual domain specific languages (DSLs). Just describe your very own DSL using Xtext's simple EBNF grammar language and the generator will create a parser, an AST-meta model (implemented in EMF) as well as a full-featured Eclipse text editor from that.

xtext
ATL

ATL (ATLAS Transformation Language) is a model transformation language and toolkit. In the field of Model-Driven Engineering (MDE), ATL provides ways to produce a set of target models from a set of source models.

Developed on top of the Eclipse platform, the ATL Integrated Environnement (IDE) provides a number of standard development tools (syntax highlighting, debugger, etc.) that aims to ease development of ATL transformations.

The ATL project includes also a library of ATL transformations.

ATL
JaCoP

Java Constraint Programming solver, JaCoP in short, is a Java library, which provides Java user with Constraint Programming technology. If you are software engineer writing a software you will find that JaCoP as any constraint programming solver provides you with the ability to model the problem at hand as well as evaluate number of different search approaches to find an efficient one. Use the wealth of knowledge encoded within constraints to increase the reasoning/solving power of your software solution.