"In software and systems engineering, a use case is a list of steps, typically defining interactions between a role (known in UML as an "actor") and a system, to achieve a goal. The actor can be a human or an external system.Note that the Actors are marked as outside the system in the Wiki figure (http://en.wikipedia.org/wiki/Use_case)
In systems engineering, use cases are used at a higher level than within software engineering, often representing missions or stakeholder goals. The detailed requirements may then be captured in SysML or as contractual statements." (Wikipedia)
"Use cases are a means for specifying required usages of a system. Typically, they are used to capture the requirements ofUse cases are parts of specifications and are outside the DCI system boundary; specifications are only reified in DCI as Context provided operations. Use cases with their actors are specifications; DCI Contexts with their roles are implementations (code). That's why I can't see why the term 'Actor' should be included in the DCI glossary. We have included 'Use case' as an imprecise representation of user requirements. 'Actor' is a use case detail used by some, but it is too specific to replace 'use case' for the needs of DCI, IMO. May be we rather than add 'Actor' should simplify the glossary definition of 'use case' to emphasize that it belongs in the DCI environment
a system, that is, what a system is supposed to do. The key concepts associated with use cases are actors, use cases, and the subject.
A Use case can explain how and why a user wants to trigger a system operation. There can also be other sources of such triggers. In all cases, the source of the trigger is outside the DCI metamodel."(UML 1.4.2)
Dear Trygve,On 2013.04.28 01:11, Matthew Browne wrote:
I am a member of the object-composition group and I have a great appreciation for DCI. Ordinarily I wouldn't contact you directly but I'm under the impression that you're the one who maintains the DCI glossary and I have a suggestion that hasn't garnered much response, but no one has offered any real arguments against it either.
My suggestion is to add the term "actor" to the DCI glossary. If you could comment on my post here, even if it's just to say you don't think this is necessary, I would appreciate it:
https://groups.google.com/d/msg/object-composition/dLJXMiG7Vuk/oL1C6b4hSrAJ
Given that "use case" is defined in the glossary I don't see why "actor" shouldn't be, and I'm no clearer on this after Jim's response.
Thanks,
Matt
This is related to the other thread I started, but since then I have clarified my thoughts more and I want to focus this thread specifically on my proposal to add the term "actor" to the DCI glossary.
In order to explain why I think this is important, I want to first bring up something mentioned in the Lean Architecture book: the distinction between user roles and object roles. User roles are for the most part synonymous with UML actors (except in the case of actors that aren't users, like an external system), whereas object roles refer to objects playing roles in DCI code.
In a recent post on this group, Trygve said the following about the relationship between the terms "role" and "actor":
The word "role" comes from early 17th century: from obsolete French roule "roll," referring originally to the roll of paper on which the actor's part was written (Oxford). So a role is performed by an actor (rolePlayer object, noun) who plays the role (roleMethods, verbs).This definition of an actor as a rolePlayer is of course valid for DCI but has a different meaning than the term "actor" in UML.
Because use cases and actors (as defined in UML) are very relevant to discussions of the DCI design process, this leads to an ambiguity: in UML, "actor" refers to a user role (or "external system role" as the case may be), whereas in discussions of DCI code, "actor" is often used to mean an individual object playing a role (please correct me if I am mistaken in this).
Thus I think it's important for the term "actor" to be formally defined for DCI, especially for people coming from a UML background. These two meanings are quite different, and both come up frequently in DCI discussions (as we have seen here).
Although I'm not the best person to write a formal definition, in the interest of contributing what I can, I've drafted the following definition as a starting point...I'm sure it will need revision (it's long for one thing), but you have to start somewhere, right?
Actor
Definition 1.
The first definition concerns the perspective of the system as a whole, as well as the users who interact with it.
1. An Actor is a role that interacts with the system, usually played by a user of the system. An Actor can also be a role played by an external system.
The term "role" in the above definition refers simply to the regular English-language meaning of the word "role."
However, it is also true that actors are commonly implemented as Roles in DCI code (but only if necessary for a given context).
Definition 2.
The second definition concerns the perspective of DCI code and the objects in the computer's memory in a running system, in which these objects should parallel the end users' and/or programmers' mental models.
2. An Actor is an individual object that plays one or more Roles. Synonymous with "Role Player."
~~~
--
You received this message because you are subscribed to the Google Groups "object-composition" group.
To unsubscribe from this group and stop receiving emails from it, send an email to object-composit...@googlegroups.com.
To post to this group, send email to object-co...@googlegroups.com.
Visit this group at http://groups.google.com/group/object-composition?hl=en.
For more options, visit https://groups.google.com/groups/opt_out.
DCI is a programming paradigm. Its concern is what happens in the computer at run time. Its concern is not the modeling of end user organization or work processes.
You also suggest that the term 'Actor' could replace 'Role' throughout.
May be we rather than add 'Actor' should simplify the glossary definition of 'use case' to emphasize that it belongs in the DCI environment
When we introduced RolePlayer in the glossary we had several candidates one of them being Actor. RolePlayer was as I recall it favored for not confusing an UML actor and a DCI RolePlayer. (I personally acttually favored Actor at that point). So you could say that we consciously decided to keep actor out of the glossary to not confuse it with use of the same word outside the DCI context.
I still think that re-defining terms that come up a lot in DCI-related design discussions to mean something different in DCI than they do outside of it should be avoided whenever possible.