Archive for October 28th, 2008
-
Designing for User Performance
Stopped by to listen to Larry Constantine today to hear what he is thinking about how to best design applications. These are a number of the key points I picked up from his talk:
- Prioritize design efforts around tasks which have the most frequency and greatest importance.
- Organize designs around the fewest number of transitions for key tasks
- Keep the screen context consistent when you do transition.
- Use proximal and visual context to group related and associated elements.
- Provide context when offering corrections and support editing-in-place when the user makes an error.
- Edit-in-place is the best way to train the user on the correct data entry.
- Redundancy or alternate paths are in general a good thing; allowing actions to be reversible is better.
- For user tasks that are not reversible we need to carefully consider their design. (ed. duh!)
- Filter non-numeric characters from number only fields.
- Don’t make the user a subroutine of the program, automatically update known information if the user gave it to you.
- If there is a natural\alternative way of entering data in the real world, the machine should be flexible enough to accept it.
- If the error is obvious and detectable by the program, why tell the user about it?
- Propagate errors, and their cause, to the highest level that can handle them.
- If there is an error in the program, tell people where the error is and how to fix it.
- Don’t ever give an nodal\dialogue\confirmation box to a user unless the message is relevant, recognizable AND the user can intelligently respond to the message; otherwise just “eat” the message.
-
SOA Measures for Success
One of the sessions I visited today was about what are the correct measurements to determine if your SOA initiative was successful. One of the most interesting statistic from the speaker was this continuum of cyclometric complexity (CC):
CC < 10: "simple" code 10 > CC < 20: "moderately" complex code 20 > CC < 50: "severely" complex code CC > 50: "untestable"He based that experience on a simple equation of:
# of test cases = 2CC-1
Which suggests code with a CC as low as 15 will have 16,384 test cases! Ouch! That has got to hurt considering functional testing only gets you about 20% of test coverage.
I think another valuable observation provided was software reliability is inversely related to CC, the higher the CC, the less reliable the software. The most eye-popping statistic from the talk was the speaker’s observation that if you can refactor your code to have a CC in the 10-15 range, an organization would reduce their maintenance costs by 2 to 5 times!
Finally, these are the ten measures from the talk that I thought I would share with all of you and how one should optimize the measures. The words in the parenthesis are what level the measures speak to.
- Dollars per service -> higher is better (corporate)
- Service vitality index (new service revenue/total revenue) -> ~10%-20% is good (corporate)
- Number of new services/total services -> higher % is better(management)
- Mean time to service deployment -> lower t is better (management)
- Mean time to service charge -> lower t is better (management)
- Service availability -> higher % is better (management)
- Service reuse -> higher % is better (project)
- Cost of not using/stopping the service -> lower $ is better (project)
- Service complexity -> lower CC is better (service)
- Service QA confidence -> higher % is better (service)
Frequent Topics
Agile Agile SD Certified ScrumMaster Coaching Collaboration Communication Conferences Daily Scrum Design Excellence Design for Six Sigma Extreme Programming Games Innovation Games Lean Legacy Code Links of the Week Measures Movies Pair Programming Personal Planning PMI Practices Presentations Product Owner Quality Refactoring Retrospectives Rugby Scrum ScrumMaster SIMSOC Spain Team Test-Driven Development Testing Tools Training Transitions Travel Voice of the Customer
Calendar
Recent Comments
- Kenneth van Rumste on Scrum Roles Defined
- Carlton on Scrum Roles Defined
- Kenneth van Rumste on Scrum Roles Defined
User Groups
Archives
- May 2011 (1)
- February 2011 (1)
- January 2011 (5)
- November 2010 (3)
- October 2010 (6)
- September 2010 (5)
- August 2010 (4)
- July 2010 (6)
- June 2010 (2)
- May 2010 (2)
- April 2010 (5)
- March 2010 (3)
- February 2010 (5)
- January 2010 (7)
- December 2009 (8)
- November 2009 (2)
- October 2009 (6)
- September 2009 (9)
- August 2009 (7)
- July 2009 (4)
- June 2009 (3)
- May 2009 (3)
- April 2009 (5)
- March 2009 (6)
- February 2009 (6)
- January 2009 (7)
- December 2008 (10)
- November 2008 (11)
- October 2008 (10)
- September 2008 (4)
- August 2008 (5)
- July 2008 (5)
- June 2008 (8)
- May 2008 (5)
- April 2008 (3)
