What’s the Problem?

by Tim Meehan, Norm Carr

33 Reader Comments

Back to the Article
  1. 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.
  2. 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.
  3. 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.
  4. 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.
  5. 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.
  6. 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.
  7. “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.
  8. 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.
  9. 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.
  10. 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.
  11. 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.
  12. 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.
  13. 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.
  14. “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.
  15. 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.
  16. 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.
  17. 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.
  18. 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.
  19. 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.
  20. 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.
  21. 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.
  22. 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.
  23. This article’s Russian translation is avalable at:

    Copy & paste the code below to embed this comment.