What’s the Problem?

by Tim Meehan, Norm Carr

33 Reader Comments

Back to the Article
  1. This is a great example of how practices used software development can benefit web designers.  I’ve also written a bit on the subject too of a more agile approach (taken from software design) and it’s application to building web applications with standards:


    Copy & paste the code below to embed this comment.
  2. Thank you! Good article and very useful sounding approach. One point I’d like to make is, in my experience, this type of activity generally needs to happen during the RFP phase (before the client is “your” client).

    Copy & paste the code below to embed this comment.
  3. Thats just distilled several weeks of lectures on UML into a much easier to understand approach. Thanks very much.

    Copy & paste the code below to embed this comment.
  4. I can definitely see this coming in helpful for teams. I suppose you could parellel this to something like documenting your own code. It’s especially recommended when working with programming teams, but can also be highly beneficial to oneself.

    Plus, pictures make for easier understanding on project managers and clients and the non-techies.

    The use of use-cases is also very similar to writing pseudo-code. In the end, the lesson learned is that you need to draw some kind of map out of the project before diving right in.

    Copy & paste the code below to embed this comment.
  5. As Jan Marie pointed out, you can use this approach to land a client or even write an RFP

    Copy & paste the code below to embed this comment.
  6. Actors, UML and documention, oh my! Nice to have a double issue (if it is), just having some flashbacks to my software project courses.

    Copy & paste the code below to embed this comment.
  7. A tool I like to use a lot is creating scenarios. I would say they are the same than use-cases, except scenarios are explained by words instead of pictures. I would recommend to use both, the use-case gives the overview, the scenario tells the client what happens (in case you don’t present it).
    Am I wrong with my interpretation?

    Copy & paste the code below to embed this comment.
  8. Michael, yes, storyboarding a project in terms of user-scenarios might be considered an informal application of the idea of use cases.

    The chief advantage of the more formal approach that use cases encourage is that they make it easier to infer and explore relationships between different scenarios, which is very useful later on, when making more specific decisions about implementation and functionality.

    Copy & paste the code below to embed this comment.
  9. We include user scenarios as the make up of the use case. The use case defines the goal and the user scenarios make up the tasks to acheive said goal. So the use case actually puts boundaries around the scope by grouping the user scenarios.

    Copy & paste the code below to embed this comment.
  10. A use case is a description of the interactions between some actors and a system in order to achieve some goals. A scenario is a specific instance of those interactions. You can think of a use case as a collection of scenarios. Many things can happen in a use case (from success to failures).

    A use case is usually in text and can be as short as a paragraph to a fully-dressed written with all the details. It is nice to have diagrams, but the text is essential.

    These use cases can be presented in another way using UML. The result is those diagrams. The ones used in this article are usually called the “use case model”. There is a box to delimit the system’s boundaries, with the actors on the ouside and the use cases inside. Scenarios can also be diagrammed into sequence diagrams.

    I wish the author would have shown a concrete example of the “publish weblog” use case. We are told it is a use case, but what does it do? It can be interpreted differently by different people, and that is confusing. Another article to go into more details would be nice.

    Copy & paste the code below to embed this comment.
  11. We will be writing more detail in following articles, but more detail is immediately available at http://www.guibot.com/ as well as in Dr. Dobbs February 2005 issue under our article “Extend UML

    Copy & paste the code below to embed this comment.
  12. This is just a very global view on what and how to do in a development process. In fact information architecture has become an important part of web development process a long time ago and it has enormous amount of methods and approaches which were not mentioned here.

    Copy & paste the code below to embed this comment.
  13. However useful or helpful this methodology may be, it’s worth pointing that this is generally not at all what your clients or coworkers will be expecting when you are asked to deliver a “use case.”

    What is described here could be considered a “business use case,” but it seems more like a user scenario to me. True use cases, by contrast, specify the goal in context, preconditions for success, success and failure end conditions, primary actor, and relevant triggers (if any), and proceed by stepped actions (including branching actions) from task inception through completion. This, at minimum, is the information your deliverable will be expected to convey.

    Copy & paste the code below to embed this comment.
  14. Norm and Tim began their article with pointing to the most difficult questions, which still are undecided for many projects in development. They are: “What problem are we solving? Who needs it? What’s this site for, anyway?” (These questions are just a quotation from the article and later I’ll restate them.) But later in the article they put these questions aside leaving the global level and descending to more practical level of the work on the project.
    And I think that before using some practices like use-case we must concentrate on the global planning and answer to 3 main questions:

    1. What are we designing the site for? What are the goals that will be archived by this site?
    2. For whom are we designing the site? What are the goals, needs and demands of potential users?
    3. What information can we deliver by the site both to archive the goals of the site’s owner and to satisfy the users?

    I think these are three pillars of any web-site development project. And they are exactly those main questions about which Norm and Tim just mention at the beginning of their article and then go over to practice, to use-cases.
    But without clear understanding of what we want, who our users are (what they want) and what we can give to them by means of our site, we won’t be able simply to say WHAT WE HAVE TO DO, we won’t know how we should work and what we should get as a result of our work.

    And later, after answering to these questions, as an evolution of the answer to the second question we finally can get back to use-cases described in the article.

    Copy & paste the code below to embed this comment.
  15. I liked the article but I did think that the choice of case was a little confusing I’d have had blog in the centre rather than publish blog then labelled the right line publish and possibly also given them an administor link as well and then given a visitor comment and also read.

    Overall a good introduction with a lot of scope for a follow up.

    Copy & paste the code below to embed this comment.
  16. i call bullshit. software engineers don’t know much about design, the actually fuck up most of the projects designwise. look at how bad most software is. and the best part is that most software development happens outside the “established” software engineering theory, because this theory again adds nothing to the process, but it actually kills good design.

    do you really want everything to be as unusable and unstable as software is? if you want to look at examples, look at architects, look at product designers, look at other design disciplines where at least some portion of the products are decent. forget software engineering as a role model, it can’t teach you nothing.

    Copy & paste the code below to embed this comment.
  17. “forget software engineering as a role model, it can’t teach you nothing.”

    What an enlightened approach tho the pursuit of knowledge and understanding.

    I’ve found use cases very helpful in developing websites with a lot of back-end functionality, i.e. web applications (which, like it or not Peter, are pieces of software). Use cases are just a tool that can be utilised, just becaue you use them doesn’t mean your site will be an outstanding example of good design, and vice-versa.

    Architects have been around for thousands of years and you still get crap buildings. Software engineering is still very much an evolving discipline and to say that people who build websites can learn nothing from it seems a bit, well, dumb.

    Copy & paste the code below to embed this comment.
  18. Excellent! I think there’s much to learn from Use Cases.

    However, forgive me if I’m wrong, but I believe that what this article describes is more the Use Case model than the Use Case per se.

    The use case model is a visual representation of all the use cases: the stick figures, the arrows and the bubbles. Each buble in this diagram is a use case.

    A use case is usually documented in writen form (paragraphs and bullets), and describes the actions taken in that bubble. That is, the user inputs/actions and the system responses. These could potentially “link” over to other use cases (sort of like a sub-routine in programming).

    My preference is to have both, the Use Case Model and the acompanying Use Cases. That way you can look at the diagram to get the big picture while reading each use case (the bubble stuff) for the details.

    All in all, a good teaser…

    Copy & paste the code below to embed this comment.
  19. Regardless of what title seems fitting, creating a visual for clients can be extremely valuable to communication.

    For those of you out there with OmniGraffle, I’ve put together a rather simple stencil to create use case diagrams.


    Hope it’s useful.

    Copy & paste the code below to embed this comment.
  20. I have to agree with Adam Greenfield that the examples demonstrated here are not a good representation of ‘real world’ use cases.

    As a programmer who has endeavoured to work closely and thoughtfully with interface designers, I’m quite aware that a improperly rendered drawing – however simple – can confuse and muddle a conceptual understanding of a simple functional model.

    For example, the first illustration in the Carr and Meehan article might suggest that both the Visitor and the Author can publish the weblog. Is this the case? Of course it’s not, because both arrows point towards ‘Publish weblog’ this could suggests interaction by both actors, this is where confusion can arise.

    I am lucky enough to have colleagues who are developing code using agile methodoligies. Exposure to these guys is providing me with some techniques and learnings to experiment with during project definition and scoping with designers and client managers. In particular user stories, sometimes combined with use case illustrations can be very effective.

    Unfortunately, it seems that Peter above, is of the opinion that software developers know little about design. Artistic and graphic design maybe, but if you’re to suggest that they know little about application design – well, you’re wrong. There is a language for every field of knowledge and to communicate with individuals from other fields you must learn their language. Bearing this in mind can improve how effectively you can work with software developers – and how software developers and work with designers.

    Copy & paste the code below to embed this comment.
  21. Now, I have to admit that this article totally shines a new light on most of what my company does… Thanks!

    Copy & paste the code below to embed this comment.
  22. Good introduction to get people started on UML, I am just curious what program was used to create the articles UML diagrams, or what suggestions do people have for UML diagrams, also does anyone have any good articles/links/examples of UML with regards to web development?

    Copy & paste the code below to embed this comment.
  23. Michael,

    As for the application to make uml diagrams:
    give argouml ( http://argouml.tigris.org/ ) a try. It’s open source and basicly platform independent (Java).

    Copy & paste the code below to embed this comment.
  24. “If we simply consider the roles played by the actors and their goals, the use-case model can very rapidly emerge.”

    Consideration is good, and important. However, observation is better, and is nothing more than simply discovering actual use cases. Go directly to the source!

    Copy & paste the code below to embed this comment.
  25. To answer Mike Dance’s question – the Guibot website shows how Use Cases generate the menu for the web site. Also, the Guibot tools will generate the Use Case diagrams and the Use Case specification. Argo UML is an open source tool, Borland has a community edition designer and IBM Rational carries the more expensive sophisticated UML tools.

    Copy & paste the code below to embed this comment.
  26. Besides Cockburn’s excellent book, may I recommend, by the same publisher, “Building Web Applications with UML”, Jim Conallen. Addison-Wesley, 2003. ISBN 0-201-73038-3. The author, from Rational Software, has developed a UML extension for modeling web applications.

    Copy & paste the code below to embed this comment.
  27. peter wrote:

    >>>i call bullshit<<<

    I smell trollshit.

    >>>software engineers don’t know much about design<<<

    Design is a fundamental part of software engineering. Without it, you would have a lot of people saying “OK, this is what the software needs to do” and then start coding without thinking about how it should be done. A software engineer knows a good deal about design by definition, or he/she isn’t a software engineer.

    Unless, of course, by “design” you mean “graphic design” or “web design”.

    And unless, of course, by “software engineer” you mean “programmer”.

    (Which is not to say programmers don’t know anything about design. But they don’t necessarily need to.)

    >>>look at how bad most software is. and the best part is that most software development happens outside the “established” software engineering theory<<<

    See, this is the part that tells me this message was just intended to provoke. The ‘“established”’ theory that “adds nothing to the process” isn’t used for “most software”… and “most software” is bad? Can you miss the connection?

    Copy & paste the code below to embed this comment.
  28. Since everyone involved in the project—client, developer, coder and visitor—are ‘Actors’, this is an excellent metaphor. It removes the site development them vs us thinking.

    Developing a good scope of work plan [SWP] for a project—in the form of a proposal—is an important first step. Design & development is a cooperative process between the client, developer, coder and often test-users. Effective scope of work plans leave room for the ‘Actors’ to have input into schedule and sequence of things to be done PRIOR to signing a contract. Everyone has ownership.

    A well thoughtout scope of work plan—revealing the often misunderstood complexity and many steps of an assignment—often serves to give the client a better understanding of why development fees should be at an adequate level.

    We often spend a day developing a scope of work plan for an average project. Spend more time developing a thorough scope of work plan and you’ll have a clear blueprint for completing your assignment, invoicing, and client/vendor interaction, resulting in a project with less miscommunication and more satisfaction.

    Copy & paste the code below to embed this comment.
  29. Just wanted to point out an interesting collaboration tool relevant to the audience here. http://www.taskportal.com

    Copy & paste the code below to embed this comment.
  30. You wrote that “everyone involved in the project—client, developer, coder and visitor—are ‘Actors’,” but this is a misunderstanding of the terminology. (In fairness to you, it’s easy to see how this misunderstanding arises from the article.)

    An actor, in the context of a use case, is generally the human being actually interacting with the application, device, or site – a user – although actors can also be institutions or systems. In this context, developers, coders, and clients are precisely not actors.

    Misunderstandings like this are part of the reason why I believe UML is best used for what it was originally intended for, mapping application architecture, and not discovery-phase business- or user-needs analysis. It’s just not the right tool for the task.

    Copy & paste the code below to embed this comment.
  31. Learned about User Stories (or use cases) through a book called Extreme Programming, which has the unfortunate acronym of XP.


    In any event, the books on XP helped tons in my role as UI designer and liason between customer (User) and developer. And shaped how I communicate with any new client, no matter how small the site or job at hand.

    Copy & paste the code below to embed this comment.
  32. Joshua Porter makes a crucial point when he says that observation is better than consideration. This is a distinction I make between weak and strong user-centered design. In weak UCD, we think about, or read articles about, users and then design stuff for them. In strong UCD, we observe them, preferably in the field, not just in the lab, and iterate with them during the design process (an approach at least somewhat compatible with agile methods).

    Use cases can become simply another way of foisting our pre/misconceptions on unsuspecting users if we do not ground them in a rich understanding of users’ motivations, tasks, environment, and characteristics. The risk of this happening increases as the people for whom we are designing/building are less like us.

    While either use cases or scenarios can help interaction designers and software engineers communicate, I prefer Contextual Design, with its emphasis on involving the entire cross-functional team in UCD. I’ve seen it transform an entire organization’s approach to developing software.


    Copy & paste the code below to embed this comment.
  33. This article’s Russian translation is avalable at:

    Copy & paste the code below to embed this comment.