Programming is about divide and conquer: Divide the problem at hand into small manageable units and thereby conquer the complexity.
The Electronics industry has made remarkable progress following this philosophy: They have created reusable modules (ICs - Integrated Circuits) with standardized interfaces. These modules may again be hooked up to create complex systems. There is a standardized way to solve common problems.
The Software industry has not made the same progress. Definitions for software components exist, but the data types exported through component Interfaces are not standardized. Most programming languages allow arbitrary complex data types in the Interface definitions, making reuse of the components difficult. In contrast the interface to most Integrated Circuits is defined through standardized current and voltage levels.
Objective Technology uses standardized simple data types for component interfaces such as strings, numbers and arrays, while the component may use arbitrary complex data types internally. This approach maximizes reuse and at the same time cashes in on the benefits of complex data structures while writing the component.
Modern Software tools provides the end user with a wealth of ways to solve any problem: This freedom is a two edged sword: It provides a path to improving once programming skills, but it also means that a problem may never be solved in the same way twice! This undermines the efficiency in the long run, since fellow programmers are not recognizing each others code. This again makes individual programmers indispensable which is a dangerous concept for any organization.
A car mechanic would never be efficient at tracking down problems if he used different techniques / tools each time, yet this is taking place too often in the software industry..
Software Application Frameworks that provides a well defined way to solve problems makes software development much more efficient. We at Objective Technology have developed and used such Frameworks for 15 years. Read more about it on our Frameworks page.
The figure above shows a State Diagram. State diagrams is one of many efficient ways of dividing a problem into manageable units. The pictures in the right margin shows examples of small, easy to understand modules within a State or a Transition in the State diagram