Heiko Braun Software Engineer

User Experience Design: What does it mean?

Striving for positive user experience is a desirable goal, but when you ask what it actually means, the opinions differ quiet a lot. Fortunately other people did already try to come up with a definition as well. In this article I am going to reiterate the lessons learned working on large scale UI project for over a year.

 

A formal model

There are several way to look at the problem. I think the best way to explain user experience and the confusion it creates is by looking at the stakeholders and the lifecycle of a product.

First and foremost you have a user: The users needs are derived from the goals he/she wants accomplish using the product. Users needs are expressed in some form of functional specification. Discovering the needs and deriving the required feature set for a product happens in preparation to the actual implementation phase.

Implementing the features requires you to further decompose the work that needs to be done: You need to define how the user interacts with the functionality. You need to provide appropriate presentations of the information at hand.  And the product requires an appealing look & feel that assists the former two.

A more formal definition would probably refer to these terms instead: Interaction-, Information and Visual design.

Building user experience

Some of terms above directly imply skill-sets, but most of them don’t. I know the UX professionals out there will probably claim everything for themselves, but looking at their resumés shows that they have emerged from different careers as well: graphic designers, programmers, etc.

I think the heterogeneity of skills and people it requires to design a successful user experience is both beneficial to the overall outcome but the major source of confusion when people speak about UX. Graphic designers tends to borrow too many visual terms when explaining their point of view, whereas interactions designers might think too much along the lines of flashy navigation elements.

According to Jesse James Garrett we are looking at a layered approach: the Interaction- and Information Design build on the Functional Specifications. The Visual Design assists these two and does itself layer atop of the Information Design. Everything is baselined on the Users Needs.

(Image does lean on an explanation by Jesse James Garret)

Value proposition

Now while the above explanation helps to understand the elements of user   experience from a practitioners point view (people that build the solution) it provides a very formal approach to capturing the user needs.

Frank Guo describes a conceptual model that complements Garrets main elements quiet well. His model builds on four main questions:

  • Does the product provide value to the user?
  • Can the users tasks easily be accomplished?
  • How hard is it to start using it?
  • Do people like to use it?

He has reduced the formal description Garret is using to four key elements: Value, Usability, Adoptability and Desirability.

 

(Image does lean on an explanation by Frank Guo)

What I like about this approach, especially in conjunction with the formal, layered model, is that allows us to stay focused on the user needs, but to “prioritize UX efforts based on their business impact”.

Conclusion

Explanations of what constitutes user experience design still come in many flavors. To me the two approaches [1] outlined here have proven to be quiet valuable. The formal model is useful to categorize work within a company that is working on a product. It offers a clear structure that facilitates discussion around possible solutions.

But looking at the overall business value that’s associated with user experience design   (and maybe to explain the benefit to you manager) the second, user centric approach seems more reasonable.

 

[1] References

Why ideas like Kanban work so well …

I stumbled across a lean/agile presentation that did really impress me:

James Sutton talks about Kanban and lean ideas in software projects. His view onto management styles and approaches is amazingly focused and straight forward. I’d highly recommended it:

http://www.infoq.com/presentations/Go-With-The-Flow

JBoss AS7: Management Console 1.3.0 released

We are happy to announce the web console 1.3.0. Besides plenty of bug fixes the most notable additions are:

  • AS7-4338 Extended information/operations for HornetQ in the web console
    • AS7-4558 Ability to configure outbound socket bindings
      • AS7-4561 Localize help system
        • AS7-4193 Support modification of xa-datasource-class in the web console
          • AS7-4045 Accessibility improvements: keyboard navigation and main aria attributes core widgets and overall layout</ul> You can find the full release notes on github.

          Have fun,
          Heiko

Running a domain on a single machine

Sometimes it’s required to verify a domain setup with multiple hosts involved. But what if only a single machine is at your service? In this post, I am going to walk you through a simple setup that allows you to create a JBossAS 7 domain on a number of virtual hosts: Simply by binding the slave controllers to virtual network interfaces.

Create a slave controller configuration 

Create a copy of the domain directory that ships with the default distribution.

[code]
cp -R domain domain2
[/code]

The slave controller configuration (domain2/configuration/host.xml) requires two significant changes:

1.) assign a distinct host name
2.) turn the host control into a slave

The first step requires you to chose a name that distinct across the domain. We are going to name it “slave.local”:

[code] <host name=”slave.local” xmlns=”urn:jboss:domain:1.3″>
[/code]

The second step is as simple. Instead of declaring another master controller (element) we point the slave controller to a master it should connect to:

[code] <remote host=”${jboss.domain.master.address}” port=”${jboss.domain.master.port:9999}” security-realm=”ManagementRealm”/>
[/code]

For our purposes we stick with the expressions (${foo.bar}), because it allows us to easily pass in arguments from the command line. But you could as well provide fixed values.

Starting the host controller and it slave

Bring up the domain by starting the domain controller:

[code]
./bin/domain.sh
[/code]

Notice that we launch it without arguments. In this case it will refer to the default domain directory.

After a few seconds the host controller should up and running and started it’s default servers:

[code]
[Host Controller] 12:55:32,157 INFO  [org.jboss.as] (Controller Boot Thread) JBAS015874: JBoss AS 7.1.2.Final-SNAPSHOT “Brontes” (Host Controller) started in 5194ms – Started 12 of 12 services (0 services are passive or on-demand)
[/code]

The virtual network interface

Before we can launch the second controller (slave) we need to create a virtual network interface (alias) for the second process to bind to. We’ll simply create an alias on loopback adapter:

[code]
ifconfig lo0 alias 172.16.123.1
[/code]

Now we are ready to start the slave controller process, pointing it to the second directory:

[code]./bin/domain.sh \
-Djboss.domain.master.address=127.0.0.1 \
-Djboss.bind.address=172.16.123.1 \
-Djboss.bind.address.management=172.16.123.1 \
-Djboss.domain.base.dir=./domain2
[/code]

After a while the main controller registers it:

[code]
[Host Controller] 12:59:57,260 INFO  [org.jboss.as.domain] (domain-mgmt-handler-thread – 1) JBAS010918: Registered remote slave host “slave.local”, JBoss AS 7.1.2.Final-SNAPSHOT “Brontes”
[/code]

This means the domain including both “hosts” (aka ‘master’ and ‘slave.local’) is up and running. The same steps would be necessary to create a domain with two physical distinct hosts.

For more information please consult the JBoss AS7 Administration Guide:
https://docs.jboss.org/author/display/AS71/Admin+Guide

Stay tuned,
Heiko

JBoss AS7: Extended management options for messaging server components

We just finished a bunch of updates that complete the management options of the hornetq server components. With 7.1.2 you’ll get important management features that have been missing from the previous releases:

hornetq transports
connection factories
bridges, diverts, etc