Object-Oriented Analysis

Slides:



Advertisements
Similar presentations
Information System Engineering
Advertisements

Coming up: Motivation1 Object-Oriented Analysis Using CRC Cards and Scenarios to Get Started on a Good Object-Oriented Design Slides from Jochen Rick adapted.
Object-Oriented Analysis
Introduction To System Analysis and Design
Algorithms and Problem Solving-1 Algorithms and Problem Solving.
Slide 1 Chapter 7 Structural Modeling. Slide 2 Key Ideas A structural or conceptual model describes the structure of the data that supports the business.
Algorithms and Problem Solving. Learn about problem solving skills Explore the algorithmic approach for problem solving Learn about algorithm development.
Lecture 4 Class Responsibility Collaboration Cards
CS350/550 Software Engineering Lecture 1. Class Work The main part of the class is a practical software engineering project, in teams of 3-5 people There.
Domain Modeling (with Objects). Motivation Programming classes teach – What an object is – How to create objects What is missing – Finding/determining.
Business Modeling Domain Modeling Source: Use Case Driven Object Modeling with UML – A Practical Approach By Doug Rosenberg ISBN:
Chapter 3 Object-Oriented Analysis of Library Management System(LMS)
Introduction To System Analysis and design
CS2110: SW Development Methods Design of methods (functions) Class design – CRC cards – UML class and sequence diagrams Software Design.
High-Level Design With Sequence Diagrams COMP314 (based on original slides by Mark Hall)
1 Object orientation. 2 What benefits does OO give? Primarily –Encapsulation (Associates data & operations) –Types & specialisation –Software re-use.
Introduction To System Analysis and Design
Coming up: Motivation1 Object-Oriented Analysis Using CRC Cards and Scenarios to Get Started on a Good Object- Oriented Design Slides from Jochen Rick.
1 CMPT 275 Software Engineering Requirements Gathering Activity Janice Regan,
Slide 1 Structural Modeling Chapter 7. Slide 2 Key Ideas A structural or conceptual model describes the structure of the data that supports the business.
Object-Oriented Analysis1 Using CRC Cards and Scenarios to Get Started on a Good Object- Oriented Design Slides from Jochen Rick adapted by Dan Fleck.
Lecture 3 Uses Cases Topics UML Use Cases pop quiz Readings: Chapter 3 January 24, 2008 CSCE 492 Software Engineering.
Intermediate 2 Software Development Process. Software You should already know that any computer system is made up of hardware and software. The term hardware.
©Ian Sommerville 2004Software Engineering, 7th edition. Chapter 14 Slide 1 Object-oriented Design.
1 What is OO Design? OO Design is a process of invention, where developers create the abstractions necessary to meet the system’s requirements OO Design.
Design Model Lecture p6 T120B pavasario sem.
Chapter 17 – Object- Oriented Design. Chapter Goals To learn about the software life cycle To learn about the software life cycle To learn how to discover.
ITEC324 Principle of CS III Chapter 2 (Horstmann’s Book) – Part 1 The Object-Oriented Design Process Hwajung Lee.
SWE 4743 Responsibility Driven Design with CRC cards Richard Gesick.
CSIS 4850: CS Senior Project – Spring 2009 CSIS 4850: Senior Project Spring 2009 Object-Oriented Design.
Algorithms and Problem Solving. Learn about problem solving skills Explore the algorithmic approach for problem solving Learn about algorithm development.
Coming up: Motivation1 Object-Oriented Analysis Using CRC Cards and Scenarios to Get Started on a Good Object-Oriented Design Slides from Jochen Rick adapted.
Slide design: Dr. Mark L. Hornick
An informal, team oriented, OO design system
Scrum CS These outstanding slides were created by Kevin Schenk, BS in Computer Science, Purdue University, 2012.
Object Design Examples with GRASP
GRASP – Designing Objects with Responsibilities
Algorithms and Problem Solving
Unified Modeling Language (UML)
CMPE 280 Web UI Design and Development August 29 Class Meeting
Use Cases Discuss the what and how of use cases: Basics Benefits
Lec-5 : Use Case Diagrams
Scrum CS These outstanding slides were created by Kevin Schenk, BS in Computer Science, Purdue University, 2012.
Chapter 5: Structural Modeling
Recall The Team Skills Analyzing the Problem (with 5 steps)
Scrum CS These outstanding slides were created by Kevin Schenk, BS in Computer Science, Purdue University, 2012.
Scrum CS These outstanding slides were created by Kevin Schenk, BS in Computer Science, Purdue University, 2012.
Week 10: Object Modeling (1)Use Case Model
Advance Software Engineering
Object-Oriented Analysis Principles using UML
Object-Oriented Design
Object-Oriented Design
PROBLEM SOLVING SKILLS
3. Object-oriented Design
Use Cases CS/SWE 421 Introduction to Software Engineering Dan Fleck
Use Cases CS/SWE 421 Introduction to Software Engineering Dan Fleck
Object oriented analysis and design
CIS 375 Bruce R. Maxim UM-Dearborn
Starting Design: Logical Architecture and UML Package Diagrams
Analysis models and design models
Algorithms and Problem Solving
Applying Use Cases (Chapters 25,26)
Team Skill 6 - Building The Right System Part 1: Applying Use Cases
Applying Use Cases (Chapters 25,26)
Chapter 22 Object-Oriented Systems Analysis and Design and UML
CIS 375 Bruce R. Maxim UM-Dearborn
Software Development Process Using UML Recap
ITEC324 Principle of CS III
From Use Cases to Implementation
Presentation transcript:

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

Motivation It’s all very well understanding what an object is, but it’s much harder to decide what kinds of object you should design in order to implement an application in Smalltalk. 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

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

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

OOA vs. OOD In analysis, we are mostly concerned with the DOMAIN MODEL. What are the objects in the domain and how do they collaborate. 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? Coming up: Object-Oriented Analysis

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: OOA Step 1 Brainstorming Candidate Classes

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 (Not part of the domain, that’s the application model) Are some candidates attributes of others? Are some subclasses of others? Are some instances of others? Coming up: Brainstorming Tips

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

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

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

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 Analysis vs. Design Information Coming up: CRC Cards: What Goes Where?

CRC Cards: What Goes Where? 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)

CRC Card Format (Front) Class Name (OOA) Purpose/Role (OOA): Patterns (OOD): Stereotypes(OOA/OOD): Coming up: CRC Card Format (Back)

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

CRC Card Sample Front Document Purpose: A Document acts as a container for graphics and text. Patterns: Composite-Component Stereotypes: Structurer Coming up: CRC Card Sample

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

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

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

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

Scenario Guidelines Keep a record of scenarios played out Explore exception conditions last Separate role-play from analysis Coming up: OOA for a Clock

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

OOA for a Clock Brainstorm (Step 1 – Candidate Classes) Coming up: OOA for a Clock

OOA for a Clock Brainstorm Filter for Core Objects Face for the clock, internal ticker, hours, minutes, seconds, knob for setting the clock Filter for Core Objects Coming up: OOA for a Clock

OOA for a Clock Brainstorm Filter Define the Clock class Attributes: hours, mins, secs, timezone, state (low bat, etc…), Services: update, setTime, alarm, setAlarm, display/time, displayDate, setAmPm, getAmPm Coming up: OOA for a Clock

OOA for a Clock Brainstorm Filter Define the Clock class Face for the clock, internal ticker, hours, minutes, seconds, knob for setting the clock Filter Ticker, hours, minutes, seconds Define the Clock class Attributes: seconds, minutes, hours, displayFormat Services: get/set, nextSecond, display, setFormat Coming up: ALERT!!!!

ALERT!!!! Bad OO Design in Progress What did we do wrong? I’m still designing a program thinking – what’s my data and what do I have to do? I need to think about a community of cooperating objects!!! Coming up: Errors in this Design

Errors in this Design We assumed there was only one class: Clock What’s reusable in that? We started with data and not with what the object should be responsible for We were way too focused on the programming from the start Thinking in get/set mode (be aware of your idioms!) Java/Python does that, but typically not Smalltalk Coming up: OOA for a Clock: Second Try

OOA for a Clock: Second Try Brainstorm objects for Clock 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

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

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

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

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

Scenario 2: Clock Responds with the Time Display the time Coming up: Scenario 2: Clock Responds with the Time

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

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

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

OOA for a Clock: Second Try Coming up: Why CRC Cards?

Why CRC Cards? 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

In-class Exercise 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 $100....(Design Constraints)... Coming up: In-class Exercise: Handout

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: OO Analysis Exercise: Checkers

OO Analysis Exercise: Checkers Checkers is played by two people, one with light and one with dark pieces. Pieces move diagonally and opponents are captured by jumping over them. Coming up: OO Analysis Exercise: Checkers

OO Analysis Exercise: Checkers Things to keep in mind http://www.jimloy.com/checkers/rules2.htm A Piece can only move and capture forward. When a piece makes it to the other side of the board, it becomes a king and can move diagonally in any direction as far as it wants. Capturing is mandatory. A piece (or king) that is captured is removed from the board. The player who has no pieces left or cannot move anymore has lost the game. Coming up: Candidate Classes

Candidate Classes Brainstorming: Coming up: Scenarios

Scenarios Bob moves first in the new game and moves a checker with a legal move. Late in the game, Sally moves a checker into Bob’s home row, changing it to a King. Sally takes Bob’s last checker, ending the game. End of presentation