Unit 5 - Structural modelling Flashcards

1
Q

What are the agile modelling principles?

A
  • Lightness and simplicity take precedence over completeness and complexity.
  • Models should only be pursued while they are of use.
  • Ease of change and adaptability also need to be part of the modelling process.

p. 7

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

The four useful sources when looking for objects are…?

A
  • tangible objects – the physical things in the domain, such as rooms, bills, books and vehicles
  • roles – the roles played by people in the domain, such as employees, guests and members of some organisation
  • business transactions – the activities, episodes and interactions, such as room reservations, vehicle registrations, orders, deliveries and transactions
  • organisational units – the groups to which people belong, such as accounts departments, production teams and maintenance crews.
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

Why do object modellers concentrate on nouns?

A

The nouns represent the things in the domain being modelled, and things are more stable than actions, which are expressed as verbs.

SAQ 1

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

When modelling objects, what are the basic filtering criteria that can be applied to reduce the number of objects?

A
  • different concepts that are expressed using the same name
  • redundancy, the same concept, given different names
  • not important or independent enough, such as an attribute of another concept rather than a concept in its own right
  • lack of relevance to the problem domain, being either beyond the scope of the desired system

SAQ 1

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q

Explain why object diagrams cannot form the basis for a software specification.

A

Object diagrams represent particular states of the system at particular moments in time, whereas a specification must describe all valid states of the system at all possible times.

SAQ 2

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
6
Q

In connection with rooms in a hotel, a hotel manager’s vocabulary might include the words ‘occupied’ and ‘free’. How might such words be represented in a class diagram?

A
  • as an attribute of the Room class
  • as an association between the Room and Guest class.

SAQ 3

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
7
Q

What characterises the state of an object at a particular point in time?

A

The state of an object is characterised by the value of each of its attributes at that point in time.

SAQ 4

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
8
Q

What does an attribute of a class represent?

A

An attribute represents a particular property (a named value) of the class that each instance of that class will have. At any one time they collectively define the state of an instance of the class.

SAQ 4

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
9
Q

Does a multiplicity of 1 indicate that there can be no change in the object to which the multiplicity relates?

A

No. It merely means that at any one time there will be exactly one object at that end of the relationship. The attributes, or even the identity, of this object may change over time.

SAQ 5

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
10
Q

If an airline system models flights and pilots, and each flight needs two pilots, would you use a multiplicity of 2?

A

Probably not. There are probably times during the life of a Flight object when fewer than two pilots are allocated, such as when the flight has been scheduled but crew details have not yet been settled.

SAQ 5

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
11
Q

Suppose that a shoe shop has a number of cupboards and each cupboard contains an even number of shoes. How could you model the evenness of the shoes?

A

You might use a multiplicity on the association between the classes Cupboard and Shoe, indicating that valid values are 0, 2, 4, 6, 8 and so on up to some reasonable limit. Alternatively you could say that a Cupboard contains an arbitrary number of instances of a class called ShoePair, where each ShoePair contains one left shoe and one right shoe. This approach generalises more easily to situations where the groups are not homogeneous. For example, a table setting contains one knife, one fork and one spoon.

SAQ 5

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
12
Q

If a model contains role names, do you also need to use association names?

A

No, but it is sometimes convenient to have a name for the association as a whole. For example, you might focus on what is meant by works for rather than the need to consider both the role employer and the role employee (at the same time).

SAQ 5

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
13
Q

What is a navigation expression used for?

A

It provides a way of naming another object or its attributes relative to a starting object by referring to intermediate role names.

SAQ 5

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
14
Q

What is a recursive association?

A

A recursive association is an association where both ends terminate at the same class.

SAQ 5

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
15
Q

When considering attributes, what is the effect of moving from a conceptual model to an analysis model?

A

The conceptual model records attributes of classes that will be familiar to a domain expert. In the analysis model, the developer must consider the representation of attributes within a software system.

Example

A hotel manager will be familiar with the daily rate for a room and whether or not it is occupied. For a developer, daily rates for rooms involve money and you can use a true/false (Boolean) expression to represent the occupancy of rooms.

SAQ 6

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
16
Q

Why is a class model not sufficient to describe a system?

A

A class model is a static model that describes the elements of a system (the classes) and their relationships (the associations) but does not describe the behaviour of the system over time. For this you will need one or more dynamic models. In particular, you need to model the life histories of objects and the interactions between them. The model needs to capture when instances of classes should be created and destroyed.

SAQ 7

17
Q

What is meant by navigability? When is this idea useful?

A

Navigability means that it is possible to identify (or ‘reach’) objects in one class from objects in an associated class. The usefulness of this idea is realised during implementation, when navigability in one direction alone (unidirectional navigability) can lead to simpler code.

SAQ 8

18
Q

What is a qualified association?

A

A qualified association is an association at one end of which there is a qualifier, consisting of one or more attributes. The values of the attributes (taken together) uniquely identify the objects in the class at the other end of the association.

SAQ 9

19
Q

Under what circumstances would you want to show an association that is not independent of other associations (i.e. might be derived from other associations) in the diagram?

A

If a word describing an association is part of the natural vocabulary of the domain expert, it will be sensible to include it in the model, as otherwise a linguistic gulf will start to open between the domain expert and the system designer. However if you know that an association is not essential, because it can be derived from other associations, you will also need to record that fact.

SAQ 10

20
Q

What is the difference between inheritance and generalisation?

A

Inheritance is the consequence of a generalisation/specialisation relationship; a subclass inherits the features of the superclass. However the term inheritance tends to be used by programmers, whereas the terms generalisation and specialisation are used by analysts and modellers.

SAQ 11

21
Q

In a computer graphical user interface, how might you represent the relationship between a full window and an iconised window from the classes FullWindow and Icon respectively? List the operations that are common to both and those that are peculiar to each.

A

You could introduce a new, abstract class named Window and let the other classes inherit from it as follows: - abstract class Window with operation display - subclass Icon with additional operation maximise - subclass FullWindow with additional operations iconise and scroll.

SAQ 11

22
Q

What is an invariant?

A

It is a constraint – something that must be true about the system at all times.

p. 56

23
Q

Name some common constraints.

A
  • constraints on the values of attributes
  • constraints on associations
  • uniqueness constraints (which can sometimes be converted to qualified associations).

p. 56

24
Q

When should an invariant on a class be true?

A

The invariant on a class must be true for every object of that class from the time that object is created to the time it is deleted.

SAQ 12

25
Q

What are the risks involved when you try to record all the possible constraints on a model?

A

The first risk relates to the complexity of the resultant model. If too many constraints are recorded on a model, that model will become difficult to read or comprehend. The second risk relates to the potential increase in the number and complexity of any dependencies that would arise for each additional constraint, especially those among two or more model elements. For each case you should decide whether or not a given constraint adds value to your particular model. It may be more appropriately recorded in the glossary.

SAQ 12

26
Q

In a model that contains the classes Adult and Child, where each Child has a mother and father that are instances of Adult, what constraints might you impose on relationships between the classes? Express the constraints in English.

A

Every Child must have a mother and father that are instances of Adult. The father cannot be the mother. A father must be male and a mother must be female. Both adults must be older than the child.

SAQ 13

27
Q

In the UK, it is a legal requirement that both parties to a marriage are at least 16. Should this be modelled as an invariant?

A

Almost certainly not. A model is meant to express what the case is about rather than what it ought to be about. So unless the domain expert agrees that illegal marriages need not be represented, the model should allow them.

SAQ 13

28
Q

How would you model the constraint in a hotel system that every bill must be paid with either a debit or a credit card? How would you extend your model if cash were to be allowed?

A

User an xor constraint on the association between Payment-DebitCard and Payment-CreditCard. Xor only works on two associations, so if a third is needed you might write a textual constraint (a note).

SAQ 13

29
Q

The model below expresses the fact that a train must be associated with two employees: a driver and a guard. By considering the loop of associations identify a problem with the model, and suggest a constraint that solves the problem.

A

You need to capture the fact that a given employee cannot be both the driver and the guard for a particular train. You can formulate this as a constraint on any class round the loop.

For example, the following constraint can be located in the class Train:

context Train inv:

self.driver <> self.guard

SAQ 14

30
Q

The model shows that a person takes out a mortgage to buy a house. A person must offer that house as security against the mortgage. A person can take out more mortgages, each secured by a house. By considering the loop of associations, identify a problem with the model and suggest a suitable constraint using OCL.

A

The model would allow one person to have a mortgage that uses someone else’s home as security. You need to capture the fact that a house’s owner is the same person who offered that house as security for a given mortgage. When there are multiplicities in the loop that can be greater than one, you need to take care in writing the invariant. In one direction around the loop an individual house has only one owner. In the opposite direction each house is security for only one mortgage, and that mortgage is associated with only one person. This makes it easy to place an appropriate constraint on either the House class or the Mortgage class. For the House class:

  • *context** House inv:
    self. owner = self.mortgage.person

Similarly for the Mortgage class:

context Mortgage inv:

self.person = self.security.owner

However expressing an equivalent constraint on the class Person is more problematic because you would have to find the intersection of two sets: the houses owned by a particular person and the houses secured by mortgages taken out by the same person. We suggest that you use English to formulate a suitable constraint in such circumstances. You could place the constraint as text inside a note and attach it to the appropriate class.