Sumerians Invent Numbers and the Writing System. One of the earliest known civilizations was Sumer, in the Uru region of the Middle East, about five thousand years ago. The Sumerians soon dissolved into the Chaldeans, Jews and Babylonians, but not before developing a system of numbers and writing, which is the foundation of our system that we use today.
The First Software Programs. Many years after the Sumerians, the first computer was released: the Electronic Numerical Integrator and Computer (ENIAC) in 1946. Software programs for the early computers included everything: the hardware drivers, the data for the software, the business logic required to run the software…all these pieces were tightly integrated and mixed together in order for the program to work. In the beginning of my own career, I wrote programs like these, first in binary code, then in Assembly, and later, as software progressed, in programming languages such as FORTRAN, COBOL, C, and FORTH.
Object-Oriented Paradigm (OOP) and Layered Architecture. It took the industry several decades to transition to the Object-Oriented Paradigm (OOP) and Layered Architecture. While the early software programmers had to write hardware drivers (programs that communicate with the computer hardware, telling the hardware how to work properly), as software developed, the later programmers didn’t have to worry about that part of the program. Operating System and Database vendors took over the hardware driver programming, leaving the software developers to focus on the application layer, creating better-working, more complicated programs.
After many years of creating massive software packages, including monster applications, a serious problem arose: many pieces of software were repeated in thousands of applications, making maintenance extremely costly and time-consuming. Because every single piece of the software was tailor-made for a specific business, if there was ever a change in the business rules or services, Subject Matter Experts (SMEs) had to start a new project to rebuild the application.
Service Oriented Architecture (SOA) shifted development focus to business functions and related services, with the idea that applications must be designed as reusable connected services. This idea taught programmers to pay more attention to business specifics and build versatile pieces of software that could be used for many applications.
Knowledge-Driven Architecture*. The challenge, still, is the gap between the business and the programmer: business language is very different from XML, service terms, and programming languages. Knowledge-Driven Architecture is a new way of architecting systems based on business rules and scenarios. This step requires a new type of a developer - one who understands the semantics of business and can clearly express new ideas bridging the gap between the software, and its actual, practical use in the corporate or research worlds.
* Knowledge-Driven Architecture, Yefim (Jeff) Zhuk, US Patent, Streamlining development and driving applications with business rules & situation scenarios