840 likes | 1.2k Views
Topics in Object-Oriented Methodology. Takuya Katayama JAIST. Hi !. Myself Prof. at Japan Advanced Institute of Science and Technology Working on formal and mathematical aspect of software engineering, especially Object-Oriented Methodology Software evolution Fault-tolerant software
E N D
Topics in Object-Oriented Methodology Takuya Katayama JAIST
Hi ! • Myself • Prof. at Japan Advanced Institute of Science and Technology • Working on formal and mathematical aspect of software engineering, especially • Object-Oriented Methodology • Software evolution • Fault-tolerant software • My family One dog, One wife and two daughters
Agenda • Fundamental Concepts in Object-Oriented Methodologies • UML • Topics in OO Methodologies • Constraints and OCL • Proving Constraints
What is Object-Oriented Methodology ? • Software developing methodology based on Object-Oriented Paradigm • Our world is a collection of collaborating agents/objects • Software has to be organized according to the structure of our world • It increases understandability and evolvability of the software
Object-Oriented Paradigm(1) • Our Word is a collection of collaborating agents President Sales dept. Factory Factory workers Engineers Scientists
Object-Oriented Paradigm(2) • Organize software according to the structure of the world Management Information Object Factory Management Object Sales Dept. Object Worker Object Laboratory Object Design Object
Computationally, Objects are… • Elements of the world to be described • Autonomous behavioral elements • Object=Attributes+Operations+Behavior • Attributes:Local data of object • Operations:For changing/referencing the attributes • Behavior:Upon receiving stimulus(event), perform operations, changes its states and sends out events • Usually, modeled as statecharts or event-driven program • Object is encapsulated.
Communication via events,… Attribute: a,b,c Operation: draw, paint, move,.... Behavior e/move, e’
Description of the World • How do we describe the world? • Class concept + Relations among classes • Class as a set of “similar objects” in the world • Abstraction :{professor Shinoda, professor Tan, …} class “professor” • Instantiation : “professor” professor Shinoda • Class concepts provides economy and reuse of thought and description.
Objects and Classes object: Chula Yangon abstraction U. Laos instantiation class: university Tan Shinoda Working-at class: professor
Relationships Among Classes • Class Hierarchy, Inheritance, “is a” • Generalization/Specialization • Mammal < Monkey < Human • Composition, Aggregation, “has a” • Automobile=Body+Wheels+Steering+Engine • Association, a general relation between classes Employ―(works at)―Company • Dependency, Realization,...
Too Major Issues in Object-Oriented Methodology • Object-Oriented Analysis/Design • BOOCH, OMT, UML, Catalysys methods • Constraints, Formal Approach, Analysis Patterns,Unified Process, … • Object-Oriented Programming • OO langugages :Smalltalk, C++, Java • Design Patterns, Frameworks , Class Libraries …
Typical Object-Oriented Development Process Architecture design Choice of impl. strategy Object design Analyzing requirement Object model Reqmnts Design Analysis Coding Dynamic model Coding in OO language ・・・ Analysis models
Multiple Analysis Models • Description of a single model from multiple views which are almost independent • Eight Models + One Language in UML division company section Object Model for classes in the world and their relationship e1/e2, u=f(v) s2 s1 employee main x sub1 z Dynamic Model for behavior description of each object sub3 y sub2 Functional Model for data flow in the world
UML • Notations to describe every aspects of software development • From business systems to industrial embedded systems • Becoming a standard notation • Unified notations in Booch method, OMT method(Rumbaugh), OOSE method (Jacobson) • Becoming a standard language or culture of software engineer
UML- Eight Diagrams and One Language • Use Case Diagram • Class Diagram/Object Diagram • State Diagram • Sequence Diagram • Collaboration Diagram • Activity Diagram • Component Diagram • Deployment Diagram • OCL(Object Constraint Language)
Use Case Diagram • Use Cases describe a rough sketch of functions or “usage” of the system looked from the actors outside the system. • System functions are described by a set of use cases.
Use Case Diagram Use cases : specifies functions of system Actor : human, machine,… interacting with the system Sign an insurance policy Process sales statistics Process customer statistics Customer Insurance Salesperson Insurance System
Description of Use Case • By sentences or activity diagrams • Purpose of use case • How the use case is initiated • Message flow between actors and use case • Alternative flow • conditional/exceptional flow • do not go into too much details • Utilizing of other use cases : use case call • How the use case is terminated
Activity chart used to describe actors and the use cases if they are well-defined. Insert coins Enough coins inserted? Show that drink can be chosen Show that drink is not available Choose drink drink not available Drink customer drink available Deliver drink
In OO development, use cases are used to find objects. Functions represented by the use cases are realized as collaborations among the objects. <<realizes>> collaboration use case U <<implements>> use case description 1.the actor depresses an button 2.action 1 is executed 3.a message is sent to the actor 4. … class B op1 op2 class C op1 op2 op3 class A op1 op2 op3 dicover classes
Class Diagrams • Classes in the system + Relations • Relations among classes • Inheritance • Aggregation • Association • Dependency • Realization
Class and Object Employee Employee Employee name:String name=‘Smith’ name=‘Sharp’ age=24 age=52 age:Integer Class Employee Objects instantiated from the class Employee
Association and Multiplicity 0..* 2..* Line name Point name Intersect Line L1 Point P1 Line L2 Point P1 L2 Line L3 P1 P2 L3 Line L4 L1 L4 L5 Line L5
Inheritance Equipment name manufacturer weight cost Attributes and operations are inherited from super classes Heat exchanger Pump Tank suction pressure discharge pressure flow rate surface area tube diameter …. volume pressure Diaphragm pump name=P101 manufacture=Simplex … suct pressure=1.1 atm … diaph material=Teflon Diaphragm pump Plunger pump Floating roof tank diameter height diaphragm material
Aggregation Computer 1..* System box Monitor Mouse Keyboard 1..* 0..1 Fan CPU RAM Chassis
Dependency • Utilize class A in class B • B has A as a parameter • B accesses data in A • B uses operations A • Change of A affects B class A class B
Realization • Class B is a realization of A • B is more concrete • A is more abstract • R: mapping B A R class A class B
Interface and Realization • Interface is a special class with abstract operation. It is used with classes which realize/implement them. <<interface>> ChoiceBlock setDefault(choice:Choice) getChoice():Choice PopupMenu setDefault(choice:String) getChoice():String 1..* choice 1..* choice realization <<interface>> Choice String specifier implementation
Dynamical Views • State Diagram/Statechart • Specify dynamics of individual object • Sequence Diagram • Event sequence observed in collaborating objects • Collaboration Diagram • Different notation of sequence diagram • Activity Diagram • Action + Control structure • Flowchart
Telephone System Event Caller Phone line Callee caller-lifts-receiver dial-tone-begins dial(5) dial(1) callee-hangs-up connection-broken connectin-broken caller-hangs-up
State Diagram for “Phone line” caller-hangs-up Idle caller-lifts-receiver time-out Time-out Dial tone dial(n) dial(n) time-out Dialing callee-hangs-up Disconnected Connected
Generalized State push R Transmission Neutral Reverse push N push N push F Forward stop upshift upshift First Second Third downshift downshift
Aggregation and Concurrent State Diagram Car Ignition Transmission Brake Accelerator Accelerator push R Transmission Neutral Reverse On push N push N push F release depress Forward upshift upshift 停止 Off First Second Third downshift downshift Brake Off turn key to start if Transmission in Neutral Ignition … … Off Starting On release key On turn key off
Sequence Diagram Print(file) :Computer :PrinterServer :Printer :Queue Print(file) [printer free] Print(file) [printer busy] Store(file) ・Shows possible sequence(s) of messages among objects ・Inter-object behavior
Collaboration Diagram Computer Queue 1:Print(file) [printer busy] 1.2: Store(file) PrinterServer Printer [printer Free] 1.1: Print(file)
Activity Diagram • Shows relationship among actions • Intra-object actions • Inter-object actions CustomerWindow: PrintAllCustomers Show MessageBoxe “Printing” onScreen Create postscript file Remove MessageBox Send postscript file to printer
Component Diagram • Software components(source, binary and executable) and their relationship Window Handler (whnd.cpp) Window Handler (whnd.obj) Graphics lib (graphics.dll) Comm Handler (comhnd.cpp) Comm Handler (comhnd.obj) Client Program (client.exe) Main Class (main.cpp) Main Class (main.obj)
Deployment Diagram • Machines, programs and connections MachineA :Gateway MachineB :Fujitsu NetC Client Program (client.exe) Graphics lib (graphics.dll)
Topics in OO Methodologies • Object Constraint Language OCL • Formal Approach to OO Analysis
Constraints and OCL • Constraints • Description of systems and services using their properties • Usually, constraints are described by the results of the services rather than the procedure to realize them. What rather than How. “Any letter posted until 6:00 pm has to be delivered in the next working day”
Constraints in UML • Constraints on attribute values in class diagram • Definition of operations in classes by pre/post-conditions • Benefit of constraints • Provide means to attach semantic information to UML class diagrams • Allow declarative definition of behavior • OCL : standard constraint language in UML • Based on first order predicate logic
“Royal Loyal” Company • Mileage Handling company • LoyaltyProgram • Bonus point • Air flight mileage • Deduction • ProgramParner: a company offering its customer a membership in a loyalty program • Customer owns CustomerCard
Customer name:String title:String isMale:Boolean dateOfBirth:Date age:Integer LoyaltyProgram enroll(c:Customer) 0..* 0..* 1..* program partners 1..* ProgramPartner numberOfCustomers:Integer owner 0..* Membership 0..* cards 1..* {ordered} CustomerCard valid:Boolean validFrom:Date goodThru:Date color:enum{silver,gold} printedName:String ServiceLevel actual Level 0..1 delivered Services card LoyaltyAccount points:Integer earn(i:Integer) burn(i:Integer) isEmpty():Boolean 0..* Service condition:Boolean pointsEarned:Integer pointsBurned:Integer description:String card 0..* available Services transactions 0..* Transaction points:Integer date:Date program():LoyaltyProgram 0..* 0..* transactions transactions Date $now:Date isBefore(t:Date):Boolean isAfter(t:Date):Boolean =(t:Bate):Boolean Burning Earning
Customer name:String title:String isMale:Boolean dateOfBirth:Date age:Integer Customer age>=18 LoyaltyProgram enroll(c:Customer) 0..* 0..* 1..* program partners 1..* ProgramPartner numberOfCustomers:Integer owner 0..* Membership 0..* cards 1..* {ordered} CustomerCard validFrom.isBefore(goodThru) CustomerCard valid:Boolean validFrom:Date goodThru:Date color:enum{silver,gold} printedName:String ServiceLevel actual Level 0..1 delivered Services card LoyaltyAccount points:Integer earn(i:Integer) burn(i:Integer) isEmpty():Boolean 0..* Service condition:Boolean pointsEarned:Integer pointsBurned:Integer description:String card 0..* available Services transactions 0..* Transaction points:Integer date:Date program():LoyaltyProgram 0..* 0..* transactions transactions Date $now:Date isBefore(t:Date):Boolean isAfter(t:Date):Boolean =(t:Date):Boolean Burning Earning
Customer name:String title:String isMale:Boolean dateOfBirth:Date age:Integer LoyaltyProgram enroll(c:Customer) 0..* 0..* 1..* program partners 1..* ProgramPartner numberOfCustomers:Integer owner 0..* Membership 0..* cards 1..* {ordered} CustomerCard valid:Boolean validFrom:Date goodThru:Date color:enum{silver,gold} printedName:String ServiceLevel actual Level 0..1 delivered Services card LoyaltyAccount points:Integer earn(i:Integer) burn(i:Integer) isEmpty():Boolean 0..* Service condition:Boolean pointsEarned:Integer pointsBurned:Integer description:String card 0..* available Services printName in CustomerCard is the concatenation of name and title of Cutomer which holds it. CustomerCard printedName=customer.title.concat(customer.name) transactions 0..* Transaction points:Integer date:Date program():LoyaltyProgram 0..* 0..* transactions transactions Date $now:Date isBefore(t:Date):Boolean isAfter(t:Date):Boolean =(t:Bate):Boolean Burning Earning
Customer name:String title:String isMale:Boolean dateOfBirth:Date age():Integer LoyaltyProgram enroll(c:Customer) 0..* 0..* 1..* program partners 1..* ProgramPartner numberOfCustomers:Integer owner 0..* Membership Program partner wants to restrict total points is less than 10000 points. LoyaltyProgram partners.deliveredServices.transaction ->select(oclType=Burning) ->collect(points)->sum<10000 0..* cards 1..* {ordered} CustomerCard valid:Boolean validFrom:Date goodThru:Date color:enum{silver,gold} printedName:String ServiceLevel actual Level 0..1 delivered Services card LoyaltyAccount points:Integer earn(i:Integer) burn(i:Integer) isEmpty():Boolean 0..* Service condition:Boolean pointsEarned:Integer pointsBurned:Integer description:String card 0..* availble Services transactions 0..* Transaction points:Integer date:Date program():LoyaltyProgram 0..* 0..* transactions transactions Date $now:Date isBefore(t:Date):Boolean isAfter(t:Date):Boolean =(t:Bate):Boolean Burning Earning
Defining operations by Pre-, Postcondition • precondition:specifies condition when the operation could be triggered. • postcondition: specifies condition which holds after the operation. precondition P postcondition
Customer name:String title:String isMale:Boolean dateOfBirth:Date age():Integer LoyaltyProgram enroll(c:Customer) 0..* 0..* 1..* program partners 1..* LoyaltyAccount::isEmpty() pre : -- none post : result = (points=0) ProgramPartner numberOfCustomers:Integer owner 0..* Membership 0..* cards 1..* {ordered} CustomerCard valid:Boolean validFrom:Date goodThru:Date color:enum{silver,gold} printedName:String ServiceLevel actual Level 0..1 delivered Services card LoyaltyAccount points:Integer earn(i:Integer) burn(i:Integer) isEmpty():Boolean 0..* Service condition:Boolean pointsEarned:Integer pointsBurned:Integer description:String card 0..* availble Services transactions 0..* Transaction points:Integer date:Date program():LoyaltyProgram 0..* 0..* transactions transactions Date $now:Date isBefore(t:Date):Boolean isAfter(t:Date):Boolean =(t:Bate):Boolean Burning Earning