Presentation is loading. Please wait.

Presentation is loading. Please wait.

Object-Oriented Analysis

Similar presentations


Presentation on theme: "Object-Oriented Analysis"— Presentation transcript:

1 Object-Oriented Analysis
Using CRC Cards and Scenarios to Get Started on a Good Object-Oriented Design Slides from Jochen Rick adapted by Dan Fleck CRC = Class Responsibility Collaboration Coming up: Motivation

2 Motivation Programming classes teach What an object is
How to create objects What is missing Design – finding/determining which objects should you create? Indeed given a set of requirements for an application and a development system like Smalltalk, ‘finding the objects’ is easily the most difficult task an experienced OO developer has to face. —Simon Lewis, The Art and Science of Smalltalk Coming up: Good Object-Oriented Style

3 Good Object-Oriented Style
You can hack in any language, but how do you get reusable, maintainable code? Just using Objects doesn’t ensure a good design Many C++ programs have only have a single class That’s not good object-oriented style No process can guarantee good results A good process just makes them more likely Coming up: Design is a Process, not a Waterfall

4 Design is a Process, not a Waterfall
Design is an iterative activity Start with Object-Oriented Analysis and Design Move on to OO Programming Return to OOA/OOD when necessary When creating new functionality To solve problems with the code OO Analysis is just another perspective Good designers (in any field) shift perspective frequently to create a better design The boundary between OOA and OOD is fuzzy. Actually, in any problem-solving task, switching perspectives is often useful for solving the problem. Coming up: OOA vs. OOD

5 OOA vs. OOD Understand the problem: In analysis, we are mostly concerned with the DOMAIN MODEL. What are the objects in the domain and how do they collaborate. I want the iPod to play music (MusicPlayer class) Understand the solution: In design, we need to integrate an APPLICATION MODEL. What objects do I need to add to get this thing to run on a computer and to be realized in some programming language? The iPod should have a play button, rewind/ffwd done with the wheel (MusicPlayer needs to interact with PlayButton and Wheel classes) Coming up: Object-Oriented Analysis

6 Object-Oriented Analysis
CRC Cards by Ward Cunningham Goal: Understand the Domain as Objects Object-Oriented Analysis is Language Independent Force Developers to “think” in objects Steps Brainstorm Candidate Classes Create Initial Class-Responsibility-Collaboration Cards Come up with scenarios of use in the domain Use scenarios and role playing to refine CRC Cards When do we do it? Before we begin coding (to get a good start) To add new functionality (update CRC cards and scenarios regularly) Design is an iterative process. So, even when you are already coding, it may help you to think at the design level again. In particular, what is already out there for you to use may make you reconsider your design. If so, go back and work with the CRC cards. Not only is it a good practice, it is also excellent at keeping your team on the same page. For larger projects, that’s important. Coming up: How things fit in CS421

7 How things fit in CS421 Problem Statement Use cases CRC Cards
Class Diagram (high level) Analysis Phase (understanding the problem) UML diagrams at any time for clarity: sequence, activity, swimlane, DFD, ERD, etc… Coming up: How things fit in CS421

8 How things fit in CS421 Design Phase (solving the problem in software). Versions of class diagram and ERD with implementation details Detailed versions of any UML diagram needed for clarity Implementation Testing Deployment Maintenance Coming up: OOA Step 1 Brainstorming Candidate Classes

9 OOA Step 1 Brainstorming Candidate Classes
Write down all the objects that relate Domain Analysis Focus on the nouns (objects are nouns) Good objects will have attributes and services Now, filter and refine the candidates Deal with the interface later (if it helps create a GUI class that is user interface) Are some candidates attributes of others? Are some subclasses of others? Are some instances of others? Coming up: Brainstorming Tips

10 Brainstorming Tips Two’s only company, Ten’s a crowd
Don’t forget the user All ideas are potentially good Analyze – make connections Think fast – ponder later Every voice gets a turn Relax – humor is OK. Coming up: Candidate Class Review

11 Candidate Class Review
Has clear unambiguous name, recognized by domain experts Has name that fits in with other systems developed by your organization Uses singular noun for name Begins with Uppercase Letter Has responsibilities (what NOT how) Remembers (knowledge) Is needed (collaborates) Actively participates from CRC Card Book Coming up: Filter Candidate Classes

12 Filter Candidate Classes
Core Classes (pretty sure these are in Analysis model) Undecided Classes (probably not classes – might be attributes) Eliminated Classes – (outside scope of system, Application model classes like UI components tied to implementation) Coming up: OOA Step 2 CRC Cards

13 OOA Step 2 CRC Cards For each core candidate class, create one CRC card What’s a CRC Card? Class-Responsibility-Collaboration It’s just a 4x6in index card Coming up: CRC Cards: What Goes Where?

14 CRC Cards: What Goes Where?
Note: these are lined up, Foo is needed for BOTH responsibilities, so it is written twice!! Superclass is only put in if necessary. The collaborators (other classes) should match up with the responsibilities that they are needed for. Coming up: CRC Card Format (Front)

15 CRC Card Format (Front)
Class Name (OOA) Purpose/Role (OOA): Patterns (OOD): Stereotypes(OOA/OOD): Pattern and stereotype not needed for the project Coming up: CRC Card Format (Back)

16 CRC Card Format (Back) Class Name Superclass: Subclasses:
Responsibilities Collaborators Coming up: CRC Card Sample Front

17 CRC Card Sample Front Document
Purpose: A Document acts as a container for graphics and text. Patterns: Composite-Component Stereotypes: Structurer Pattern and stereotype not needed for the project Coming up: CRC Card Sample Back

18 CRC Card Sample Back Document Superclass: Subclasses: Responsibilities
Collaborators Know Contents Know Storage Location Insert and Removes text, graphics and other elements Coming up: Stereotypes

19 Stereotypes Information Holder Structurer Service Provider Coordinator
knows and provides information Structurer Maintains relationships between objects and information about those relationships Service Provider Performs work for other objects Coordinator Reacts to events by delegating tasks to others Controller Makes decisions and closely directs others’ actions Interfacer Transforms information and requests between different parts of our system Coming up: OOA Step 3 Scenarios with CRC Cards

20 OOA Step 3 Scenarios with CRC Cards
Invent Scenarios What should these objects do? What if…? Play the Cards Assign Roles Go Through Scenario Write down new responsibility Add collaborator objects to help with that responsibility Team members hold up cards as they participate Coming up: Scenario Guidelines

21 Scenario Guidelines Concrete: Focus on “must do” items first
Bob tries to Login to the system with an incorrect password. Sally creates a new Sorceress character and chooses auto-configuration. Focus on “must do” items first Start easy and move to complex Coming up: Scenario Guidelines

22 Lets try scenario role-playing for the hangman example
Scenario Guidelines Keep a record of scenarios played out Explore exception conditions last Separate role-play from analysis Got here Feb 18th, 2010 (early class) but skipped stereotypes Lets try scenario role-playing for the hangman example Coming up: OOA for a Clock

23 OOA for a Clock We want to make a clock. The clock should:
Have a way to set the current time Display the time in hours, minutes, and seconds in different formats Update the time to keep it current Coming up: OOA for a Clock

24 OOA for a Clock Brainstorm objects for Clock Filter: CRC Cards
Display, Time, Ticker/SecondTimer, Clock, Formatter Filter: CRC Cards Two scenarios When the ticker pulses the clock, the internal representation of time must increment When a display is requested, the time must be fetched and formatted Coming up: Scenario 1: The Ticker Ticks

25 Scenario 1: The Ticker Ticks
The SecondsTicker pulses the Clock Coming up: Scenario 1: The Ticker Ticks

26 Scenario 1: The Ticker Ticks
The SecondsTicker pulses the Clock The Clock updates Time Coming up: Scenario 1: The Ticker Ticks

27 Scenario 1: The Ticker Ticks
The SecondsTicker pulses the Clock The Clock updates Time Time updates itself Coming up: Scenario 1: The Ticker Ticks

28 Scenario 1: The Ticker Ticks
The SecondsTicker pulses the Clock The Clock updates Time Time updates itself End of Scenario Coming up: Scenario 2: Clock Responds with the Time

29 Scenario 2: Clock Responds with the Time
Display the time Got here Tuesday 9/29/2009 Coming up: Scenario 2: Clock Responds with the Time

30 Scenario 2: Clock Responds with the Time
Display the time Collaborator: Return hours, minutes, & seconds Coming up: Scenario 2: Clock Responds with the Time

31 Scenario 2: Clock Responds with the Time
Display the time Collaborator: Return hours, minutes, & seconds Translate the time into the display format Coming up: Scenario 2: Clock Responds with the Time

32 Scenario 2: Clock Responds with the Time
Display the time Collaborator: Return hours, minutes, & seconds Translate the time into the display format End of Scenario Coming up: OOA for a Clock

33 OOA for a Clock Coming up: Why CRC Cards?

34 Why CRC Cards? Forces you to think in “objects”
Help you identify objects and their responsibilities Help you understand how the objects interact Cards form a useful record of design activity Cards work well in group situations and are understandable by non-technical stakeholders. Coming up: In-class Exercise – R&D Library

35 In-class Exercise – R&D Library
This application will support the operations of a technical library for an R&D organization. This includes the searching for and lending of technical library materials, including books, videos, and technical journals. Users will enter their company ids in order to use the system; and they will enter material ID numbers when checking out and returning items.Each borrower can be lent up to five items. Each type of library item can be lent for a different period of time (books 4 weeks, journals 2 weeks, videos 1 week). If returned after their due date, the library user's organization will be charged a fine, based on the type of item( books $1/day, journals $3/day, videos $5/day).Materials will be lent to employees with no overdue lendables, fewer than five articles out, and total fines less than $ (Design Constraints)... got here late class 2/18/2010 Coming up: In-class Exercise: Handout

36 In-class Exercise: Handout
Brainstorm Candidate Classes - Whole Class Candidate Class Review - Whole class Filter Classes - Individual Groups Create the cards - Individual Groups Information Holder - knows and provides information Structurer - Maintains relationships between objects and information about those relationships Service Provider - Performs work for other objects Coordinator - Reacts to events by delegating tasks to others Controller - Makes decisions and closely directs others’ actions Interfacer - Transforms information and requests between different parts of our system Play the cards - Individual Groups Scenarios - What happens when Johnny Codewarrior returns the book Document, Your job depends on it two days late? He has no other item checked out and no acquired fines. What happens when Ivar Jacobson uses the search feature to look for the book Object-Oriented Software Engineering of which there are 2 copies available? What happens when Grady Booch uses the search feature to look for the book Object-Oriented Analysis and Design with Application of which there is 1 copy available and the database is down? Present Final Card Set - Individual Groups Document Purpose: … Patterns: Stereotypes: … This slide is just a handout Coming up: Lets try it: Class-Responsibility-Collaborator (CRC)

37 Lets try it: Class-Responsibility-Collaborator (CRC)
Create a set of CRC cards for an iPod Brainstorm – Core: Maybe: Eliminated: Filter Develop Scenarios Play the cards Coming up: Scenarios

38 Scenarios John searches for music by Cake, finds a song and plays it
John searches for music by Cake, finds a song and deletes it John selects a playlist and adds a song to it John selects a playlist and plays it iPod battery is getting low and warns the user, no response, then shutsdown End of presentation


Download ppt "Object-Oriented Analysis"

Similar presentations


Ads by Google