Chapter 8 - Requirements Engineering - Analysis
Requirements are documents as use cases. (Text based descriptions). Each use case will have a process of realisation. Use cases describe external behaviour. However, they give no details of the internal structure or interactions. A move to a description in terms of objects is needed.
In the implemented system it will be objects that interact to achieve the behaviour described in the use cases.
Use case realisation
Developing a high-level interaction for each use case. Moving into talking about software componenets is starting to move into the design of the system. Starting to think of what the main classes and objects of the system will be.
This is a starting point not the final class model! One fo the quoted advantages of OO is the natural translation from domain to code.
The domain model is likely to form the basis of the final class diagram. It is not complete - there will be more classes and more attributes. There are no operations - or just the inclusion of real world actors.
Objects should be characterised by their responsibilities. (Maintain data and support some processing). An object's responsibilities should all be closely related and coherant. Some people use Class Responsibility Collaboration (CRC) cards as they identify objects.
Software architecture choice
The division of the system into subsystems. Layered architecture allocates responsibilities to different subsystems, defines clean and simple interfaces between layers.
It is common to use a Presentation - Application - Storage pattern.
Classes relating to the user interface
Classes relating to business logic
Classes relating to managing data. Typically a database.
System messages. EG "display bookings". What object should receieve the message to display booking?
There isn't one in the domain model. Add a "Control" object for the use case. So, a control object for each use case is needed. Or one for the whole system (if the system is small).
Refining the sequence diagram
In order to display the booking, the data is needed first. The object has the responsibility for the set of booking data.
EG Creating a reservation object
EG Cancelling a booking