Introduction
We are now living in an automation economy and witnessing the shift towards software squared, where automation software is eating up the software that is eating up the world.
“ Automation is the technology by which a process or procedure is performed with minimum human assistance. In the context of IoT, automation operates across physical devices, services and people ”
When faced with the challenge of implementing automation for IoT, one might be tempted to start quickly with hard-coded rules in the application. This guide explains why using a rules engine from the get-go is preferable to hard-coding rules (chapters one to three). It then defines a seven-point benchmark to help Enterprise Developers and Architects choose the right rules engine technology for their IoT use case (chapters four and five).
This guide is the first part of a two-part evaluation of automation technologies in the IoT domain. The second part: A Guide to Rules Engines, evaluates seven classes of rules engines against the benchmark defined here.
1. Logic
In this section, we introduce formal logic and see how computer expressed logic is different from human expressed logic and why developers have a difficult time translating user requirements into conditional statements (rules) when designing software.
Knowing a language means being able to produce an infinite number of sentences never spoken before and to understand sentences never heard before. For us humans, it’s natural to say things like Tom likes football and pancakes.
For non-developers, the mental effort required to translate such statements into computer language might not be that obvious. If we were to literally write the same statement into a computer program, it would mean (for the machine) that Tom is happy only when watching football while eating pancakes.
So when writing software, what you are basically doing is translating user requirements (human stories described using human language) into rules (conditional constructions are written using computer language). And while doing that, you need to be aware of the differences between human-spoken logic and computer-spoken logic so that you don’t accidentally condemn Tom to only finding happiness when watching football while eating pancakes.
As computer language consists of both Propositional Logic (assumes that the world contains facts) and First Order Logic (assumes that the world contains objects, relations, and functions), one may argue that developers are well-equipped and computer language is all that is needed to enable them to write an algorithm and conditional statement (rule) needed to translate a human requirement into code.
We argue that it isn’t, primarily because of three major difficulties that stand in the way of developers – the first difficulty is brought about by the complexity of the logic, as we will see below. The second and third difficulties (brought about by time and uncertainty) will be covered in the next two sections.
So now let’s look more closely into the process of building software applications using computer logic made up of conditional constructions.
For more information Visit: A Guide to Rules Engines for IoT