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”
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.
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.
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.
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.
peter
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.
Tom
“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.
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.
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.
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.
Thomas Maas
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).
“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!
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.
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.
>>>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?
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.
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.
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.
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.
33 Reader Comments
Back to the ArticleTim Meehan
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”
Elinity
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.
adam greenfield
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.
alex-and-r
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.
Adam Bardsley
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.
peter
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.
Tom
“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.
Andres
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…
Stephen Yoch
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.
http://www.mediaville.net/projects/stencils/
Hope it’s useful.
Travis Winters
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.
Ryan Brooks
Now, I have to admit that this article totally shines a new light on most of what my company does… Thanks!
Michael Dance
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?
Thomas Maas
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).
Joshua Porter
Consideration is good, and important. However, observation is better, and is nothing more than simply discovering actual use cases. Go directly to the source!
Tim Meehan
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.
Padraig Coogan
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.
Peterman
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?
Stephen Hall
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.
John
Just wanted to point out an interesting collaboration tool relevant to the audience here. http://www.taskportal.com
adam greenfield
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.
duffy
Learned about User Stories (or use cases) through a book called Extreme Programming, which has the unfortunate acronym of XP.
http://www.xprogramming.com/xpmag/expCardConversationConfirmation.htm
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.
Mark Notess
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.
Mark
Alex
This article’s Russian translation is avalable at:
http://www.webmascon.com/topics/planning/21a.asp