Layout and configuration tools for visualization software Daniel Jonsson LiU-ITN-TEK-A--14/004--SE

Layout and configuration tools for visualization software Daniel Jonsson LiU-ITN-TEK-A--14/004--SE

LiU-ITN-TEK-A--14/004--SE

Layout and configuration tools for visualization software

Daniel Jonsson

2014-04-11

Department of Science and Technology

Linköping University

S E 6 0 1 7 4 N o r r k ö p i n g , S w e d e n

Institutionen för teknik och naturvetenskap

Linköpings universitet

6 0 1 7 4 N o r r k ö p i n g

LiU-ITN-TEK-A--14/004--SE

Layout and configuration tools for visualization software

Examensarbete utfört i Medieteknik vid Tekniska högskolan vid

Linköpings universitet

Daniel Jonsson

Handledare Pierangelo DellAcqua

Examinator Sasan Gooran

Norrköping 2014-04-11

Upphovsrätt

Detta dokument hålls tillgängligt på Internet – eller dess framtida ersättare – under en längre tid från publiceringsdatum under förutsättning att inga extraordinära omständigheter uppstår.

Tillgång till dokumentet innebär tillstånd för var och en att läsa, ladda ner, skriva ut enstaka kopior för enskilt bruk och att använda det oförändrat för ickekommersiell forskning och för undervisning. Överföring av upphovsrätten vid en senare tidpunkt kan inte upphäva detta tillstånd. All annan användning av dokumentet kräver upphovsmannens medgivande. För att garantera äktheten, säkerheten och tillgängligheten finns det lösningar av teknisk och administrativ art.

Upphovsmannens ideella rätt innefattar rätt att bli nämnd som upphovsman i den omfattning som god sed kräver vid användning av dokumentet på ovan beskrivna sätt samt skydd mot att dokumentet ändras eller presenteras i sådan form eller i sådant sammanhang som är kränkande för upphovsmannens litterära eller konstnärliga anseende eller egenart.

För ytterligare information om Linköping University Electronic Press se förlagets hemsida http://www.ep.liu.se/

Copyright

The publishers will keep this document online on the Internet - or its possible replacement - for a considerable time from the date of publication barring exceptional circumstances.

The online availability of the document implies a permanent permission for anyone to read, to download, to print out single copies for your own use and to use it unchanged for any non-commercial research and educational purpose.

Subsequent transfers of copyright cannot revoke this permission. All other uses of the document are conditional on the consent of the copyright owner. The publisher has taken technical and administrative measures to assure authenticity, security and accessibility.

According to intellectual property law the author has the right to be mentioned when his/her work is accessed as described above and to be protected against infringement.

For additional information about the Linköping University Electronic Press and its procedures for publication and for assurance of document integrity, please refer to its WWW home page: http://www.ep.liu.se/

© Daniel Jonsson

Abstract

Ericsson is one of the world leaders in radio network technology and are spending a lot of resources on research in this area. This produces big amounts of data and there is a desire for tools that allows the researchers to investigate and present the data in a user friendly way.

This is the motivation behind Elsa GVP, Ericsson’s visualization platform, which facilitates the production of interactive visualizations. The platform handles database connections and provides a number of visual components that can be used in an interactive visualization, such as bar charts, scatter plots and maps.

Although Elsa GVP certainly makes the production of an interactive visualization speedier it is still a time consuming task and requires expert knowledge. Therefore, Ericsson wants to make the entire process easier and more user-friendly so that any employee can construct an interactive visualization. This is the motivation behind this master thesis work whose main objective is to investigate how to reduce the amount of work required to produce an interactive visualization by providing an intuitive graphical user interface.

Keywords: Visualization, Graphical User Interface, Interaction Design, Cooperative

Evaluation, JavaFX, Elsa Generic Visualization Platform

Acknowledgement

I would like to thank the people at Ericsson Research for giving me the opportunity to conduct my master thesis at their department. Special thanks to my supervisor Thomas

Rimhagen for his good guidance and feedback along the way, and also to Håkan Andersson for his helpful expertise in Elsa and JavaFX as well as all the employees that took their time to be a part of my user evaluations. Thanks also to my supervisor at the university,

Pierangelo Dell'Acqua and my examinator Sasan Gooran. Finally, I would like to thank my family and friends for their support.

ii

Table of Contents

1

 

Introduction ...................................................................................................................................... 4

 

1.1

  The Platform ..................................................................................................................... 4  

1.2

  Problem definition ........................................................................................................... 8  

1.3

  Information Visualization ............................................................................................ 10  

1.4

 

Usability ........................................................................................................................... 11

 

1.5

 

Related work ................................................................................................................... 12

 

2

 

Method ............................................................................................................................................ 13

 

3

 

Requirements analysis ................................................................................................................... 15

 

3.1

  User analysis ................................................................................................................... 15  

3.2

  Requirements specification ......................................................................................... 16  

3.3

 

Design guidelines .......................................................................................................... 17

 

4

 

Prototyping ..................................................................................................................................... 19

 

4.1

  Application model configuration ............................................................................... 21  

4.2

  Layout builder ................................................................................................................ 22  

4.3

  Prototype evaluation ..................................................................................................... 24  

5

 

Application Model Configuration ................................................................................................. 26

 

5.1

 

Implementation .............................................................................................................. 26

 

5.2

 

Evaluation ........................................................................................................................ 32

 

6

 

Layout Builder ................................................................................................................................ 33

 

6.1

  Implementation .............................................................................................................. 33  

6.2

  Evaluation ........................................................................................................................ 41  

7

 

Conclusions ..................................................................................................................................... 42

 

8

 

Future work .................................................................................................................................... 44

 

References ............................................................................................................................................. 45

  iii

1

Introduction

1.1 The Platform

Ericsson Research performs research and development of new radio network technologies such as GSM (2G), WCDMA (3G) and LTE (4G). System simulators are used to model and study the performance of new technologies. The results of these studies are presented internally at Ericsson or externally to partners and customers. The system simulations typically produce large data sets depending on several variables and therefore a demand has been identified for a tool that can assist in evaluating and presenting the results of the studies. A solution for this is to provide a generic platform that can provide visualizations of large datasets. This is the background for Ericsson’s visualization platform called Elsa GVP

(Generic Visualization Platform).

The Elsa GVP makes it possible to build interactive visualization applications (referred hereafter to as ‘demonstrators’). The platform provides a number of graphical components that can be used in a demonstrator. Examples of such components are bar charts, scatter plots or maps and the platform has been designed in a way that makes it easy to implement new components.

Elsa is built on the JavaFX 2.x platform that is a set of Java libraries that enables the development of rich client applications [1]. All the visual elements in the user interface of a

JavaFX application are represented in the scene graph. The scene graph is a tree data structure and each individual item in the tree is called a node. Each node can be classified as a branch node (meaning that it can have children) or a leaf node (meaning that it cannot have children). The first node in the tree is called the root node. The JavaFX scene graph API maintains an internal model of all the nodes in an application. It keeps track of what objects to display, what areas of the screen need repainting and how to render it all in an efficient manner. By automatically handle rendering details the amount of code needed in an application is reduced [2].

4

The Elsa platform makes use of three configuration files in order to specify a demonstrator.

Together with the graphical components available in the platform and an SQL database these files define a specific demonstrator. A basic overview of an Elsa application can be seen in

Figure 1

.

Figure 1: Overview of the basic Elsa application structure. The data is stored in an SQL database (1).

The application definition contains: XML specifying the application model, FXML specifying the layout and CSS specifying the styling (2). With this as input the Elsa platform constructs a demonstrator (3).

The first of the configuration files is the XML-file, which contains a definition of the application model. The application model defines how the data set is structured, and provides database connections. With this model an Elsa application can retrieve the data from the database and visualize it in the components. The data in the database is often associated with a physical or virtual entity such as a network, site, cell or user. Such entities are defined in the application model in a hierarchical structure. The data representing one entity is combined from all data sources and visualized in the components.

To provide database connections the application model defines objects called data providers.

Each data provider is associated with an SQL database. The components request data by sending SQL queries to the data provider. Each data provider consists of one or more data

sources

. A data source corresponds to a table in the SQL database and is associated with exactly one entity. Each data source consists of attributes, which are associated with a column in a database table. An attribute is associated with a data type and has a friendly named that is used by the components. An example of the structure of the data providers can be seen in

Figure 2

.

5

Figure 2: Example of the application model structure. Each data provider consists of a number of data sources (blue) – of which each one is associated with an entity (orange).

The application model contains definitions of scenarios and cases, which provides a way to group and compare data from the data sources. A scenario is typically a large set of data and consists of at least one case. Each case consists of at least one data source and the data in one case can be compared with the data in another case, within the same scenario. An example of how a scenario is structured can be seen in Figure 3. Additionally, the application model contains definition of filters. A filter contains references to attributes and allows the user to perform certain filter operations on those attributes. For example, a slider component can be connected to a filter that operates on all time attributes, allowing the user to select which time interval to be displayed in the components by dragging the slider. The application model may also contain a definition of something called attribute groups. This allows the user to create groups consisting of similar attributes.

Figure 3: Example of the scenario structure. This scenario contains two cases that have different data sources (blue) associated with them.

6

In addition to a definition of the application model, the XML-file also contains a reference to an FXML-file that defines the graphical interface of the demonstrator as well as an optional reference to a CSS-file that defines styling.

FXML is built on the XML markup language and is suited for the creation JavaFX scene graphs since the hierarchical structure of an XML document closely parallels the structure of such scene graphs [3]. One of the main advantages of FXML is that it provides a more readable structure of how the layout is organized compared to Java code. Both Elsa components and other JavaFX nodes are placed on the scene by specifying them in the hierarchy of the FXML-file. Complex layouts can be defined by grouping the components in different tabs, boxes or split panes. The following is an example of a simple FXML-file.

Figure 4: An example of an FXML-file that defines a simple demonstrator

JavaFX allows for the styling of user interface controls using the CSS format (which is also the industry standard for defining the style of HTML websites). CSS can be applied to any node in the scene graph, and styles can be assigned to the scene at runtime – allowing an application’s appearance to dynamically change [1].

Many different software applications are produced at Ericsson and it is important that the interfaces have a consistent look and communicate the Ericsson brand. There are branding guidelines available that specify the details of how a software interface should look. The Elsa platform comes with a CSS-file that defines the standard styling of an application, which follows the branding guidelines. If an external CSS is specified this will override the Elsa styling for the shared CSS selectors.

7

1.2 Problem definition

Since Ericsson is a large company with many departments there is a need to make the production of demonstrators easier and more accessible to anyone who might need them. An

Elsa application is specified by three configuration files with the formats XML, FXML and

CSS. If the dataset to be visualized is contained in a Matlab file, it is possible to use this to generate the XML-file using a converter, otherwise all configuration files need to be written manually. For applications with big datasets and many graphical components this is a tedious task. Today, constructing a demonstrator requires knowledge of both the Elsa platform and of the XML and FXML data formats. Those with this knowledge are those who have developed the Elsa platform and developing a demonstrator has required much involvement from this team. It has typically taken weeks to finish a demonstrator, where much of the time is spent on requirements analysis and to understand the data in order to properly define the application model. It would free up resources from the development team if anyone at Ericsson could construct a demonstrator on their own.

The process of constructing a demonstrator can be streamlined by providing a graphical user interface that enables the user to configure the application model and layout, thus creating an

Elsa application without manually writing the configuration files. This master thesis will investigate if the amount of work required to create a demonstrator can be reduced by providing an intuitive graphical user interface. A goal that has been set at Ericsson is that it should be possible to create a complete demonstrator within 3 hours. This goal has been set for two reasons: two free up company resources and to ensure that the interface is intuitive enough to construct a demonstrator within a reasonable time frame.

The process of construction such an application can be divided into six steps:

1. Create the application model.

2. Save the application model to XML format.

3. Create the application layout.

4. Save the application layout. (Serialize to FXML format).

5. Create a CSS file. (Optional).

6. Save the CSS file. (Optional).

This thesis will mainly focus on step 1-3, while step 4 is the subject of another thesis work at

Ericsson. Step 5-6 are considered optional since the Elsa platform comes with a CSS that defines a styling suitable for most needs within the company. One possible solution for the steps of this thesis is to provide a graphical interface to the user that guides through the necessary steps. Such a guide is commonly referred to as a wizard [4].

Step 1 in the wizard could be divided into a number of sub steps, where each one corresponds to a part of the application model. One of these sub steps could for example be to define the entities used in the database. The functionality of step 2 has already been implemented in the Elsa framework, and with a created application model it is merely a matter of calling the right methods to save it in XML format.

8

Step 3 could be the next step of the wizard and should allow the user to specify the layout of the application. This could be done by providing a number of templates that can be modified according to the user’s needs. It could also be done by providing a drag-and-drop interface, which allows the user to specify components and their position in a more flexible manner. If the user wants a custom styling of the application, step 5 and 6 could be incorporated in the wizard.

Another possible approach to the problem is to let the application layout builder be the starting point of the software. The layout could be built with a drag-and-drop interface and the application model could be configured when needed. For example, when a component have been placed, it would be possible to connect it to the database and specify which entities to use directly in the interface. This approach might be more intuitive to the user, since they get a view of how their application will look very quickly. It may, however, be unclear which steps are necessary to build a complete application.

These two approaches and possibly other ones will be evaluated on their usability and efficiency. Since the project is limited in time the time-cost of each approach will be taken into account when choosing the one to implement.

Another aspect to take into consideration is the ability to configure the application model and layout during runtime. If, for example, a user thinks that a component is missing or that a component should have another screen position it would be possible to make these changes on-the-fly. If a user wants to change a data connection it would be possible during runtime, improving usability and saving time.

A final step will be to incorporate the results from the thesis work based on step 4 mentioned above. The ability to configure the layout of an application will have little value if the user is not able to save and keep the results between runtimes.

9

1.3 Information Visualization

According to [5] the study of information visualization is about how computer-supported, interactive, visual representations of abstract data can be used to amplify cognition. As Ware points out in [6], little intellectual work is accomplished with our eyes and ears closed.

Instead we interact with cognitive tools such as pencils and paper, calculators or information visualizations to increase our understanding of the world. As we acquire more information through vision than through all the other senses combined it is easy to see that a visualization can be an effective interface between a computer and the human brain. Ware points out a number of advantages of visualizations, such as an ability to comprehend huge amounts of data. It also allows the user to see properties in the data that were not anticipated and thus lead to new insights.

Figure 5: The visualization pipeline demonstrates the high-level architecture of a visualization system.

According to [7] the high-level architecture of a visualization system can be drawn as a pipeline, shown in Figure 5. The data to be visualized first has to be processed into a format that is meaningful and easier to manipulate by the visualization platform [6]. Filtering, selection or other operations can be performed on the data in order to make the data set more useful and easier to work with. The output is data tables that must be mapped to the visual display, which is accomplished through computer algorithms that produce an image on the screen. In the Elsa platform the data transformation corresponds to setting up the data model and the visual mapping corresponds to the connection of components to the data model.

10

1.4 Usability

According to [8] usability is a quality attribute that assesses how easy a user interface is to use. High usability can be achieved by taking the following quality components into account:

• Learnability. It should be easy for the users to understand and start working with the interface.

• Efficiency. Relates to how quickly the users can perform their tasks, once they have learnt the interface.

• Memorability. When the users are returning to the interface after a period of not using it they should quickly be able to reestablish proficiency.

• Errors. The numbers of errors and severity of the errors the users make should be minimized. If an error occurs it should be easy to recover from it.

• Satisfaction. The interface should be pleasant to use.

The usability of an interface can be improved by adapting it to the user group [4]. To achieve this an understanding of the people who are going to use the software is required. ”Who are the users and what goals do they want to achieve with the software?” are key questions to ask before designing an interface.

11

1.5 Related work

According to [9] the demand for data visualization tools is increasing as more companies seek to gain insight from their data. Therefore it is no surprise that there are a number of different visualization platform to choose from, with varying complexity and price range.

One example of such a platform is Many Eyes by IBM and allows the user to construct a simple visualization and is free to use [10]. It offers the ability to create a visualization without any programming or technical skill. The results can be easily shared on the web since IBM hosts all visualizations that are created. Because of this all the data that is used will be uploaded and available for everyone, which immediately disqualifies this platform for

Ericsson. On the other side of the spectrum lies Tableau Software, which according to [11] is one of the leading vendors of advanced data visualizations. They provide visualization solutions for a number of industries and are mainly focused on business intelligence. Their platform has the ability to combine and connect data from many different types of databases

[12]. The interface offers many different components that can used to construct a visualization using a drag-and-drop system. The main users of this platform are not trained in programming and it is not possible to extend the platform with custom-made visualization components [13].

Ericsson could have chosen to use an existing platform for their visualization needs, but chose to develop their own platform. One major reason for this is that they wanted the ability to create and use their own visualization components in the platform, something that was not offered by any of the leading visualization platform providers. Ericsson also wanted to have full control over the database connections and not be locked in any specific data format.

Another benefit of using JavaFX to develop an own platform is that the styling of a visualization can be easily changed in order to communicate the Ericsson brand.

12

2

Method

The first part of this master thesis will consist of a requirements analysis phase. The system to be implemented should conform and be adapted to the needs of the users. Therefore a user analysis will be conducted to find out who the users are and what they want to achieve with the software. From this information and based on the problem description a list of requirements will be stated. This is a list of overall features that will be possible to perform with the system upon completion.

As part of the requirements analysis a list of design guidelines will also be stated. This will help when selecting the appropriate structure of the interface, as discussed in the problem definition.

When the requirements analysis phase is completed the development of the system can be divided into three steps:

1. Design.

This corresponds to the design of the graphical interface. The interface should be designed with a user-centric approach, keeping good usability in mind. Prototyping will be performed, producing sketches that will act as guidelines during implementation. Appropriate interface design patterns will be considered, based on the user group and the desired functionality of the system. The prototypes will be evaluated with potential users to confirm that the design is comprehensible and to avoid initial major usability problems.

2. Implementation.

This is the actual programming of the software and should follow existing code conventions stated by the Elsa project. The work will be divided into smaller tasks for easier planning and to set up milestones. Since Elsa is developed in JavaFX using the

Eclipse development environment this will be used for this project as well.

3. Evaluation.

The software should be tested to ensure that the requirements have been fulfilled and the overall usability should be evaluated in order to find potential usability problems.

An evaluation technique called cooperative evaluation will be used to find potential usability problems. This technique was chosen because it has been proven to be reliable while still being economical, requiring no special equipment and relative small amount of preparation. It was also deemed beneficial as it involves real users in the evaluation, exposing the needs and knowledge the user group. [14]

Since it is virtually impossible to design a user interface without any usability problems from the start, the development will follow the advice from Nielsen in [15], stating that the usability engineering lifecycle should be built around the concept of iteration. The results from the evaluations will be used to refine the interface by removing the most severe usability problems.

13

An overview of the iterative development process can be seen in Figure 6. The user analysis, requirements and design guidelines act as input when producing the prototype of the GUIdesign. The prototype will be iteratively evaluated and refined to avoid major initial usability problems. Based on the final prototype the implementation of the system can begin.

This is a separate iterative process where the implemented interface is evaluated on the user group. Based on the results from these evaluations, the GUI is refined and then implemented into the system.

Figure 6: Iterative evaluation.

The chosen evaluation technique resembles another observational technique called think-

aloud protocol

. Cooperative evaluation is a more relaxed approach compared to this and has a few advantages, according to [16]. In the think-aloud protocol the evaluator is supposed to sit in silence and observe the user interacting with the interface and thinking aloud. With cooperative evaluation there is a dialog between the evaluator and the user. The evaluator can ask questions and thus get a deeper understanding of the thoughts and expectations of the user. The user is encouraged to see himself as a collaborator in the evaluation and thus both problems and solutions can be discussed.

There are other design processes that could be considered, such as parallel design. With this process multiple alternative designs are produced but only the best one (based on usability testing) is chosen. There is a critique to the iterative design process that it doesn’t explore design space enough and that the iterations can lead to a local maximum of usability instead of the best result [16], a problem which can be solved with a parallel design process.

However, this approach was deemed too costly for this project due to time constraints. It was also believed that good starting point could be achieved by basing the first design on usability guidelines and by adapting the interface to the user group.

14

3

Requirements analysis

3.1 User analysis

A high degree of usability is a priority for this master thesis project and this can be achieved by adapting the system to the user group. Therefore it is important to get an idea of who the users are and what their needs are. Because Elsa currently is an internal tool at Ericsson the users will be employees at Ericsson. There are two main purposes of a demonstrator: to gain better insight into the data produced from a study on radio network technology and to communicate the results from a study internally at Ericsson and to external partners. Those who might need such a demonstrator are typically working as research engineers and it can be assumed that they have a good insight in the data they have produced. It cannot, however, be presumed that they know about the data structure required by Elsa. The necessary steps required to configure a demonstrator must therefore be communicated clearly. The user might not have knowledge of JavaFX or the FXML and XML file formats either, and this should not be a requirement for using the software.

The need for a demonstrator is for most people occasional, only after a study has been performed is there a need for a new demonstrator. Probably no user will construct demonstrators on a regular basis. This increases the need for an interface that is easy to learn.

There is a demand from the users that the construction of a demonstrator should be a quick process that does not require much initial training. The system should be easy to understand and not take up much time from their regular work tasks.

15

3.2 Requirements specification

A list of requirements was produced based on the problem definition and the user analysis.

The users should be able to:

1.

Configure the layout.

The components and their location in a demonstrator should be configurable. All components of the Elsa platform should be supported and as much freedom as possible for the user to place and order them should be provided.

2.

Configure the application model during runtime.

It should be possible to both set up a completely new application model and to edit an existing one. For usability purposes the system must be able to handle changes to the application model during runtime. For example, it should be possible to set up a new data provider and start retrieving data from it immediately.

3.

Configure components during runtime.

The components must be connected to the application model in order to fetch and display the data. This functionality is already implemented for some components, but it must be ensured that changes in the application model do not affect this functionality.

4.

Save all changes made.

This means that the users can save their work and continue at a later time. The serialization of the scene graph, which is the topic of another thesis, will allow the layout to be saved. Within the scope of this thesis project it should be possible to save the application model to XML format.

5.

Build a complete demonstrator within 3 hours.

Currently the production of a demonstrator typically means involving experts on the system and is a time consuming task. While reducing this time to 3 hours can free valuable company resources, the time limit is also set for usability purposes. The system should be intuitive enough that it is possible to build a demonstrator within this timeframe.

6.

Learn and use the software with a minimum amount of effort.

The interface should be intuitive enough for a user to be able to start the configuration without any training.

16

3.3 Design guidelines

Following some of the behavioral patterns discussed in [4; Ch. 1]; a number of design guidelines were developed based on the user analysis and the required functionality of the software:

• The interface should be open and allow exploration of available features. The users have a clear idea of what they want to accomplish with the software: to build a demonstrator for their data. An open interface lets them discover the necessary steps for achieving this and to learn the software without feeling trapped. Because the users are using a computer as their main work tool and they are used to problem solving it was believed that a too rigid interface would confine rather than help them.

• Choices should be available to the user. Setting up the application model might be a tedious task if the dataset is large and the user goals might change during the process.

Therefore it was believed to be beneficial to provide choices that allow the users to do things in the order they prefer. By providing access to as much functionality as possible, the users also get to see the connections between different entities for themselves.

• Provide instant gratification. It is more satisfying for the users to see results of their actions sooner rather than later. If possible they should therefore see the results of what they have accomplished early in the process.

• Allow for incremental construction. The construction of things is seldom performed in a precise order; the system should support this and allow the user to perform the tasks incrementally. It should be possible to build a small piece at a time and the operational feedback should be immediate leaving little delay between the user making changes and seeing the results.

As mentioned in the user analysis, the need for a demonstrator is usually occasional so there might be a considerable time interval between the occasions. The users cannot be expected to remember the details of how to use the interface between each time the system is used. Thus the guideline in [14] that states that the interface should be designed for recognition rather than recall becomes more important. This means that the user’s memory load should be minimized by making options visible. Since the user will have to devote some time to the process of constructing a demonstrator the software should be considered a sovereign posture application (an application that monopolizes the user’s attention for long periods of time). As such there is no need to be sparse with the screen area occupied by the application

[17]. This also gives an environment suitable for providing visual feedback to the user.

17

The idea of a wizard that guides the user through the steps was discarded. The solution did not conform to the guidelines and would not provide the desired flexibility. Instead a more open design that focused on the structuring of the layout was adopted. The user should be able to construct the layout of the demonstrator using a drag-and-drop interface. When the software is started for the first time the main area of the window should consist of an empty

Elsa application with only the top bar showing. By dragging and dropping components available in a list the user defines the layout of the demonstrator. This would give instant gratification since the user sees how her demonstrator will look like early in the process. This approach also conforms to the design principle in [17] that states that document views should be maximized within a sovereign application.

The functionality to set up and edit the application model should also be readily available in the interface. This could be done by providing a series of buttons that lets the user access different parts of the application model by different dialogs. By having the buttons always visible in the main view, as opposed to being hidden inside a menu, the user can clearly see what the choices are. The dialogs should be accessible in the order preferred by the user, but of course some functions are dependent on others. It is not possible to fully define cases without having any data sources for example. However, by making the choices available the users can find out about these relationships themselves. The process of constructing the layout by dragging and dropping one object after another is in itself an incremental process.

It should be ensured that rich feedback is provided, making the results of the users actions visible.

18

4

Prototyping

Once the general design approach had been selected, a graphical prototype for the system was developed. This was produced with a GUI sketch software called Pencil [18], suitable during the initial prototyping phase since it allows the user to quickly express design ideas without spending too much time and becoming attached to a particular solution. The goal of the prototyping phase was to structure the chosen design approach, to see that the idea holds up to the requirements and to get a prototype that could be evaluated with regards to usability.

A prototype of the first view when the user starts Elsa and chooses to create a new demonstrator is depicted in Figure 7.

Figure 7: GUI sketch of the main configuration view. The layout list is located to the left and the application model buttons cover the bottom of the interface.

The interface operates in two modes: design mode and presentation mode. In design mode the demonstrator takes up less of the screen space, which makes room for controls that allows the user to configure the interface. To the left of the demonstrator is the layout list, where the graphical components of the Elsa platform are available. By dragging these onto the demonstrator the user can construct the interface of the demonstrator. At the bottom of the interface in design mode there are six buttons that allows the user to configure the different parts of the application model.

In this mode there is also a menu at the top of the interface that gives the user access to save and load functionality. When switching to presentation mode these items disappear and the application takes up all of the screen space. The procedure of building the interface is based on the WYSIWYG (what you see is what you get) paradigm, meaning there is a direct

19

mapping between the visual representation when in design mode and the final result shown in presentation mode [16]. The user can switch between the two modes at any time, and they are depicted in Figure 8.

Figure 8: The user can switch between modes at any time. Design mode (a) gives access to the layout builder and application model configuration. Presentation mode (b) is used to present the data.

20

4.1 Application model configuration

Access to the application model is available through the buttons at the bottom of the interface in design mode. Each button presents a dialog that allows the user to configure a certain part of the application model. Much of this configuration is performed by adding new items to a list and filling out a form for those items. Figure 9 shows an example of such a form dialog. A new data provider is added by clicking the plus-button below the list to the left. This will reveal the form to the right where the user can fill in the necessary details of the data provider. A data provider can have references to SQL-script files that are used to populate the database. Such scripts can be added to the script list. Prototype sketches were produced for all the parts of the application model.

If the user is setting up a big application model from many data sources there will be a lot of forms to fill out. Therefore the amount of work required for each form should be kept to a minimum. Only the required attributes should be presented to the user. For first time users there should be information available on what the various attributes are used for. This information can be provided using tooltips. The users should also get feedback on the input they are providing. If something is not correctly filled out the interface should tell the user rather than producing an error later on.

Figure 9: The first version of the data providers dialog sketch.

21

4.2 Layout builder

The layout of a demonstrator is constructed by using the list to the left of the interface in design mode. The available Elsa components are shown in this list, ordered under different categories and shown as big icons, see Figure 7. This list will also hold items used to define the layout of a demonstrator, such as SplitPanes or new Tabs; these items are under the layout category. The user can drag these items from the list and drop them onto the scene

(the large white area) in order to specify the layout and define which components that should be used.

An example of a layout item is the SplitPane. By dragging this item onto the main view the user can divide the area into resizable sections. These sections can be populated with Elsa components by dragging their respective icons onto the section. Another layout component is the WindowTabPane that allows the user to group content into Tabs. A new Tab is created by dragging a Tab item from the list and dropping it on a WindowTabPane. The Tab object can also be placed in application bar in the top, allowing content to be grouped on a higher level. The process of defining the layout using SplitPanes and WindowTabPanes is exemplified in Figure 10 and Figure 11.

Figure 10: A SplitPane has been dropped on the content area, and two WindowTabPanes (titled

‘Map’ and ‘Chart’) have been placed at each side. Also note the tab located in the application bar in the top.

22

Figure 11: An Elsa component have been placed in each WindowTabPane, a Map to the left and a

LineChart to the right.

Other layout items that are supported are Boxes, which acts as SplitPanes and divides an area but cannot be resized, and BorderPanes which provides a way to attach content to a side of an area. The layout items can be nested in each other giving flexibility for the user when defining the layout.

23

4.3 Prototype evaluation

The GUI sketches were printed out and shown to a few persons from the user group for evaluation. They were asked to examine this paper prototype and to perform certain tasks such as adding a new data provider or adding a certain component to the layout. At first they were only shown the starting view of the Elsa editor and mouse clicks were simulated by the users tapping their fingers on the prototype. Each dialog was printed on a separate paper, which could be revealed by tapping the corresponding button. The construction of the layout was simulated by having a few selected components and layout options printed on separate pieces of paper that could be combined and placed on top of each other. The evaluation was conducted as a dialog where the test users were prompted to reveal their thoughts about the interface. Potential usability problems were examined and solutions to those problems were discussed. One evaluation iteration was performed on the prototype.

The main usability problem found during the evaluation concerned the scenarios and casesdialog. This was initially designed as three lists, one for scenarios, one for cases and one for the data sources. Scenarios and cases are defined in Elsa as parent and child objects, where a scenario can consist of several cases and a case can consist of several data sources. The mapping between the lists proved to be confusing and a new interface model was necessary.

Since tree views are typically used to display hierarchical data this was deemed a more appropriate interface solution. This gives the user a visual mapping of the parent and child relationship. The tree view should start as an empty view, inviting the user to start creating the entities and go through this process step by step. Items are added through a menu that is shown when the user right-clicks the tree view. Figure 12 and Figure 13 shows how the interface of this dialog changed due to the results from the evaluation.

Figure 12: The initial version of the scenarios and cases-dialog.

24

Figure 13: The scenarios and cases-dialog after the refactoring based on evaluation feedback.

Another example of a usability problem found during the evaluations regarded the entities dialog. In the first prototype this dialog was designed as a table where each row corresponded to an entity and each column represented the attributes of each entity (id, name and parent entity). This proved to be unintuitive for the test users since they didn’t understand what the rows represented. The structure of this dialog also differed a bit from the design of the other dialogs, which added to the confusion. Therefore the entities dialog was redesigned to make it more similar to the other dialogs, with a list of entities to the left and the attributes presented to the right.

25

5

Application Model Configuration

5.1 Implementation

With the final prototype produced, the implementation of the application model configuration could begin. This configuration is done by using a series of dialogs and the layout and logic behind the dialogs had to be implemented. The dialogs are accessible to the user through a series of buttons, shown in the bottom of the screen when in design mode.

According to the prototype, the buttons should have icons depicting the functionality of each button. Due to time constraints, they were implemented using only text instead of icons, which can be seen in Figure 14.

Figure 14: The buttons used for configuration of the application model.

The application model of an Elsa application is a model of the data structure. Therefore the application model is closely related to the database and a natural first step is to set up a connection to the database.

In Elsa, connections to databases are provided through entities called data providers. The first of the application model buttons reveals the data providers dialog where these entities are set up. If the program is started without an existing application model the user will only see the info text and an empty list. By clicking the plus button a new data provider entity is created and added to the list and the form for editing this entity is shown within the same dialog, see Figure 15. At a previous iteration of the system, the plus button revealed a new dialog containing the form for creation of a new data provider. Following the discussions in

[

17] on cascading dialogs this was abandoned since an additional dialog only increased complexity.

26

Figure 15: Data providers dialog.

A newly created data provider has the name “new data provider” and after editing the name field in the form, the name also changes in the list. Most of the dialogs have this structure with a list of items and a form showing when an item in the list is selected, which creates a consistency between the views. For a data provider, different database management systems

(DBMS) are available for selection. These systems define how the database is set up and how data is accessed. For example, the selection “hsqldb:mem” specifies that the database will be located in local memory and be created at runtime using the provided scripts. Depending on which database management system is selected; different options that apply to this selection are visible below the choice box. Scripts that populate the database can be added to a list by clicking another plus button. This takes the user to a browse window and allows the user to select one or several SQL-files. When a script file is added the path is saved and the browse window will start at this path if another file is added later.

The data providers dialog allows the user to set up connections to the databases, but there is no connection established until the user enters the data sources dialog. This dialog has a similar layout as the aforementioned, but instead of a plus and minus button below the list there is a single button titled “Select Data Sources”. This reflects the fact that data sources are not added and removed; instead the user selects the ones to use from a dialog containing available selections. The selection dialog list is created using a list of previously selected data sources so that any previous selections are visible in the list.

27

When the selection button is clicked a connection is set up to the databases if not already connected. When connected all the names of the data tables in the databases are fetched and put into a list. This list is compared to a list containing previous selections and thus retains these data sources selected. The returned list of data table names is shown in the “Select Data

Sources” dialog where the user simply checks the checkbox of the data tables that should be used, see Figure 16. The list can be filtered by entering a search string in the search field. This field also has a combo box where the user can select created entities in order to quickly search for tables whose names contain the selected entity. Another way to filter the list is to only show selected items by clicking a checkbox. There are also two buttons that allows the user to quickly select and deselect all items in the list.

Figure 16: Data sources selection dialog.

Once the desired data sources are selected the user must provide some additional information in order for Elsa to be able to use them properly. The required information is which entity the data source represents and which attribute is the key for that entity. This information is entered in the data sources dialog; see Figure 17.

28

Red validation messages prompt the user to enter this information for each data source. The attributes of a data source are fetched from the database and are shown in a table in the dialog. Some fields of the attributes, such as the name or unit, can be edited in the table. Noneditable items in this table are distinguished with an italic font and editable items can directly be set by double clicking in the table. Since the attributes table can occupy a big part of the screen real estate for the dialog, a split pane separates the list and the form, allowing the user to explore both the list and the table – which is useful when the items have long names.

The table in the data sources dialog is constructed using the JavaFX control TableView, see

[19]. This class has built-in capabilities to sort data in columns and to resize columns when necessary. Columns are added to the TableView by adding TableColumn objects to the table's column list. The columns have to be associated with the data that is to be displayed in the table. This is done by using the method setCellValueFactory to specify a cell factory for each column. A cell value factory is a Callback object that expects an ObservableValue to be returned. This ObservableValue will be observed internally and updated on the screen if the value changes [20].

With the columns associated to the data, the table is populated using the method setItems.

To allow for in-line editing of the cells in the table the setCellFactory method is used (note that this is different from the setCellValueFactory method). For some of the columns the user should be able to double click on a cell in order to edit it with a text field. Such a text field is provided by using the forTableColumn method on the TextFieldTableCell class, which acts as input to the setCellFactory method. Finally the table cell must be assigned the updated value from the text field. This is done by registering an event handler for a

CellEditEvent

using the method setOnEditCommit on the table column. The event handler makes sure that the cell's value is updated once the event is triggered, typically when the user presses the enter key. Cells in the "Key for" column can be edited with a combo box that displays the available entities. This functionality is achieved in a similar manner with the exception that a different value is passed to the setCellFactory method.

29

Figure 17: Data sources dialog.

30

Another dialog was implemented for setting up various types of filters that operate on selected attributes. A new filter is created by clicking the plus button in the filter dialog, which reveals a new dialog that lets the user select the filter type. The attributes that the filter should operate on are selected by using a dialog similar to the data sources selection dialog.

Non-editable fields in this and other forms are displayed with a cursive font and a gray background as shown in Figure 18. There is one filter type called “Combined Filter” that contains a list of filters of any type. New filters are added to this list by clicking the plus button, which shows a dialog for the creation of a new filter. With the Combined Filter several different types of filters can be combined into one.

Figure 18: Detail of the filters dialog.

Since the system is designed to be used by users with different levels of expertise certain information must be communicated in order for the beginner and mid-level user to understand all areas of the system. All the dialogs have a short descriptive text at the top where the beginner user can get information on the data entity they currently are editing.

This text can also be used to provide GUI-related information, as in the scenarios and cases dialog where the text tells the user that interactions are based on right-clicking of entities in the tree view. Tooltips provide further explanations on various parts of the interface and all the data entries in the forms. An example of a tooltip is shown in

Figure 19

.

Figure 19: Example of a tooltip.

Some of the data entered in the dialogs must be in a correct format in order for the system to work. To cope with this the discussions in [17], on how to improve data entry, are taken into account. The system should be considerate and flexible. Because the user may not immediately have access to the data for all required fields they should be able to leave those fields and come back to them. The user should, however, become aware that data is missing.

This can be communicated with rich modeless feedback that tells the user that something is wrong or missing in a data entry, but allows them to ignore it for now and come back to the issue. Such functionality is implemented in the form of validation text, shown under the data field that has an incorrect entry. Naturally, this text is shown in red to distinguish it from other text and immediately gain the users attention.

31

5.2 Evaluation

Once the dialogs had been implemented an evaluation was performed with potential users.

The method used for this was cooperative evaluation, see [21]. Potential end users with different levels of experience of the Elsa platform were asked to participate in order to cover different levels of expertise. The participants were given a sheet of tasks that they should perform using the implemented interface. They were prompted to keep talking when interacting with the system in order to provide as much feedback on the system as possible.

To understand the user's expectations of the system, questions such as: “what is the system

telling you now

?” and “what do you want to do now?” were asked during the evaluation. The test users were prompted to solve the tasks for themselves but if they got stuck they could get hints on how to proceed.

Once all the tasks had been solved the test users were debriefed and asked a series of questions on their views of the system. They were able to give their opinion of what was good and bad with the system and what changes they would like to see. The answers from these questions as well as feedback and observations made during the session were used to produce a list of the most urgent changes needed in the system. Four main items in need of improvement were identified:

1. The red validation text that is shown near fields with missing or wrong input is not enough to ensure that the user fills out everything correctly. With a list of items the user has to enter each item in the list in order to see that there is a problem with the input and this is easily overlooked. Therefore there should be an indicator of this on a higher level that tells the user that something is wrong.

2. The process of creating new items can be confusing since this functionality operates in the same dialog, regardless of whether the user is inspecting or creating items. A suggestion for improving this is to update the names in the list immediately when they are changed in the form.

3. Adding a new category to a filter proved difficult for the test users. This functionality is performed by typing in a combo box, which can be an unconventional use of a combo box. To improve the understanding of this object there should be a prompt that says “type here to add category” in the box, instead of showing the standard category called “uncategorized filters”.

4. The tree structure used to create scenarios and cases took some time for the test subjects to understand since this dialog differs from the others that are list-based. The understanding of this functionality could be improved by immediately expanding the tree list of an item when a new item is added. This would give feedback to the user that an item was added correctly and it would be visible which the parent of that item is.

These items were implemented before moving on the next part of the system: the layout builder.

32

6

Layout Builder

6.1 Implementation

The configuration of the application model allows the users to set up Elsa according to the data set. The layout builder should allow the user to set up the graphical interface of a demonstrator according to the needs of the user. In order to provide as much flexibility and freedom as possible in this process, a drag-and-drop-based WYSIWYG-interface was deemed appropriate. The droppable items used to build the interface are available in a list where the items are put into different categories such as layout, charts and maps. The layout category contains JavaFX or Elsa containers such as Tabs, SplitPanes and WindowTabPanes that can hold Elsa components. The other categories contain Elsa components that are used to visualize and interact with the data.

According to the prototype of the interface there should be an icon for each item in the component list. Due to the branding guidelines this could not be implemented since creating appropriate icons was considered a too time consuming task. Simple text is used instead of icons, which can be seen in Figure 20.

Figure 20: The layout builder list, containing items that can be dragged and dropped onto the scene in order to construct the layout.

33

JavaFX has built in support for drag-and-drop gestures. Such functionality relies on event detection and processing, see [22]. An event in JavaFX is an instance of the javafx.event.Event

class or a subclass of this. Every event has a property for the event type, which is used to further classify the events of a single event class. The DragEvent, for example, contains the event types such as DRAG_OVER and DRAG_DROPPED.

In JavaFX events are delivered using an event delivery process. This process determines which nodes will handle an event and contains four steps:

1. Target selection.

2. Route construction.

3. Event capturing.

4. Event bubbling.

The target is the node on which the action occurred and the target is determined using a set of internal rules. For a mouse click event for example, the target is the node located at the cursor when the click occurred. If there is more than one node at that location, the topmost one is considered the target. During the route construction phase, the initial event route, or event dispatch chain, is determined. This route is the path of nodes that the event will traverse and is initially set from the stage to the target node. During the event capturing phase the event is passed down from the root node through the dispatch chain to the target node. If any node in the chain has an event filter registered that matches the event type, that filter is called. If no filter consumes the event it will be received and processed by the target.

After this the event will return along the dispatch chain from the target to the root node, this is the event bubbling phase. During this phase event handlers works in the same way as filters did in the event capturing phase. If a node has an event handler registered then that handler is called before the event is returned to the next node in the chain, unless the event is consumed by the handler.

A drag-and-drop gesture starts when the user clicks on a gesture source and drags the mouse. While dragging the data, the system gives the user visual feedback on the locations that accept the data to be dropped.

In [23], the author describes how drag-and-drop features are implemented in JavaFX. In order to start a drag-and-drop gesture the method startDragAndDrop must be called on the source object inside the handler of the DRAG_DETECTED event type. The convenience method setOnDragDetected registers an EventHandler for this event. The actual data is transferred using a dragboard, which can contain various types of data, such as files or string. In this implementation an EventHandler is registered on the list. When a drag is detected on the list the currently selected item in the list is identified and a string that corresponds to that item is put into the dragboard. In order for a drop to be accepted on a target object the acceptTransferModes

method must be called on the target. This method specifies which

TransferModes

the target will accept. If a drop can be accepted the user gets visual feedback that a drop action is possible on that location. The acceptTransferModes is called when the

DRAG_OVER

event is called for a target object. In order to complete a drop gesture the setOnDropCompleted must be called on the target with the parameter set to true. This is called when the DRAG_DROPPED event is triggered on the target object.

34

A class called DragPane was implemented by extending the JavaFX class StackPane and by attaching event handlers for the drag events. The event handlers of the DragPane handles drag and drop events for component and layout objects onto the DragPane. For the

DragPanes

, the events are consumed by the first handler that receives the event, i.e. before they bubble up onto the parent node. This will ensure that the event to be handled by the topmost node at any location which will make most sense for the user. Event handlers are also attached to the WindowTabPanes, but they only handle drops of new tabs onto the

WindowTabPane , not any other objects. Therefore the event will only be accepted and consumed if the dragged item is a new tab object. If the dragged item is of any other type the event will bubble up to the next node in the chain, which typically is a DragPane.

When dragging an item from the layout list and component list a string representing the item is put in the dragboard. The value put into the dragboard is associated with a DataFormat.

Two different DataFormats are used two distinguish if the dragged item is an Elsa component or a layout related item. Depending on the string the user gets different visual feedback when hovering over drop targets using event handlers for the DRAG_OVER and

DRAG_ENTERED

events. The feedback given is determined using if-statements that check which string the dragboard contains. When a new tab object is dragged over a pane that accepts tabs to be dropped the user gets visual feedback in the form of a new temporary tab, depicting that a new tab will appear at that location when the user releases the mouse, see

Figure 21

.

Figure 21: Detail of a WindowTabPane while a new tab object is being dragged over.

Figure 22: A component being dragged over a WindowTabPane, highlighting the DragPane inside it.

35

When dragging a valid object over a pane the standard feedback is to highlight that pane with a blue color, as shown in

Figure 22

. This is what happens when a component is dragged over a pane. For some of the layout items this functionality is refined in order to make the user better understand the changes that will occur when dropping the object. For example, the split items (horizontal and vertical) show a line in the middle of the pane, depicting in what direction the pane will be split. Dragging of layout items is also dependent on whether there is any content in the pane or not. If there is a component placed in the pane, dragging of, for example, a split item will not highlight the whole pane with a blue color. Instead the component in the pane will be moved slightly in the direction that the split operates and only the remaining area will be highlighted, see

Figure 23

.

Figure 23: A horizontal split item being dragged over the right side of a map component.

The location of a drop inside a pane is also relevant for some items. The border pane item for example allows the user to create a pane that is locked to one of the sides of a pane. When the mouse is hovered near one of the edges of a pane that side gets highlighted and any potential content in that pane will be moved to hint the user of what will happens when the drop takes place.

Once a layout container has been dropped on the scene it is highlighted with a thin blue border, see

Figure 24

. This was implemented for several reasons. Some of the layout containers are not visible (the boxes for example splits the view, but if dropped on an empty area the boxes are not visible to the user). By showing a blue border the user gets immediate feedback that the drop was successful. It also makes it clear where new items can be dropped and invites the user to do so.

36

Figure 24: A blue border indicates where components and layout items can be dropped. Here, a horizontal box has been dropped to the scene and a WindowTabPane have been dropped onto the left box.

The visual feedback is produced by changing the CSS styling of the DragPanes. When, for example, a border pane is dragged near the top of a pane the following CSS is applied to the pane:

 

‐fx‐border‐color: ‐ericsson‐pale‐blue‐40; 

‐fx‐border‐width: 30 0 0 0; 

‐fx‐padding: 1 0 0 0; 

 

This adds a border with a width of 30 pixels and the color defined by “‐ericsson‐pale‐ blue‐40”

at the top of the pane. The padding ensures that any potential children located in the pane will be shrunk by 30 pixels in the top. The styling is applied to the pane after clearing it, as in the following Java code snippet:

  pane.getStyleClass().clear();  pane.getStyleClass().add(TOP_STYLE); 

 

The WindowTabPane object has different CSS stylings defined depending on whether there are one or several tabs in its TabPane, marked by the class selector tabbed. This caused a problem when one or more WindowTabPanes were nested inside another. The reason for this is that CSS does not make a difference between a direct child and a descendant when using the standard descendant combinator in the CSS selector [24]. Instead the child combinator is used (denoted by “>”), making sure that only direct children of the tabbed items are targeted. An example of how this is used in the CSS is shown below:

 

.window‐tab‐pane .tabbed > .window‐pane .top{ 

   ‐fx‐padding: 0; 

37

The component list contains all available Elsa components. When a DRAG_DETECTED event is detected on the list, the fully qualified name of the selected components class is put into the dragboard as a string. An example of such a string is:

   com.ericsson.research.elsa.scene.component.LineChartComponent 

When the DRAG_OVER event is triggered for a DragPane the DataFormat of the dragboards content is checked. If it equals the DataFormat defined for Elsa components the systems proceeds to create an instance of the dragged component. This is done by first getting the class of the component using the method Class.forName() with the fully qualified name of the component as input. With the returned class object it is possible to create a new instance using the methods: getConstructor().newInstance(). The component instance is then simply added to the scene graph by setting it as a child to the pane where it was dropped.

It should be possible to move components that have been placed in the scene by dragging them into a new location. This is implemented by setting an event handler for the

DRAG_DETECTED

event on the DragPanes. However since the Elsa components are placed as children of DragPanes it will be the components that catch the drag event. It should be possible for the user to both interact with the components and to move them around, even during the layout building phase. These types of interaction are therefore separated into two modes.

The dragging mode is activated when the user holds down the control-key. When this key is pressed a list of all components is iterated and the method setOnMouseTransparent(true) is called for all nodes in the list. This will make the node completely transparent to mouse events and the event will be handled by the next node in the chain instead, typically the

DragPane

. The DragPane class has an event handler registered for the DRAG_DETECTED event, which handles the actual moving of a component. When the control key is released the setOnMouseTransparent method is called again on all nodes in the list but with false as parameter, thus allowing the user to interact with the components again.

Components can be grouped using tabs that can be placed either on the top application pane or in WindowTabPanes. By calling the convenience method setContextMenu() on these tabs a ContextMenu will be attached to the tabs. This ContextMenu will be shown when the user right clicks a tab and provides various actions that can be performed on the tab. The tab can be renamed, moved left or right within the tab pane or be removed completely, as depicted in Figure 25.

Figure 25: Context menu of a tab.

38

The user should be able to save the current state of the demonstrator at any time and come back to it later. The actual saving operation requires the system to iterate through the whole scene graph and to save the properties and relative structure of all nodes. Since JavaFX can construct the scene graph using FXML files, it is natural that the layout should be saved in this format. To save the layout is the topic of another thesis work.

It should be possible to load an existing FXML and modify the layout. To do this DragPanes must be inserted into the scene graph. This is done by first finding the ApplicationPane in the scene graph using an Elsa class called BeanGraphIterator, which iterates through the scene graph and returns the nodes in it. With the ApplicationPane found the content in each tab in it is sent to another class called DragPaneInserter. This class recursively steps through the children of the input node and attaches event handlers and inserts DragPanes for certain objects. When a split pane is found, for example, a DragPane is inserted into each child of the split pane.

By inserting DragPanes into the scene graph the user can start to drop components onto the scene and move the existing objects. With this approach it is also possible for the user to load an existing FXML file that already has been written and continue to work on it using the graphical editor. One possible use case is to move back and forth between the graphical editor and the FXML to edit it by hand. The overall layout could be defined in the editor but some users might want the flexibility to fine tune the scene graph by editing the FXML. Also, some components are not currently fully supported to be edited in Elsa, they have to be configured in the FXML in order to work properly. The system has been designed with this in mind. When the user exits design mode, all drag-and-drop event handlers are deregistered and all DragPanes are removed from the scene graph, which is done by a class called

DragPaneRemover

that works reversely to DragPaneInserter. This frees computer resources for the presentation mode and when saved the FXML file will have higher readability.

If the user chooses to overwrite a pane or remove a tab the content of it must be cleared and event handlers deregistered in order to avoid memory leaks. Event handlers are removed by calling the convenience method for the event with parameter null, e.g.: node.setOnDragDetected(null) .

To indicate the current state of the system, there is a component called IndicatorButton placed in the application pane, see Figure 26. This is a small circle that changes color depending on four states: yellow for the busy and warning state, red for the error state and green for the ok state. Different events trigger the different states, when connecting to a database for example the state will be switched to busy. The warning state can be triggered if a component is not connected to a data set. By clicking on the IndicatorButton the user can get information on what is causing potential problems. This makes it possible to easily detect and identify if the components in the scene have not been set up properly.

An example of a layout that has been built using the layout builder can be seen in Figure 26.

39

Figure 26: The main view in design mode, with the component and layout list to the left and application model buttons in the bottom. A layout that has been constructed using the layout builder takes up most of the screen real estate. Here, the IndicatorButton in the top right corner is yellow, indicating that the components have not been connected to a data source.

40

6.2 Evaluation

Once the layout builder had been implemented it was evaluated by the user group in the same manner as previous usability evaluations, but with a new set of tasks that the test users should perform. The tasks were designed to cover the whole process of setting up an Elsa application, from creating a simple application model to building a layout. Therefore both the improvements on the application model configuration and the layout builder interface could be evaluated in the same session.

All three test users of this evaluation round were able to complete the tasks within 30 minutes. The drag-and-drop functionality proved to be intuitive to use according to the users. Naturally, no user understood the functionality of the layout items and the components by just seeing the names, but they felt that the interface made it easy to test the various options to find out for themselves what they do. No major usability problem could be identified during the session but all test users gave suggestions for improvements of the interface.

The improvements made after the previous evaluation appeared to work as expected.

Especially the red validation texts in the data sources dialog seemed to be helping the users as they all took the time to figure out how to remove the red text. The results from the evaluations were used to produce a list of the most important improvements that can be made to the interface.

Overall the test users were satisfied in regards to the way the interface operates and their suggestions for improvements were mostly related to features they thought were missing.

They were especially concerned with features that would help them or stop them from making mistakes. For example, all test user thought that an undo functionality would be very useful. This is no surprise since it is an expected feature in similar interfaces. All users also suggested that it should be possible to remove components that have been placed on the scene. One user suggested that there should be a dialog that prompts the user to confirm some actions, for example when overwriting a component.

One user thought that state changes of the system could be communicated more clearly. He suggested that the indicator button could be improved by highlighting it when the state changes. A small message or popup could also appear next to it in order to quickly inform the user when a problem has occurred.

41

7

Conclusions

The goal of this master thesis project was to investigate if the time needed to construct a demonstrator could be reduced by implementing a system that lets the user set up and configure an interactive visualization in a user-friendly and intuitive way.

The work was carried out using an iterative design approach where each iteration was evaluated on the user group using a technique called cooperative evaluation. An initial prototype was produced, based on a user analysis, requirements and the design guidelines that were established. The prototype was then evaluated and refined before the implementation of the system could begin. The implemented system was iteratively evaluated and improved based on the feedback from each evaluation.

The result is an application that allows the user to set up the application model and construct a layout for the visualization. Most of the requirements that were set up have been fulfilled within the scope of this project. Below is a list of the initial requirements and a discussion on whether they have been fulfilled or not:

1. Configure the layout.

Using the drag-and-drop system that was implemented it is possible to configure the layout of an application.

2. Configure the application model during runtime.

The application model can be configured during runtime and it is possible to create a new application model or load an existing one.

3. Configure components during runtime.

The ability to configure Elsa components that have been placed on the scene during runtime is supported for the components that already had this functionality. To implement this for all components is beyond the scope of this project.

4. Save all changes made.

It is possible to save the current state of the application model to an XML file.

Although it was initially desired to use the results from another thesis project in order to save the layout to an FXML file, this was not implemented due to the projects not being scheduled to end at the same time.

5. Build a complete demonstrator within 3 hours.

It is possible to imagine very large data sets that would require a lot of timeconsuming form-filling. However, the evaluations show that it is possible for a test user to construct a simple demonstrator well within one hour. With a little training it should most certainly be possible to construct a reasonable complex demonstrator within the time frame set.

6. Learn and use the software with a minimum amount of effort.

This requirement is difficult to assess objectively. Through the iterative design process steps have been taken in order to minimize the amount of usability problems.

Further evaluations could have revealed more usability problems but the cost of another iteration was not deemed to be justified and was not within the time scope of this project.

42

In conclusion, the amount of work required to construct a demonstrator has been reduced compared to writing the configuration files by hand. This is especially true if the user neither has prior knowledge of XML nor of the data structure required by the Elsa platform.

The actual implementation of the system proved to be the most time consuming step. This step also had the majority of the weeks in the time plan, but due to inexperience with the platform and JavaFX it took up more time than what was planned for. Much of this extra time was spent in the application model phase in order to make more complex JavaFX components such as list views and table views to work as expected in the dialogs. The table view for example contains functionality that is not standard such as cell editing by both combo boxes and text fields. Also the work of creating all the forms and sub-forms proved to be a more time-consuming task than expected.

To define the layout for the forms using FXML instead of java code could have saved time and that option should have been evaluated more than it was. That would also have the added benefit of separating the view and logic more, now the code can be considered a bit cluttered and it might be time consuming to find and change a single field in the code.

The implementation of the layout builder on the other hand took less time than what was planned. This time reduction can be credited to the flexibility of the scene graph in JavaFX but also to the experience gained by working with the platform during the previous phase.

It is difficult to assess the efficiency of the chosen evaluation technique without any other method to compare to. However, it is certain that several usability problems were identified with this method and the overall usability of the software was improved after handling with these problems. The evaluation technique is considered to be time-efficient since it did not require much preparation and it was a benefit to have access to actual end-user for the evaluations as this revealed the needs of the user group.

It is also difficult to assess the efficiency of the iterative design process that was used.

However, by not having a final solution planned from the start, problems could be identified during the process and solutions could be examined and tested to ensure that they solved the problems.

43

8

Future work

To make the application complete it should be possible to save the layout that the user has created. Thanks to another thesis work on JavaFX scene graph serialization this is possible to achieve. At the time of writing this functionality has been developed and proved to work. To implement it with the work described in this thesis should be a trivial task since all that is required in order to produce an FXML file is calling a method and passing the root node and application controller as parameters.

Another thing that is missing is the ability to configure all of the Elsa components and connect them to the data. This functionality had been implemented for some of the components, but many of them are currently missing this. For some of them it is merely a matter of being able to specify an entity in the settings dialog of a component. Some are more complex; the map component, for example, requires layers to be defined in order to display any data. It should be possible to create and configure such layers in the settings dialog of the map component.

Another thing that can be improved is the way wrong input is communicated to the user.

One evaluation revealed that the red validation message in the data sources dialog was easily overlooked. This led to the improvement to show invalid data sources in a red color in the list. This functionality could be implemented in other dialogs as well. The feedback could also propagate to a higher level, the data sources button, for example, could be shown in red or have a small red icon next to it if there are invalid data sources. As the results from the final evaluation suggested, the indicator button could also be improved with a popup system to improve the error feedback to the user.

There are some parts of the interface that does not follow the Ericsson branding guidelines.

The table view in the data sources dialog for example is currently not following the guidelines. Following the guidelines everywhere would result in a more consistent interface both internally and compared to other Ericsson software interfaces. The interface prototype that was implemented suggested that icons should be used both in the layout and component list and for the application model buttons. This was left out due to time constraints but appropriate icons could be implemented to improve usability.

The improvements suggestions from the final evaluation are left unimplemented due to time constraints. The most important improvements should be incorporated in a future release of the software. Additional evaluations could also improve the usability even further.

44

References

[4]

[5]

[6]

[7]

[8]

[9]

[14]

[15]

[16]

[17]

[18]

[19]

[20]

[1]

[2]

[3]

[10]

[11]

[12]

[13]

Cindy Castillo. (2013, April) JavaFX Architecture. [Online]. http://docs.oracle.com/javafx/2/architecture/jfxpub-architecture.htm

Scott Hommel. (2013, April) Working with the JavaFX Scene Graph. [Online]. http://docs.oracle.com/javafx/2/scenegraph/jfxpub-scenegraph.htm

Oracle. (2012, June) Introduction to FXML. [Online]. http://docs.oracle.com/javafx/2/api/javafx/fxml/docfiles/introduction_to_fxml.html

Jenifer Tidwell, Designing Interfaces, 2nd ed. Sebastopol, CA: O'Reilly, 2011.

Stuart Card, Jock Mackinlay, and Ben Schneiderman, Readings in Information

Visualization: Using Vision to Think.: Morgan Kaufmann, 1999.

Colin Ware, Information Visualization: Perception for Design.: Morgan

Kaufmann, 2013.

Diane Tang, Chris Stolte, and Robert Bosch, "Design Choices when Architecting

Visualization," Information Visualization, INFOVIS, pp. 41-48, Oct. 2003.

Jakob Nielsen. (2012, Januari) Nielsen Norman Group. [Online]. http://www.nngroup.com/articles/usability-101-introduction-to-usability/

Mark Brunell. (2011, November) Search Business Analytics. [Online]. http://searchbusinessanalytics.techtarget.com/news/2240111798/Analysts-Datavisualization-tools-key-to-big-data-analytics-success

IBM. IBM Advanced Visualization. [Online]. http://www-

01.ibm.com/software/analytics/many-eyes/

Nicole Laskowski. (2012, August) Search Business Analytics. [Online]. http://searchbusinessanalytics.techtarget.com/news/2240160737/Reports-advicerankings-outline-data-visualization-platform-market

Tableau Software. Tableau Software. [Online]. http://www.tableausoftware.com/products/desktop

Kostas Pantazos, "Custom Visualization without Real Programming," Software and Systems, IT University of Copenhagen, Copenhagen, PhD Thesis ISBN:

9788779492875, 2013.

David Benyon, Designing Interactive Systems, 2nd ed. Harlow, England, N.Y.:

Addison Wesley, 2010.

J Nielsen, "Iterative User-Interface Design," Computer, vol. 26, no. 11, pp. 32-41,

November 1993.

Alan Dix, Janet Finlay, Gregory D. Abowd, and Russell Beale, Human-Computer

Interaction, 3rd ed. Harlow, Essex: Pearson Education Limited, 2004.

Alan Cooper, Robert Reimann, and David Cronin, About Face 3: The essentials

of interaction design, 3rd ed. Hoboken: John Wiley & Sons, Inc., 2007.

Evolus. Pencil Project. [Online]. http://pencil.evolus.vn/

Alla Redko. (2013, June) Using JavaFX UI Controls: 12 Table View. [Online]. http://docs.oracle.com/javafx/2/ui_controls/table-view.htm

Oracle. JavaFX 2.2 API. [Online]. http://docs.oracle.com/javafx/2/api/javafx/scene/control/TableColumn.html

45

[21]

[22]

[23]

[24]

Andrew Monk, Peter Wright, Jeanne Haber, and Lora Davenport, Improving Your

Human-Computer Interface: A practical technique. London: Prentice-Hall, 1993.

Joni Gordon. (2012, December) Handling JavaFX Events: 1 Processing Events.

[Online]. http://docs.oracle.com/javafx/2/events/processing.htm

Irina Fedortsova. (2012, April) Drag-and-Drop Feature in JavaFX Applications.

[Online]. http://docs.oracle.com/javafx/2/drag_drop/jfxpub-drag_drop.htm

(2011, September) W3C Recommendation. [Online]. http://www.w3.org/TR/2011/REC-css3-selectors-20110929/

46

Was this manual useful for you? yes no
Thank you for your participation!

* Your assessment is very important for improving the work of artificial intelligence, which forms the content of this project