Visualize Systems Ltd - for all your ASP, ASP.Net, Intranet, Internet web development needs Skip to main content
homeprojects and clientsservicesresources
site informationcontact information
resources
Summary

Publications

Latest

Resources - Publications

A Guide to...
Interface Development Environments

Dave Clarke, Interfaces, Vol.32, Summer 1996. ISSN: 1351-119X

What are User Interface Development Environments?

Over the past few years, various definitions have been proposed for these now ubiquitous pieces of software. Essentially, any software tool which aids in the design, construction and possibly run-time management of the user interface of a system, can be classed as a user interface tool. In the copious amounts of literature on the subject you will see a variety of terms and acronyms that have been proposed to cover the various categories of tools on offer. User Interface Management System, or UIMS for short, has probably proved to be the most popular in academia and research, although it is a term that has been rarely used in commercial domains. This has now been largely superseded anyway though, by terms such as User Interface Development Environment (UIDE), User Interface Software Tool (UIST), Interface Builder, Interface Development Tool and Application Frameworks. The reason for this is probably because the term UIMS implies that the tool is concerned only with run-time management issues, such as sequencing the dialogue and controlling interactions with the user, and does not encapsulate other issues such as user interface design and construction. The latest buzzword though, along with all the hype to go with it, is that of Visual Programming (VP). In the commercial sector in particular, there appears to be a trend to put the word Visual into the name of every new tool that is produced. What is interesting though, is that the majority of these tools are not really visual programming environments at all. A true VP environment is one where the developer can actually program using a visual syntax rather than a text based one. Products such as LabView by National Instruments (see case study in this issue) is one of the few successful commercial tools which can truly be classed as a visual programming environment. Regardless of this, perhaps rather pedantic, distinction though, the term visual will continue to persist in the titles of new tools that emerge, as for most, the term visual programming means the ability to interactively construct screens by dragging and dropping widgets onto window screens, but where the actual real functional programming is done using conventional textual code such as C++, Pascal and Basic.

For discussion purposes, the term UIDE will be used here, which is sufficiently broad a definition to cover a wide variety of high level tools. Note that one of the goals of such software is to enable the user interface to be developed at an appropriate high level of abstraction, avoiding unnecessary complex program coding, which distinguishes them from pure Toolkits (not being discussed directly here), which are essentially libraries of routines and widgets (e.g. scrollbars, pop-up menu, command buttons) which may be called from a traditional application program (of course, many UIDEs make use of toolkits as part of their implementation anyway).

The purpose of this short article is not to go into depth on the whole plethora of tools available (there are many up to date surveys which do this already), but rather to connote why these tools are of benefit, particularly in commercial domains, where the problems lie, and propose briefly areas of interest for future research and discussion.

Why all the fuss?

There is no doubt that user interface software is often large, complex and difficult to implement. Windows front-ends are now the norm, rather than the exception, with users expecting high quality direct manipulation graphical user interfaces (GUIs), demanding rich feedback and mode-free styles of interaction, where the user can issue any command at virtually any time. These interfaces, although most appealing to end-users, require the software developer to deal with sophisticated graphics, rapid semantic feedback, multi-threaded dialogue, windowing strategies (such as what happens when a window is resized?) and integrated multimedia. Further, in a 1992 study by Myers and Rosson, it was discovered that an average of 48% of the code of applications is devoted to the user interface and about 50% of the implementation time is spent implementing the user interface portion.

It is clear, that the use of software tools to support user interface design and construction is becoming more and more important in software development. But what are the real benefits in adopting such a tool? Below summarises some of the main advantages that can be gained from their use.

Result in better user interfaces:

· Because a UIDE should allow user interfaces to be constructed without complex programming techniques, non-programmers can become involved in the user interface design process. This allows specialists such as graphic artists and HCI experts, although not perhaps the best of programmers, to be involved heavily with the user interface designs.
· Rapid, iterative, user interface prototyping techniques can be used allowing users to see what the resulting system is going to look like, with relatively little investment in development time. Changes can be made quickly and easily after each user testing or evaluation session, ready for the next iteration of the cycle. Logging and play back facilities, built into the UIDE, also aid with the evaluation process.
· Multiple user interfaces to the same application. A goal of a true UIDE is to clearly separate the user interface code from the application (although achieving this separation is, indeed, quite difficult in practice). Because of this separation, there is no reason why we cannot have a number of different user interfaces (multi-lingual?) catering for various user levels and types, all connected to the same application.
· Consistency is improved because all interfaces are constructed using the same tool.

Supports good software engineering principles:

· The resultant software is more modular because of the clear separation of the user interface portion of the code from the application. This enables the application code and the user interface portion to be independent of one another. This has obvious maintenance benefits, such as being able to modify the user interface without affecting the application and vice versa, as well as allowing small teams to work on both portions at the same time in parallel.
· The developer should be able to work at various levels of abstraction, allowing them to concentrate on important high level design issues, avoiding complex programming techniques (which detracts from the problem solving process), but also being allowed to drop to a low level when needed. Development at a high level should also result in more reliable systems.
· Code reuse is advocated, resulting in less code to write, with many libraries and existing designs being available ready for use by the developer, thus increasing productivity and decreasing the likelihood of programmer induced errors (of course, one assumes that such libraries have been thoroughly tested in the first place!) The use of object-oriented techniques in most modern tools take this a stage further, allowing the developer to take an existing object (e.g. a scrollbar widget) and extend or overload its properties and methods so that they can tailor it to their own needs.
· Portability across different platforms should be aided because lower level device dependencies are isolated in the UIDE itself.

There is no doubt that UIDEs have taken off in the commercial sector, with GUI tools now available for various platforms. The PC market in particular appears to be going through a UIDE phase at the moment, with a whole variety of tools are now appearing which support many of the proposed advantages above, with database and client-server front-ending tools proving especially popular (see Anderson, 1996).

But there are problems...

Although it has been shown that UIDEs provide many benefits, it can be argued that in practice such tools have a number of shortcomings and there are many of areas which need to be improved upon. This section outlines some of these problematic issues and puts forward ideas where future research and development is likely to focus on.

Performance issues

There is no doubt that for most users, GUI applications never run fast enough on the machine they are using. This is now being exacerbated though by the growing trend by software suppliers to produce UIDE tools which are not only just resource hungry, but also suffer quite severely from responsiveness (architectures which provide a clean separation of the user interface from the application, although clearly beneficial in many respects, are particularly guilty of this). The problem with responsiveness though is twofold - firstly the software tool itself is slow and ineffective to use for the developer whilst constructing the GUI application, and secondly the application program that it produces is more often than not sluggish. Additional run-time interpreters, which are often needed to be distributed with the final software, only contribute further to these performance problems. The lack of responsiveness at the user interface level has many implications from a usability perspective and perhaps it is time that the companies who produce these tools should recognise that, although the tools run fine on their high performance development workstations, when a user installs it on their 2 year old machine, the results are somewhat less than impressive! Consideration needs to be given to producing tools and techniques which enable developers to produce responsive, space efficient windows applications, allowing software to run effectively on end-user platforms.

Complexity

As previously mentioned, one of the goals of a UIDE is to enable non-programmers to be able to develop user interfaces. Although most tools satisfy this goal at the constructional level, allowing screens to be built in WYSIWYG (what you see is what you get) fashion with little or no actual coding, where they fail fairly miserably, is in the defining of the functionality of the interface. At this stage, textual program coding, often event driven, is usually required which is beyond the skills of your average graphic designer. Tools are needed which allow functionality to be added, whilst avoiding complex programming languages and grammars. Many attempts have been made at solving this problem, with various diagrammatical and grammar based techniques being proposed, but no one as yet has managed to come up with a tool that has been truly successful.

UIDEs result in better user interfaces?

Earlier it was said that the use of UIDEs result in better user interfaces. Is this really the case though? Yes it is true that they make them easier to develop, encouraging iterative prototyping techniques and exploration of various designs, but one could argue that such tools may also limit the designer to what only the tool can offer and therefore restrict them. What is also clear is that many of these tools do not directly contribute to encouraging the developer to arrive at a good interface design, and it is still feasible for them to create what is essentially a bad user interface. Tools are now appearing which help overcome some of these problems though, with many incorporating built in style guides and on-line support facilities. These at least provide some basic guidelines on which to build application front-ends, but more work is needed.

The outlook for tomorrow

The domain of UIDE research and development is very much an active one and we can expect to keep on seeing new tools and techniques appearing in the future. New languages to support these tools will continue to emerge, but we are still some distance away from finding an easy to use, flexible and comprehensive method of specifying the functionality of the user interface within a system. Visual programming environments go some way towards this already, along with programming by demonstration systems, where the user shows the system what they want it do rather than how to do it. Indeed, this concept of automatic user interface generation is interesting, where the interface is created from a high level specification, removing the need for complex low level coding and reducing the possibility of programmer induced errors. Tools which generate interface code from informal sketch based designs also show potential here.

Adaptive and intelligent UIDE systems have been around for a while now, and it will be interesting to see how these can be fully exploited. These systems provide an interface which adapts to the user’s needs and preferences, and on first thought, appear to be ideal. It is considered by many though to contradict the basic principle of consistency, with the danger of users becoming confused as they feel they never fully understand the system. The problematic notion of hunting also prevails, where the system continuously tries to adapt to the user and the user tries to adapt to the system, but no satisfactory arrangement is ever reached.

To conclude, technology in computing is forever rapidly moving forward and UIDE tools will need to keep pace with such changes. Integrated multi-media, international interfaces, gesture based interactions, 3 dimensional imaging, computer supported cooperative work (CSCW), distributed systems and the infamous internet all provide many challenges for UIDE developers. One thing though is clear - although there is little doubt that we have come a long way since the days of coding our character based front-ends directly in traditional 3rd generation languages, there is still a considerable amount of further work needed in order to fully exploit these tools in software development.

Resources

A thorough and fairly up to date overview of UIDE tools can be found in Myers (1995) which provides an excellent discussion on the various categories of tools available, and another paper by the same author (1993), gives an interesting discussion on why user interfaces are difficult to develop even with the support of these tools. See also Brad Myers’s home page (www.cs.cmu.edu/user/bam******) which provides links to various UIDE resources, including an extensive list of tools available. Other papers which are worth a glance include those by Deborah Hix (1990, 1991) which discuss generations of UIDEs and also looks at moving towards some form of methodology for their evaluation. Finally, Olsen et al (1993) provide a thought provoking paper on research issues for future tools.

For those interested in the various models and techniques that have been proposed for modelling the dialogue in such systems, Clarke and Crum (1994) give a comprehensive overview, whilst the classic paper by Green (1986) looks in depth at three particular models. Both refer to relevant software tools, where appropriate.

Visual programming was covered by Thomas Green in a previous issue of Interfaces (Vol.26), and contains a good resource list. Anderson (1996), Desoi and Lively (1991) also discuss the area and IEEE Computer (March 1995) had a special issue last year dedicated to the topic.

· Anderson T (1996). Visual Programming Tools. Personal Computer World, February 1996, 131-170.
· Clarke D T and Crum G P (1994). Dialogue Specification and Control: A Review of Models and Techniques. Information and Software Technology, Vol.36, No.9, 539-547.
· Cockton G (1995). A Noddy’s guide to...User Interface Architectures. BCS Interfaces, No.30, Autumn 1995, 6-9.
· Desoi J F and Lively W M (1991). Survey and Analysis of Non-Programming Approaches to Design and Development of Graphical User Interfaces. Information and Software Technology, Vol.33, No.6, 413-424.
· Green T (1994). A Noddy’s guide to...Visual Programming. BCS Interfaces, No.26, Autumn 1994, 8-11.
· Green (1986). A Survey of Three Dialogue Models. ACM Transactions on Graphics, Vol.5, No.3, 244-275.
· Guthrie W (1995). An Overview of Portable GUI Software. SIGCHI, Vol.27, No.1, January 1995, 55-69.
· Hix D (1991). Human-Computer Interface Development Tools: A Methodology for their Evaluation. Communications of the ACM, Vol.34, No.3, March 1991, 75-87.
· Hix D (1990). Generations of User-Interface Management Systems. IEEE Software, September 1990, 77-87.
· Myers B A (1993). Why are Human-Computer Interfaces Difficult to Design and Implement? Internal paper CMU-CS-93-183, Carnegie Mellon University, Pittsburgh.
· Myers B A (1995). User Interface Software Tools. ACM Transactions on Computer-Human Interaction, Vol.2, No.1, March 1995, 64-103.
· Myers B A and Rosson M B (1992). Survey on User Interface Programming. Proceedings of CHI’92, May 3-7 1992, 195-202.
· Olsen D R et al (1993). Research Directions for User Interface Software Tools. Behaviour and Information Technology, Vol.12, No.2, 80-97.
· Reiterer H (1995). IDA: User Interface Design Assistance. SIGCHI, Vol.27, No.2, April 1995, 46-47.
· Various authors (1995). Special Visual Programming issue. IEEE Computer, March 1995.



home | projects/clients | services | resources | site info | contact us
Copyright Visualize Systems Ltd
 
© Copyright Dave Clarke, 1996-2010

 

 

Visit Our Web Survey for ASP based Web Survey Software, WII Consoles (accessories, games) and World Cup Stuff (shirts, flags, accessories, kids kit)
pvr buyer  wii nintendo revolution consoles wii buyer nintendo revolution buyer