Use cases are primarily meant for interaction between user and a system. It could be used for interaction between system and another system. The actors are primarily roles.
It is easy to document the use cases for a front end application like a portal where in all the activities and role performing the activity could be defined. However if the system is an order management or provisioning system which a downstream system how could the use cases be documented?
Example: An order management application may responsible for processing orders for type new install , change of service , cancel , reschedule , suspend , restart etc.These transactions could be triggered by from different sources by different means (service call , entry placed in db which OM application polls , order placed in jms queue - however I assume these have no relation to use case). Once an order is received Order Management application might have to interact with different applications (credit check , shipping , provisioning , activation , billing etc) depending on the order type.
I have an application that receives data from an upstream application. My application consumes webservices exposed by multiple other applications in order to fulfill a task. The data flows through multiple applications before reaching the upstream system which sends messages to my application. The activities that my application does are install, disconnect , suspend, restore etc using multiple services that it consumes.
When I read posts on having system as actors, the primary aim seems to be demarcating and defining the interfaces properly. In the scenario above assuming the upstream system is A, my application is B and the applications that my application consumes are C, D, and E.
- My aplication performs install , disconnect , restrat and suspend. Are these the activities?
- Will the primary actor be the system sending messages to my application? I can't think of this as a role and also there no interaction between the upstream application and my application after the point when my application recieves a message.
- How can I define the external applications that my application consumes? as actor or activity? or i need not care about these in use case diagram?
When you take an interaction between user and a system for shopping a product - you will list the series of interations between you and the software. However what software does internally is not specified.
Here in my case , since it is a downstream system , the upstream system sends only one message and there is no series of interaction. Hence I am in a quandry as to how I should define the scenarios.