Problem analysis must be concerned
with the world and its phenomena. We need a
phenomenology that has nothing to do with programming languages
or object interaction, but everything to do with the physical world.
•Entities, which are mutable individuals
such as cars and people;
•events, atomic events occurring in time,
e.g. pressing of a button, recognised
•values, which are immutable individuals
such as integers and strings;
•states, which are time-changing relations
over non-event individuals;
•truths, which are unchanging relations
over non-event individuals; and
•roles, which are the participation of
individuals in events.
these it is useful to recognise the class of controllable phenomena ¾ events, state changes and roles ¾
that occur on the initiative of one part of the world rather than another. For example, a keystroke
is an event in which
the user and the keyboard both participate, but it is controlled by the user. It is also useful to treat
roles as distinct phenomena. In the keystroke the user controls both the event and the role that is the
participation of a particular
key; but in a disk read operation the reader controls the event while the disk controls the
paricipation of the particular record that is returned.