The SMADE-lc approach can be classified as an AGILE method as reported in the next image. The development process is performed via a number of incremental Sprints, in which at each cycle/sprint the completeness of the solution is increased. The first sprints are usually dedicated to the implementation of stand-alone applications in a distributed complex system with simple data rendering just for monitoring the data ingestion and providing the evidence of the functionalities, that usually belong to the final applications as well. Then, in successive sprints, modules/processes are combined by adding data analytics and more complex data rendering and business logics. Final sprints are dedicated to the integration and general optimization to pass in production via final validation.
Figure: Agile like development life cycle for IoT smart solutions.
The main activities phases of each sprint are organized as in the image below here and are described in the following. Please note that, since the aim of the approach is fast prototyping the phases of Analysis, Design, Development, Testing/Deploy, Validation and Production may be performed at the same time on different modules/components of the whole system. In each sprint, the activities of Analysis (Plan), Design, Develop, Test (Review, regression testing), Deploy (Launch) may be performed by different specialized teams with some interchanges of information regarding ready to use data, data analytic, and user interfaces.
Figure: Single development cycle/sprint from analysis to production.
For example, when some needed data sources have been identified, the corresponding development of data / entity ingestion can start, and, at the same time, the analysis on the other parts could start as well. Another example: the data scientists can start developing data analytics based on the accessible data, while the user interface experts could start the design and develop of the user interface parts as dashboards on the accessible historical data, even if not all data has been ingested, etc., as soon as the data kind have been understood. Therefore, the activities of Test&Deploy for each unit can be performed at the same time and may lead to rapidly reach the planned goals of the current sprint, providing the results to the other teams and passing to the next goal and sprint.
According to Snap4City platform, the next figure reports the mapping from Snap4City Tools on the development life cycle phases and activities. The names reported are Snap4City tools and/or main items in the Snap4City menu on Snap4City.org platform and they may be present in Powered by Snap4Tech platforms according to the platform size/model decided and features installed. In the image here below: the “Tables and Documents” module refers to the indications provided in this document regarding Tables and Documents to be produced in the pashes of Analysis and Design.
Figure: life cycle with annotated Snap4City tools.
Special Tools can be developed in any programming language, and can exploit the services of Snap4City platform, tools and microservices via the above-mentioned API. In addition, any web-based user interface of Special Tool can be embedded into the Dashboards via the External Content Widget as IFRAME. The development of a smart application may imply the need to develop some Special Tools. In addition, any web-based user interface of Special Tool can be embedded into the Dashboards.
The Validation & Production phases (also for each sprint) lead from partial to full integration of modules of the progressively implemented smart applications. Please note that, in the context of Snap4City rapid prototyping, the: (i) processes for data ingestion, transformation, are Processing Logic / IoT App (which are node-RED) which can developed in collaborative manner, cloned, shared and executed in containers on cloud, and can be also deployed on Edge, (ii) the Data Analytic processes are coded in Python/RStudio which can be cloned/shared, multiply deployed and executed in containers, (iii) user interfaces of smart applications are typically based on dashboards which can be cloned/shared, and also embedded in third party web pages. This approach allows to plug any components dynamically and to pass from development of modules (with local Test&Deploy passed) to their validation in the integrated context and thus to arrive on production in smooth and progressive manner.