A Framework of Intelligent Software, an Aspect from Control Theory
1. Intelligent software: capability of communication and control
In his famous 1948 book, Cybernetics, or Control and Communication in the Animal and the Machine, the renowned MIT professor Norbert Wiener introduced the concept of Cybernetics, to describe the intelligent behaviors in both human (and other living systems) and machines. From this book, we conclude that any intelligent behavior must possess the capability of communication and control. The magnitude of these capabilities determines the level of intelligence. In this sense, the study of the control and communication within the combined human-software system is called Software Cybernetics.
Interestingly, a detailed framework of intelligent mechanism is provided in Active Disturbance Rejection Control (ADRC) by Han (https://ieeexplore.ieee.org/document/4796887 ). ADRC actually provides a dynamic structure to function well even under unknown disturbances, which is the essence of the intelligence. The structure of ADRC can be expressed in the following diagram:
With these theoretic foundations, intelligent software should consist the following three parts:
1) The communications between users and software (Input/Output)
2) Identify what user needs that is not available in software (Disturbance Identification)
3) Controlling the software behavior to meet user’s needs (Controller)
2. NLP Capability: communications from user to software
In the most software, users communicate to the software through the following ways:
a) Menu navigation by mouse clicks
b) Content search by typing key words in the search tools
Both of these approaches require users to learn terms and concepts that are defined in the software, such as feature name and tool name. This is the language defined by software vender. Users must learn and be familiar with this ‘foreign language’ to communicate with software. This is a major hurdle for users to use software.
The most effective way for users to communicate to the software is to use their own language, which is the natural human language. The natural language processing (NLP) capability in the software is a key element for intelligent software. In recent year, NLP technology has become so mature that anyone can develop a basic NLP program based on open source libraries. In an intelligent software system, NLP needs to provide the following functions:
1) A input UI that allows users to express their needs using natural language to perform following task:
a) Retrieve information (data, document, related knowledge, …) provided by software
b) Find features and tools of the software
c) Perform a certain workflow
2) The software’s responses of user’s natural language inputs should include:
a) Provide the requested information if available
b) Provide the tools and features if available
c) Setup and execute the workflow that most match user’s question based on current software capability
d) Inform users when user requests cannot be fulfilled in the software
3) The software needs to save those unfulfilled requests into a centralized user request database. This unfulfilled user requests will be later used by a machine learning process to extract and define future software ductions and features.
3. Recommender Systems: communications from software to users
In traditional way, software communicates with users in a reactive way, meaning only to response to user’s request. Software is treated by users as a tool rather than a partner. In last decades, the recommender system has been widely used in the online retail system such as Amazon shopping, Netflix movie renting. The recommender systems collect and analyze user activity data and proactively provide contents to the users based on user’s preference. Recommender systems provide a proactive communication from software to users. If implemented correctly, the software can guess what user may need and provide the information and tools without user’s asking. This makes the software as a ‘personal assistant’, a key element to intelligent software.
1) How to make recommender systems work?
These capabilities must be developed to make a recommender system work:
a) User data (user profile and usage data) collection and normalization services
b) Centralized user data storage
c) Centralized recommender services that utilize different recommendation methodologies
d) A system to monitor the effectiveness of recommender system and make adjustment in real time or send alert to human intervention.
2) What a recommender system can do?
Provide information, tools/features or workflow users are likely to use before users’ asking.
4. Realtime Gap Analysis: identify and predict user’s needs and software gaps in real time
With NLP capability, users can fully express their needs though the natural language input. At same time, the NPL process will save those unresolved requests into a dedicated User Request Database. This database is the key to identify the gap between users’ need and the software.
With machine learning approaches, the unresolved requests, along with user’s activity data can be used to identify new features and predict future user needs. These new features and predictions will be used to drive new development of the software.
The new NLP-Request-Feature process has the following advantages comparing to traditional user needs collection and analysis:
1) The data is collected in real time and analysis can be done any time
2) We can understand user’s need even the user’s business changes over time
3) All user’s requests will be analyzed over time
4) Can apply machine learning approach to get more reliable predication of user’s needs.
2. Open platform: the most efficient way to meet user’s needs
With a better understanding of user’s needs from Realtime Gap Analysis, what is the most efficient way to fill those gaps? Based on Software Cybernetics, we need build an efficient mechanism to control the software features to fit user’s needs.
It is a well-known fact that the large software system release takes a long development cycle and high risk. This is one of the major reasons that the software systems are almost always lagging behind user’s needs. The success of mobile computing software systems such as iOS and Android points to a solution: Open Application Platform. Open Application Platform can provide the most efficient way to fill the gaps between what users need and the software. Here are basic characteristics of an Open Application Platform:
1) Open to third party applications
2) Solid data management
3) Realtime gap analysis through NLP capability
4) Comprehensive API functions
The key for Open Application Platform to success is its Openness, Data Management and Realtime Gap Analysis with NLP capability. Openness to third party applications and a strong data management can ensure the new features to be developed quickly with low cost. The Realtime Gap Analysis through NLP is the mechanism to identify gaps between user’s needs and what the software can deliver. Combining them together, these three components create a control loop in the software system which goal is to meet user’s needs.
The following diagram is framework of an Intelligent Software system:
The detail requirements of each components of this framwork will be discussed in a separate document.
Very nice article 👍👍
A clear and succinct summary of an excellent idea!