Frameworks are reusable designs for software system processes, described by the combination of a set of objects and the way those objects can be used. More particularly, frameworks are pre-built sets of code, tools, and documentation that help programmers develop reliable systems more easily than from scratch. Following are some types of known frameworks.
Metacomputing frameworks use the Internet as a resource for concurrent computations. For example, Globus provides the infrastructure to create networked virtual supercomputers for running applications. Similarly, NPAC at Syracuse seeks to perform High Performance Computing and Communications (HPCC) activities using a Web-enabled concurrent virtual machine. Javelin is a Java-based architecture for writing parallel programs, implemented over Internet hosts, clients, and brokers. Legion is a C language based architecture and object model for providing the illusion of a single virtual machine to users for wide-area parallel processing. Javelin is a Java-based architecture for writing parallel programs, implemented over Internet hosts, clients, and brokers.
Component frameworks have the goal of creating distributed system components. CORBA is an architecture for distributed object computing that allows for language-independent use of components through a standardized Object Request Broker. The ADAPTIVE Communication Environment (ACE) provides an integrated framework of reusable C language wrappers and components that perform common communications software tasks; this framework is amenable to a design pattern group useful to many object-oriented communication systems. Hector is a Python-based distributed object framework that provides a communications transparency layer enabling negotiation of communication protocol qualities, comprehensive support services for application objects, and a four-tiered architecture for interaction. Aglets provide a Java-based framework for secure Internet agents that are mobile, moving state along with the program components themselves. OpenDoc is a component software architecture that allows for the creation of compound documents. JavaBeans is a platform-neutral API and architecture for the creation and use of Java components.
Communication frameworks relate to concurrent communication of processes. The Communicating Sequential Processes (CSP) model assumes each process is active for the entire duration of the computation. Examples include Fortran M and recent ORB services. One ORB service is the CORBA process model, implemented using the Basic Object Adaptor (BOA) of a given Object Request Broker (ORB), which maintains that only the broker stay active for the entire duration of the computation. Like Client-Server, Remote Procedure Call, and Remote Method Invocation systems, CORBA only spawns remote processes to perform isolated remote tasks.
Collaborative Technologies allow collaboration using the Internet. Synchronous collaboration includes teleconferencing, provided by applications such as Netscape CoolTalk, Internet Relay Chat, Internet Phone, and White Pine Software CU-SeeMe, and shared whiteboards, provided in applications such as CU-SeeMe, wb, and Microsoft NetMeeting. Current agreement protocols has made synchronous collaborations more flexible, but much research remains to be done in infrastructure for asynchronous tools such as concurrent version-control.
The Open Software Foundation's Distributed Computing Environment (DCE) is an example of a commercial distributed system framework. DCE provides a suite of tools and services to support distributed system creation primarily in the C programming language. These services include a distributed file system, time synchronization, remote procedure calls, naming, and threads.