A wishlist and (potential) architecture for a low-code platform for smart software development
Tags: lowcode, ai
Published: 2023-01-13 12:38:42

Smart software, also called "AI-enhanced" or "ML-enabled"give rise to unique software engineering challenge as these systems are harder to specify, verify and test. Additional complexity arises from all the potential interactions between the AI components and the “traditional” ones (since we need to specify how they collaborate, test that they behave consistently and analyze their interdependencies).

In this post we offer a “wishlist” that outlines what developers need to watch for in low-code tools for smart software. Also, we present work on an architecture (see featured image) that is one way to satisfy items on that wish list.
<h2>Low-code for smart software wishlist</h2>
We believe a developer working on smart soft-ware would be interested in a low-code platform capable of:
<ul>
 	<li>Managing concerns for both AI components and traditional software components in a consistent and integrated way including their interdependencies (e.g., an AI component trained using the data entered via a regular component).</li>
 	<li>Supporting the complete lifecycle of the required AI components (training, validation, deployment and monitoring), as well as tracking the decisions behind their architecture and evolution.</li>
 	<li>Operating with a technology-independent and platform-agnostic specification while supporting a transparent deployment to different AI service providers.</li>
 	<li>Enabling the integration of AI components in both the front-end (e.g., chatbots) and back-end (e.g., prediction tasks) of our system.</li>
 	<li>Defining high-level goals or quality concerns (e.g., fairness) that can be automatically tested and/or monitored after deployment.</li>
 	<li>Being used without intricate knowledge of the underlying AI techniques, offering mechanisms to automatically select a suitable method and (hyper)parameters for a particular usage scenario.</li>
 	<li>Supporting a variety of AI tasks, beyond text or image classification.</li>
</ul>

<h2>A low-code architecture for smart software</h2>
To provide the features identified in the previous wishlist, we envision the following architecture

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/wgxxn5ro3tntf3i6ha8a.png) 

This architecture is based around the following components:
<ul>
 	<li><strong>Model editor</strong>. Developers provide the description of the software system using a unified notation, a smart software model, which includes both traditional and smart elements:
<ul>
 	<li>A description of the application domain and the architecture of the software system, i.e., components and the relationships between them.</li>
 	<li>A high-level description of the tasks to be performed by the AI components, the target quality metrics as well as concerns (e.g., ethical issues, resource budget for training or deployment) that should be considered.</li>
 	<li>A description of the input data sources storing to be used for the training of AI components, with emphasis on the <a href="https://modeling-languages.com/describeml-machine-learning-datasets/" target="_blank" rel="noopener">identification of information relevant from the point of view of fairness</a>.</li>
</ul>
</li>
 	<li><strong>Code generator</strong>. The information provided in the model drives the generation of code implementing the different processes within the low-code tool. Who knows? <a href="https://modeling-languages.com/models-to-code-models-to-prompts/" target="_blank" rel="noopener">LLMs (large language models) could also play a role here</a>!</li>
 	<li><strong>Training</strong>. The code generator emits code to train a ML model, preparing training and validation datasets from the input data sources according to the resource budget. After training, the target quality metrics are measured and any ethical constraint is checked.</li>
 	<li><strong>Deployment.</strong> The trained model is deployed on a particular AI platform, which can be either a cloud service from a variety of providers or a local AI package.</li>
 	<li><strong>Traditional software components</strong>. Software modules that do not integrate AI features are generated in the usual way. These modules interact with AI components through a dedicated API.</li>
 	<li><strong>Monitoring and feedback</strong>. Finally, the AI components should be continuously monitored and tested after deployment in order to provide continuous feedback to the developer. This feedback should include explanations regarding the decisions made by AI components, linking back to the input data sources or tracing back to requirements in the input model.</li>
</ul>

All components in this architecture are feasible and partially already exist as separate elements in other low-code, AI or monitoring plat-forms. <strong>But bringing them all together in a unified framework could be a force multiplier</strong> and a significant next step in lowering the barrier to entry for the next generation of smart software developers.

<h2> To read more </h2>
This post is a summary of a reflection we published in <a href="https://ieeexplore.ieee.org/abstract/document/9994062" target="_blank" rel="noopener">this column,</a> co-authored by <a href="https://jordicabot.com/" target="_blank" rel="noopener">myself</a> and <a href="https://robertclariso.github.io/" target="_blank" rel="noopener">Robert Clarisó</a> for <a href="https://www.computer.org/csdl/magazine/so" target="_blank" rel="noopener">IEEE Software</a> on the promises and challenges of <a href="https://modeling-languages.com/low-code-vs-model-driven/" target="_blank" rel="noopener">low-code platforms</a> to accelerate the development of <a href="https://modeling-languages.com/smart-modeling-smart-software-keynote/" target="_blank" rel="noopener">smart software</a>.