skinparam nodesep 50
skinparam ranksep 30
scale 0.8
scale max 800 width
'skinparam handwritten true

title SMART Objective Attributes

class Specific
class Measurable
class Achievable
class Relevant
class Time

Specific -[HIDDEN]RIGHT- Measurable

Specific -[HIDDEN]- Achievable
Measurable -[HIDDEN]- Achievable

Achievable -[HIDDEN]- Relevant
Achievable -[HIDDEN]- Time

Relevant -[HIDDEN]RIGHT- Time

note right of Time
Or other Resource constraint
(Duration, Expense, etc.)


An acronym for what Requirements should be:

  • Specific (ie, Atomic, SRP)
  • Measurable (ie, Testable: define quantity, and test to prove so)
  • Achievable (ie, Objective, as opposed to an open ended Goal).
  • Relevant (ie, Rationale given, associated to an ISO-25010 Quality)
  • Time-bound (ie, …or better yet, Resource bound (expected Time, Cost, Effort)

What's implied from the above is capturing: * Specific: Input Criteria are defined

What's ambiguous from the above is whether Alternate Flows are beyond Specific.

What's missing from SMART is asking for:

  • Context/Exceptions: when to apply and when not to apply Information: recommendations and resources (how)

Note that there is value in using something like IT:AD:OCRRA or IT:AD:ART ICE notation when defining Requirements.