Introduction i

1 Key Concepts and their Modeling 1

1.1 Object 1

1.2 Class 2

1.2.1 Behavior Incremental Specification 3

1.3 Mathematical Modeling of the Subtyping Relationship 5

1.3.1 Ideals Subtyping Modeling 5

1.3.2 A behavioral approach of subtyping - The model proposed by America 6

1.3.3 Changing arguments' type in method redefinitions 8

1.4 Conclusions 8

2 Object-Oriented Programming Languages. Evolutions, Comparisons and Examples 9

2.1 Object-Oriented Language classification 9

2.2 An OOL comparison from the kind of abstractions point of view 10

2.2.1 Function abstraction or procedural abstraction 10

2.2.2 Data abstraction 10

2.2.3 Type abstraction 10

2.2.4 Differences in function abstraction 10

2.2.5 Differences in data abstraction 11

2.2.6 Differences in type abstraction 11

2.3 Other criteria that can be taken into consideration in the OOLs comparison 11

2.3.1 Object accessing 11

2.3.2 Language uniformity 12

2.3.3 Type checking 12

2.3.4 Polymorphism 13

2.3.5 Parameterized types 13

2.3.6 Memory management 13

2.4 Conclusions 13

 

3 Formal object specification 15

3.1 The Object Model, a fruitful framework for using Formal Specifications 15

3.2 Algebraic specification languages 17

3.3 mFOOPS specification 18

3.3.1 Basic notions 18

3.3.2 Module import relation 20

3.3.3 The inheritance relation 20

3.3.4 Variable declarations 21

3.3.5 Operation signature 21

3.3.6 The redefining rule 22

3.3.7 Term types 23

3.3.8 Axiom checking 24

3.4 The m FOOPS class library 25

3.4.1 The need for and the role of class libraries 25

.5 Conclusions 26

 

4 Object-Oriented Analysis and Design Methods 27

4.1 General aspects 27

4.1.1 Why were they necessary ? 27

4.1.2 Objectives of analysis, design and ... implementation methods 27

4.1.3 The problem of terminology 27

4.1.4 A broader definition 27

4.1.5 Recurrency, the separation between analysis, design, .. implementation and testing 28

4.1.6 Method Classifying Criteria 29

4.2 Object Constraint Language 29

4.2.1 UML concept classification by functionality 30

4.2.2 The Foundation Package 30

4.2.3 Conclusions 34

4.3 Models, views and diagrams 34

4.4 Activities done for constructing and implementing models 35

4.5 Design patterns 36

4.6 Open problems in the modeling domain 36

4.6.1 Attributes and association 36

4.6.2 Implementation solutions 37

4.7 Conclusions 37

 

5 CASE tools for object-oriented analysis and design 39

5.1 General presentation 39

5.1.1 Classification criteria for object-oriented CASE tools 39

5.2 ROCASE's position relative to the classification criteria 40

5.3 ROCASE Architecture 40

5.4 Analysis and design of the ROCASE repository metamodel 42

5.4.1 Type Architecture in ROCASE 43

5.4.2 Architecture of module diagram entities 44

5.5 Performing semantic checking in the CASE tools 45

5.5 1 ROCASE approach -general presentation 45

5.5.2 Checks performed when adding entities to the model 46

5.5.3 Checks performed when deleting entities from the system - through the graphical editor 50

5.5.4 Checks performed when deleting entities through dialog boxes 51

5.5.5 Checks performed when modifying entities 52

5.5.6 Checks performed in object diagrams 53

5.5.7 Checks performed for the state diagrams 53

5.5.8 Conclusions 55

5.6 The OCL analyzer 56

5.7 Code generation in ROCASE 56

5.7.1 Code generation possibilities 57

5.7.2 The relationship model - generated code 57

5.8 Examples of using the ROCASE to design and implement applications 58

5.9 Conclusions 60

6 Conclusions 61

7 References 64