
Reliable fault-tolerant operations
for a self-service ordering and POS system used in restaurants and fast-food chains, for an Israel-based vendor Tap2Dine.
Read case studyReliability Engineering with the EDC MethodUtility model for software products
In the digital industry era, numerous processes are being automated, increasing autonomy and reducing dependence on human intervention. Consequently, the demands for software reliability are constantly increasing.
Neglecting these requirements can result in adverse outcomes for individuals and hazardous incidents.
To mitigate these negative outcomes and enhance the reliability of software products and hardware, Implemica has developed and implemented a specialized software development technology called EDC (stands for Expertise, Duplication, Critical Settings) into its production processes.
The concept behind this technology is Integrated Reliability.
Concept
Integrated Reliability is developing a software product as a system component to enhance the system's overall reliability.
That is, any software product functioning as a component of the system should be designed to contribute to the system's overall reliability.
The mechanism of implementation of this Concept is as follows. When developing a Software Product (SW) as a part of the System (Fig. 1) it additionally and purposefully implements:
It is possible to implement additional elements of Integrated Reliability by:
The functional and economic feasibility of introducing additional redundancy into the development process and software product under Integrated Reliability can be optimized by evaluating the elements and parameters of the System and the Software Product, critical for operation and technogenic consequences.
The functional and economic feasibility of introducing additional redundancy can be optimized by evaluating the elements and parameters of the System and the Software Product, critical for operation and technogenic consequences.
That is, development efforts are prioritized to elements (components, nodes, modules) of the System, that determine functional reliability, and prevention of man-made failures - i.e. critical for reliability:

EDC TECHNOLOGY COMPONENTS
EDC technology comprises 3 fundamental components:
These technology components define:

Assessment of critical points within the System and the Software Product
Assessing critical points of the system relies primarily on the accumulated experience and operational data of the System and Software Product engineers. Involvement of industry experts is also utilized.
The process includes:
Requirements gathering
Gathering information on the project's primary objectives, requirements, key business functionalities, and critical components from the customer, utilizing tools such as the Crash and Risk Assessment Form.
Failure assessment
Analysis of statistical and "historical" data of the System operation or in the absence of such data of its analogs. Determination of conditions and probability of risks of critical failures and loss of performance.
Critical Module Identification
Definition of Software Product Modules whose failure will lead to complete failure or impossibility to use business functionality i.e. are critical.
Decision and adjustments
Based on this analysis, the decision is made and agreed upon on the modules and elements of the Software Product, requiring duplication to increase fault tolerance and reliability. In addition, changes and adjustments are made (if necessary) to the Software Product architecture, development, and testing methods and tools.

Identifying modules that necessitate duplication to enhance fault tolerance and reliability
Considering that among primary sources of errors and failures in a system's operation are:
the principle of functional and economic feasibility formulated earlier should be applied under Integrated Reliability to elements, nodes, and activities that are critical to the operation of the System.
Practically speaking, this means the System's ability to have the properties required for use (not to be confused with desirable features).
The use of EDC technology provides for the following priority task in the design of the Software:
Fault prevention — Prevention of failure or malfunction.
Considering that solving this problem requires mechanisms for error detection (indication) before issuing control commands, this establishes the main condition for addressing other reliability issues in the System, if necessary:
Fault removal
Repairing, replacing, or updating components.
Fault tolerance
The ability to operate in the presence of faults or failures.
Fault forecasting
Estimates of the possibility of failure and its consequences.
Critical elements of a System are usually among:
...other business-specific critical modules
The solution of the fault prevention problem for critical modules is achieved by means of different redundancy methods. The choice of duplication method takes into account: the module function, operation conditions of the System, and possible causes of failures and errors.
The following methods are suggested, amongh others, in the practice of duplication, taking f(x) as an example/abstraction of any business operation:
This method is implemented in Code by duplicating the critical function f(x) with a duplicating function fD(x).
Implementation features:


Parameters and Elements Requiring Constant Monitoring
When developing a software product, the use of EDC technology provides solution of the following important tasks of the Integrated Reliability concept implementation in the System:
Control direct or indirect information received from the System on the operation of elements that are critical for the implementation of the System function and/or man-made failures. Including direct, indirect, or duplicate control:
Duplication of System control functions in the Software Product is an important element of Integrated Reliability.
Variable value data or sensor readings are stored in the Database as a matrix of feature descriptions of objects or numerical tables of values. In this case, all information received by the Software Product from the System is constantly monitored for compliance with the attribute and/or allowable values.


Data of the Statistical and Analyzing Module are important for development of the System and creation of its improved modifications. Integrating and utilizing Artificial Intelligence to improve System performance.
Case studies