Rationale
Subtitle: Why is software hard?
The main motivation behind the development of Adapt is the fact that software development has always been a difficult and complex process. As a result, the cost of developing high-quality software can be very great and that a high level of expertise is normally required. In addition, it is often extremely difficult to later modify existing software in order to correct problems, adjust to developments in technology, or cope with changing user requirements.
It is easy to find evidence for the problems relating to software development. Many projects overrun dramatically, cost far more than originally estimated and then do not provide all the facilities that were originally required. In some cases, due to the long development times needed, the requirements change significantly before the development is completed. Also, projects are often cancelled before completion as it becomes clear they are unlikely to ever work satisfactorily. Similarly, existing software is in many cases not upgraded as often as is necessary because it is just too difficult or expensive to do so. This can be for a variety of reasons, such as poor documentation, too much complexity, reliance on outdated technology etc. The result is that when revisions to some software become necessary for any reason then the difficulties involved in modifying the software can lead to it becoming unreliable, less effective, being scrapped and a totally new project started.
Even when a software development project goes well there can often still be issues because the needs of the end-user were not sufficiently understood initially or have simply changed since the project was originally conceived. Very often the situation is made worse because of the need for software specialists to be used to develop the software even though they may not fully understand the user requirements or how the software will be employed. A much better approach would be if those who fully understand the needs to be fulfilled were able to take a primary role in the design and development.
The fundamental reason for the current situation is that the software architecture used in computers today and the techniques employed in software development are essentially unchanged from those used in the very earliest systems. The main reason for this is that software development involves a number of different tools that interact closely together. Whilst there have been many incremental improvements to individual tools the scope for revolutionary changes has been limited by the need to still fit in with all the others.
Today's computers are vastly different in performance and size from the early ones on which the existing software development architecture was devised. This means that the major factors and limitations that governed its design no longer apply and that by taking a completely new approach the whole process can be dramatically improved.
Writing software shouldn't be as hard as it is; after all, it doesn't exist in a physical form and therefore ought to be simple to change!