It’s no surprise that business requirements and technology are changing faster than ever.
In the health care industry, for example, there are a growing number of Internet of Things (IoT) sensors used to monitor humans (blood chemistry, heart rate, etc.); massive amounts of data are being generated to find new correlations; and an increasing number of modern technologies are being used for diagnosis and cures. From an operational perspective, there are new quality control requirements for modern pharmaceutical manufacturing; new regulations; and the need for real-time monitoring and decision making for nearly everything health-related.
This is far from a complete list and, at any point in time, it’s not clear which technologies and approaches will be the most effective and remain useful in the long term.
It’s not just healthcare. Every industry requires unprecedented consideration and deployment of new technologies (IoT, Cloud, smartphones, artificial intelligence (AI), augmented reality (AR), additive manufacturing etc.) amid continuous change and competitive threats. This is becoming more and more challenging given the rapid pace of change in both technology advances and business requirements.
Today, an iterative and responsive process needs to exist between evolving business requirements and rapid technological advances. Experimentation and agility are critical. This demands new means of creating the necessary complex software systems. Without such mechanisms, companies will frequently fail as they try to combine more and more technologies and sources of information to produce modern applications. When they do “succeed,” it is by developing very complex low-level software applications. The result is the almost immediate creation of legacy applications that are difficult to improve and maintain. Agility is lost.
Today’s challenges are comparable to what occurred in the 1940s when it was determined that every high school graduate would have to become a telephone operator in order to handle the exponentially growing traffic. Innovation came to the rescue with automated switching systems.
Similarly, today’s thinking is that we need more and more software programmers to develop and maintain all of the software that will be needed to keep a business running. As in the past, innovation will come to the rescue. Mechanisms that automatically generate or change complex software are needed. The horse and buggy approaches of the past will no longer work. New development approaches that allow for experimentation — meaning rapid deployment and quick modification — are a must. What has been accomplished for the rapid development of graphical user interfaces must be done for all the components of modern software applications.
Historically, abstractions have been created to enable software development to occur at higher levels. Machine Language (Assembler) led to higher-level languages (Fortran and C), which led to even higher-level languages (Object Oriented and Fourth Generation languages). But these legacy computer languages aren’t able to meet today’s digital transformation demands.
New abstractions are needed for creating the far more complicated applications being contemplated today. New ways of creating software are needed. With a modern approach, easy-to-use abstractions that are visually understandable will automatically create software, place it where it is needed, and modify it in real time in the appropriate location.
A simple example will help illustrate this. Let’s say a machine needs repair. A high-level abstraction represented by a visual object can be chosen to automatically create all the software needed to assign a technician to the task based on parameters such as experience, skill level, availability and location. Then, another abstraction can automatically create the software needed to track the individual in space and time until the task is complete.
Additional visual abstractions can be used to specify collaborations between machines and humans in real-time. For example, a technician may override a software recommendation to do one fix, knowing from experience that another fix works better. In turn, a software application may be aware that actions taken by a human may result in unintended consequences. By using such high-level abstractions, software that would take months or years of development effort can be accomplished in days and require less expertise.
The reason most of the system software for an application can be visually specified is that most of a modern application is low level programming (communicating to devices, assuring reliability and scalability, appropriately placing logic in the right location, tracking assets, etc.). Having only the business logic specified at a very high-level dramatically reduces the work and the time. This is how modern applications should run.
In the last decade, companies have implemented standardized application packages, such as Salesforce, Workday or ServiceNow, to automate existing business functions. Now, companies need to create specialized applications for competitive advantage. It is no longer adequate to use off-the-shelf packages when real advantage stems from the effective use of new technologies for digital transformation. This requires new mechanisms to develop the systems needed to utilize them. Innovation will come to the rescue. To be successful, companies should look to new ways to create modern applications that provide maximum agility to support dynamic market demands.
Please add your comments below and Subscribe to the Blog to receive notifications of future blog posts.
Have a thought for an interesting posting on the topics of real-time business, digital transformation, event-driven applications, human-machine collaboration, edge computing, Internet of Things (IoT), or high-productivity/low-code development? If sos, please send a note to [email protected]