ARCH Project Goals ================== [Contents] [Contents] [History] [Purpose] [Vision] [Primary Goals] [End] [History] 19991231 Created 20000107 Revised goals 20000202 added Full Access to Standard System [Purpose] This document is to outline the goals and vision of the ARCH project in its entirety. In addition to conceptual desires it is the intent of this document to give key technical details as required to understand the implementation of such a system and to see the applicability through examples. [Vision] This project, termed "ARCH" for a reason that I can no longer recall, is to be a unification of my vision for a complete abstract software development system. Over several years I have explored several different methodologies for software design and development. I have had the opportunity to look at a variety of programming languages and discern their advantages and disadvantages in comparison to others. Additionally I've recently done work with COM and CORBA (I will continue on the CORBA route for I feel it has a strong future). It is without surprise that there is a great degree of richness in the availability of languages and architectures, it is disappointing to note there is very little variation in paradigms, or methodologies as you may. Most available techniques tend to be object-oriented in nature lately, there are a few structured systems out there still though. Within both the OO world, and the structured world, most of the languages are still quite procedural (focused on flow), with the exception of a few functional languages that appear to be reserved only for research work. Recently the introduction of COM and CORBA have introduced the first new real forces in the changing of way things are done. They both have their problems, however COM is quite hopelessly lost in standard Microsoft complexity and rarely works correctly on a single platform. Still, even COM and CORBA still have kind of an old approach to the issue: CORBA has simply made OO distributable and cross- platform, in contrast, COM has just made OO confusing. So this all leads back to what I want to get out of this project. There are several different levels of what I hope to achieve, the primary one is a fundamental method of design that allows a new level of expressiveness. My goal is to capture a technique that in ways is the set from which existing paradigms can be derived from, and then push it a little further. The real goal is in a theory towards abstraction, what this theory really means is not really clear even in my mind. Abstraction is the goal of making something indivisible as to approach simplicity in the reduction of duplication, that is, making all things that appear equal actually be equal. Parallels can be drawn to the study of user interface, especially in relation to affordances, if something looks like something can be done on it, then it should be done, and it should be done the expected way. Universality is also an intent of the abstraction. In any similar situation the same options should be available; if in one window you can print, then in all windows you should be able to print. There are many goals of this ARCH, abstract theory, and this document is here to lay those out, and further explain the vision for the system. [Primary Goals] The primary goals of the system have to be broken down into levels, for at different levels different goals are to be attained. -=Design=- These are the goals relating to what the system should offer in the terms of system design. Independent - The system must be fully descriptive without reliance on external design techniques / methodologies. Abstract - The design methodology must express a design principal, not a programming principle. Simple - No aspect of the fundamental system may have the possibility of being subdivided, eliminated, or mutable on application. Free Flow - The system must fundamentally provide for any number of related and unrelated courses of execution to start and end with any point of origin/termination. Free Life - The system must fundamentally provide for creation, destruction, metamorphisis, and migration at any time in a course of execution as provided in Free Flow. Free Form - The system must fundamentally provide for arbitrary relationships in any case as described for Free Life and with any requirement imposed by Free Flow. -=Implementation=- These are the goals relating to the implementation of a system created by the above stated design practice. Unrestricted - The system should not be bound by the limitations of any particular language and operating system. Compatible - The functionality of the system should be attainable via any language and operating system. Commonality - The basics of implementation for a system created by a design should be representable in an intermediate form useable for any implementation. Interopable - The system should be able to communicate with other like systems, other similar systems with unlike core parameters, and other unrelated systems. -=Standard System=- Universal - Operations on a component must be universally available for similar components. Complete - The system must represent a complete system for development, without a need to directly use the underlying operating system. Mutable - No component of a system may have special status that precludes their replacement, modification, or removal. Open - All components of a system must allow for the introduction of added functionality and extension of the system without the breaking of the system. Full Access - Components that are built on underlying operating system APIs should provide some mechanism to gain access to the native data used, if possible, to control those APIs. Use of such access is however excluded from consideration in the meeting of any other Arch goals. [End] This is the end of the "ARCH Project Goals" document.