This article needs additional citations for verification . (November 2007) (Learn how and when to remove this template message) |
A User Interface Management System (UIMS) is a mechanism for cleanly separating process or business logic from Graphical user interface (GUI) code in a computer program. [1] UIMS are designed to support N-tier architectures by strictly defining and enforcing the boundary between the business logic and the GUI. A fairly rigid Software architecture is nearly always implied by the UIMS, and most often only one paradigm of separation is supported in a single UIMS. A UIMS may also have libraries and systems such as graphical tools for the creation of user interface resources or data stores.
Generally, you cannot easily use multiple UIMS systems at the same time, so choosing the correct model for your UIMS is a critical design decision in any project. The choice of system is dependent upon the system(s) you wish to create user interfaces for, and the general style of your application. For example, if you want to create a web based front end, or just a standalone application or both that would be an important factor in choosing. If you want to deploy to the Macintosh, Windows and Linux, that would further influence your choice of a UIMS system.
There are many UIMS approaches described in research papers. However, there are not very many systems available commercially or through open source.
In a frequently cited body of work, Foley and Wallace describe a "linguistic model" for user interface management consisting of a Presentation Layer, a Dialog Control layer and an Application layer. These layers correspond to the lexical, syntactic and semantic layers from formal language theory. While Foley's model is theoretically enlightening, it does not propose a specific practical system for separating code. There are also many interesting border cases that don't fall cleanly into one of these layers.
A more directly applicable theory of user interface management is the Model-view-controller design pattern, which is described in detail in its own article. A recent variant of MVC is the Model-view-presenter model which is similar to MVC, but has some interesting insights into the problem.
A functional based system approaches all user interface actions as interfaces for functions. Dialogs exist solely to collect parameters for functions that are called when the dialog is closing. Menu Trees are one family of model implementations that follow this pattern.
Grammar based UIMS provide a specialized language for describing the user interface. Usually, this is a special language designed specifically for the presentation of user interface elements.
The Editing Model is a specialization of grammar based UIMS. They present all interaction as direct presentations of underlying presentation objects. Essentially, using the grammar of the programming language as the grammar for the GUI. A scroll bar may present an integer, a check box may present a boolean, a function is presented as a button or menu item. A dialog box or a menu is a presentation of a complex object containing properties and functions. A controller layer automatically synchronizes the object with the presentation and vice versa through a two way connection provided by an Observer pattern. Enable/disable and validation present special challenges under the editing model, but they can be dealt with. A commercial program, ViewSoft Internet, was briefly available in the 1990s that implemented a general purpose GUI builder based upon the Editing Model.
Transition Networks present the user interface logic as a kind of intelligent flowchart. In an Event Language model, the computer language is designed around the handling of events. This is essentially the approach taken in Microsoft's .Net languages C# and Visual Basic.Net with their delegate and event language structures.
Other models include Hypertalk, Production Systems and Declarative Languages.
Important research in this field has been done by Brad Myers, Dan Olsen, Scott Hudson and James D. Foley.
The graphical user interface is a form of user interface that allows users to interact with electronic devices through graphical icons and audio indicator such as primary notation, instead of text-based user interfaces, typed command labels or text navigation. GUIs were introduced in reaction to the perceived steep learning curve of command-line interfaces (CLIs), which require commands to be typed on a computer keyboard.
In software engineering, multitier architecture or multilayered architecture is a client–server architecture in which presentation, application processing and data management functions are physically separated. The most widespread use of multitier architecture is the three-tier architecture.
Cocoa is Apple's native object-oriented application programming interface (API) for its desktop operating system macOS.
Model–view–controller is a software design pattern commonly used for developing user interfaces that divides the related program logic into three interconnected elements. This is done to separate internal representations of information from the ways information is presented to and accepted from the user.
In software engineering, the terms front end and back end refer to the separation of concerns between the presentation layer, and the data access layer of a piece of software, or the physical infrastructure or hardware. In the client–server model, the client is usually considered the front end and the server is usually considered the back end, even when some presentation work is actually done on the server itself.
A graphical widget in a graphical user interface is an element of interaction, such as a button or a scroll bar. Controls are software components that a computer user interacts with through direct manipulation to read or edit information about an application. User interface libraries such as Windows Presentation Foundation, GTK, and Cocoa, contain a collection of controls and the logic to render these.
A user interface markup language is a markup language that renders and describes graphical user interfaces and controls. Many of these markup languages are dialects of XML and are dependent upon a pre-existing scripting language engine, usually a JavaScript engine, for rendering of controls and extra scriptability.
A web framework (WF) or web application framework (WAF) is a software framework that is designed to support the development of web applications including web services, web resources, and web APIs. Web frameworks provide a standard way to build and deploy web applications on the World Wide Web. Web frameworks aim to automate the overhead associated with common activities performed in web development. For example, many web frameworks provide libraries for database access, templating frameworks, and session management, and they often promote code reuse. Although they often target development of dynamic web sites, they are also applicable to static websites.
Trygve Mikkjel Heyerdahl Reenskaug is a Norwegian computer scientist and professor emeritus of the University of Oslo. He formulated the model–view–controller (MVC) pattern for graphical user interface (GUI) software design in 1979 while visiting the Xerox Palo Alto Research Center (PARC). His first major software project, "Autokon," produced a successful CAD/CAM program which was first used in 1963, and continued in use by shipyards worldwide for more than 30 years.
Presentation–abstraction–control (PAC) is a software architectural pattern. It is an interaction-oriented software architecture, and is somewhat similar to model–view–controller (MVC) in that it separates an interactive system into three types of components responsible for specific aspects of the application's functionality. The abstraction component retrieves and processes the data, the presentation component formats the visual and audio presentation of data, and the control component handles things such as the flow of control and communication between the other two components.
Presenter first is a software development approach that combines the ideas of the model–view–presenter (MVP) design pattern, test-driven development, and feature-driven development.
Naked objects is an architectural pattern used in software engineering.
The ASP.NET MVC is a not actively developed web application framework developed by Microsoft, which implements the model–view–controller (MVC) pattern. It is open-source software, apart from the ASP.NET Web Forms component which is proprietary.
Model–view–presenter (MVP) is a derivation of the model–view–controller (MVC) architectural pattern, and is used mostly for building user interfaces.
Model–view–adapter (MVA) or mediating-controller MVC is a software architectural pattern and multitier architecture. In complex computer applications that present large amounts of data to users, developers often wish to separate data (model) and user interface (view) concerns so that changes to the user interface will not affect data handling and that the data can be reorganized without changing the user interface. MVA and traditional MVC both attempt to solve this same problem, but with two different styles of solution. Traditional MVC arranges model, view, and controller in a triangle, with model, view, and controller as vertices, so that some information flows between the model and views outside of the controller's direct control. The model–view–adapter solves this rather differently from the model–view–controller by arranging model, adapter or mediating controller and view linearly without any connections whatsoever directly between model and view.
Web Dynpro (WD) is a web application technology developed by SAP SE that focuses on the development of server-side business applications. For modern releases the user interface is rendered according to the HTML5 web standard. Since Netweaver 754 a touch enabled user interface is available. The newly released versions usually follow the SAP Fiori design principles. One of its main design features is that the user interface is defined in an entirely declarative manner. Web Dynpro applications can be developed using either the Java or ABAP development infrastructure.
ZK is an open-source Ajax Web application framework, written in Java, that enables creation of graphical user interfaces for Web applications with little required programming knowledge.
Model–view–viewmodel (MVVM) is a software architectural pattern that facilitates the separation of the development of the graphical user interface – be it via a markup language or GUI code – from the development of the business logic or back-end logic so that the view is not dependent on any specific model platform. The view model of MVVM is a value converter, meaning the view model is responsible for exposing (converting) the data objects from the model in such a way that objects are easily managed and presented. In this respect, the view model is more model than view, and handles most if not all of the view's display logic. The view model may implement a mediator pattern, organizing access to the back-end logic around the set of use cases supported by the view.
MVC4WPF is an open-source, extensible, automated code pattern developed at Information Control Corporation for Windows Presentation Foundation (WPF) development based on the Model-View-Controller (MVC) and Presentation-Abstraction-Control (PAC) patterns. It was released to the general public as an open source project on July 23, 2009. It depends on Microsoft's .NET Framework 3.5 and Visual Studio 2008 for functionality. The MVC4WPF source code for the 0.9 beta is available for download on CodePlex.
The entity-control-boundary (ECB), or entity-boundary-control (EBC), or boundary-control-entity (BCE) is an architectural pattern used in use-case driven object-oriented software design that structures the classes composing a software according to their responsibilities in the use-case realization.