User Driven Software Architecture

156
User Driven Software Architecture Simon Guest Senior Director Platform Architecture Team Microsoft Corporation

description

A presentation that shares a framework for thinking about user experience as part of software architecture and development.

Transcript of User Driven Software Architecture

Page 1: User Driven Software Architecture

User Driven Software ArchitectureSimon GuestSenior DirectorPlatform Architecture TeamMicrosoft Corporation

Page 2: User Driven Software Architecture

“What is Architecture?”

Page 3: User Driven Software Architecture

“Architecture is the balance between art and

engineering”

Page 4: User Driven Software Architecture

But does this apply toSoftware Architecture?

Page 5: User Driven Software Architecture

Engineering Concerns

SOA

ESB

Web Services

Transactions

ORM

Replication

etc.

Page 6: User Driven Software Architecture

What is the art in Software Architecture?

Page 7: User Driven Software Architecture

User ExperienceOften Comes Last

Page 8: User Driven Software Architecture

User ExperienceOften Comes Last

Source: www.userinterfacehallofshame.com

Page 9: User Driven Software Architecture

User ExperienceOften Comes Last

Source: www.userinterfacehallofshame.com

Page 10: User Driven Software Architecture

User ExperienceOften Comes Last

Source: www.userinterfacehallofshame.com

Page 11: User Driven Software Architecture

Why is this the case?

Well understood environment…

…with bright people…

…and stable business model

Page 12: User Driven Software Architecture

Why is this the case?

…and we’d never get funding

I’m not very good at UI stuff…

…our users are smart enough…

Page 13: User Driven Software Architecture

Why is this the case?

“What did I do wrong?”

Page 14: User Driven Software Architecture

New Perspective

Page 15: User Driven Software Architecture

New Perspective

As architects and developers, we are in a position to affect user

experience

Page 16: User Driven Software Architecture
Page 17: User Driven Software Architecture

“Was this application really designed for me?”

“Why doesn’t this application help me get my work done?”

“If it wasn’t for this application, I’d do stuff differently”

Page 18: User Driven Software Architecture

Personas Purpose Prototype

Ideas

Page 19: User Driven Software Architecture

Personas Purpose Prototype

Ideas

“I use a similar application at home, and that works”

“Should I have read the manual?”

“The performance of this application sucks!”

Page 20: User Driven Software Architecture

Personas

Performance

Productivity

Purpose Prototype

Platform

Interface

Ideas

Page 21: User Driven Software Architecture

Personas

Performance

Productivity

Purpose Prototype

Platform

Interface

Ideas

“Err.. How long did you guys spend developing this?”

“I don’t think it installed properly…”

“Excuse me! I have a suggestion…”

Page 22: User Driven Software Architecture

Personas

Performance

Productivity

Purpose Prototype

Proactive

Platform

Proven People

Interface

Ideas

Internals

Page 23: User Driven Software Architecture

Performance

Productivity

Purpose Prototype

Proactive

Platform

Proven People

Interface

Ideas

Internals

Personas

Page 24: User Driven Software Architecture

Ideas > Personas

Page 25: User Driven Software Architecture

Ideas > Personas

Know Thy UserFor He Is Not Thee

Questions and Quote, Source: Why Software Sucks [2006], David Platt

Page 26: User Driven Software Architecture

Ideas > Personas

Definition of a “user”

Page 27: User Driven Software Architecture

Ideas > Personas

“This would be quicker to develop as a Web Application. Users will

understand how to use this.”

Page 28: User Driven Software Architecture

Ideas > Personas

“Yeah, most users will have access to a printer from their desk…”

Page 29: User Driven Software Architecture

Ideas > Personas

“Of course this button should be red. Users will know that this

means danger.”

Page 30: User Driven Software Architecture

Ideas > Personas

Think instead using Personas

Page 31: User Driven Software Architecture

Ideas > Personas

Sally (Sales Professional)• 38, Married• 2 Children• 5 years of computer experience• Windows, Office, PowerPoint• Has between 10 and 20 SME clients• Uses Sony Vaio and Samsung Blackjack

“Keep me connected to the top issues that customers are calling in with”

Page 32: User Driven Software Architecture

Ideas > Personas

Derek (Call Center Operator)• 25, Single• 9 years of computer experience• 3 years of which in a call center• PDA/gadget junkie – “lifehacker”• Relies on call center application• Gets bonus if exceeds monthly quota

“I want the application to decrease my time spent per call”

Page 33: User Driven Software Architecture

Ideas > Personas

Jim (Call Center Executive)• 57, Married• 4 Children, all left home• Very limited computer experience• Brenda (his admin) used to print all his Email until very recently• Shows off his PDA on the golf course

“I want the high level, abstract view of my customers”

Page 34: User Driven Software Architecture

Ideas > Personas

“For Sally, a Web Interface may make sense. But Derek has a lot of

keyboard shortcuts we need to implement.”

Page 35: User Driven Software Architecture

Ideas > Personas

“Jim will have access to a printer via his admin, but Sally works on

the road, so may need another option”

Page 36: User Driven Software Architecture

Ideas > Personas

“For Jim, a red button may mean danger, but we should check for

Derek in our offshore call center”

Page 37: User Driven Software Architecture

Ideas > Personas

Takeaways

Do you use personas today? If so, how many?(3 – 7 personas per application is recommended)

How do you use the word “user”?(Think about personas to help define who you are writing the application for)

Do you know how Microsoft uses personas?(Use “Persona Lifecycle” for VSTS related personas)

Source: Persona Lifecycle [Pruitt, Adlin] Morgan Kaufmann

Page 38: User Driven Software Architecture

Performance

Productivity

Purpose Prototype

Proactive

Platform

Proven People

Interface

Ideas

Internals

Personas

Page 39: User Driven Software Architecture

Ideas > Purpose

Page 40: User Driven Software Architecture

Ideas > Purpose

Create new document

Create new document

Type textType text

Format the textFormat the text

Email to editorEmail to editor

Page 41: User Driven Software Architecture

Ideas > Purpose

Create new document

Create new document

Type textType text

Format the textFormat the text

Email to editorEmail to editor

Task

Task

Task

Task

Goal

Page 42: User Driven Software Architecture

Ideas > Purpose

Page 43: User Driven Software Architecture

Ideas > Purpose

Create new document

Type text

Format the text

Email to editor

Task

Task

Task

Task

Filter

Page 44: User Driven Software Architecture

Ideas > Purpose

Create new document

Type text

Format the text

Email to editor

Task

Task

Task

Task

GuesstheGoal

Page 45: User Driven Software Architecture

Ideas > Purpose

Page 46: User Driven Software Architecture

Ideas > Purpose

Create new document

Type text

Format the text

Email to editor

Task

Task

Task

Task

ApplyConte

xt

ApplyConte

xt

ApplyConte

xt

Page 47: User Driven Software Architecture

Ideas > Purpose

Page 48: User Driven Software Architecture

Ideas > Purpose

Page 49: User Driven Software Architecture

Ideas > Purpose

Page 50: User Driven Software Architecture

Ideas > Purpose

Source: www.devcomponents.com

Page 51: User Driven Software Architecture

Ideas > Purpose

TakeawaysIn use cases, how do you deal with tasks and goals?(Focus on the difference between the two)How do you use context in your applications?(Use context to help guide the experience)Could the Office UI be suitablefor your application?(Refer to the list of ISVs supporting controls)

Page 52: User Driven Software Architecture

Performance

Productivity

Purpose Prototype

Proactive

Platform

Proven People

Interface

Ideas

Internals

Personas

Page 53: User Driven Software Architecture

Ideas > Prototype

Page 54: User Driven Software Architecture

Ideas > Prototype

You want to build a house…

You hire a building architect…

You discuss requirements…

Page 55: User Driven Software Architecture

Ideas > Prototype

A prototype is created

Page 56: User Driven Software Architecture

Ideas > Prototype

12 months later…

Page 57: User Driven Software Architecture

Ideas > Prototype

You want to build a house…

You hire a software architect…

You discuss requirements…

Page 58: User Driven Software Architecture

Ideas > Prototype

Yeah, sorry, I don’t have much to show you right now…

Page 59: User Driven Software Architecture

Ideas > Prototype

I can show you some diagrams, but you won’t understand them.

Page 60: User Driven Software Architecture

Ideas > Prototype

But trust me – it’s going to be great!

Page 61: User Driven Software Architecture

Ideas > Prototype

12 months later…

Page 62: User Driven Software Architecture

Ideas > Prototype

In Software Architecture we don’t do enough prototyping

Page 63: User Driven Software Architecture

Ideas > Prototype

Static, one-way presentations(shown only to management)

Few re-usable design assets

Often different to what gets delivered

Page 64: User Driven Software Architecture

Ideas > Prototype

Great for Management!

• Looks almost done

• But… Users won’t give you much feedback…

• High Fidelity

• “Just sign here…”

Page 65: User Driven Software Architecture

Ideas > Prototype

Great for Users!

• Great for user feedback

• But… You wouldn’t take it into the board room…

• Low fidelity

• “Sure, we can move it…”

Image: Paper Prototyping / Nielsen Norman Group

Page 66: User Driven Software Architecture

Ideas > Prototype

The same set of controls

Inherit High Fidelity StyleInherit High Fidelity Style Inherit Low Fidelity StyleInherit Low Fidelity Style

Page 67: User Driven Software Architecture

Ideas > Prototype

How about if we could switch styles?

Page 68: User Driven Software Architecture

Ideas > Prototype

Takeaways

Are you able to re-use any assets?(A prototype in XAML allows many design assets to be reused)

What prototyping do you do?(Software Architects don’t do enough)

What fidelity do you use?(A mix of high and low fidelity prototypes can be used for different feedback loops)

Page 69: User Driven Software Architecture

Performance

Productivity

Purpose Prototype

Proactive

Platform

Proven People

Interface

Ideas

Internals

Personas

Page 70: User Driven Software Architecture

Performance

Productivity

Purpose Prototype

Proactive

Platform

Proven People

Interface

Ideas

Internals

Personas

Page 71: User Driven Software Architecture

Interface > Platform

Page 72: User Driven Software Architecture

Interface > Platform

Too many choices…

Page 73: User Driven Software Architecture

Interface > Platform

No one wants to choose the wrong thing…

Page 74: User Driven Software Architecture

Interface > Platform

Pick something based on Competition

Pick something based on Experience

Pick something based on Politics

Simon Guest
Insert politics
Page 75: User Driven Software Architecture

Interface > Platform

Technically savvy, but not optimal

Trapped in a process

It’s just the way that things work here

Page 76: User Driven Software Architecture

Interface > Platform

But there’s plenty of guidance, right?

Page 77: User Driven Software Architecture

Interface > Platform

No!

Page 78: User Driven Software Architecture

Interface > Platform

Microsoft is Guilty!

Page 79: User Driven Software Architecture

Interface > Platform

Study of permutationsto deliver a user interface

Page 80: User Driven Software Architecture

Interface > PlatformWindows Presentation Foundation Client

Smart Client with ClickOnce Deployment

Windows Presentation Foundation XBAP

Microsoft Office SharePoint Web Part

Windows Vista Gadget PowerShell CmdLet InfoPath Media Center Add In

Windows Live Messenger Add In

Command Line Application

Microsoft Office Add In Media Player Add in

Windows Live Messenger Activity Window

ASP.NET Microsoft Office COM Add In

XBOX/XNA Application

Windows Forms Application

ASP.NET Mobile Microsoft Office Business Application

Windows Mobile Pocket Outlook Application

Windows Desktop Search Add In

ASP.NET AJAX Microsoft Office Smart Docs

Ink Enabled Tablet Application

Windows Forms via Terminal Services

Internet Explorer Add In Microsoft Office VBA Windows Mobile 5.0 Application

System Tray Applet Silverlight Microsoft Office VSTO Add In

Windows Mobile 5.0 Smartphone Application

32(We actually think it’s nearer to 50, but we ran out of time)

Page 81: User Driven Software Architecture

Interface > Platform

What vectors can we use?

Page 82: User Driven Software Architecture

Interface > Platform

Application

Connectivity

Graphics

Look and Feel

Interaction

Environment

Installation

Integration

Hardware

Developer IQ

Persona

Location

Mobility

Training

Personalization

Page 83: User Driven Software Architecture

Interface > Platform

Page 84: User Driven Software Architecture

Interface > Platform

Takeaways

What can Microsoft do to help?(We need to create more guidance for helping abstract technology selection decisions)

How do you select technology?(Gut feel may result in short term gain, but often long term pain)

Would a tool like this be useful?(And if so, do you have any other ideas for visualization?)

Page 85: User Driven Software Architecture

Performance

Productivity

Purpose Prototype

Proactive

Platform

Proven People

Interface

Ideas

Internals

Personas

Page 86: User Driven Software Architecture

Interface > Productivity

Page 87: User Driven Software Architecture

Interface > ProductivityP

rod

ucti

vit

y

Time

Page 88: User Driven Software Architecture

Interface > ProductivityP

rod

ucti

vit

y

Time

1. Discovery

2. Learning

3. Mastery

Page 89: User Driven Software Architecture

Interface > ProductivityP

rod

ucti

vit

y

Time

Reduced byFamiliarity

Page 90: User Driven Software Architecture

Interface > Productivity

Page 91: User Driven Software Architecture

Interface > Productivity

Page 92: User Driven Software Architecture

Interface > Productivity

Page 93: User Driven Software Architecture

Interface > Productivity

Siebel Client Siebel CRM

Page 94: User Driven Software Architecture

Interface > Productivity

Web Browser Siebel CRM

Web Services

ASP.NET

Page 95: User Driven Software Architecture

Interface > Productivity

Web Browser Siebel CRM

Web Services

ASP.NET

Outlook

Page 96: User Driven Software Architecture

Interface > Productivity

Page 97: User Driven Software Architecture

Interface > Productivity

Web Browser Siebel CRM

Web Services

ASP.NET

Outlook

Page 98: User Driven Software Architecture

Interface > Productivity

Web Browser Siebel CRM

Web Services

ASP.NET

Outlook

Page 99: User Driven Software Architecture

Interface > Productivity

Page 100: User Driven Software Architecture

Interface > ProductivityP

rod

ucti

vit

y

Time

DL

M

Persona - Sally

Page 101: User Driven Software Architecture

Interface > ProductivityP

rod

ucti

vit

y

Time

Persona - Derek

D L

M

Page 102: User Driven Software Architecture

Interface > ProductivityP

rod

ucti

vit

y

Time

Persona - Jim

DL

M

Page 103: User Driven Software Architecture

Interface > ProductivityP

rod

ucti

vit

y

Time

D L

M

Page 104: User Driven Software Architecture

Interface > Productivity

Takeaways

Is productivity important for different roles in your organization?(Map personas to the productivity curve)

How do you measure productivity?(Often the most productive applications are not the best looking)

Can existing experiences be extended?(Often extending an experience results in greater productivity)

Page 105: User Driven Software Architecture

Performance

Productivity

Purpose Prototype

Proactive

Platform

Proven People

Interface

Ideas

Internals

Personas

Page 106: User Driven Software Architecture

Interface > Performance

Performance conversations are often engineering

conversations

Page 107: User Driven Software Architecture

Interface > Performance

Performance vs. Expectations

Page 108: User Driven Software Architecture

Interface > Performance

Specific Expectations

Page 109: User Driven Software Architecture

Interface > Performance

Why is this taking so long?!

Page 110: User Driven Software Architecture

Interface > Performance

Few Expectations

Page 111: User Driven Software Architecture

Interface > Performance

I wonder how long this will take?

Page 112: User Driven Software Architecture

Interface > Performance

Asynchronous Javascript And XML

Page 113: User Driven Software Architecture

Interface > Performance

Page 114: User Driven Software Architecture

Interface > Performance

Takeaways

Have user’s expectations been met?(Sitting with users before a new system is deployed can help set expectations)

How do you plan for performance?(Conversations around milliseconds tend to be engineering focused)

What technology do you use?(AJAX can help address specific expectations that the user may have)

Page 115: User Driven Software Architecture

Performance

Productivity

Purpose Prototype

Proactive

Platform

Proven People

Interface

Ideas

Internals

Personas

Page 116: User Driven Software Architecture

Performance

Productivity

Purpose Prototype

Proactive

Platform

Proven People

Interface

Ideas

Internals

Personas

Page 117: User Driven Software Architecture

Internals > Proven

Page 118: User Driven Software Architecture

Internals > Proven

The biggest hurdle for building trust in your application is time

Page 119: User Driven Software Architecture

Internals > Proven

Once that trust is lost, it’s very difficult to recover

Page 120: User Driven Software Architecture

Internals > Proven

InstallationVisualization• Annoying Flash/animations• Too many options• Unpacking the installation

Pre-Requisites• Do you really need a restart?• What permissions required?• What apps need quitting?

Source: http://simonguest.com/blogs/smguest/archive/2006/11/21/Ten-Ways-for-Good-Installation-Karma.aspx

Page 121: User Driven Software Architecture

Internals > Proven

Installation

Handling Exceptions

Page 122: User Driven Software Architecture

Internals > Proven

Installation

Handling Exceptions

Enable Undo’s

Page 123: User Driven Software Architecture

Internals > ProvenTypical User Testing

Willing users

Page 124: User Driven Software Architecture

Internals > Proven

Page 125: User Driven Software Architecture

Internals > Proven

Willing user

Etc.

RITE Rapid Iterative Testing and Evaluation

Page 126: User Driven Software Architecture

Internals > Proven

Source: http://download.microsoft.com/download/5/c/c/5cc406a0-0f87-4b94-bf80-dbc707db4fe1/mgsut_MWTRF02.doc.doc

RITE Rapid Iterative Testing and Evaluation

Page 127: User Driven Software Architecture

Internals > Proven

Takeaways

How do you deal with installation, exception handling, and undos?(They are all part of the experience)

What is your quality bar?(Trust takes time)

What is your user testing strategy?(The RITE methodology can help finderrors that would go otherwise undiscovered)

Page 128: User Driven Software Architecture

Performance

Productivity

Purpose Prototype

Proactive

Platform

Proven People

Interface

Ideas

Internals

Personas

Page 129: User Driven Software Architecture

Internals > People

Page 130: User Driven Software Architecture

Internals > People

It’s all about the SDLC…

Page 131: User Driven Software Architecture

Internals > PeopleProject Starts!

Project Complete

Use cases created IT + User / BA

Prototyping IT

Developmentof Services

IT

UI is created IT

User Testing User / BA

Page 132: User Driven Software Architecture

Internals > People

I know what we’ll do…

Page 133: User Driven Software Architecture

Internals > PeopleProject Starts!

Use cases created

Prototyping

Developmentof Services

UI is created

IT + User / BA

IT

IT

IT

User Testing

Project Complete

User / BA

Page 134: User Driven Software Architecture

Internals > People

A more successful methodology for promoting UX

Page 135: User Driven Software Architecture

Internals > People

Project Starts!

Project Complete

Use cases created IT + User / BA

Prototyping

Developmentof Services

IT

User Testing User / BA

Page 136: User Driven Software Architecture

Internals > People

Are all designers the same?

Page 137: User Driven Software Architecture

Internals > People

Project Starts!

Project Complete

Use cases created IT + User / BA

Prototyping

Developmentof Services

IT

UI and ServicesIntegrated

User Testing User / BA

Developmentof UX

Page 138: User Driven Software Architecture

Internals > People

Graphic Designer

Interaction Designer

Interaction Designer

Page 139: User Driven Software Architecture

Internals > People

Page 140: User Driven Software Architecture

Internals > People

Project Starts!

Project Complete

Use cases created IT + User / BA

Prototyping

Developmentof Services

IT

UI and ServicesIntegrated

User Testing User / BA

Developmentof UX

Page 141: User Driven Software Architecture

Internals > People

Project Starts!

Project Complete

Use cases created IT + User / BA

Prototyping IT + Designer + User / BA

Developmentof Services

IT

IT + Designer

User Testing User / BA

Developmentof UX

Designer + User / BA

Page 142: User Driven Software Architecture

Internals > People

XAML

DeveloperDesigner

What we need to learn:

• How much code level understanding will designers require?

• Who owns check-in of XAML artifacts?

• Will we require an “interface stub” for communication?

Page 143: User Driven Software Architecture

Internals > People

Takeaways

What types of designers do you need?(Recognize the different designer roles and how they can work within the SDLC)

Does UX factor in to your SDLC?(Incorporating UX into the SDLC can help create a better output)

Do your developers and designers talk to each other?(We need to support this)

Page 144: User Driven Software Architecture

Performance

Productivity

Purpose Prototype

Proactive

Platform

Proven People

Interface

Ideas

Internals

Personas

Page 145: User Driven Software Architecture

Internals > Proactive

Page 146: User Driven Software Architecture

Internals > Proactive

Hey team, v2.0 was a hit!

8 7 7 9 8

Page 147: User Driven Software Architecture

Internals > Proactive…it’s been out for a month and we haven’t heard a thing back from our

users!

? ? ? ? ?

Page 148: User Driven Software Architecture

Internals > Proactive

Reactive feedback is all too common

2 1 3 1 1

Page 149: User Driven Software Architecture

Internals > Proactive

Page 150: User Driven Software Architecture

Internals > Proactive

Rating scale in the application

Page 151: User Driven Software Architecture

Internals > Proactive

Rating scale in the application

Remote troubleshooting

Page 152: User Driven Software Architecture

Internals > Proactive

Rating scale in the application

Remote troubleshooting

Effective status updates

Page 153: User Driven Software Architecture

Internals > Proactive

2 1 3 1 1

Takeaways

What happens when things go wrong?(How does the architecture of an application handle exceptions?)

How do your users provide feedback?(Proactive feedback can be very powerful input for the SDLC)

Do you provide status?(Good and bad status reports can help users better understand failure)

Page 154: User Driven Software Architecture

Performance

Productivity

Purpose Prototype

Proactive

Platform

Proven People

Interface

Ideas

Internals

Personas

Page 155: User Driven Software Architecture

Performance

Productivity

Purpose Prototype

Proactive

Platform

Proven People

Interface

Ideas

Internals

Personas

Define the Interface and think about how the platform choice, productivity, and performance will affect you

Remember the Internals that enable proven, proactive applications designed by a team that understands user experience

Overall Takeaways

Realize Ideas by defining personas, purpose and prototyping

Page 156: User Driven Software Architecture

© 2007 Microsoft Corporation. All rights reserved. Microsoft, Windows, Windows Vista and other product names are or may be registered trademarks and/or trademarks in the U.S. and/or other countries.

The information herein is for informational purposes only and represents the current view of Microsoft Corporation as of the date of this presentation. Because Microsoft must respond to changing market conditions, it should not be interpreted to be a commitment on the part of Microsoft, and Microsoft cannot guarantee the accuracy of any information provided after the date

of this presentation. MICROSOFT MAKES NO WARRANTIES, EXPRESS, IMPLIED OR STATUTORY, AS TO THE INFORMATION IN THIS PRESENTATION.

[email protected]

http://www.simonguest.com