Model-driven architecture is an approach to the design of software systems that uses platform-independent models – rather than traditional structured programming – to serve as an abstraction layer to dramatically simplify the programming problem. Models are independent of the underlying infrastructure services provided by any particular cloud platform provider, whether AWS, Azure, IBM, or Google. Models automatically are translated to one or more cloud platform–specific implementations. This means the developer doesn’t need to worry about which underlying components the application will use or which cloud platform the application will run on.
Using models, the programmer or application developer does not have to be concerned with all the data types, data interconnections, and processes that act on the data associated with any given entity, such as customer, tractor, doctor, or fuel type. By simply addressing the model for any given entity – for instance, customer – all the underlying data, data interrelationships, pointers, APIs, connections, and processes associated with or used to manipulate those data are abstracted in the model itself. As a result, with a model-driven architecture, AI and IoT applications can be configured and deployed much faster than with alternative approaches.
The notion of a model-driven architecture was developed at the beginning of the 21st century in response to the growing complexity of enterprise application development requirements. A model-driven architecture simplifies and accelerates development because it enables software engineers to encode the business logic of their AI and IoT applications with only a fraction of the code required by traditional programming approaches. The resulting benefits are dramatic. Small teams of programmers and data scientists can develop production AI and IoT applications in as little as 10 weeks, with large-scale projects typically requiring 12 to 16 weeks from design and development to testing and live production deployment.
Another important capability of a model-driven architecture is that the applications developed on the platform are entirely future-proofed. Suppose, for example, that an organization developed all its applications initially using Oracle as the relational database and then later decided to switch to an alternate RDBMS. The only modification required is to change the link in the RDBMS meta-model to point to the new RDBMS. All the applications deployed previously using Oracle as the RDBMS will continue to run without modification after the replacement. This enables organizations to immediately and easily take advantage of new and improved product offerings as they become available.
The C3 AI® Suite – as well as applications developed on that platform, including prebuilt C3 AI applications – is designed and built with a model-driven architecture. Because of this model-driven architecture, anything can be represented as a model – even, for example, applications, including databases, natural language processing engines, and image recognition systems. Models also support a concept called inheritance. An AI application built with the C3 AI Suite might include a model called relational database, that in turn serves as a placeholder that might incorporate any relational database system, including Oracle, Postgres, Aurora, Spanner, or SQL Server. A key-value store model might contain Cassandra, HBase, Cosmos DB, or DynamoDB.
With its model-driven architecture, the C3 AI Suite provides an abstraction layer and semantics to represent the application. This frees the programmer from having to worry about data mapping, API syntax, and the mechanics of myriad computational processes like ETL, queuing, pipeline management, and encryption. The C3 AI Suite’s model-driven architecture reduces the number of entities, objects, and processes the developer must understand from an order of 1013 to 103. Freeing the developer from wrestling with all this minutiae accelerates the development of enterprise AI applications running on cloud infrastructures like AWS and Azure 25-fold and decreases the cost and complexity of designing, developing, testing, provisioning, maintaining, and operating an application 100 times or more.