Featured field and capability
Linked Data
Model-Based Systems Engineering
Featured industry
Services
Featured case
Data Libraries
Last summer, we developed a new Laces application, the Contract Manager. Using a new approach, we were able to develop this 53 % quicker than comparable applications. This blog will explain how our methodology, Model-Driven Development, helped us achieve this speed-up. Learn how it helps you quickly set up your IT landscape.
Nowadays, software is everywhere, and it is changing quickly, too. Software is becoming increasingly specific and more personalized. It also uses a lot more (kinds of) data than ever before because we need the Internet of Things and Artificial Intelligence to help us in our daily jobs. Meanwhile, developers are challenging to find.
So the question is: how can organizations keep up with these new software developments without massively increasing their IT costs?
The most important paradigm shift is recognizing that you use (and therefore) manage, develop, and expand a software landscape, not just an application. For example, one tool may help you with your 3D design, another with your IoT sensors, and another with your planning. Each application is highly specialized, but they need to work together to create a coherent representation of your work. In other words, software must work together and share their data efficiently.
The first step in achieving this is by making a clear division between data and software. Data tells something about you, your company, or your environment; It tells something about the (real) world. Software enables you to view, manage, and learn from it. So, by separating data from your software, you will allow yourself to have interoperability and standardization in your data, and you ensure your data is owned by you and not locked by a software vendor. Simply put, you guarantee that software works together.
Model-Driven Development (MDD) helps achieve this by designing your data with end-users and domain experts, while developers can focus on functionality.
Model-driven development is a methodology for developing software based on domain-specific models, which are easier to verify. This way, end-users and experts can help design the application directly, ensuring the right thing is built.
An expert in construction, for example, doesn’t need to know about databases, APIs, or programming to know which information he needs when selecting the correct steel for a bridge. And, with Model Driven Development (MDD), a software engineer doesn’t need to know all the different kinds of steel to build a tool for it. Together, they can design and build the application the end-user needs.
This is because MDD provides the gap between these two worlds by generating a software template based on the information model provided by the construction expert. Afterward, the software engineer uses his expertise to design an effective user experience and complete the application.
To illustrate this, we will describe how we approached the development of the new Laces application, the Contract Manager. One of the main issues asset owners face is keeping track of and creating civil and construction contracts. Typically, these contracts are based on standardized requirements and object types but are also specific to a project. The Contract Manager supports collecting the different sources and compiling them into a single publication.
MDD is based on three steps: developing your data model, generating code, and implementing the complete application. The first step, designing your data model, can be split into two smaller steps: describing the necessary information (your information model) and making your model precise and explicit (your application model).
Image 1: Design; the end-user decides which data they need.
Building your information model always starts with including relevant concepts. For the Contract manager, this meant a requirement, a physical object, and a verification plan. During this step, you ensure your application will meet the end-users’ needs without overcomplicating them.
Based on the information model, you can design the application model. During this step, you make sure your data aligns with your software landscape. If you use the same generic, overarching models for all of your applications, you ensure these can communicate with each other. At the same time, each application will have specific extensions necessary for its functionality. A planning tool and a 3D modeling tool will both describe many of the same concepts, but they will also have data that is only relevant for themselves.
Image 2: Machine; the machine processes the information and generates the back-end.
The second step is generating code. Not only does this significantly speed up your development, but it also ensures consistency. In our case, we automatically generate code to share the collected data with other applications (in technical terms, a way to transform Linked Data to and from our application).
Image 3: The Code; the template code is ready to be used by a developer.
The third and final step is using the generated code in the application’s development. Because some difficult problems, like data sharing, have already been solved, developers can build the application much faster.
Image 4: The App; a software engineer will combine the code with users’ wishes and develop the final application.
At the same time, you avoid having very generic applications that do not meet the business’s requirements. Some applications only show ‘tables’ or ‘trees,’ but that is not always the best way to show information. Developers, however, know how to present the data in the most logical way. Not everything is a spreadsheet!
Using Model-Driven Development, you can stay in control of your application landscape because you can develop your apps more in line with your user needs and your other software. You will build software more in line with (your) reality, consistently, and quickly. Do you have a use case in mind? Please get in touch with Coen van Gruijthuijsen.