Uniface (programming language)
Encyclopedia
Uniface is a development and deployment platform for enterprise applications that can run in a large range of runtime environments, including mobile, mainframe, web, Service-oriented architecture
Service-oriented architecture
In software engineering, a Service-Oriented Architecture is a set of principles and methodologies for designing and developing software in the form of interoperable services. These services are well-defined business functionalities that are built as software components that can be reused for...

 (SOA), Windows
Microsoft Windows
Microsoft Windows is a series of operating systems produced by Microsoft.Microsoft introduced an operating environment named Windows on November 20, 1985 as an add-on to MS-DOS in response to the growing interest in graphical user interfaces . Microsoft Windows came to dominate the world's personal...

, Java EE
Java Platform, Enterprise Edition
Java Platform, Enterprise Edition or Java EE is widely used platform for server programming in the Java programming language. The Java platform differs from the Java Standard Edition Platform in that it adds libraries which provide functionality to deploy fault-tolerant, distributed, multi-tier...

 and .NET. It has been described as a 4GL RDBMS Rapid Application Development
Rapid application development
Rapid application development is a software development methodology that uses minimal planning in favor of rapid prototyping. The "planning" of software developed using RAD is interleaved with writing the software itself...

 (RAD) environment.

Uniface
Uniface
In archeology, a uniface is a specific type of stone tool that has been flaked on one surface only. There are two general classes of uniface tools: modified flakes—and formalized tools, which display deliberate, systematic modification of the marginal edges, evidently formed for a specific...

 applications are database- and platform-independent. Uniface provides an integration framework that enables Uniface applications to integrate with all major DBMS products, and a wide range of other technologies, such as mainframe-based products (CICS
CICS
Customer Information Control System is a transaction server that runs primarily on IBM mainframe systems under z/OS and z/VSE.CICS is a transaction manager designed for rapid, high-volume online processing. This processing is mostly interactive , but background transactions are possible...

, IMS), web service
Web service
A Web service is a method of communication between two electronic devices over the web.The W3C defines a "Web service" as "a software system designed to support interoperable machine-to-machine interaction over a network". It has an interface described in a machine-processable format...

s, SMTP
Simple Mail Transfer Protocol
Simple Mail Transfer Protocol is an Internet standard for electronic mail transmission across Internet Protocol networks. SMTP was first defined by RFC 821 , and last updated by RFC 5321 which includes the extended SMTP additions, and is the protocol in widespread use today...

 and POP
Post Office Protocol
In computing, the Post Office Protocol is an application-layer Internet standard protocol used by local e-mail clients to retrieve e-mail from a remote server over a TCP/IP connection. POP and IMAP are the two most prevalent Internet standard protocols for e-mail retrieval. Virtually all modern...

 email, LDAP directories, .NET, ActiveX
ActiveX
ActiveX is a framework for defining reusable software components in a programming language-independent way. Software applications can then be composed from one or more of these components in order to provide their functionality....

, Component Object Model
Component Object Model
Component Object Model is a binary-interface standard for software componentry introduced by Microsoft in 1993. It is used to enable interprocess communication and dynamic object creation in a large range of programming languages...

 (COM), C(++)
C (programming language)
C is a general-purpose computer programming language developed between 1969 and 1973 by Dennis Ritchie at the Bell Telephone Laboratories for use with the Unix operating system....

 programs, and Java
Java (programming language)
Java is a programming language originally developed by James Gosling at Sun Microsystems and released in 1995 as a core component of Sun Microsystems' Java platform. The language derives much of its syntax from C and C++ but has a simpler object model and fewer low-level facilities...

. Uniface operates under Microsoft Windows
Microsoft Windows
Microsoft Windows is a series of operating systems produced by Microsoft.Microsoft introduced an operating environment named Windows on November 20, 1985 as an add-on to MS-DOS in response to the growing interest in graphical user interfaces . Microsoft Windows came to dominate the world's personal...

, Windows Mobile
Windows Mobile
Windows Mobile is a mobile operating system developed by Microsoft that was used in smartphones and Pocket PCs, but by 2011 was rarely supplied on new phones. The last version is "Windows Mobile 6.5.5"; it is superseded by Windows Phone, which does not run Windows Mobile software.Windows Mobile is...

, various flavors of Unix
Unix
Unix is a multitasking, multi-user computer operating system originally developed in 1969 by a group of AT&T employees at Bell Labs, including Ken Thompson, Dennis Ritchie, Brian Kernighan, Douglas McIlroy, and Joe Ossanna...

 and Linux
Linux
Linux is a Unix-like computer operating system assembled under the model of free and open source software development and distribution. The defining component of any Linux system is the Linux kernel, an operating system kernel first released October 5, 1991 by Linus Torvalds...

, VMS
OpenVMS
OpenVMS , previously known as VAX-11/VMS, VAX/VMS or VMS, is a computer server operating system that runs on VAX, Alpha and Itanium-based families of computers. Contrary to what its name suggests, OpenVMS is not open source software; however, the source listings are available for purchase...

, IBM iSeries
IBM System i
The IBM System i is IBM's previous generation of midrange computer systems for IBM i users, and was subsequently replaced by the IBM Power Systems in April 2008....

, and z/OS
Z/OS
z/OS is a 64-bit operating system for mainframe computers, produced by IBM. It derives from and is the successor to OS/390, which in turn followed a string of MVS versions.Starting with earliest:*OS/VS2 Release 2 through Release 3.8...

.

Uniface can be used in complex systems that maintain critical enterprise data supporting vital business processes, such as web-based online shopping, financial transactions, salary administration, and inventory control. It is currently used by thousands of companies in more than 30 countries, with an effective installed base of millions. Uniface applications range from client/server to web, and from data entry to workflow, as well as portals that are accessed locally, via intranets and the internet.

Originally developed in the Netherlands by Inside Automation, later Uniface B.V., the product and company were acquired by Detroit-based Compuware
Compuware
Compuware Corporation is a software company with products aimed at the information technology departments of large businesses. The company's services also include testing, development, professional services automation, project and portfolio management, cloud-based collaboration and performance...

 Corp in 1994, but development is still based in Amsterdam
Amsterdam
Amsterdam is the largest city and the capital of the Netherlands. The current position of Amsterdam as capital city of the Kingdom of the Netherlands is governed by the constitution of August 24, 1815 and its successors. Amsterdam has a population of 783,364 within city limits, an urban population...

.

Uniface Products

The Uniface platform provides a range of development and deployment tools, most of which are packaged together in the Uniface Application Platform Suite (APS). The APS includes:
  • Uniface Development Environment—an integrated collection of tools for modeling, implementing, compiling, debugging, and distributing applications.
  • Uniface Flow—an environment for developing and deploying business processes.
  • Uniface View—an application integration portal that provides an organized desktop of Web documents, database reports, enterprise applications, and other corporate resources.


Uniface applications (including the Development Environment, Uniface Flow, and Uniface View) use a common runtime infrastructure, consisting of:
  • Uniface Runtime Engine—a platform-specific process that interprets and executes compiled application components and libraries.
  • Uniface Router—a multi-threaded process responsible for interprocess communication in Uniface applications. It starts and stops Uniface Server processes, performs load balancing, and passing messages between various Uniface processes.
  • Uniface Server—a server-based process that enables Uniface clients to access remote resources or to execute remote components. It acts as an application server, a data server, and a file server.
  • Uniface Repository—an SQL
    SQL
    SQL is a programming language designed for managing data in relational database management systems ....

    -capable DBMS used to store definitions and properties of development objects, process and organization models, and portal definitions.
  • Web server—Uniface bundles the Apache Tomcat Server for developing and testing web applications, but any web server can be used in a production environment.
  • Servlets—Java servlets that broker communication between a web server and the Uniface Server for Uniface web applications and web services.
  • Database connectors—drivers that handle the connection between Uniface and a variety of databases.
  • Integration tools—drivers, components, and APIs that handle communication between Uniface and third-party applications and technologies, including Java, CICS, IMS, LDAP, SMTP, POP, operating system commands, COM, and more.


In addition, the Uniface JTi (Java Thin Client Interface) can deliver client/server Uniface applications to virtually any computer connected to the Internet.

Uniface has a proprietary procedural language called Proc that is used to code application behavior. Uniface automates most input/output operations through its kernel and default code, so much fundamental behavior does not need to be coded.

Uniface Applications

Uniface applications are component-based, infrastructure-independent software programs that can create or use data stored in one or more databases or file-systems. They can be composite applications that include non-Uniface components created using other development tools, and they can be deployed in distributed client/server and web environments, as mobile applications or web services, and in mainframe environments.

Uniface has a variety of component types that are intended for use in different layers of a multi-tier application architecture.

Components for the presentation tier are responsible for the user interface, and include:
  • Forms—interactive screens for displaying and updating data in a client/server environment.
  • Server Pages—interactive pages for displaying and updating data in a web environment.
  • Reports—layouts for presenting data in a printed output.


Components for the business logic tier handle business rules and task-specific behavior and have no user interface:
  • Services—provide processing and business logic functionality when called by other components, either locally or remotely.
  • Session Services—centralize complex business rules affecting multiple data entities, such as task-specific behavior, transactions, and referential integrity.
  • Entity Services—centralize simple business rules for single data entities.


The data access tier contains physical database structures captured in the Uniface application model. Uniface ensures physical data access by encapsulating SQL in its DBMS connectors. Network and middleware access are encapsulated by the middleware drivers and the Uniface Router.

The runtime engine executes the application components. It displays presentation components using the appropriate user interface connector (either GUI or character-based), and sends and receives data via a DBMS connector.

Application Development

Uniface applications are developed on with the Uniface Development Environment. Originally, it was possible to develop on Apple and DEC platforms; now, only Windows
Microsoft Windows
Microsoft Windows is a series of operating systems produced by Microsoft.Microsoft introduced an operating environment named Windows on November 20, 1985 as an add-on to MS-DOS in response to the growing interest in graphical user interfaces . Microsoft Windows came to dominate the world's personal...

 is supported.

Uniface applications development is model-driven and component-based. The data structure, business rules, and default behavior of the application are captured in the Application Model. Model definitions can be reused and inherited by components, which can override inherited definitions and provide component-specific behavior and characteristics. Templates improve productivity and enforce consistency when defining models.

Application Model

The application model defines entities (tables), fields, keys (indexes) and relationships together with referential integrity. Each entity and field in the model has properties and a set of triggers. Business rules are added to the model declaratively by setting properties and procedurally by adding Proc code (Uniface's procedural language) in triggers.

Triggers are containers for code. Some triggers represent user or system events, for example Occurrence Gets Focus, Read or Leave Field. Others cover matters such as validation or act as place holders for methods associated with the particular object.

The use of model-level triggers enables Uniface to collect properties and behavior within business objects, separating logical from the physical data structures. It makes it possible to define default behavior once, for reuse throughout the application, speeding development and facilitating the 3-tier application architecture.

Components

Objects described in the application model are reused by components. Developers embed objects from the model on the component by drawing them on the layout canvas (for presentation components), or inserting them into a tree view of the component structure. They can also add component-level objects that are not in the application model, such as control fields, menus, and component variables.

The properties and triggers defined in the application model are inherited by being copied into the component. The definitions can be changed at the component level to provide specific functionality. This breaks the link between the application model and the component (although it is possible to restore the link to the model). If the model code or properties are changed at the model level, all components holding that object need only be recompiled to collect the new definitions. This provides benefits in maintenance and ensures that the rules associated with the object are available wherever it is used.

Uniface Repository

Uniface maintains a database of its own metadata for the purposes of reuse—application models, component definitions, component layouts, procedural code, and so on. The repository is proprietary and intended for access via the Uniface Development Environment, to ensure repository integrity. However, the repository structure is documented, making it possible (though not recommended) to interface directly with it for, for example, reporting. However, the March Hare company have developed a "UD6" driver (see "external links" below), allowing the Uniface repository to be stored in xml tables.

By using a centralized repository, application development can be shared over teams of software developers. Uniface can integrate with any source code control system (SCCS) that supports the Microsoft Common Source Code Control Interface Specification. The SCCS functionality available within Uniface depends on the SCCS used, because software vendors have interpreted and implemented the MS CSCC API differently. As a result, the supported functionality and behavior vary depending on the SCCS.

Application Deployment

Uniface applications can be deployed on platforms from mainframe through mobile, without changing the code. The components (and other objects such as startup shells, menus, toolbars (panels), glyphs, global and included Proc entries) are compiled into runtime objects that can be packaged into zip files and deployed onto any platform. The runtime objects are executed using a virtual machine and a platform-specific interpreter. (Java and other languages later followed Uniface in this respect). Components can be compiled on one machine and executed on another, providing the Uniface Virtual Machine is present.

The Uniface Router and Uniface Server make Uniface scalable, balanceable and make is possible to run processes asynchronically.

Database Connectivity

Uniface accesses the many databases and file systems it supports by means of database connectors (or drivers). DBMS connectors map and convert Uniface data types to the most suitable format of the particular storage medium. At runtime, it is possible to pass parameters to invoke (or disable) database-specific extensions. Provided the database connector is licensed, it is possible to convert between different data sources. Uniface also provides an API, the Database Connector Interface, which can be used to create proprietary connectors for any SQL
SQL
SQL is a programming language designed for managing data in relational database management systems ....

-based database.

Licensing

Licensing is managed through the Compuware Distributed License Manager (DLM), a server based system of distributing licenses to clients on request, precluding the need for them to be held locally.

History of Uniface

Originally called UNIS, the product was created in The Netherlands in 1984 by Inside Automation, a company that was headed by Bodo Douqué, with Frits Kress as Technical Director. By 1986, both the product and the company had changed their name to Uniface. (An early logo for the product included a red capital A which reflected the red capital A in the Inside Automation logo.)

Uniface was developed on the principles of the American National Standards Institute, (ANSI), 3-schema architecture
Three schema approach
The three-schema approach, or the Three Schema Concept, in software engineering is an approach to building information systems and systems information management from the 1970s...

. First proposed in 1975, this was a standard approach to the building of database management systems consisting of 3 schema (or metamodels):
  • Conceptual schema—definition of all the data items and relationships between them. There is only one conceptual schema per database. Uniface implements the conceptual schema as the Application Model (in various Uniface versions known as the Business Object Model and the Application Object Model).
  • External schema—different external (user) views of the data. There can be many external schemas for a database. Uniface implements external schemas as components. During Uniface's evolution, the External Schema became forms; hidden forms, which ran in the background without displaying to the user, became services; services split into session services for objects of the business tier and entity services that may be either business or data tier. Forms that were printed instead of being displayed became report components. The server page (USP) was introduced for web development, and later the dynamic server page was introduced to support Web 2.0 functionality.
  • Internal schema—definition of the physical representation of the stored data. Uniface leaves the internal schema to the many relational database systems to which it could be connected, enabling it to be database-independent.


Uniface was developed on the DEC-VAX machine, using the native VAX file-management system RMS. A vestige of this is still seen in today’s product by its continued use of a “GOLD” key to change modes (DEC VT terminals actually had a gold or yellow key on the keyboard. Today the “GOLD” is simply mapped to the numeric keyboard + key, or a function key).

Early versions of the product were bundled with the Sybase RDBMS under the name FastBuild, although it was not limited to accessing only that database.

Uniface has continuously evolved to handle new technologies and application architectures. This has been critical to its success, because applications built with Uniface can be migrated, updated and modernized without losing the original development investment.

Uniface Versions

Uniface Version 3 (1986):
Uniface 3 was the first public release. It featured support for multiple databases (RMS, Oracle, C_ISAM, Ingres, and RDB); virtual machine interpretation; the Structure Editor, the Uniface text and command editor.

Uniface Version 4 (1988):
Uniface 4 improved the text editor (now form editor), improved printing and display support, introduced support for MS-DOS, and added a CASE tool interface.

Uniface Version 5 (1990):
Uniface 5 enabled client/server deployment with the introduction of remote database access through Polyserver. It introduced graphical user interface via the Universal Presentation Interface (UPI). Database support was extended to a total of 13 databases and file systems, and it was now available on DOS, VMS, OS/2, Stratus VOS and UNIX. Japanese character support was also introduced.

Uniface Six (1994):
Uniface Six completed the move to fully graphical development environments. It included the graphical form painter and application model editor; improved deployment through Dynamic Object Libraries; added support for Microsoft Object Linking and Embedding (OLE); included support for Apple Macintosh; added permissions control; integrated version control; added Personal Series reporting tools (although these were later removed when the 3rd party decided not to enhance its product); wider platform support.

Uniface Seven (1997):
Uniface Seven focused on component integration for both Uniface and external components through the introduction of the Uniface Request Broker (URB) architecture. The URB supports bi-directional and synchronous or asynchronous communication between components. As well as remote data access, it added partitioned Application Servers and messaging. Uniface Seven also delivered the first Uniface web development and deployment tools with Web Application Server and Uniface Request Dispatcher.

Other enhancements included new component types (Services, Server Pages, Reports); Signature Editor and Assembly Workbench; subsystems; operations; non-modal forms; component instances; improved editors and navigation; enhanced editor plug-in; new debugger; integrated online help; component templates; Web Application Server; improved validation; Uniface Name Server and graphical partitioning manager.

Uniface Seven also saw the introduction of several other tools:
  • A tool for the modeling, integration and management of business processes. This functionality became Optimal Flow under Uniface 8, then Uniface Flow under Uniface 9.
  • A business integration portal, initially called Optimal View, and later Uniface View
  • Uniface—a server-based, thin-client solution for delivering web-enabled applications over the Internet or Intranet, providing high-performance in low-bandwidth connections.


Uniface 8 (2001):
Uniface 8 brought about major changes in the area of process integration. The Uniface Router and Uniface Server provided scalable, balanced deployment. The Web Request Dispatcher (WRD) replaced the URD, improving performance. Support for web services, with SOAP and XML, was introduced. Connectivity and interoperability were improved and a method for implementing a 3-tier application architecture was introduced.
Connectors for SOAP, COM, CORBA and MQSeries were added; window and file management was improved; a new deployment utility) was introduced, improving application distribution; component subtypes for 3-tier architecture were added; handles were added for component instances, and automatic garbage collection was added.

Uniface 9 (2006):
The Uniface 9 release focused on GUI and usability improvements, thin deployment, and integration. Support for Windows Mobile was added, and configuration and deployment was simplified using zipped archives. Support for Unicode improved what was an already impressive multilingual capability, and improvements in web development and XML handling brought Uniface further into line with industry standards. Dynamic field movement in form components removed some old barriers to flexibility.

Other features included improved color handling, dynamic menus, an XML API, a diagram editor for the Application Model; cross-referencing functionality to support refactoring and deployment, and enhanced web services functionality.

Uniface 9.4 (2010):
Despite being a point release, Uniface 9.4 introduced enough major new functionality to be considered a major release. The major focus was on rich internet application (RIA) functionality, making it possible to develop Web 2.0 applications with the rich functionality of client/server applications using the same tools and methodologies used to develop classic client/server applications. Language and locale support was substantially improved, as was support for HTML email, and security and encryption.

External links

The source of this article is wikipedia, the free encyclopedia.  The text of this article is licensed under the GFDL.
 
x
OK