10. Object-Oriented Analysis
íìµ ëª©í
- Domainì íµì¬ ì¶ìí륌 ìë³íê³ domain modelë¡ ëªšëžë§
- ìì€í ëŽ íµì¬ ìížìì© ìë³ ë° system sequence diagramìŒë¡ 몚ëžë§
- Low representational gap ì€ê³ ìì¹ì ì¥ì ë° íê³ ë Œì
From Requirements to Code
ââââââââââââââââ âââââââââ
â User Needs ââââââââââââºâ â
â(Requirements)â Miracle? â Code â
ââââââââââââââââ âââââââââ
From Problem to Solution
ââââââââââââââââ ââââââââââââââââ
âProblem space â âSolution spaceâ
â(Domain model)âââââââºâ(Object model)â
ââââââââââââââââ ââââââââââââââââ
- Problem Space (Domain Model)
- ì€ì ìžê³ì ê°ë
- ì구ì¬í, ê°ë
- ê°ë ê°ì êŽê³
- 묞ì íŽê²°
- ìŽí 구ì¶
- Solution Space (Object Model)
- System 구í
- Classes, objects
- Objects ê°ì ì°žì¡° ë° ìì ê³ìžµ
- 결곌 ê³ì°
- Solution ì°Ÿêž°
An Object-Oriented Design Process
- OO Analysis: 묞ì ìŽíŽ
- 묞ì model / diagram, ê°ë
ì ì
- Domain model (a.k.a. conceptual model), ì©ìŽì§
- System ëì ì ì
- System sequence diagram
- System behavioral contracts
- 묞ì model / diagram, ê°ë
ì ì
- OO Design: Solution ì ì
- Object ì±
ì í ë¹, ìížìì© ì ì
- Object interaction diagrams
- ì ì¬ì Solution model / diagram
- Object model
- Object ì±
ì í ë¹, ìížìì© ì ì
A Design Process
- Object-Oriented Analysis
- 묞ì ìŽíŽ
- íµì¬ ê°ë 곌 ê·ž êŽê³ ìë³
- (ìê°ì ) ìŽí 구ì¶
- Domain model (aka conceptual model) ìì±
- Object-Oriented Design
- Software classesì ê·ž êŽê³ë¥Œ class diagramsë¡ ìë³
- ì± ì (attributes, methods) í ë¹
- Interaction diagrams륌 íµí ëì íì
- ì€ê³ ëì íì
- Object model (aka design model) ë° interaction models ìì±
- Implementation
- ì€ê³ë¥Œ codeë¡ ë§€í, classes ë° methods 구í
A High-level Software Design Process
- Project ìì
- ì구ì¬í ìì§
- Actors ë° use cases ì ì
- 묞ì model / diagram, objects ì ì
- System ëì ì ì
- Object ì± ì í ë¹
- Object ìížìì© ì ì
- ì ì¬ì Solution model / diagram
- Solution 구í ë° test
- ì ì§ë³Žì, ë°ì ë±
Domain Models ëë©ìž 몚ëž
Object-Oriented Analysis
- ì구ì¬íì ëì€ë ëª ì¬ë€, ìì°ìŽ ì©ìŽì§
- Problem domainì ê°ë
ì°Ÿêž°
- Real-world abstractions, ë°ëì software objectsë ìë
- 묞ì ìŽíŽ
- ê³µíµ ìŽí í늜
- ê³µíµ ë¬žìí, í° ê·žëŠŒ
- Communicationì ìíš
- (ë¹ê³µìì ìž) íêž°ë²ìŒë¡ UML class diagramsì ì죌 ì¬ì©
- ì¶í classes륌 ì°Ÿêž° ìí ì¶ë°ì (low representational gap)
Input to the Analysis Process: Requirements and Use Cases
공공 ëìêŽì ìŒë°ì ìŒë¡ ì§ì ì¬í 죌믌ë€ìŽ ëì¶í ì ìë ëì, ìí ëë êž°í ëìêŽ ìë£ë¥Œ ìì¥í©ëë€. ê° íììê²ë ìŒë°ì ìŒë¡ ëìêŽ ê³ì 곌 ê³ì ID ë²ížê° êž°ì¬ë ëìêŽ ì¹Žëê° ë°êžëë©°, ìŽë¥Œ íµíŽ ëìêŽìì ë³žìž íìžì í ì ììµëë€. íìì ëìêŽ ê³ì ìë íŽë¹ íììŽ ëì¶í ìë£ì ê° ëì¶ ìë£ì ë°ë© êž°íìŽ êž°ë¡ë©ëë€. ê° ìë£ ì íìë Ʞ볞 ëì¬ êž°ê°ìŽ ì€ì ëìŽ ììŒë©°, ìŽë ìë£ê° ëì¶ë ë ë°ë©ìŒì ê²°ì í©ëë€. íììŽ ë°ë©ìŒ ìŽíì ìë£ë¥Œ ë°ë©í 겜ì°, íŽë¹ ìë£ì ì§ì ë ì°ì²Žë£ë¥Œ ì§ë¶íŽìŒ íë©°, ìŽ êžì¡ì íìì ëìêŽ ê³ì ì êž°ë¡ë©ëë€.
ì ìŠìŒìŽì€ ìë늬ì€: ëìêŽ íìì ëìêŽ ìì€í í€ì€ì€í¬ìì ëìêŽ ì¹Žëë¡ ë¡ê·žìžíì¬ ì± ì ëì¶í ì ììŽìŒ í©ëë€. íìì ë¯žë© ì°ì²Žë£ê° ììì íìží í, ëìêŽ ìì€í ì íŽë¹ ëìì ëì¬ êž°ê°ì íì¬ ë ì§ì ëíì¬ ë°ë© êž°íì ê²°ì íê³ , íŽë¹ ëìì ë°ë© êž°íì íìì ëìêŽ ê³ì ì ëì¶ ìë£ë¡ êž°ë¡íŽìŒ í©ëë€.
Modeling a Problem Domain
- Domain ì€ëª
ì íµì¬ ê°ë
ìë³
- ëª ì¬, ëì¬, ê°ë ê° êŽê³ ìë³
- "System"곌 ê°ì non-specificí ìŽí ì§ì
- Operationsì concepts 구ë¶
- Domain ì 묞ê°ì brainstorming
Glossary ì©ìŽì§
íµì¬ ê°ë ìë³ ë° ì ì
ê°ë°ìì ê³ ê° ê°ì ê³µì ë ìŽíŽ ë³Žì¥
ââââ 몚íží ì ìë ê°ë ì ì âââââââââââââââââŒââââââââââââââââââââââââââââââââââââŒâââ âLibrary item: Any item that is indexed and â â âcan be borrowed from the library â â âLibrary member: Person who can borrow from ⌠â âlibrary, identified by a card with an ID numberâ âBook â âââ²ââââââââââââââââââââââââââââââââââââââââââââââ ââëª ë°±í ê°ë ì ëíŽì ì€ëª í íì ìì.
Visual Notation: UML
Name of real-world concept Multiplicities/cardinalities
(not software cases) ââindicate "how many"
â â
ââââŒâââââââââââââ ââââââââââ
âLibrary Accountâ ââBook â
ââââââââââââââââ†borrow ââââââââââ€
âaccountID âââââââ²ââââââŒâ€title â
âlateFees â1 â *âauthor â
ââ²âââââââââââââââ â âââââââââ
ââProperties Associations
of concept between concepts
Reading Associations
âââââââââââââââââââââââââââââââââââââââââº
One library account can borrow many books
âââââââââââââââââ âââââââââ
âLibrary Accountâ âBook â
ââââââââââââââââ†borrow âââââââââ€
âaccountID ââââââââââââââ€title â
âlateFees â1 *âauthor â
âââââââââââââââââ âââââââââ
One book can be borrowed by one library account
âââââââââââââââââââââââââââââââââââââââââââââââ
Attributes vs. Concepts
âââââââââââââââââ âââââââââââââââââ âââââââââ
âLibrary Accountâ âLibrary Accountâ âBook â
ââââââââââââââââ†ââââââââââââââââ†borrow âââââââââ€
âaccountID â vs. âaccountID ââââââââââââ€title â
âlateFees â âlateFees â1 *âauthor â
âborrowedBooks â âââââââââââââââââ âââââââââ
âââââââââââââââââ
"ì€ì ìžê³ìì ìŽë€ ê°ë ì class X륌 textë ì«ìë¡ ìê°íì§ ìëë€ë©Ž, ê·žê²ì attributeê° ìëëŒ conceptìŒ ê°ë¥ì±ìŽ ëë€."
- Type annotations ííŒ
Modeling a Problem Domain
- Domain modelì ìŽììë 묞ì
- Communicationì ìíŽ ì¬ì©
- ì€ì ìžê³ ê°ë
ì ì§ì€
- (ì: Database ê°ì ì¶ìì 구í êŽì¬ì¬ ìë)
- Methods/operations ìì
- êŽê³(relationships)ì ë€ì€ì±(cardinalities) íì
Identifying Concepts
"A public library typically stores a collection of books, movies, or other library items available to be borrowed by people living in a community. Each library member typically has a library account and a library card with the accountâs ID number, which she can use to identify herself to the library. A memberâs library account records which items the member has borrowed and the due date for each borrowed item. Each type of item has a default rental period, which determines the itemâs due date when the item is borrowed. If a member returns an item after the itemâs due date, the member owes a late fee specific for that item, an amount of money recorded in the memberâs library account 20"
Hints for Identifying Concepts
- ì구ì¬í ëª ìž ìœêž°, ëª ì¬ ì°Ÿêž°
- Ʞ졎 models ì¬ì¬ì©
- ë²ì£Œ list ì¬ì©
- ì íì ì¬ë¬Œ:
cars,telemetry data,terminalsë± - ìí :
mother,teacher,researcher - ìŽë²€íž:
landing,purchase,request - ìížìì©:
loan,meeting,intersectionë± - 구조, ì¥ì¹, ì¡°ì§ ëšì ë±
- ì íì ì¬ë¬Œ:
- ìŒë°ì ìž use scenarios ë¶ì, ëì ë¶ì
- Brainstorming
- ìì§ ëšŒì . ì¡°ì§, íí°ë§, ìì ì ìŽíì!
One Domain Model for the Library System
âââââââââââââââââ âââââââââââââââ
â Library â<>-1-----0*..>â Item â
âââââââââ¬ââââââââ has many âââââââââââââââ€
â ârentalPeriod â
âhas many âlateFee â
1 âââââââââ²ââââââ
â âis a
â âââââââââŽââââââ
âââââââââŒââââââââ âââââŽâââ ââââââŽâââ
â LibraryMember â<>-1-has-1â Book â â Movie â
ââââââââââââââââ†ââââââââ âââââââââ
âhas âhas
1 1
âââââââââŒââââââââ âââââââââââââââââââââââââââââ
â LibraryCard â<-â-------1âââââââââââââââ â
ââââââââââââââââ†âassociated with â â
âidNumbers â â 1 â
âââââââââ¬ââââââââ â âââââââŒâââââŒâââââ
âââââââââââââââââââââââââââ>âLibraryAccount â
1 â âââââââââââââââââ€
â âidNumbers â
â âlateFeeOwed â
â âââââââ¬ââââââââââ
â âhas many
â 1
â âââââââŒââââââââââ
â----------0..*<>â BorrowedItem â
âââââââââââââââââ€
âdueDate â
âitem â
âââââââââââââââââ
Notes on the Library Domain Model
- 몚ë ê°ë ì íë¡ê·žëëšžê° ìëìŽë ì ê·Œ ê°ë¥
- UML íêž°ë²ì ë€ì ë¹ê³µìì . êŽê³ë ì¢ ì¢ ëšìŽë¡ ì€ëª ëš
- ì€ì ìžê³ì "is-a" êŽê³ë domain modelì ì í©
- ì€ì ìžê³ì ì¶ìíë domain modelì ì í©
- ë°ë³µìŽ ì€ì: ìŽ ììë ìŽìì. ì€ì ì€ê³ììë ìŒë¶ ì©ìŽ ìì ê°ë¥ì±
- ì:
Itemvs.LibraryItem,Accountvs.LibraryAccount
- ì:
- ì§í© íì (Aggregate types)ì ë³Žíµ ë³ë ê°ë ìŒë¡ 몚ëžë§
- Ʞ볞 attributes (ì«ì, 묞ììŽ)ë ë³Žíµ attributesë¡ ëªšëžë§
Why Domain Modeling?
- Domain ìŽíŽ
- ìžë¶ì¬íìŽ ì€ì! (ì: Systemìê² ì± ê³Œ ë¹ëì€ë ë€ë¥žê°?)
- ìì ì± ë³Žì¥
- (ì: ì°ì²Žë£ê° ê³ ë €ëìëê°?)
- ê³µíµ ì©ìŽ ì§í©ì ëì
- ì:
library itemvscollection entryvsbook
- ì:
- ì€ê³ ì€ë¹
- Domain conceptsë OO classesì ì¢ì í볎 (-> low representational gap)
Hints for Object-Oriented Analysis
- Domain modelì ìŽí ì ê³µ
- ê°ë°ì, í ì€í°, ê³ ê°, domain ì ë¬žê° ê° communicationì ìíš
- ëšìŒ ìŽíì ëìíê³ ìê°í
- Software classesë dataê° ìë, conceptsì ì§ì€
- ììŽëìŽ, ì¬ë¬Œ, objects
- ìŽëŠ ë¶ì¬, ì ì ë° ìì ì ê³µ (symbol, intension, extension)
- ì©ìŽì§(Glossary) ì¶ê°
- ìŒë¶ë classesë¡ êµ¬íë ìë, ìë ìë ìì
- ë§ì ì íì§ê° 졎ì¬
- ModelìŽ ì벜íê² ì ííì§ ìì ê²
- êŽì°®ì.
- ë¶ë¶ì ìž modelë¡ ìì, íìí ê²ë§ modeling
- ëì€ì ì¶ê° ì ë³Žë¡ íì¥
- ë³ê²œ ì¬í ëª íí communicate
- ê·žë ì§ ììŒë©Ž "analysis paralysis(ë¶ì ë§ë¹)" ìí
Domain Model Distinctions
- VS. data model (solution space)
- ë°ëì ì ì¥ë dataë ìë
- VS. object model ë° Java classes (solution space)
- ì€ì domain conceptsë§ í¬íš (ì€ì objects ëë ì€ì ìžê³ì ì¶ìí)
- "UI frame", database ë± ë¯ží¬íš
System Sequence Diagram
Understanding System Behavior
- System sequence diagram: íëì use scenarioì ëíŽ, systemì 겜ê³(boundary)ìì ë°ìíë ìŽë²€íž ìì륌 볎ì¬ì£Œë model
- ì€ê³ 목í: Systemì interface ìë³ ë° ì ì
- System ìì€ì 구ì±ììë§ (ì: ì¬ì©ìì ì 첎 system)
One Example for the Library System
âââââââ âââââââââ
âUser â âSystem â
ââââ¬âââ âââââ¬ââââ
â login(card)â
ââââââââââââââââºâ
ââ--------------â
â â
â borrow(book)â
ââââââââââââââââºâ
ââ--------------â
âsuccess? â
âdue date â
- Use case ìë늬ì€: Library memberê° library cardë¡ kiosk ë¡ê·žìž í ì± ëì¶. ì°ì²Žë£ 믞ë©ì íìž í, rental period륌 ëíŽ ë°ë© êž°í ê²°ì . ì± ê³Œ ë°ë© êž°íì memberì accountì êž°ë¡
Behavioral Contracts
Formalize System at Boundary
âââââââ âââââââââ
âUser â âSystem â
ââââ¬âââ âââââ¬ââââ
â login(card)â
ââââââââââââââââºâ
ââ--------------â
â â
â borrow(book)â
ââââââââââââââââºâ
ââ--------------â
âsuccess? â
âdue date â
- System behavioral contract
- System sequence diagramsìì ìë³ë í¹ì operationì ëí pre-conditionsì post-conditions êž°ì
- System ìì€ì í ì€íž ëª ìž, software specificationsì ì ì¬
System Behavioral Contract Example
- Operation:
borrow(item) - Pre-conditions
- Library memberê° systemì ìŽë¯ž ë¡ê·žìžíš
- ItemìŽ íì¬ ë€ë¥ž memberìê² ëì¶ëì§ ìì
- Post-conditions
- ë¡ê·žìžë memberì accountì ìë¡ ëì¶ë item êž°ë¡, ëë memberìê² ë¯žë© ì°ì²Žë£ 겜ê³
- ìë¡ ëì¶ë itemì itemì rental period + íì¬ ë ì§ë¡ ê³ì°ë 믞ëì ë°ë© êž°í í¬íš
Distinguishing Domain vs. Implementation Concepts
- Domain-level concepts
- ì€ì ìžê³ì ì ì¬ë¬Œ(analogue)ì ê°ì§ ê±°ì 몚ë ê²
- Implementation-level concepts
- 구í곌 ì ì¬í method ìŽëŠ
- Programming types
- Visibility modifiers
- Helper methods ëë classes
- Design patternsì ì°ì¶ë¬Œ
Summary: Understanding the Problem Domain
- Domain ìì€ì ííì 구ì¶íë tools íì
- Domain models
- System sequence diagrams
- System behavioral contracts
- ì ìíê³ (ëë¡ë) ì ì°íê²
- ëª ë°±í(?) ìžë¶ ì¬í ìëµ
- ë°ë³µ, ë°ë³µ, ë ë°ë³µ...
- Domain ì 묞ê°ë¡ë¶í° feedback ë°êž°
- Domain ìì€ì conceptsë§ ì¬ì©

