Microsoft's Standardized Verb Set
A long time ago I wrote about about "Speech Acts, REST and Method Classification". I was interested in the different ways that people had classified verbs. I've always had this opinion that we as developers tend make thing more complex by reinventing new verbs that mean the same thing as previously defined ones. We simply can't get rid of that habit. I mean, we can easily undertand why we need a common noun set when we build applications, however we just don't grok why we need a standard verb set.
Do you know why we need a standard verb set? The answer is simple, we need it for composability. A by product of composability is interoperability, Roy Fielding showed this in his ReST architectural style. That is, you only need four verbs to help you achieve the massively scalable and higly interoperable World Wide Web.
Now Microsoft has finally bought into some religion. For the new Microsoft Shell (aka Monad), they've provided some guidelines on the standardized verb sets and names that one use when defining a command. For reference, here's the set:
| Common Object Verbs | Definition |
| Add | Add, append or attach an element |
| Clear | Remove all elements of a container |
| Copy | Copy a element to another name or container |
| Get | |
| Lock | |
| Move | Move an element |
| New | Create a new element |
| Remove | Remove an element from a container |
| Rename | Give an element a new name |
| Set | |
| Unlock | |
| Data Verbs | Definition |
| Checkpoint | Create a snapshot of the current state |
| Compare | Compare an element with another and producing the differences |
| Convert | Convert to one encoding to another or one base unit to another |
| Export | Export as set to an interchangeable format |
| Import | Create a set from an interchangeable format |
| Initialize | Prepare an element for use and set its default values |
| Limit | Apply a constraint to an element |
| Merge | Take multiple elements and create a single one |
| Restore | Rollback state to last snapshot |
| Update | Refresh an element from a source |
| LifeCycle Verbs | Definition |
| Disable | Stop and configure to be unavailable |
| Enable | Configure to be availble |
| Install | Settle in an indicated place |
| Restart | Terminate existing activity and start again |
| Resume | Begin activity that was suspended |
| Start | Begin an activity |
| Stop | Cease an activity/td> |
| Suspend | Suspend an activity temporarilly |
| Uninstall | R |
| Diagnostic Verbs | Definition |
| Debug | Interact with an element to understand a flaw |
| Measure | Retrieve statistics about an element |
| Ping | Determine if an element is alive |
| Resolve | Map a short name to an elements reference |
| Test | Verify the validity and correctness of an element |
| Trace | Trace activities performed by a specified operation |
| Communications Verbs | Definition |
| Send | Convey information to an element |
| Receive | Take or acquire from a source |
| Connect | Associate subsequent activities with an element |
| Disconnect | |
Very useful if every you find yourself at a loss for words (i.e. a loss of how you should name your methods). The interesting aspect about this set is that 3 out of the five verb sets concerns manageability. One of biggest oversights in developing software is the need to create objects and methods to support in the daily operation of the system. Almost all development methodologies focus myopically on only the functional domain model. Unfortunately, there's more to buiding a usable system than the functional perspective.
Last modified
2004-11-08 10:32 AM