530 likes | 540 Views
This article presents a simplified technique for object analysis in software engineering, based on the main ideas of existing methods. An example of a board game is used to demonstrate the technique.
E N D
OBJECT ANALYSIS • Although there is some variance, most methods are based on what is called OMT (Object Modeling Technique). • I present a simplified technique, which follows the main ideas of most of these methods. • I will present the technique using an example, which I have modified from ”Oliokirja” by Kai Koskimies. • The example is a simplified version of the famous Finnish board game ”Afrikan tähti” (African Star). • I will explain the various types of diagrams as they are needed. Software Engineering 2003 Jyrki Nummenmaa
Object Analysis Goals/Phases • Identify classes. • Create a vocabulary, which is updated continuously. • Identify associations. • Identify responsibilities. • Identify operations (methods) • Identify attributes • Create inheritance structure • Check and clean-up Software Engineering 2003 Jyrki Nummenmaa
Example Board Game Requirement Specification / 1 The game shall be implemented as a computer application with a graphical user interface. The game is played by two or more players. Each player has a playing piece, which all look different. The pieces are moved on the playing board. When the game starts, all pieces are in starting place and each player recieves a sum of game money. The game has a set of places, on which the pieces can be positioned. The places are either ordinary places or special places. Some pairs of these places are connected by a connection. Graphically, the connections form paths on the board. There are flight connections for some pairs of places. The players take turns to play. The game includes a dice, which shows how many steps each playing piece is to be moved in each turn. With each step, the players’ piece is moved from one place to another place using a connection on condition that these places are connected. A player may use a flight connection by paying one unit game money, assuming he is at one end of the flight connection when his/her turn comes. Software Engineering 2003 Jyrki Nummenmaa
Example Board Game Requirement Specification / 2 At the start of the game, each special place has a card face down. When a player arrives to a special place, he/she may pay one unit game money to take the card (which can only be taken once). Alternatively, the player may stay on a special place, and instead of moving, throw the dice for trying to take the card: dice values 4,5, and 6 mean the player gets the card. The card may be a bandit, meaning the player loses all money, a jewel with a value, meaning that the player receives money for that value, or a treasure. The treasure may not be sold, but if another player arrives to a place which has a player with the treasure, the arriving player gets the treasure. When a player with the treasure arrives to the starting place, that player wins the game and the game ends. The game boards, places, pieces, labels, connections, etc. each have a graphical representation in the user interface, but that representation is not specified here. Software Engineering 2003 Jyrki Nummenmaa
Use Case ”Start” Name: Start Version: 1.0 Summary: The game is initialised Frequency: Once per every game played Usability Requirements: Actors: Players, the game application Preconditions:. Descriptions: The game application shows a dialogue, where all player’s names are typed in. The game application randomly chooses the game pieces for the players and the order in which players take turns. The game starting position is initialised by putting the pieces in the start place and randomly choosing the cards for the special places. Postconditions:Exceptions: Software Engineering 2003 Jyrki Nummenmaa
Sequence Diagrams for Use Cases • Sequence Diagrams show interaction between actors. • The use cases may be drawn into sequence diagrams, which show the interaction between users and the system. • The sequence diagrams are fairly self-evident at this point: we have two actors (the official term is ”classifier role” for sequence diagrams) and the arrows show the communication. • The arrows represent (asynchronous) message passing or (synchronous) method calls. • Based on the sequence diagrams, it is possible to identify a set of tasks, which the system is to perform. Software Engineering 2003 Jyrki Nummenmaa
Sequence Diagram for ”Start” Application User Choose start Ask player names Player names Show pieces Show initialised board • Vertical lines stand for actors (here ”User” and ”Application”) • Time runs down in the diagram • Arrows show interaction/operations Software Engineering 2003 Jyrki Nummenmaa
Use Case ”Take Card” Name: Take Card Version: 1.0 Summary: A player takes a card Frequency: Probably not as often as once every round Usability Requirements: Actors: A player, the game application Preconditions: It is the player’s turn, the player has money, and the player is in a special place with a card that has not been taken. Descriptions: The player chooses to take the card. One unit money is taken from the player. The card is a jewel, and the player’s funds are increased with the respective amount of money. Postconditions:Exceptions: Software Engineering 2003 Jyrki Nummenmaa
Sequence Diagram for ”Take Card” Application User Choose to take card Show player’s funds with one unit taken Show Card Show player’s funds with jewel value added Software Engineering 2003 Jyrki Nummenmaa
Use Case ”Flight” Name: Flight Version: 1.0 Summary: A player flies from one place to another Frequency: Probably not as often as once every round Usability Requirements: Actors: A player, the game application Preconditions: It is the player’s turn, the player has money to fly, and the player is in a place, where there are flight connections. Descriptions: The player chooses to fly. The player is shown the possible destinations, of which the player chooses one. The game application moves player’s piece to the chosen destination, and his funds are decremented by one unit. Postconditions:Exceptions: Software Engineering 2003 Jyrki Nummenmaa
Sequence Diagram for ”Flight” Application User Choose to fly Show possible destinations Choose destination Show position The flow continues in usecase ”Take card” Software Engineering 2003 Jyrki Nummenmaa
Use Case ”Stepping” Name: Stepping Version: 1.0 Summary: A uses a playing turn to move with the dice Frequency: Most players do this on most rounds Usability Requirements: Actors: A player, the game application Preconditions: It is the player’s turn. Description: The player uses the dice. The game application shows the result and the possible places to move to. The player chooses one, which is a special place with a card that has not been taken. The game application moves player’s piece to the new place. ”Take Card” use case follows. Postconditions: Exceptions: Software Engineering 2003 Jyrki Nummenmaa
Sequence Diagram for ”Stepping” Application User Choose to use the dice Show result and possible destinations Choose destination Show position The flow continues in usecase ”Take card” Software Engineering 2003 Jyrki Nummenmaa
Board Game Use Case Diagram Board Game Start Flight <<include>> Take card Player <<include>> Stepping Software Engineering 2003 Jyrki Nummenmaa
Analysis model: Classes • Text analysis • Go through the text, and pick nouns Software Engineering 2003 Jyrki Nummenmaa
Nouns from Requirement Spec. (let’s hope I got them right :) The game shall be implemented as a computer application with a graphical userinterface. The game is played by two or more players. Each player has a playing piece, which all look different. The pieces are moved on the playing board. When the game starts, all pieces are in starting place and each player recieves a sum of game money. The game has a set of places, on which the pieces can be positioned. The places are either ordinary places or special places. Some pairs of these places are connected by a connection. Graphically, the connections form paths on the board. There are flight connections for some pairs of places. The players take turns to play. The game includes a dice, which shows how many steps each playing piece is to be moved in each turn. With each step, the players’piece is moved from one place to another place using a connection on condition that these places are connected. A player may use a flight connection by paying one unitgame money, assuming he is at one end of the flight connection when his/her turn comes. Software Engineering 2003 Jyrki Nummenmaa
Nouns from Requirement Specification / 2 At the start of the game, each special place has a cardface down. When a player arrives to a special place, he/she may pay one unitgame money to take the card (which can only be taken once). Alternatively, the player may stay on a special place, and instead of moving, throw the dice for trying to take the card: dice values 4,5, and 6 mean that the player gets the card. The card may be a bandit, meaning the player loses all money, a jewel with a value, meaning that the player receives money for that value, or a treasure. The treasure may not be sold, but if another player arrives to a place which has a player with the treasure, the arriving player gets the treasure. When a player with the treasure arrives to the starting place, that player wins the game and the game ends. The gameboards, places, pieces, labels, connections, etc. each have a graphical representation in the userinterface, but that representation is not specified here. Software Engineering 2003 Jyrki Nummenmaa
Nouns from Use Case ”Start” Name: Start Version: 1.0 Summary: The game is initialised Frequency: Once per every game played Usability Requirements: Actors: Players, the game application Preconditions:. Descriptions: The game application shows a dialogue, where all player’snames are typed in. The game application randomly chooses the game pieces for the players and the order in which players take turns. The game starting position is initialised by putting the pieces in the start place and randomly choosing the cards for the special places. Postconditions:Exceptions: Software Engineering 2003 Jyrki Nummenmaa
Nouns from Use Case ”Take Card” Name: Take Card Version: 1.0 Summary: A player takes a card Frequency: Probably not as often as once every round Usability Requirements: Actors: A player, the game application Preconditions: It is the player’s turn, the player has money, and the player is in a special place with a card that has not been taken. Descriptions: The player chooses to take the card. One unitmoney is taken from the player. The card is a jewel, and the player’sfunds are increased with the respective amount of money. Postconditions:Exceptions: Software Engineering 2003 Jyrki Nummenmaa
Potential classes game computer player (game) piece (game) board path (game) money dice step turn place dice value special place card bandit jewel treasure starting place representation user interface flight connection connection (jewel) value unit connection pair (of places) amount (of money) (computer) application Software Engineering 2003 Jyrki Nummenmaa
Reasons for rejecting potential classes • irrelevant • in essence same as some other class • a likely attribute or a value • a likely method • a control-related concept • a role of another class • an association between classes • vague • implementation-specific Software Engineering 2003 Jyrki Nummenmaa
Alternatively: Conditions For Accepting a Class These are typicallychecked by examining an object of that class. • Retained information – the system needs some information about object to function. • Needed services – the object has operations, which change its attribute values. • Multiple attributes (a single-attribute class seems like a ”minor” thing at this stage). • Common attributes (a set of attributes, which apply to all objects of the class. • Common operations (like with attributes above) • Essential requirements – external entities, which consume or produce information will almost always be modeled as objects in the analysis model. Software Engineering 2003 Jyrki Nummenmaa
Rejected classes • computer, computer application (irrelevant) • board (represents the same thing as path) ->in fact, we choose to use ”map” for both of them • amount, amount of money (a likely attribute) • game money, dice value (a likely value for an attribute: a class is probably not needed) • step (a likely operation) • turn (control-related) • starting place (a role for place) • representation (irrelevant) • jewel value (a likely attribute) • pair of places (represents the same thing as connection) • unit (irrelevant) • bandit, jewel (value) – treasure is a bit of a question mark! Software Engineering 2003 Jyrki Nummenmaa
Classes card connection dice flight connectionmap piece place player special place treasure game Software Engineering 2003 Jyrki Nummenmaa
An Initial Class Diagram Treasure Player Piece Dice Special place Game Connection Place Map Card Flight connection The classes are drawn as rectangles. However, we do not have any associations between classes. Nor do we have any operations or attributes. Software Engineering 2003 Jyrki Nummenmaa
A Model Vocabulary • The names are not generally that descriptive. • It is a good idea to make a model vocabulary for all words that appear in the model as names. • It will be natural to start from the class names once they have been identified. • The vocabulary should be updated, when new names are identified. Software Engineering 2003 Jyrki Nummenmaa
Initial Vocabulary (actually just a part of it, but you get the idea) Bandit A possible symbol to appear on a card. If a player takes a card, and the card is found to have a bandit, the player loses all of his/her funds. Dice Randomly returns one of values 1, 2, 3, 4, 5 or 6. The return value is used to showing how many steps a player may advance or, alternatively, if a player gets to take card for free, in which case at least 4 is required. Game piece Each player has a game piece, which is used to show the position of the player. Every game piece looks different. … … Software Engineering 2003 Jyrki Nummenmaa
Task list • Once the use case sequence diagrams have been produced, they are analysed for forming a task list. • Each arrow from the user to the application represents a service requested from the application. • Each arrow from the appliction to the user represents an output from the application. Software Engineering 2003 Jyrki Nummenmaa
Task List For The Game Application • Initialise game • Showing board, piece positions, funds, and game status • Showing dice result • Showing a set of destination places • Choose to use the dice • Choosing to fly • Choosing to start a game • Choosing to open a card • Choosing a destination from a set of places • Ask player names • Input player names Software Engineering 2003 Jyrki Nummenmaa
Associations • Associations are relationships, references, and dependencies between classes. • In practice, they can be found in sentences, which represent relationships between classes. • Examples of types of associations: • location • control • communication • inclusion • and so on… Software Engineering 2003 Jyrki Nummenmaa
Potential Associatons / 1 The game shall be implemented as a computer application with a graphical user interface. The game is played by two or more players. Each player has a playing piece, which all look different. The pieces are moved on the playing board. When the game starts, all pieces are in starting place and each player recieves a sum of game money. The game has a set of places, on which the pieces can be positioned. The places are either ordinary places or special places. Some pairs of these places are connected by a connection. Graphically, the connections form paths on the board. There are flight connections for some pairs of places. The players take turns to play. The game includes a dice, which shows how many steps each playing piece is to be moved in each turn. With each step, the players’ piece is moved from one place to another place using a connection on condition that these places are connected. A player may use a flight connection by paying one unit game money, assuming he is at one end of the flight connection when his/her turn comes. Software Engineering 2003 Jyrki Nummenmaa
Example Board Game Requirement Specification / 2 At the start of the game, each special place has a card face down. When a player arrives to a special place, he/she may pay one unit game money to take the card (which can only be taken once). Alternatively, the player may stay on a special place, and instead of moving, throw the dice for trying to take the card: dice values 4,5, and 6 mean the player gets the card. The card may be a bandit, meaning the player loses all money, a jewel with a value, meaning that the player receives money for that value, or a treasure. The treasure may not be sold, but if another player arrives to a place which has a player with the treasure, the arriving player gets the treasure. When a player with the treasure arrives to the starting place, that player wins the game and the game ends. The game boards, places, pieces, labels, connections, etc. each have a graphical representation in the user interface, but that representation is not specified here. Software Engineering 2003 Jyrki Nummenmaa
Some potential associations (1) The game is played by players • Player has a playing piece • Pieces are in starting place -> Piece is in a place • Pieces are moved on the playing board • Game has (a set of places) -> map • Places are connected by a connection • Connections form paths on the board • Places are either ordinary places or special places • Game includes a dice • Player may use a flight connection • Player is at one end of the flight connection • Special place has a card • Player throws the dice • Player has the treasure Software Engineering 2003 Jyrki Nummenmaa
Reasons for rejecting associations • An association may be trivial. • An association may be irrelevant. • An association may be follow from other associations. • An association may turn out to be a momentary action. In this case we may find an operation. • An assocation may relate several classes, and it should be split into binary associations. • We may have an inheritance instead of association. • Common sense should be used. Software Engineering 2003 Jyrki Nummenmaa
Rejecting Associations (1) The game is played by players • Player has a playing piece • Piece is in a place • Pieces are moved on the playing board - activity • Game has a map • Places are connected by a connection –> map contains places and connections • Connections form paths on the board – map info • Places are either ordinary places or special places - inheritance • Game includes a dice • Player may use a flight connection - activity • Player is at one end of the flight connection (3) • Special place has a card • Player throws the dice - activity • Player has the treasure Software Engineering 2003 Jyrki Nummenmaa
Association names (1) The game is played by players -> play • Player has a playing piece -> uses • Piece is in a place -> located • Game has a map -> has • Places are connected by a connection connect • Map contains places and connections -> contains • Game includes a dice -> includes • Special place has a card -> Card covers special place • Player has the treasure -> owns Software Engineering 2003 Jyrki Nummenmaa
Association names (1) player–play–game • player-use-piece -> uses • piece-located-place -> are • game-has-map -> has • connection-connect-places -> we decide to to make connection an association between place and place: place-connected-place • map-contain-places • game-include-dice • card-cover-special place • player-own-treasure Software Engineering 2003 Jyrki Nummenmaa
Association details • Find good and short names for associations. • Add extra specifications, such as- Navigation direction,- Aggregation information,- Ordering information,- Multiplicity specifications, and- Qualifiers (used to identify objects of target end of the association) Software Engineering 2003 Jyrki Nummenmaa
Classes And Associations owns Treasure uses Player Piece 0..1 0..1 0..1 0..1 {ordered} * * located play 1 Special place Dice Game include 1 1 2 1 end cover 0..1 * 1 FlightConnection Card contains Place Map * 1 * * connected The little numbers at the ends of associations are cardinalities. Software Engineering 2003 Jyrki Nummenmaa
Some Observations This Far • This is not a deterministic process: two analysts may well – and probably will – come up with two different analysis models. • We use common sense in many places. • There are no strict rules, only guidelines. The better you know what you are doing, the less you are bound by the guidelines. • At any time, we may find that it is better to change something in the model. Just be aware of the consequences. Software Engineering 2003 Jyrki Nummenmaa
Class Responsibilities • Now it may be a good time to have a thought about why the classes are there. • In other words, what is the role of each class in the analysis model of the system. Software Engineering 2003 Jyrki Nummenmaa
Example Class Responsibilities Piece Maintains player’s position on the map. Dice Gives a random number from {1,2,3,4,5,6}, where each value has equal probability. … … Software Engineering 2003 Jyrki Nummenmaa
Applying Classes to Sequence Diagrams • Now it will be a good time to edit our sequence diagrams. • The sequence diagrams are to use the classes in the class diagram. • We specify the flow of operations from class to class (actually, of course, it will be from object to object). Software Engineering 2003 Jyrki Nummenmaa
Sequence Diagram for ”Take Card” User Game Player Place Card Choose to take card Pay (1) Show funds Updated funds Turn Card Get Value Value Card Value Show card value Add Funds (Value) Show funds Software Engineering 2003 Jyrki Nummenmaa
Identify Operations • Operations now come primarily from three sources:- The sequence diagram (since we have no asynchronous message passing here, each arrow represents a call).- The requirement specification: the potential operations are likely to be verbs.- The task lists collected earlier on (This one is actually just a double check – all of these should be in the sequence diagrams.) Software Engineering 2003 Jyrki Nummenmaa
Some Operations For Class Player • From the previous sequence diagram we get : Pay(value: Integer):Integer and AddFunds(value:Integer):Integer. • From the requirement specifications we get:getPlace():Place, hasMoney(value:Integer):Boolean,moveTo(p:Place), hasTreasure():Boolean, takeTreasure(t:Treasure), giveTreasure(t:Treasure),isWinner():Boolean,canFly():Boolean Software Engineering 2003 Jyrki Nummenmaa
Identify Attributes For Classes • Attributes now come from various sources. • We may find from the requirement specification, that some attribute is vitally important for some class, like the amount of money for a player. • Also the sequence diagrams may imply a need for an attribute, like the name of a player. • At this point we want to record the attributes that are clearly important for the model. • We may want to avoid such implementation-specific attributes, which may well change, once we make a more detailed model. Software Engineering 2003 Jyrki Nummenmaa
More Detailed Representation For Class In A Class Diagram Player name: String money: Integer Pay(value: Integer):Integer AddFunds(value:Integer):Integer getPlace():Place hasMoney(value:Integer):BooleanmoveTo(p:Place)hasTreasure():Boolean takeTreasure(t:Treasure) giveTreasure(t:Treasure)isWinner():BooleancanFly():Boolean • A box with three compartments: Header, Attributes, and Operations. We are still missing some details. Software Engineering 2003 Jyrki Nummenmaa
Inheritance Structure • Is some class a special case of another class? • Do we have some kind of a division into different subtypes? • A compound noun (consisting of more than one words) may indicate inheritance. • Do we have classes, which seem to share properties? • Would it be useful to use some generally known wider concept? (Like bandit -> criminal – in this case the answer is no, we do not need this generalisation.) Software Engineering 2003 Jyrki Nummenmaa
Example Inheritance • In our example, Special Place is clearly a Place. Place Special Place Software Engineering 2003 Jyrki Nummenmaa