Tuesday, October 28, 2008

Writing Requirements from a UX Perspective

Here is Alan Cooper's five step cycle for requirements refinement and solidification. With some products one iteration may be enough often refinements will need to be made several times to maintain a comprehensive focus.
  1. Create problem and vision statements
  2. Brainstorm
  3. Identifying persona expectations
  4. Constructing context scenarios
  5. Identifying requirements
One: Creating Problem and Vision Statements (an argument of purpose)
In every product there must be a central thesis or argument of purpose behind which all stake holders unite. This statement will then be used to assign value to each proposed feature during the following brainstorming sessions. It also provides a cohesive focus for the product. It is vital that the feature set be as concise and focused as possible. This statement will help reduce features which may be appealing to specific stake holders, but do not facility the user in efficiently realizing his primary goals. Finally, it is vital that usability issues, which are always critical to the success of the application, be illustrated in terms of business goals!

Two: Brainstorming
During brainstorming it is important to focus on how users will use the product. Spend more time talking about use cases and little on features and layout. Let go of preconceived ideas about how the product will look and allow new UI concepts to form around the specific needs of the user. Do not lock down UI here.

Three: Identifying User Expectations
Understand the features the users will expect to find in the product. Focus on making expected functionality as apparent as possible. Also, realize that different users will expect to accomplish the same task in different ways. Attempt to outline areas where the application needs to be permissive. (An application is said to be permissive when a user has many ways and orders in which he can accomplish the same task.) This is usually expensive so identifying key areas here will save time. Remember as these are issues of usability it is vital to tie them directly to business objectives.

Four: Constructing Context Scenarios
Context Scenarios focus on how the users will interactive with the product in their typical usage environments. Here we focus on how the user lives with the product throughout his day. From our context scenarios we will form requirements designed around how the user will accomplish his goals while driving, multitasking in a busy office, or in whatever environment he typically finds himself. It is important to focus on overall user-objectives first and then iteratively fill in the details. Context Scenarios should not describe specific UI design, but will be used as a source for discovering the priority of user's needs. Context Scenarios allow us to create novel solution. It is important to never mention specific UI interactions at this stage!
An example Context Scenario can be found in The Essentials of Interaction Design 3 on pg 120.

Five: Identifying Requirements
Accept that Requirements are not to be comprised of features and tasks. It is recommended to think of requirements as consisting of the following three primary components:
  1. Objects: The information that the user will need in order to accomplish his goals, these would be messages, comments, images, blog entries, as well as associated information publish date, file size etc.
  2. Actions: The operations the user will need to perform on the objects. Later UI controls will be created to conduct these operations. Hence, actions will also help determine where information should appear in the UI.
  3. Contexts: Development timelines, business models, technical limitiations, customer based limitations.

From here it should be possible to begin drawing UI diagrams and defining interactions.



(For more information on this topic view the text: The Essentials of Interaction Design 3 pg 115.)

Sunday, August 31, 2008

What Robert Penner Never Told You About His 'Easing Equations'

In his epic work "Programming Macromedia Flash MX" Robert Penner introduced his easing equations to the world. Of course, the equations were standard curves used in interpolation throughout animation programming. However, these curves had never before been available in Flash. (Later, Macromedia would add them to the standard Flash libraries.)

Interestingly, it turns out that these curves with the names NSAnimationEaseInOut, NSAnimationEaseIn, NSAnimationEaseOut had existed on OS X/NeXTStep computers for nearly 15 years before Penner would bring them to Flash. Of course, the developers of Flash must have used NSAnimations before they brought the term 'easing' to the mainstream through the Flash UI. (Outside of Flash/COCOA the term 'easing' is never used in formal academic circles and is always refered to as interpolation.)

It infact appears that many ActionScript classes have Object-C/COCOA ancestors such as hitTest, NSURLRequest, NSURL, and many more.

Wednesday, August 27, 2008

Add, Set, and Delete Cookies in UIWebView with NSHTTPCookieStorage

NSHTTPCookieStorage allows you to update the cookies for every request made from your application. UIWebViews will respond to this changes in cookies at run time and NSHTTPCookieStorage allows you to listen for changes in cookies as the are normaly set in the browser.

To get the cookies for any url use:
NSHTTPCookieStorage* cookieStorage = [NSHTTPCookieStorage sharedHTTPCookieStorage];
NSArray* theCookies = [cookieStorage cookiesForURL:[NSURL URLWithString:@"http://example.com"]];


This makes it possible to easily login or logout a user from a website presented in your UIWebView.

Checkout NSHTTPCookieStorage* for all the details.

Labels: , , ,