The IT industry is continually looking for more effective and efficient ways of building and maintaining software. For many years software engineers have looked at their colleagues in the “hard” engineering disciplines and admired the techniques that have been built-up over the years to build reliable and predicable complex structures. Much time and effort has been spent on trying to bring these sorts of disciplines to the world of software engineering.
Modular programming, structured programming, object-oriented programming – these were all steps on the road to improving the software engineering process. While these methods each lead to improvements at the programming level, they did not address a key issue – that applications are assemblies of large numbers of programs. Improvements are therefore needed not just in how we build individual programs, but in how we build complete applications.
Anyone who has worked as a professional programmer will have noticed quite quickly that there is a lot of repetition in software development. The same functionality is implemented in many programs, especially technical functionality that has to do with interfacing with infrastructure products such as databases, transaction processing systems, user interface technologies etc. If the functionality were exactly the same in each case then things would be relatively straightforward. Unfortunately in the real world the repetitions tend to fall into the “similar but not exactly the same” category. We therefore need processes and tools that help to solve this common problem of repeatedly developing similar functionality again and again.
Delta works closely with leading Universities and makes selected new technologies directly available to the global academic and development communities. Early exposure of new technologies is a core element of Delta's R&D process, ensuring early and comprehensive feedback that helps Delta to build products that are rock-solid and suitable for enterprise use.
To learn more about the concepts of generative programming and how Delta is bringing these concepts into our core products please see our research area.
The very first release of Delta ADS in the late 1970s supported some of the same concepts we see today in generative programming. Naturally in the intervening years the world of software engineering has made dramatic improvements.
Delta has made significant investments to bring these different worlds together – the practical experience from 40 years of generator development, the real-world experience of large scale development projects, the latest research work on generative programming and the latest thinking on software development.
The result is a series of new technologies that underpin Delta’s current and future product offerings:
Please continue to the next section to see how Delta works closely with the Research Community to make selected emerging technologies freely available to the global academic and developer communities.
Generative Programming (GP) is an approach to software development that attempts to solve the types of problems that occur in real-world software projects. The focus of generative programming is to bring assembly line techniques to software development. Instead of directly developing a custom application by hand the system should be manufactured.
The key difference to more traditional approaches is that instead of focusing on building one specific application, we take a step back to think about building a family of systems. This gives us a solid basis for handling the “similar but not exactly the same” problem that we find so often in software development.
Generative programming provides tools and techniques to model system families of software. We can then build software components such that we can generate on demand the specific, highly customized and optimised end products (software systems) that meet our specific business and technical requirements.
Delta has been in the software development business for a long time and so is very familiar with the "similar but not exactly the same" problem. The very first Delta products in the 1970s directly addressed this problem with the Delta/ADS code generator product. Using the powerful generator techniques in Delta/ADS developers could separate application specific coding from the common code. The Delta/ADS macro technology allowed a certain amount of customizing of standard code for specific requirements.
Over the past 40 years Delta has continually refined and improved the core technologies used in the application development tools. The types of problems that are faced by large development teams are well understood – and it is exactly these types of problems that are addressed by generative programming.
Over the past 15 years Delta has carefully followed the research developments in the field of generative programming as these concepts exactly fit into Delta’s view of how software development can, and should, be done.
As anyone who has worked in software development will testify, there is a tremendous amount of repetition in the process of creating large software systems. We are continually faced with development something “similar but not exactly the same” as something we have done many times before.
Delta has more than 40 years experience of building software tools for use in large-scale application development projects. Solving the “similar but not exactly the same” problem is a core element of Delta’s technology and products.
Over the past years Delta has carefully followed research developments in the area of Generative Programming, a new programming paradigm that offers great potential for solving the “similar but not exactly the same” problem. Having made considerable investments in this area, Delta is now gradually releasing the results of various development projects.
This section of the Web site gives you an overview of Generative Programming and the work that Delta has been doing in this area:
If you want a look back at previous attempts to improve productivity then start with Improving Software Engineering. To get an overview of the “next big thing” in software development start with Generative Programming. The section Next Generation Products introduces the new Delta products based on generative programming. The final section Research Community talks about how Delta works with the global development community to improve product quality.