There is an increasing demand for embedding intelligence in software systems as part of its core set of features both in the front-end (e.g. conversational user interfaces) and back-end (e.g. prediction services). This combination is usually referred to as AI-enhanced software or, simply, smart software. The development of smart software poses new engineering challenges, as now we need to deal with the engineering of the “traditional” components, the engineering of the “AI” ones but also of the interaction between both types that need to co-exist and collaborate.
In this talk we’ll see how modeling can help tame the complexity of engineering smart software by enabling software engineers specify and generate smart software systems starting from higher-level and platform-independent modeling primitives.But, unavoidably, these models will be more diverse and complex than our usual ones. Don’t despair, we’ll also see how some of these same AI techniques that are making our modeling life challenging can be turned into allies and be transformed into modeling assistants to tackle the engineering of smart software with a new breed of smart modeling tools.
As part of the talk, I discussed that to make better (smart) software faster (i.e. to be more productive when developing high-quality AI-enhanced software) we need to:
- (Semi)automate the generation of smart software, for which we need
- Better models to specify such smart software, for which we need
- Better ways to create such models
Whereby “models” I mean software models but also “AI/ML models” as ML models ARE models!
Some of the topics we’ve been working in these areas and that I mentioned in the talk are:
- The specification of multi-experience user interfaces (mixing traditional point and click interfaces together with chatbots, voicebots,…)
- A DSL for the annotation of the datasets to be used to train ML models to make sure the trained models will comply with a number of FAIR characteristics
- The modeling of the development process of smart software to clarify the new roles and phases involved in developing this type of AI-enhanced software
- How to get to something closer to a “Modeling CoPilot” when you don’t have too much data but you can at least rely on some general knowledge to autocomplete the partial models the human modeler is specifying.
- The emergence of “low-modeling” strategies where we try to infer some modeling elements out of other sources of data (e.g. the generation of chatbots from open data sources)
but I did mention many more challenges to be tackled 🙂
If you’re interested in these topics, feel free to browse the slides of the talk below or get in touch for a more in-depth discussion of the topics covered