Brief
The MailReader application will manage several objects using standard Create / Read / Update / Delete operations.
Narrative
Marvin creates a new message to store in the database. He also creates and updates a message, and creates and deletes a message. Marvin also tries storing a message that is linked to another message, to see if automatic cascading works as it should.
To prove to Ford that all these features work, Marvin creates a JUnit test that exercises the CRUD operations automatically.
Goal
| Goal | Create, retrieve, update, and delete entity objects. | |
|---|---|---|
| Level | Subfunction | (User Goal, Summary, Subfunction) |
| Trigger | System needs to invoke a CRUD operation. | |
| Primary Actor | System |
Main Success Scenario (MSS)
| Step | Action |
|---|---|
| 1 | System creates and persists new Message instance |
| 2 | Database stores Message entity |
| 3 | System reads and changes Message entity by reference to its ID |
| 4 | Database stores updated Message entity |
| 5 | System creates and persistence a new Message instance containing a new "next" Message instance |
| 6 | Database stores both Message entities |
| 7 | System reads and removes Message entity by reference to is ID |
| 8 | Database deletes Message entity |
Extensions
| Step | Branching Action |
|---|---|
| 1a | Database object not available |
| .1 | System logs and presents error condition |
| 3a, 7a | Entity for ID doesn't exist |
| .1 | Manager returns null to indicate entity is not found |
Preconditions and Guarantees
| Preconditions | Database service is running at startup |
|---|
