The main objective of SmartCLIDE is to propose a radically new smart cloud-native development environment, based on the coding-by-demonstration principle, that will support creators of cloud services in the discovery, creation, composition, testing, and deployment of full-stack data-centered services and applications in the cloud. SmartCLIDE will provide high levels of abstraction at all stages (development, testing, deployment, and run-time) as well as self-discovery of IaaS and SaaS Services. SmartCLIDE will provide several categories of abstractions: at development stage, SmartCLIDE will provide abstractions on data transformations or processing; at testing stage, mechanisms to visualize flow and status or artifacts to automatically test the expected behavior; at deployment stage, abstractions of physical and virtual resources; or at runtime, mechanisms to monitor the performance and operation of the service.
The cloud nature of the environment will enable collaboration between different stakeholders, and the self-discovery of IaaS and SaaS services and the high levels of abstraction will facilitate the composition and deployment of new services to nontechnical staff (with no previous experience on programming or on the administration of systems and infrastructure). Equally, hiding the complexity of the infrastructure, and adding intelligence to this layer, will allow selecting the most adequate infrastructure services in each moment.
SmartCLIDE will allow SMEs and Public Administration to boost the adoption of Cloud and Big Data solutions, being validated at one solution-oriented to Public Administration (Social Security System) and three different IoT and Big Data products of software development SMEs within the consortium.

Benefits of SmartCLIDE for the targeted users

The aim of SmartCLIDE is to provide a tool to empower end-users with limited technical knowledge in the specification, development, testing, deployment, and operation of data-intensive applications in the cloud. SmartCLIDE introduces several benefits for the different stakeholders within the service creation lifecycle:

  • It lowers the entry-level to programming activities to non-technical staff. SmartCLIDE will allow end-users to easily prototype features (that can be enhanced later on by developers). It also provides a powerful training tool for novel developers to understand the underlying mechanisms of data-intensive applications.
  • Improvement of the transparency, readability, and comprehensibility of software. SmartCLIDE will implement several features that will improve the readability and comprehensibility of software:
    • it will implement the coding-by-demonstration principle, which is a way of creating software that is closer to the way humans think. Rather than adapting the users’ mental scheme to the requirements of a programming language, it’s the user who instructs a system to reach the desired result making use of abstractions.
    • it will implement control flow monitoring at run-time (even at low levels of granularity), which improves the knowledge about how the software works and interacts with different components and sub-systems.
    • it will implement a stateful behavior, showing the state of data (and variables) at each execution step.
  • Increase quality and security levels. At design time, when the user defines the output of the program, she will make use of domain-specific languages like Gherkin, which will enable the full automation of acceptance tests making use of natural language. SmartCLIDE will also make available full abstractions of other testing frameworks at testing stage, enabling coders to deploy containers with testing frameworks for testing purposes in seconds.
  • Increase the reusability of services. SmartCLIDE will allow reusing existing and ad-hoc created microservices, data, control structures, or operations abstractions.
  • Increase productivity levels. Improved reusability, higher comprehension of the underlying mechanisms of soft-ware, and full control over the lifecycle (from specification to deployment) will boost the productivity of development teams, even in the most complex contexts.