<<

Index

* 1180 722, 733, 734, 792, 862, 907, 1100, ACE Consortium 79 + 189, 1180 1101, 1176, 1193 Ace file 198, 200, 201, 393, 1146 := 448 advanced topics 148–159 Ace, see Ace file, Lace < 189 and abstract machines 792 Acrobat, see under Adobe and analysis 907 <= 1177, 1178 action 848 and assertions 373–377 ?= 593 and classes 142–147, 373–377 ACTIONABLE 1040 @ 327, 328, 882 and information hiding 144–145 activate (Simula) 1124 – 189 applications beyond software 147– active data structure 774–796 –> 588, 1186 148 internal view 786–792 'Class (Ada 95) 1094 complete example specification active object 957–960 139 incompatible with inheritance consistency 155 A 959–960 formal description 129–141 active process 1123 genericity 131–132, 318 ActiveX 8, 67, 955 a posteriori scheme for handling goals 122–129 actors model 1033 abnormal cases 800–801 specifying axioms 135–137 a priori scheme for handling abnormal specifying the functions 132–135 actual generic parameter, see actual cases 798–800 specifying types 130–131 under parameter obstacles 799–800 abstracted module, see under module actual reclamation 302 Abbott, Russell J. 744 abstracting 860, 930 actual, see under argument, parameter ABCL/1 999, 1034 abstraction Ada 46, 53, 56, 61, 84, 89, 90, 99, 100, abnormal case 411–438, 797–801, elevating the 861 176, 209, 211, 225, 265, 269, 270, 1089–1091 for GUI (Graphical User Interface) 285, 315, 392, 410, 415–416, 443, a posteriori scheme 800–801 1068–1071 447, 507, 510, 564, 587, 588, 616, a priori scheme 798–800 how to find 716, 876, 892, 897, 980, 1104, 1106, abnormal case style for exceptions see also finding under class 1108, 1130, 1137, 1161, 1167–1188 1091 how to find abstractions 699–704, adding classes 1098 Abrial, Jean-Raymond xi, 100, 160, 754 by default, means 1983 version of the language; see also Ada 95 330 in methodology rules 669 varieties of class abstraction 860 concurrency mechanism 980 absolute negative rule 667 versus precision 905–906 context and history 1079–1080 absolute positive rule 666–667 versus specialization 858–859 410, 415–416, abstract abstraction function 230, 375, 756 438, 1088–1091 data type, see access control 1047 exception rule 1090 machine 792 access, see uniform access genericity 587–588 object, see under object towards an object-oriented version accessor function 135 , see under 1096 accommodate 625, 629 precondition Ada 95 443, 564, 566, 1080, 1092– side effect 757 accommodation 625, 629 1096, 1097, 1131, 1137, 1161 state 756–758 ACCOUNT 329, 1046 assessment 1094–1095 syntax tree 115, 1038 Ada 95 1093 example 1092–1094 abstract (Ada 95) 1093 account, see bank account object-oriented mechanisms 1092– abstract data type 18, 121–162, 166, Accounts (Ada 95) 1093 1094 171, 172, 173, 174, 216, 229, 231, ACCOUNT1 491, 513 add 762 318, 338, 352, 373–377, 399, 500, ACCOUNT2 491, 492, 513 add_vertex 627, 633 1226 INDEX address 1039 tasks 903–904 polymorphic 637 ADJ group 160 traditional analysis methods 906 ideal number of arguments for a Adobe xiv TV station programming example feature 764–770 Acrobat 108 907–913 in out (in non-O-O approaches) Acrobat Reader xiv analytical modeling 1122 765 adopt 311 ancestor 464, 500, 1193 passing 444–446 adopting an object 311 anchor 601–602 see also attachment polymorphic 637 ADT, abbreviation for “abstract data artificial 1179–1187 see also operand, option type”; see under that term. anchor 1179, 1181 anchor (construct not retained) 631 term used for routines (see also Advanced Curriculum principle 936 parameter) 322 anchor-equivalent 603, 631 advertizer 912 to a command, see under command advisory rule 667–668, 823 anchored declaration 598–604, 618, to a once routine 651 after 755, 782 629, 630–633, 1177, 1178 type redefinition 621–641 Agammemnon 269 a static mechanism 604 Ariane 4 410 and covariance 630–633 aggregation 258, 907 and once functions 652–653 Ariane 5 389, 410 Agha, Gul 1033, 1034 rules 603 Aristotle 843, 864, 866 Aho, Alfred V. 20, 100, 745 when not to use 603–604 ARITHMETIC 180 airline reservation system 676 Anchoring approach to the covariance Arnold, Ken 222, 939, 1137, 1139 airplane 521–522 issue 630–633, 639, 642 array 87, 325–328, 372–373, 470–472 AIRPLANE 521, 831 and 454 as object 325–326 Algol 49, 64, 211, 396, 447, 876, 897, between assertion clauses 337 properties 326 1080, 1102, 1107, 1114, 1126, 1138 and then 454, 570, 578 slice 383 without further qualification, Andromaque 671 static (Fortran, Pascal) 45 means Algol 60; see also the next animals, distinguishing from plants two-dimensional 330 two entries 841 ARRAY 325, 330, 348, 372, 441, Algol W 64, 353, 455 anomaly, see under inheritance 470, 530, 540, 583, 584, 844, 882, Algol 68 61, 211 anorexia 314 1165, 1188 alias 440 ANSI (American National Standards array_down 123 aliasing 265–270, 277 Institute) 1079, 1097, 1102, 1107, ARRAY_TABLE 504 in software and elsewhere 268–269 1131 array_up 123 semantics 266–267 ANSWER 688, 694 ARRAYED 846 all-or-nothing garbage collection 306– antonomasia 269 ARRAYED_LIST 1165 307 ANY 580–582, 590, 592, 976, 1044, ARRAYED_QUEUE 1188 Alpha 1152 1187 ARRAYED_STACK 530, 539, 540, Alphard 99, 1079 APL 754, 876 837, 844, 845, 846 AltaVista 78, 1060 applet 956 ARRAYED_TABLE 831 Amako, Katsuya 922 application 1064 ARRAY2 330 America, Pierre 642, 1034 as a class 690–693, 1076 arsonist 201–202 AMPHIBIOUS_VEHICLE 522 APPLICATION 688, 689, 690, 690– artificial anchor, see artificial under analysis 217, 271, 506, 725, 732–733, 692, 694, 734 anchor 903–922, 936, 941, 1162, 1198 application builder 1065, 1066, 1072, ASCII 847, 850, 851 and the software process 906 1073, 1075, 1076 assembly 197, 198 as negotiation 906 application developer 1064, 1066, automatic process 200, 1146 class 732–733 1067, 1068, 1070, 1071, 1072, 1073, contribution of object technology assembly language 1099 1076 907 assertion 23, 334, 337–410, 569–580, describing business rules 913 applicative 145, 159, 351–353 617, 779–780, 899, 907, 917, 930, domain analysis 947 ArchiText 715 1193 goals 903–906 argument 444–446, 651, 764–770 and abstract data types 373–377 methods 917–919 actual 89, 184, 261, 444–446 and analysis 907, 917 requirements on an analysis method definition 444 and encapsulation 779–780 and process 904–905 formal 261, 444–446, 637 and generalization 930 role in education 936, 941 definition 444 and inheritance 569–580 INDEX 1227

and redeclaration 481–482, 570– constant 203, 644–645, 884–885 Bauhin, Caspar 864 580 default value, see under BBC (British Broadcasting expressive power 399–403 initialization Corporation) 315 for documentation 389–392 exporting 205–208 BCPL 1106, 1111 for writing correct software 389 in relational 1048 be versus have 812–814 in , C++ etc. 334 no precondition 579 see also is-a relation instruction 378–380 once? 660 Beck, Kent 740 monitoring at run time 392–399 redefined from function 491–492, not a control structure 346–347 579 Beethoven, Ludwig van 1141, 1143 not for input checking 345–346 versus function 204 before 782 style rules 899 Austin Mini 811 behavior class 72, 503–504, 688, 772, using a comment 399 AUTHORS 1048, 1049 850, 961, 1002, 1004, 1010, 1021, using in practice 389–398 automatic update 31 1029, 1030, 1031, 1193 Assertion Argument rule 997 available 184, 191, 447 Bell Labs, see AT&T Bell Laboratories Assertion Evaluation rule 402 available 299, 316 bells and whistles 12 Assertion Redeclaration rule 573, 578, AVL trees 72 580 Ben-Ari, Mordechai 1033, 1034 Avotins, Jon 1160 Assertion Violation rule 346 Bench 1148–1149 axioms of an abstract data type 135– asset 521–522 137 Berkeley, see California Museum of ASSET 521 Paleontology assignment 448 B Bert, Didier xi, 100, 330 see also attachment Bertino, Elisa 1061 assignment attempt 29, 478, 591–595, B-tree 82 Beta 1137, 1139 617, 1068, 1134, 1193 B.O.N., see Business Object Notation Bezault, Éric 674, 1160 rationale 591–592 Bachelard, Gaston 672–673 BI_LINKABLE 597, 624, 625, 797, semantic specification 593–594 back 782, 790 1165, 1166 using properly 594–595 Backslash 645, 653 bibliography 1203–1224 associated_state 692 Bielak, Richard 277, 807, 1034, 1061 association 907 Backus, John 1102 BAG 857 Big Bang 194–196 Association Dijonnaise des Big Green Button 695 Tapeventres 161 Baillon, Henri 843 Biggerstaff, Ted J. 99 Association of Simula Users 732 balance 369, 1046 binary distribution 79 asynchronous call 966, 1193 balance_enquiry 980 binary search 380–381 AT&T Bell Laboratories 12, 328, 802, Balter, R. 1034 binary search tree 85, 92, 1188 1106, 1132, 1135 Bancilhon, François 1061 binary tree 1188 Atkinson, Colin 1034 bandwidth 48 BINARY_FILE 1174 Atkinson, M. 1061 bank account 56, 364, 368, 369, 472, BINARY_SEARCH_TREE 1188 attachment 242–244, 261–265, 280, 491, 492, 513, 1046, 1047 444 BANK_ACCOUNT 364, 368, 370 BINARY_TREE 97, 604, 1007, 1188 and equality 264–265 baritone 1143 BINARY_TREE1 1008 copy attachment 262–263 base class, see under class binding definition 262 Base libraries 351, 357, 456, 543, 555, dynamic 29, 63, 85, 480–482, 570– 577, 1071, 1174, 1175, 1195 hybrid 263–264, 412, 445 710, 796, 802, 1146, 1149, 1150, and assertions 570–580 polymorphic 467–470 1152, 1157, 1165–1166 and efficiency 507–515 reference attachment 262–263 Basic 1099, 1106 source 262 and interactive applications Basic Construct of object-oriented target 262 1071 computation 183, 611–612 attempt, see assignment attempt implementation 482 basic triangle of computation 101– attribute 173–176, 1193 overhead 509 103, 964 adding or removing attributes to in C++ 1133 classes of persistent objects basic type, see basic under type static 509–515, 1202 1045–1046 basic_store 1038 as optimization 509–515, 1147 and 579 batch version of a system 108–109 static and dynamic binding in C++ client privileges 206–208 Baudoin, Claude 35, 934, 937 513–515 1228 INDEX

versus typing 619–621 browser 1153 Obfuscated 876 BIRD 627, 841, 843 browsing 32, 1156–1159 object-oriented extensions 1131– Birtwistle, Graham M. 35, 1138 Bruce, Kim B. 629, 642 1137, 1138 block (Simula) 1123 Bruno, John 1034 structure type 1109 block structure 49–50, 281, 282 bubble 1150 C++ 35, 46, 56, 100, 208, 209, 211, 239, 278, 294, 295, 305, 306, 310, blocking (in short forms) 996 Budde, Reinhardt 642 334, 443, 444, 513–515, 548, 566, blocking object 996 buffer 990–992, 1021–1022 585, 616, 620, 628, 668, 670, 742, Bobrow, Daniel G. 1139 BUFFER 980, 981 876, 1050, 1056, 1057, 1099, 1106, body BUFFER_ACCESS 1021 1107, 1132–1135, 1136, 1144, 1161, of class in Simula 1118 BUFFER_MANAGER (Ada) 1091 1167 Boehm, Barry W. 19, 20, 878 Buffon, Georges-Louis Leclerc, and memory management 294, boldface 900 Comte de 843, 865 295, 305, 306, 310 boldface italics 900 bug 18, 409 and novariance 628 BON, see Business Object Notation Build graphical application builder assessment 1135 Booch, Grady 744, 918, 922, 1097, 1076, 1149, 1150, 1160 binding policy 513–515 1135 bulimia 314 complexity 1134–1135 book 221–222, 277 Bull 1079 concurrency 1033 Obfuscated 876 Bookman font 901 Burstall, Rod M. 160 wrapping legacy C++ code 1144 BOOKS 1048, 1049 Business Card principle 990, 1020, CABIN_BUTTON 1017 BOOK1 221 1031, 1035, 1036 cache or recently accessed objects BOOK2 223 business card scheme 974, 975, 984, 1056 BOOK3 226 989, 990, 993, 996, 1002, 1011 CAD-CAM (computer-aided Business Object Notation 271, 464, BOOLEAN 171, 220, 644, 1172 and manufacturing of 517, 914, 919–922, 930, 1150 BOOLEAN_MATRICES (Ada) 1180 products) 1051, 1054 business rule 913 BOOLEAN_MATRIX 1179 calculator 522 for a TV station 913 BOOLEAN_RING 1179 California Museum of Paleontology BUTLER 1005 BOOLEAN_RING_ELEMENT 1180 (Berkeley) 864, 865, 868 button 533, 1071, 1074 booting procedure 197 call 24, 183–184, 447–448 BUTTON 511, 1017 Borges, Jorge-Luis 18, 672 asynchronous 966, 1193 Borland 211, 515, 1130, 1143 buttonhole 533–534 calling object-oriented mechanisms Borland Pascal 1101, 1131, 1137 Buxton, John M. 99 from C and other languages 1144 boundary cases 353 bytecode 956, 1136, 1145, 1147, 1149 chain 418 bounded queue, see bounded under dual semantics under concurrency queue C 966 external 311, 439–444 BOUNDED_ARITY_TREE 604 C 49, 56, 61, 89, 176, 211, 225, 230, and garbage collection 311 BOUNDED_BUFFER 967, 968, 265, 266, 269, 270, 278, 282, 285, function 453 986, 992, 993, 994, 996, 1022, 1031 306, 315, 327, 328, 333, 334, 386, optimizing 208–209 BOUNDED_LIST 710 439, 441, 442, 443, 447, 507, 509, qualified 186–187, 447 BOUNDED_QUEUE 992, 994, 510, 670, 714, 716, 737, 742, 753, separate 967 1031 758, 876, 877, 891, 956, 1056, 1065, synchronous 966, 1202 BOUNDED_STACK 576 1067, 1106–1111, 1130, 1131–1137, target 184 Boussard, Jean-Claude 948 1144, 1146, 1161 unqualified 186–187, 447 Bouy, Reynald 1160 and exceptions 414–415 callback 440, 505 BOX 857 and memory management 295 Campbell, Roy H. 1033 Box symbol (Ada) 1083 calling object-oriented mechanisms can-act-as-a relation 497 BOY 623, 634 from C 1144 Cancel button 1074 compilation 1146 Brachman, Ronald J. 517 Cannon, H. I. 1139 efficiency 510 Brandon, .H. 878 emulating object technology Canonical Reduction rule 158 Breu, Ruth and Michael 863 1106–1111, 1112 Capability Maturity Model 55 Bright, Walter 515, 670 history 1106–1107 capacity 710, 882 Britannicus 1135 need for comments 891 CAR 810 INDEX 1229 car metaphor for software 672 Changing Availability or Type 638 general heuristics 731–740 CAR_OWNER 810, 845, 863 CHARACTER 171, 220, 565, 644 the general method 741–743 Cardelli, Luca 629, 641, 642 characteristic function 139 through reuse 740–741 Carnegie-Mellon University 1079 cheating clients 572 flat form, see flat form Caromel, Denis 987, 1033 check 378–380 generating, see generator generic 320–325, 1197 Carriero, Nicholas 1033 check instruction 378–380, 452 how big? 770–774 Carroll, Martin 328 Check_instruction 432 implementation 733–734 cartesian product 133, 134, 149, 150, checking input values 345–346 deferred 734 160, 1052 Chen, Peter P.S. 120 indexing clause 78 cartesian_ready 760 Cheshire Cat 733 interface 747–808, 1197 Case analysis and design workbench choice 686 documenting 804 711, 805, 1150 choose_initial 691 recommended style 752–754 Case instruction 449 CHORUS 1034 , see CASE tools 271 CII-Honeywell Bull 1079 is a new class necessary? 721–723 missing important classes 723–724 case, see letter case CIRCLE 329, 467, 483, 826, 838, modeling external objects 732–733 858, 886 Cassandra 671 name cast 306, 618, 620, 628, 668, 670, CIRCULAR_LIST 710 as class descriptor 1043 1133 CITY 497, 729 naming 879 Castagna, Giuseppe 629, 642 cladistics 865, 866–868 nesting, see nesting casual approach, see under memory cladogram 867 no-command 729–730 management Clark, David 939 obsolete 802–803 CAT (Changing Availability or Type) clash, see name clash parameterized, same as generic 638 class 23, 165–216, 1194 passive 776–779 catalog of graphical abstractions 1066 abstract, same as deferred reason for rejecting classes 726– abstracting 860 731 catcall 636–638 rejecting inadequate classes 725 definition 638 abstraction 860 analysis 732–733 role 169–170 Catcall approach to the covariance root, see root class issue 639, 642 as module and type 170, 185 avoiding useless classes 720–721 set 196 Catcall type rule 637, 639 simple example 172–177 base class, see under type single routine 728 categories of object orientation criteria basic conventions 177–181 size 770–774 22 behavior, see behavior class definition 771 Cattell, R.G. 1061 categories 731–732 CCS (Communicating Concurrent consistency 771–773 flat 771 Systems) 1033 correctness, see correctness of a immediate 771 CD-ROM accompanying this book class incremental 771 viii, xiv, 1043, 1076, 1165 deferred 30, 142, 143–144, 165, small 714–715 specification 1201 Cecil 1144 482–494, 500–506, 518, 686–688, 1174–1188, 1195 the ideal class 730–731 CELL 526, 604, 607 definition 486 universal 580–582 Cépage 715 role 143–144, 500–506 validity, see class validity Ceres 269 definition 142 versioning 1054 Ceyx 1131, 1139 descriptor, see class descriptor versus record 150–151 CGI script 1152 design 734–735 versus type 324–325 wrapper, see wrapper chain do not confuse with object 165– class descriptor call chain, see chain under call 169, 216 for C implementation of object- CHAIN 567 does not “perform” something 726–727 oriented concepts 1110–1111 challenger 999, 1000, 1027, 1031 effective 142, 143, 165, 1195 for schema evolution in persistent Chambers, Craig 215, 1139 definition 486 object structures 1043 change in 81– expanded 256 Class Elicitation principle 725 82 factoring 860 class invariant 118, 146, 363–410, change or redo dilemma 59 finding 117 413, 465, 570, 579, 647, 784, 785, change, rule of 814–816 finding the classes 719–746, 754 952, 982–983, 999, 1022–1024, 1194 1230 INDEX

and creation procedures 371 in the Business Object Notation 1131 and Design by Contract 368–369 920 communication 977, 979–980 and generalization 930 subcluster 923 comp.object Usenet newsgroup 35, and inheritance 465, 570 cluster (Lace) 198, 199 674 and manifest constants 647 Cluster Model of the software lifecycle comp.risks, see Risks forum and reference semantics 403–406 926–928 compaction 313 implementation invariant 376– Coad, Peter 167, 917, 922 377, 409, 532, 756 COMPANY 913 Coad-Yourdon method 917 role in software engineering 367 COMPANY_PLANE 521 Cobol 165, 442, 737, 742, 876, 1099, violations 409 COMPARABLE 523, 590, 727, 831, 1107 when it must be preserved, when 832, 1176, 1177, 1178, 1183, 1185, COBOL 1079 not 366–367 1186 Class Tool 1153, 1154, 1156, 1159 Codd, E.F. 1048, 1061 comparing objects, see equality under Cohen, Bernard 945, 948 class validity 627 object Cohen, Jacques 316 Class-ADT Consistency 375 comparing references 244 class-valid 627, 636 cohesion 64 compatibility 8, 16, 115, 443–444 Class_invariant 432 collect_now 308, 314 compatible 913 class_name 433 COLLECTION 857 compilation technology 1144–1148 classes préparatoires 941 collection, see garbage collection challenges 1144–1145 classification collection_off 308, 312, 314 see also assembly premature 728–729 collection_on 308 speed 31, 618 classification, see taxonomy Collins, Allen G. 868 Compilist 897 classwide operation (Ada 95) 1094 color, use in software texts 901, 1152 complementary formalisms 920 CLEAR 330 column completeness Clemenceau, Georges 932 in relational databases 1048 of a garbage collector 305 clickable, clickability 1158–1159 comb-like structure 892, 894 of a specification 153–159 client 51, 118, 119, 175, 182–183, command 135, 699–718, 748, 987, persistence, see closure under 785–786, 907, 1194 1073 persistence and analysis 907 arguments 707–708 sufficient 156–159 being honest with clients 573 as a class 699–700 COMPLEX 647, 760, 858, 1186 cheating clients 572 button 751 definition 182 composite 529, 716 complex number 408, 518 dynamic 572 creating a command object 703– component manufacturer 297 independence 861 704 component, see reusable software privileges on an attribute 206–208 executing 707 component versus inheritance 812–817 remembering 702–703 component-level approach to memory client-server 953, 968, 1039, 1056, COMMAND 71, 699, 714, 721, 724, management 297–301 1149, 1151, 1152 731, 734 composability 42–43, 48, 50, 54 clone 245, 247, 274, 275, 276, 303, command-query separation 748–764, composite 582, 584, 880, 976 1029 command, see under command defined in terms of copy 247 Command-Query Separation principle figure, see under figure cloning, see under object 751, 759 object, see under object CLOS 1131, 1139 COMMAND_INSTANCE 709 COMPOSITE_COMMAND 716 close 1174, 1175 comment 890–891 COMPOSITE_FIGURE 528, 1071 CLOSED_ FIGURE 483 as assertion 399 Compostela 152 closure header, see header comment compromise in the software process for modules, why needed 57 non-header 890–891 906 see also persistence closure, system COMMERCIAL 911, 913 closure commercial for a TV station 911–912 computation clouds and precipice 905–906 COMMON (Fortran) 48, 656, 736, ingredients 101–103 CLU 46, 90, 99, 100, 806, 1081 742, 1102–1104 computational reflection 1130 cluster 24, 210, 920, 923–924, 925, garbage 48, 736 ComputerWorld 14, 1136 926–928, 1194 common block, see COMMON computing time 1123 CLU 1081 (Fortran) concrete state 756–758 INDEX 1231 concurrency 102, 951–1036, 1056– of analysis models using different control structure style for exceptions 1057, 1059–1060, 1091–1092, 1118– views 920 1091 1121 static-dynamic types 475 CONTROLLER (Simula) 1120 and inheritance 959–960, 1121– Const_value 650 convenience inheritance 824 1122 constant 452–453, 643–660, 884–886, convenience, see marriage of examples 1003–1022 1081 convenience in Ada 980, 1098 attribute, see constant under Cook, William R. 642 in object-oriented databases 1056– attribute 1057 coordinates in GUI (Graphical User how to use 645–646, 884–886 intra-application 954 Interface) systems 1070 initialization 656–657 library mechanisms 972–973, copy 1027, 1030 manifest 452–453, 646–647, 885 attachment, see under attachment multi-layer 970 and class types 646–647 copy 247, 274, 275, 276, 582, 583, proof rule 1022–1024 of a basic type 643–645 584 semantic specification 1026–1027 of a class type 646–648 copying, see under object of string type 653–654, 657 summary of mechanism 951–952, CORBA 8, 955, 970 symbolic, see constant under 1025–1027 CORBA 2 955 summary of the mechanism 1025– attribute coroutine 1012–1014, 1030, 1036, 1027 where to put declarations 886 1118–1126, 1139, 1140 syntax specification 1025 constant inheritance, see under facility example 1119–1121 validity constraints 997, 1025– inheritance Simula 1118–1126, 1139, 1140 1026 Constantine, Larry 120 validity rules 973–976 COROUTINE 1013 constrained genericity, see under CONCURRENCY 998, 1000, 1001, COROUTINE_CONTROLLER genericity 1019, 1027, 1030 1014 constructor (C++) 1133 Concurrency Control File 971–972 correct 681, 682, 686 concurrent 1194 constructor function (abstract data correct ADT expression 154 accesses to an object 982–983, type) 135 correct_mismatch 1044, 1045, 1046 1031 consumer, see under reuse; see also correction, see under persistence precondition paradox 995, 1036 client correctness 4–5, 16, 52, 331, 332, see also concurrency, concurrent CONTAINER 857 369–373, 389, 427–430 engineering container data structure 471, 472, 496, a relative notion 333–334 concurrent engineering 924–925 587, 1194 and exceptions 427–430 conditional correctness, conditional content-based search tool 1060 conditional 4–5, 52, 401 proof, see conditional under context (in graphical systems) 1072– of a class 369–373 correctness 1076 partial 337 total 337 conditional critical region, see Context-Event-Command-State conditional under critical region versus efficiency 394–398 model of interactive graphical correctness formula 334–335, 369 conditional instruction 448–449 applications 1073–1076, 1150 Correctness property 333 configuration management 66, 1042 continuity 44–45, 47, 48, 50, 51, 54, see also versioning under class, 56, 65, 103 cosmetics 875–879 object Così fan tutte 1000 contour model of programming CONFIRMATION 692 languages 315 count 777, 882 Conflicting Assignments To Actual COUNTABLE_SEQUENCE 755 contract 341–342, 1194 446 see also Design by Contract coupling 64 conformance 469, 474, 591, 598, 616, weak 48 CONTRACT_EMPLOYEE 853 1194 covariance 621–642, 1194 contracting 919 conforms_to 582, 640 Anchoring approach 630–633, conjugate 600 in BON 919 639, 642 CONS (Lisp) 282 see also Design by Contract Catcall approach 636–638, 639, consistency contravariance 624, 625, 626, 628, 642 in naming features and classes 1194 Global approach 633–636, 639 883–884 control (for graphical applications) Cox, Brad J. 34, 80, 100, 119, 672, of a library 69 1066, 1067 715, 1112, 1131, 1138 of an abstract data type 155 control structure 346–347 CPU 965, 1014 1232 INDEX

CRC cards 740 D dead object, see unreachable under creation 231–236, 236–239, 279–316, object 518, 752 Dahl, Ole-Johan 35, 745, 1114, 1138 deadlock 989–990, 1004, 1031, 1035 and inheritance 465–467, 479– Daigakuin 941 debug 452 480, 518 Dami, Laurent 642 debug instruction 452 and overloading 239 Darwin, Charles 843, 860, 865, 866 debugging 392–398, 1153–1159 by a function 752 Data Division (Cobol) 737, 742 decentralization 7, 498, 643 call 236–239 data sharing 50 declaration instruction 232–239, 448 data structure, see active data structure, anchored, see anchored declaration effect 233, 237 container data structure, polymorphic syntax 203 multiple creation procedures 236– data structure decomposability 40–41, 47, 48, 50, 54 239 decomposition patterns 316 data transmission 684 functional 103–114, 197 polymorphic 479–480 32, 1047–1062, 1198 object-based 114–115 three modes 280–291 engine 1053 deduction versus induction 859–860 why explicit 235–236 locking 1047, 1054, 1055, 1057, deep operations, see cloning under Creation Inheritance rule 466 1061 avoiding locks in Matisse 1056 object creation procedure 196, 236–239, 371, in Versant 1057 deep_clone 248, 276 430, 647 optimistic, see optimistic lock- deep_equal 248, 276 and class invariants 371 ing and exceptions 430 deep_import 976, 977, 1035 using a parent’s creation procedure long transaction, see long under default values, see under initialization 539–540 transaction default_rescue 430, 1044 object-oriented 1037, 1050–1062, creativity 878–879 defect 347 1152 343–345, creator 135 advanced concepts 1058–1060 1195 Cristian, Flaviu 438 an oxymoron? 1058–1060 deferred 484, 486 criteria of object orientation 21–36 engine 1053 Deferred Class No-Instantation rule critical region 978, 979, 980, 984, 990 examples of object-oriented da- 487 conditional 978, 990 tabase management systems deferred class, see under class 953 1055–1057 deferred feature, see under feature CSP (Communicating Sequential fundamental concepts 1050– Processes) 979, 980, 1033, 1091– 1055 define (C) 266 1092 threshold model 1053 definitions (full list) 1189 cuckoo 859 query 1049, 1055, 1057 Dekleva, Sasha M. 20 Cunningham, Ward 740 in object-oriented database man- Delphi 211, 515, 1130, 1143 Current 181, 446, 452, 453, 602 agement systems 1055 delta (in the Business Object Notation) 920 role 185–186 in Versant 1057 demand 1000 Current as anchor 602 relational 1037, 1048–1053 definition 1048 demanding style for current demo 927 limitations 1051–1053 354–357 current instance, see under instance operations 1048–1049 DeMarco, Tom 120 Curry, Gael A. 99 used with object-oriented soft- Demeter 269 currying 215, 1076 ware 1050–1053, 1152 Law, see Law of Demeter cursor 461, 462, 488, 489, 490, 504, when not applicable 1051–1053 Department of Defense, see US 752, 754, 755, 756, 759, 774–796 transaction, see transaction Department of Defense custom_independent_store 1040 using unstructured information in dependency analysis for compilation customer, is always wrong 336, 343, lieu of databases 1060 1146 347, 353, 393, 428, 572 DATABASE 968 dependent 250, 1146 Cuvier, Georges 864, 865 DATE 910 direct 250 Cybele 269 Date, Chris J. 1048, 1061 deposits_list 364, 368, 1046 cycles, first and second (France) 941 De Cindio, Fiorella 948 Deramat, Frédéric 1160 cyclic structures under reference De Moel, Joost 1160 DeRemer, Franklin D. 20 counting 303–304 dead code removal 1147 derivation, see generic derivation INDEX 1233

Dernbach, Frédéric 1160 Dioscorides of Anazarbus 864 typed 1157 Descartes, René 37, 43, 673 direct instance, see under instance DRAGOON 1034 descendant 464, 1195 direct manipulation 1063 DRIVER 544, 545 descendant hiding 626–627, 835–843 direct mapping 47, 54, 931 Drix, Philippe 869 and subtype inheritance 835–843 directory 199 duality between actions and objects avoiding 838–839 DIRECTORY 1174 102, 146 using 839–840, 843 dirty read 1056 Dubois, Paul F. xi, 642, 715, 718, 765, why needed 837 disciplinary approach 1100, 1101, 1034, 1112, 1160 describing objects and their relations 1108 duel 999–1000, 1031 118 discipline and creativity 878–879 Dufour, Sylvain 1160 design 150, 506, 725, 734–735, 936, Disciplined Exception Handling Duke, Roger 160 941, 1162, 1198 principle 417, 419, 427 Duncan, Thomas 868 class 734–735 Discrimination principle 655 DURATION 910 reusability 70–71 DISK 1173, 1175 dynamic 1195 role in education 936, 941 DISPATCHER 1018 aliasing, see aliasing Design by Contract 127, 146, 331– allocation, see memory 410, 411, 419, 435, 569–580, 617, dispenser 127 display 594, 681, 682, 686, 688, management 756, 805, 907, 919, 941, 952, 981, binding, see dynamic under binding 1071 994, 1022, 1028, 1029, 1090, 1195 client 572 and analysis 907, 919 display (for a button) 555 IP address 1043 and concurrency 952, 981, 994, display (for composite figures) 529 link library, see DLL 1028, 1029 DISPLAY_ITERATOR 529 typing, see dynamic under typing and inheritance 569–580 dispose 310, 314, 316 Dynamic Binding principle 511 and invariants 368–369 disposing of objects when garbage- DYNAMIC_LIBRARY 440 in the Business Object Notation collected 310 DYNAMIC_ROUTINE 440 919 distribution formats for reusable middleman 575 software components 79–80 E role in education 941 subcontracting 576 distribution of knowledge 63 design patterns 71–72, 100, 529, 675– Dittrich, Klaus 1061 E_CLASS 169 718, 735, 745, 759–764, 817, 855, divide 762 ease of use 11–12, 15, 16 871–874, 991, 1068 DLL (Dynamic Link Library) 440 eating car 522 destructor (C++) 310 do_if 849 EATING_CAR 522 detach (Simula) 988, 1119 documentation 14–15, 18, 32, 54–55, Eco, Umberto viii, 163 detachment 283–284 803–805 economic analogy for object-oriented and generalization 930 detection, see under memory concepts 127 external 14 management, persistence economics of software procurement interface 14 76 developer 933 internal 14 economy 14, 15, 16 developer exception, see under see also self-documentation ECOOP concurrency workshops 1034 exception system-level 805 developer_exception_code 434 Documentation principle 804 editor 724, 1066, 1074–1075 for graphical abstractions 1066 developer_exception_context 435 DoD, see US Department of Defense education, see teaching object developer_exception_name 434 dogmatism in assessing object technology development object 1153–1159 orientation 21–22 effecting 485, 1195 domain 138, 377, 580 DEVICE 602, 1173, 1174, 1184 effective domain analysis 947 diagonal 499, 591 class, see effective under class diagram, see transition diagram Don’t mode me in 1075 effective feature, see under feature Diderot, Denis 121, 148 DOOR 720 efficiency 9–11, 15, 16, 19, 68, 208– Dijkstra, Edsger Wybe xi, 72, 122, DOTTED_SEGMENT 829 209, 307, 327, 394–398, 482, 507– 160, 316, 347, 407, 664, 665, 667, DOUBLE 171, 220, 522 515, 548, 616, 773, 1043, 1146, 678, 750, 835, 1003, 1033, 1135, downcasting 1134 1147–1148 1138 drag-and-drop 1156 and dynamic binding 507–515 dining philosophers 1003–1006, 1033 see also pick-and-throw and genericity 327 1234 INDEX

and inheritance 507–515 ENGINEER 815, 816, 853 schema evolution, see under and static typing 616 engineering persistence of garbage collection 307 see forward engineering, see also change in software of repeated inheritance 548 rearchitecturing, reverse development, extendibility of the compilation process 1144– engineering evolutionary taxonomist 866–868 1146 engineering schools (France) 941 exception 25, 241, 411–438, 801, 999, of the environment’s generated ENQUIRY_ON_FLIGHTS 688 1088–1091, 1134, 1196 code 1144 ensure 112, 338 abnormal case style 1091 versus correctness 394–398 ensure then 578 advanced exception handling 431– egoful design 878 435 enter 802 egoless expression 878 as object 436–437 egoless programming 878 entity 1196 basic concepts 411–414 default value, see under Eiffel 1162 causes 413–414 initialization comparison of mechanisms 1089– Einstein, Albert 672 operations on generic entities 323– electronic collocation 925 1091 324 control structure style 1091 elevator 720 polymorphic 469, 488 definition 412 ELEVATOR 720, 1016 precise definition 213 developer 434–435, 1088–1089 elevator system (concurrency entity-relationship 120, 737, 742 examples 422–427 example) 1014–1019, 1036 enumerated type handling 414–422, 1088–1089 Eliëns, Anton 34 Ada 1175 history table 420–422 Élinck, Philippe 642 Pascal 660 in Ada 415–416, 438, 1088–1091 ELKS 1150 enumerated type, see unique value in C-Unix 414–415 ELLIPSE 483, 527, 826, 838 ENVIR 650 queries 431–433 Ellis Island 538 environment for developing object- raising 434–435, 1088–1089 recovering 423–424 Ellis, Margaret 328, 668, 1138 oriented software 1143–1160 ÉPÉE 1034 role 801 Elmasri, Ramez 1061 sources 412–413 epilogue 1161–1162 else 179, 448, 450 taxonomy exception, see exception elseif 449 equal 246, 247, 248, 265, 274, 275, under taxonomy 276, 582, 584 embedded SQL 1049 exception (Ada) 415 equality, see under object; see also EMPLOYEE 853 exception handler 1089 comparison under reference empty 777, 883 exception to methodology rule 668– EQUIVALENCE (Fortran) 266 empty structures 353 669 error 347 emu 859 EXCEPTION_CONSTANTS 431 precise terminology 347–348 emulation 1099–1112 EXCEPTIONS 431, 998, 1000, 1001 esprit de l’escalier 932 Encapsulate Repetition 984 execute (for APPLICATION) 691 Euclid’s 877 encapsulation 53, 779–780, 1053, execute (for COMMAND) 699 European Agency 410, 1080 1195 execute (for STATE) 687 evaluating candidate decompositions and assertions 779–780 execute_interruptibly 1001, 1002 736 and databases 1053 execute_session 680, 688 see also: information hiding; the event execute_state 681, 682 next three entries. in interactive system 1071–1076 encapsulation language 53, 1079– handling 1072–1076 execution engine 1147 1098, 1099, 1106 EVENT 1071 execution of a system 195, 234 encapsulation level of object-oriented event list 1123, 1124 remote 1147 support 1099 event notice 1123, 1124 exists (in the Business Object encapsulation of non-object-oriented event-driven computation 1071–1076, Notation) 920 software 441–443 1196 expanded 254 end user 109, 1064, 1065, 1071, 1074, EVENT_NOTICE 1140 expanded client 259 1075 Everham, Edwin McKay III 842, 859, Expanded Client rule 259 ending_time 909, 910 863 expanded, see under class, type engine evolution Explicit Interfaces, see under interface execution 1147 in biology 859, 865, 866, 867, 868 explicitness 876–877 for object-oriented database 1053 of the language 1144 export INDEX 1235

see information hiding classification 173–175 in relational databases 1048 selective, see selective export clause 191–192, 889 simple 220–221 to the class itself 193–194 header comment 889 figure 1068–1070 unrestricted 191 multiple clauses 191–192, 889 composite 527–529 export 582, 605 deferred 30, 482–494, 686–688, FIGURE 329, 472, 480, 482, 483, exported feature, see exported under 1174, 1195 505, 528, 591, 658, 858, 1071, 1093 feature effective 1195 file 88, 737–738, 742, 1036, 1139, express message 999 exported 1196 1150 expression 452–456 see also public FILE 310, 645, 1174 with operators 453–454 feature history, displayed in the FILE_TABLE 831 environment 1158 extend 882 filter module 345 final name 549 extendibility 6–7, 15, 16, 115, 441, frozen 583–585 final 689 644, 735, 768, 905, 1066, 1196 when to use 585 final name 549 and symbolic constants 644 how many arguments? 764–770 finalization in analysis 905 how to recognize various kinds of objects (garbage collection), see in graphical applications 1066 177–178 disposing of objects, under extendible 883 identifier 189 garbage collection extension and specialization 499–500 immediate 464, 771 optimized form of compilation extension inheritance 826–827 infix 189, 327–328, 586 1148 definition 826 inherited 464 Finalize 1154 external 373, 440, 1144 joining 552–553 finding the classes and objects, see external call, external software, see naming 127–128, 879–884 finding under class external under call obsolete 802–803 finding the top 107–108 external class 458 of a package 90 finish 782 operator 187–191 external object, see under object Finkelstein, Sheldon 1061 precursor 493 external routine, see external under call prefix 189 Firesmith, Donald 34, 919 extract (potential feature) 610 renaming 535–540, 834, 1196 fitted 640 and redeclaration 538 FIXED_STACK 503 F discussion 563–564 Fixing What is Broken 671 effects 537 fixpoint 635 facility inheritance 532–533, 832– replication 544–548 flat form 541–543, 579 833, 847–851 secret 192–193 uses 542–543 constant 850 selection under repeated flat size 771 definition 832 inheritance 553–555 flat-short form 543, 803, 1147 forms 850 specification 1201 flattening, see flat form machine 850 undefining 551–553 Flavors 1131, 1139 factor, see under quality universal 276, 582 factoring 85–88, 860, 930 using the original version of a FLIGHT_DATABASE 1059 factoring out common behaviors redefined feature 493–494, 555– flight_details 1059 85–88 561 flights 1059 failure 411–412, 1090, 1196 feature 177, 210 FLOOR 745 definition 412 Feature Call principle 186 FLOOR_BUTTON 1018 Failure principle 420 Feature Call rule 473, 591, 592, 594, flow of information, see data False 220, 452 613, 634 transmission false alarm 417, 1196 Feature Tool 1153, 1155, 1156, 1158 Floyd, Robert W. 407 family, see under module Feldman, Jerome A. 1034 fly 627, 841, 843 fault 347 Feldman, Michael B. 1097 focus_line 838, 839 424–425 Feldman, Stuart I. 65 font, use in software texts 900–901 Faust 604 Few Interfaces, see under interface forall (in the Business Object feasibility study 904, 926 Feynman, Richard 672 Notation) 920 feature 24, 90, 143, 172–216 field 219, 220–221, 228, 1156, 1196 force 882 call 24, 183–184 displaying in an object-oriented foresight 629 effect 184 environment 1156 FORK 1005 1236 INDEX form (Alphard) 99 function 89, 105–106, 174, 203, 447, efficiency 307 formal generic parameter, see formal 1196 parallel 308–309 under parameter and evolution 108–109 practical issues 309–311 5, 52, 129–162, call 453 requirements 305–306 role 304 1022–1024, 1034 categories 134–135 creating an object 752 sound 305 formal text for requirements 914 domain 580 timely 305 formal texts as a basis for natural- finite 1076 garbage common block 48, 736 language requirements 916–917 in an assertion 400–403 Gates, William Henry 1136 formal, see under argument, parameter more than one 105–106 Gelernter, David 1033 formating of software texts, see layout of a system 105–106 Gemstone 1055 of an abstract data type 132–135 formats for storing objects 1038–1039 GENERAL 201, 580–582, 583, 584, once, see once function, once forth 755, 782, 789 976, 1044 routine forth1 (not retained) 788 partial, see partial function general relativity 194 Fortran 12, 45, 211, 266, 327, 439, redefined into attribute 491–492, general-purpose facilities 180–181 441, 446, 510, 714, 736, 742, 876, 579 GENERAL_ACCOUNT 606 947, 1081, 1102–1106, 1111, 1161 result 179–180, 210–213 GENERAL_BOUNDARY_VALUE_ efficiency 510 achieving the effect of multiple PROBLEM 766 emulating object technology results 446, 758 GENERAL_PHILOSOPHER 1004, 1102–1106 rationale for the convention 1005 Fortran II 1102 210–213 GENERAL_WINDOW 817, 818, Fortran IV 1102 see also partial function, total 819 Fortran 77 657, 1104, 1106 function generalist 933 Fortran 90 1102 side effect, see side effect generalization 926, 928–930, 1196 Fortran 95 1102 total, see total function generated code efficiency 1144 history 1102 transition, see transition function generating class, same as generator Waterloo 947 versus attribute 204 forward engineering 1150 versus object 146 generation scavenging 308, 313, 316 generator 219, 582, 1196 fragile input 422–423 functional 89, 103–114, 197, 678– generator 582 FrameMaker 108, 391, 696, 1159 684, 714, 1100 generic (Ada) 1085, 1169 framework 72 functional level of object-oriented support 1099 generic derivation 96, 321, 322, 324, France 325, 586–587, 1197 university curriculum 941 functional variation inheritance, see functional under variation inheritance constrained 586–587 Franceschi, Fabrice 316, 1160 functionality 12–13, 15, 16 generic parameter, see actual and Franklin, Benjamin 673 Fusion method 918 formal under parameter free 978 Futatsugi, Kokichi 160 genericity 26, 84, 96–98, 317–330, free memory management 280–287 585–590, 617, 628–629, 877, 1084– 1085, 1128, 1167–1188, 1197 Free On-Line Dictionary of G Computing 750 and efficiency 327–328 Freeze 1154 and inheritance 470–472, 585– G_swap 1168 590, 1167–1188 freezing 1145, 1146, 1148 Gakubu 941 and once functions 652, 660 freezing a feature, see frozen under Gamma, Erich 71, 100, 735, 745 and repeated inheritance 561–562 feature Gannon, John D. 897, 901 as a solution to the covariance issue FRENCH_DRIVER 544, 546 garbage collection 30, 304–314, 332, 628–629 FRENCH_US_DRIVER 545, 546 1133, 1196 combining with inheritance 470– fresh 298, 299 a practical environment 312–314 472, 585–590, 1184–1187 friend (C++) 1133 advanced approaches 308–309 constrained 27–28, 329, 330, 585– 590, 617, 1170–1188, 1194 from 451 algorithm 313 all-or-nothing 306–307 emulating 1176–1181 frozen 583 and external calls 311 how to achieve in the presence frozen elements of a system 1145 basis 306–307 of inheritance 1185–1187 frozen feature, see under feature complete 305 non-object-oriented equivalents full 883 disposing of objects 310 587–588 INDEX 1237

used recursively 590 grammatical categories 742 hardware-software machine 11, 95, cost 328 grand mistake (in identifying classes) 352 emulating with inheritance 1176– 726 has 82, 86, 94, 883 1183 graphical abstractions 1068–1071 HASHABLE 590 for abstract data types 131–132, graphical classes and operations 1071 hashing function 587 318 graphical conventions 271, 464, 487, Hauptstudium 941 in Ada 1084–1085 537, 921–922, 1150 in C 1112 have versus be 812–814 in the Business Object Notation unconstrained 590, 1168–1188, Hawksworth, D.L. 868 921–922, 1150 1202 header comment 178, 886–891 as special case of constrained graphical form for requirements 914 header file (C) 1108 590, 1187 graphical user interface, see GUI heir 118, 462, 1197 emulating 1181–1183 graphics 33, 1063–1076 Helena of Troy 269 how to achieve in the presence Great Encyclopedia 148 Heliotis, James 948 of inheritance 1184–1187 Gries, David xi, 407, 986 HELP 692 Geoffroy Saint-Hilaire, Étienne 865 Grundstudium 941 help facilities 15 Germany GUE electronic mailing list 869 Henderson-Sellers, Brian 34, 65, 408, university curriculum 941 GUI (Graphical User Interface) 818, 919, 922, 934, 948 Geschke, C.M. 64 1063–1076, 1150 Hennig, Willi 866, 868 interaction mechanisms 1071– Gessner, Conrad 864 Hercules 129 1076 get_and_remove 987 mathematical model 1076 Hewitt, Carl 1033 get_integer 423 needed tools 1064–1066 Hewlett-Packard 1152 getint (C) 753 portability and platform adaptation hidden (Simula) 1115 Ghezzi, Carlo 20, 1034 1066–1068 hidden clause in contracts 994 Gil, Yossi 863 principal abstractions 1068–1071 hide 1071 Gindre, Cyrille 934 GUIDE 1034 hiding, see information hiding Giraudoux, Jean 671 Guidec, Frédéric 1034 high school education 941 GIRL 623, 631, 634 Gulliver’s Travels 672 HIN syndrome 75 GIRL_ROOM 625 Guralnick, Robert 868 history 704 Girod, Xavier 823, 863 Gurvets, Joseph 674 history list 704–715 GKS graphical standard 1064, 1112 Guttag, John V. 160, 408 representation 710–711 Global approach to the covariance Gymnasium 941 history of a feature 1158 issue 634, 639 history of taxonomy 864–867 global object, global value, global H HISTORY_LIST 734 variable, see shared under object HISTORY_LOG 724 global type analysis 633–636 hacking, see organized hacking Hoare, C.A.R. xi, 19, 64, 72, 160, 335, go 782, 790, 1070 Hadamard, Jacques 672, 725 375, 395, 396, 407, 408, 449, 979, Go To Statement Considered Harmful Halbert, Daniel C. 746 1023, 1033, 1138 (Dijkstra) 664–665 handle 817–820, 855 Hocking, Geoff 811 go_before 789 handling hold (construct not retained) 978, Goethe, Johan Wolfgang von 843 an event (e.g. in interactive 984 graphics), see handling under Goguen, Joseph A. 99, 160, 408 holder 999, 1000, 1009, 1027 event hole 533, 1156, 1159 Goldberg, Adele 35, 119, 824, 937, an exception, see handling under 1075, 1126, 1138 exception hole, see also programs with holes Gore, Jacob 35, 497, 745, 948 an object (in concurrent Hollywood 953 Gosling, James 1139 computation) 965–966 honesty 573 goto instruction (in traditional handshake 958 Hopkins, Trevor 1138 approaches) 277, 519, 664, 677– Hansen, Wilfred J. 12 Horning, Jim J. 160, 897 678, 835 Harbison, Samuel P. 1139 Horowitz, Ellis 99 Gouraud, Henri 72 hardware parallelism 1007–1009 HOUSE 522 graduate courses 941 hardware support for object HOUSTON 729 Graham, Ian 271, 919 technology 309 HP 9000 1152 1238 INDEX

HTML 108, 1159 definition 832 Ingres 820, 1152 HTML (HyperText Markup implementation invariant, see under inherit 462 Language) 391, 818 class invariant inheritance 26–30, 63, 119, 184, 459– Hugo, Victor 802 implementation variation 84, 122–125 874, 877, 1097, 1167–1188, 1197 Hullot, Jean-Marie 1139 implicitness 137, 149–150 adaptation 735 humility in implies 454, 456 and analysis 907 673–674 import 210 and assertions 569–580 and class invariants 465, 570 Huxley, Julian 866 see also the next entry and deep_ and concurrency 959–960, 1028– Hybrid 987, 1034 import 1029, 1121–1122 importing an object structure 976–977 hybrid language 294, 443–444, 616 and configuration management 66 Hydra 129 IMS 505 and creation 465–467, 479–480, HYDROPLANE 522 in out argument (in non-O-O 518 approaches) 765, 1169 and decentralization 498 I in-line expansion, see inlining and efficiency 507–515 in_schedule 910 and genericity 470–472, 585–590, IBM 505, 1152 include (C) 1108 1167–1188 and information hiding 605–609 IBM 704 12, 1102 include file, should not be needed in and selective exports 609 Ichbiah, Jean D. xi, 1079–1080, 1095, object technology 1146 anomaly 980, 981, 1028, 1034, 1096 Incorrect_inspect_value 432 1035 identifier 457 incremental size 771 basic conventions and terminology identifier feature, see identifier under incrementality 464–465 feature of a garbage collector 307 clause 462 identity, see under object of the recompilation process 1145 combining with genericity 470– IDL (Interface Definition Language) indentation 894–895 472, 585–590, 1184–1187 955 independent_store 1038, 1040, 1151 constant, see constant under facility inheritance idle process 1123 index 1225 convenience 824 IEEE Computer Society 408 index 909 dealing with multiple inheritance if 448 index word 78 criteria 851–858 IFL (Intermediate Functional indexing 78, 177, 178 efficiency consequences 482 Language) 401, 402 indexing clause 78, 178–179, 890 emulating with genericity 1175 Illustra 1055 Indirect Invariant Effect 405–406 extension, see extension inheritance image processing 1051 induction versus deduction 859–860 immediate facility, see facility inheritance industrial training, see under teaching feature, see immediate under functional variation, see variation object technology feature inheritance size 771 infix 189 global inheritance structure 580– immigrant 1045, 1046 infix feature, see infix under feature 582 impedance mismatch 931, 933, 1050, INFOMERCIAL 911 graphical conventions 464, 487 how not to use 809–812, 823–824 1060, 1061 information unstructured 1060 how to design inheritance imperative 145–146, 351–353 structures 858–861 information hiding 25, 51–53, 55, 65, name 727–728 implementation, see 144–145, 191–194, 205–208, 605– implementation 607–609, 713, 844– implementation inheritance 609, 796, 804, 805, 1081–1087, 1197 846, 931–933, 934, 936, 1162, 1198 machine, see machine under facility class 733–734 and abstract data types 144–145 inheritance helps analysis 713 and inheritance 605–609 mathematical model 828 partial 503–504 and preconditions 357–359 meaning and usage 494–500, 809– rehabilitated 608, 713, 931–933, descendant hiding, see descendant 870 934 hiding summary 862 role in education 936 in Ada 1081–1087 methodology of applying 809–870 role in the software process 713 not a security measure 52 summary 862 implementation 1179 Informix 1055 model, see model inheritance implementation inheritance 832–833, Ingalls, Daniel H. H. 1126, 1138 module and type views 494–497, 844–846 ingredients of computation 101–103 1095–1096 INDEX 1239

multiple 26–27, 519–568, 617, Simula 1116 inverse 799 1198 inspector 746 invert 574, 579, 800 examples 519–534 instance 166, 167, 168, 475, 1197 IP address 1043 what not to use as introductory and mold 167–169 is-a relation 497, 811, 812, 813, 816, example 520–521 current 181–182, 453, 1194 817, 824, 825, 844, 845 one mechanism or more? 833–835, direct 219, 475, 1195 Is-a rule of inheritance 811 1095–1096 variable (Smalltalk) 1197 is-a-kind-of relation 497 parallel hierarchies 625 instruction 447–452 redundant 549 is_assertion_violation 432 int_minimum (Ada) 1171 reification, see reification is_concurrency_interrupt 1000 inheritance int_swap 1169 is_developer_exception 435 relation between classes, not INTBINTREE 90, 91 is_developer_exception_of_name objects 814 INTEGER 171, 220, 319, 497, 522, 435 repeated 27, 543–563, 834, 1128 644, 745, 831, 1172, 1178 is_equal 274, 275, 584 and efficiency 548 INTEGER_COMPARABLE 1178, is_signal 432 and genericity 561–562 1185, 1186 is_system_exception 432 unobtrusive 548–549 INTEGER_QUEUABLE 1183, 1184 ISE (Interactive Software Engineering restriction, see restriction INTEGER_STACK 318 Inc.) xi inheritance INTEGER_swap 1168 single 26, 851, 1201 ISO certification 55 INTEGER_TABLE_HANDLING 90 software, see software inheritance italics 900 structure, see structure inheritance INTEGRABLE_FUNCTION 715, Itasca 1055 subtype, see subtype inheritance 718 item 755, 777, 791, 882, 1178, 1179, taxonomy of inheritance forms integration 927 1180 822–835 integrity 14, 15 iterative development 713 deferred and effective classes integrity constrained iterator 529, 567, 848–850, 1197 833 see also class invariant ITERATOR 849 type variation, see variation integrity constraint 1047 inheritance interaction mechanism, see under user uneffecting, see uneffecting J interface inheritance versus client 812–817 interactive systems 675–718 Jackson, Michael 114, 120, 858 view, see view inheritance interactive version of a system 108– Jacobson, Ivar 738, 740 Inheritance rule 822 109 Jaeschke, Rex 1134 Inheritance Simplicity rule 823 intercontinental driver 544 Jakobson, Roman 867, 933 inherited feature, see inherited under interface 51, 109–110 Jalloul, Ghinwa 1033 feature builder, see:Build;application Japan builder inheriting general-purpose facilities university curriculum 941 Explicit Interfaces 50, 65 180–181 Java 46, 56, 100, 208, 209, 211, 239, Few Interfaces 47–48, 65 initial 689 392, 443, 548, 566, 595, 616, 670, Small Interfaces 48–50, 65 initialization 233, 236–237, 656–657 956, 957, 970, 1099, 1106, 1136– interface, see also under: class; user default values 233 1137, 1139, 1147, 1153, 1159, 1161, overriding 236–237 interfacing with external software, see 1162 of global constants and shared external under call bytecode 956, 1136, 1147 objects 656–657 internal free list 302 chip 1137 inlining 510, 1147 Internet 78, 925, 951, 953, 954, 955, virtual machine 956, 1136, 1147 Inmos 1033 956, 969, 1015, 1032, 1136, 1147 Workshop (Sun) 1153, 1159 inner (Simula) 959, 1121–1122 interpretation 618 Jazayeri, Mehdi 20 input 457 Intranet 78, 1147 JEIDA (Japan Electronic Industry checking 345–346, 422–423 introductory courses, see under Development Association), http:// fragile 422–423 teaching object technology www.jeida.or.jp 80 input 686 invariant 364, 451 Jenkins, Trevor 315 INRIA 1131 Invariant rule 366 Jézéquel, Jean-Marc 35, 948, 1034 insist 1000, 1035 invariant, see class invariant, loop Johnson, Paul 316, 771, 772 inspect 450 invariant Johnston, J.B. 315 1240 INDEX join (in relational databases) 1048, lambda calculus 642 Lientz, Bennet P. 17–18, 20, 125 1051 Lampson, Butler W. 408 lifecycle 85, 103, 923–934 joining features 552–553 language for object-oriented software steps and tasks 926 Jones, Cliff B. xi, 160, 408 construction 1143, 1144 like 601 Jones, John 316 languages limited private (Ada) 1085 Jones, T. Capers 99 non-object-oriented 1099–1112 Linda 970, 1033 Jonker, Dewi 1160 object-oriented 1113–1140 LINE_DELETION 699, 700, 727 Journal of Object-Oriented usable versus useful 613–614 LINE_INSERTION 709 Programming 35 Lano, Kevin 408 linear algebra 573 JOVIAL (Jules’s Own Version of the Larch 160, 400, 408 linear equation solver 799 International Algorithmic Language) launch 988 LINEAR_ITERATOR 849, 850, 851 1080 launch_one 988 Linguistic Modular Units principle Junia 1135 Laurin, Michel 863 53–54, 90, 1101 Jussieu, Antoine-Laurent de 843, 865, Law of Demeter 668, 671, 674 LINKABLE 298, 596, 597, 598, 600, 868 law of inversion 684 602, 604, 624, 776, 796, 1165 JUSTIFIER 850 layout and presentation of software linkable element 596–597 texts 891–901 LINKABLE1 776 K fonts 900–901 linked 123 lazy evaluation 988 linked list 297–301, 596–597, 774– K&R 1107 lazy wait, see wait by necessity 796 Kansas City 976 Le Vourch, Xavier 316, 1033, 1160 LINKED_LIST 297, 460, 466, 567, Kay, Alan 1126 Lea, Rodger 1034 596, 598, 600, 625, 727, 775, 795, Kempe, Magnus 1097 League for Programming Freedom 79, 1165 Kemper, Alfons 1061 80, 100 LINKED_LIST1 777 Kernel library 522–523, 580–582, Leeuw, Guus Jr. 1160 LINKED_QUEUE 1188 592, 1150, 1165 legacy software 441–443 LINKED_STACK 567 Kernighan, Brian 1107 Legacy++ 1144 LINKED_TABLE 831 Kerstholt, John 948 letter case 457, 881 LINKED_TREE 542 Khawam, Patrice 1160 levels paradox 506 Linnaeus, Carolus, see Linné, Carl Khoshafian, Setrag 1061 Lex (Unix tool) 75 Linné, Carl 734, 843, 852, 864, 865, Kim, Won 1061 Lex library 1149, 1151 867 Kindsoul, Jill 670 lexical conventions 457–458 lint 635 kiwi 859 Ley, Michael 1061 Linux 1152 Know the User (Hansen) 12 Lezard, Tony 316 Lisa 1101 knowledge, distribution of 63 library 33, 42, 72, 197, 666, 747, 856, Liskov, Barbara H. xi, 160, 408, 438, Knox, Sandra L. xiv 941, 1065–1071, 1081, 1143, 1150– 806, 1079, 1097 Knuth, Donald Ervin xiv, 100, 409, 1152, 1165–1166 Lisp 65, 265, 269, 282, 315, 564, 988, 745, 807, 808, 1112, 1135 and analysis 907 1126, 1129, 1130–1131 Kraemer, Vincent 1160 consistency of design 69 object-oriented extensions 564, Krakowiak, Sacha 1034 dynamically linked, see DLL 1130–1131, 1138 evolution 33 Krief, Philippe 745 list 1150 for concurrency 1027 circular 567 L for GUI (Graphical User Interface) 1066–1071 see also linked list with cursor 488, 752, 754, 755– L’OBJET 35 indexing 34 role in education 941–946 759 Lace 198, 200, 393, 396 role in methodology 666 LIST 472, 474, 489, 512, 526, 567, Lahire, Philippe 1160 see also Base libraries, Kernel 602, 607, 848, 908, 1071, 1165 laissez-faire policy for the society of library, Lex library, Math library, live 961, 962 modules 127 Net library, Parse library, Vision local 213 Lalanne, Frédéric 1160 library, WEL library lock 1009–1012, 1036 Lalonde, Wilf R. 1138 Lieberherr, Karl J. 668 minimizing 1056 Lamarck, Jean-Baptiste 865 Lieberman, Henry 965 see also locking under database INDEX 1241

LOCKABLE 1009 Mallet, Olivier 1160 compaction 313 LOCKER 1009 Management Information Systems 6 component-level approach 297– locking, see under database manager 57, 59 301 LOCKING_PROCESS 1036 MANAGER 852 detection 293 free mode 280–287 Löhr, Peter 948, 1034 Mandrioli, Dino 20, 1034 manual reclamation 290, 294–296 LONDON 535, 538 Manfredi, Raphaël 316, 1160 reclaiming memory 293–294 London Ambulance Service 292–293, manifest constant, see under constant see also garbage collection, 302, 315–316 map reference counting London, Ralph 1079 as model for graphical abstractions space reclamation 282–283 Long, Darrell D.E. 125 1068–1070 precise nature of task 302 longjmp 414 Marcus, Robert 1138 stack-based mode 280–287 Loomis, Mary E. S. 1061 mark-and-sweep 313 static mode 280–287 loop 451 marriage of convenience 530–532, the problem in object-oriented how to get right 380–388 844, 850 development 290 three modes of object creation proving 383–385 Martin, James 271, 918 280–291 syntax 386–388 Martin-Odell method 918 Mencken, H.L. 608 loop 451 Math library 442–443, 1149, 1152, Menger, Mario 1160 loop invariant 380–388, 413, 1197 1160 Mephistopheles 604 loop variant 380–388, 1197 Matisse 1055, 1056–1057, 1061 Mesa 99, 1081 Loop_invariant 432 MATRICES (Ada) 1172, 1173 message 592, 1127–1128, 1197 Loop_variant 432 MATRIX 171, 522, 573, 1179, 1185, binary 1127 Loops 1131, 1139 1186, 1188 keyword 1127 Matsuoka, Satoshi 956, 1034 LOUISIANA_INSTITUTIONS 834 unary 1127 lowest common denominator approach Maughan, Glenn 1160 message 681, 682, 687 for graphical libraries 1067 max 756 Message not understood (Smalltalk) LPG 100, 330, 1167 maxdiag 593 320 Lukács, Georg 831 Maximum_interval 910 meta-object protocol 1130 Mayr, Ernst 866, 868 metaclass 168–169, 1198 M McCall, James 19, 20 metaphor 671–673, 674, 751 McGregor, John D. 863 on the Net 674 M 330 McIlroy, M. Douglas 67, 99 method machine 751–752 McKim, James C. xi, 215, 277, 408, of object-oriented software abstract 792 642, 807, 948 construction 1143, 1162 machine inheritance, see under facility McMenamin, Stephen M. 120 see also methods under analysis inheritance meaning 432 method (Smalltalk term) 1126, 1198 Macintosh 696, 1101 MEL library 442, 818, 1067, 1149, see feature, routine macro 440 1150 methodologies, see methods under macro 440 Mellor, Steve 918, 922 analysis Maddison, David 863 Melt 1154 methodology 663–948 Madsen, Ole-Lehrmann 1139 melting 1145 abstraction and precision in rules Mail-A-Pet 474, 478 Melting Ice Technology 618, 1145– 669 exception to rules 668–669 main program 1146 limitations 670–671 no such notion in object-oriented melting software elements 1145 development 197–198 of using inheritance 809–870 member_of (in the Business Object summary 862 maintenance 17–19, 43, 68 Notation) 920 and reusability 68 role and principles 663–674 MEMORY 309, 314, 998 role of practice 665–666 Make 802 memory management 30, 279–316 role of reusability 666 Make file, should not be needed in and ease of development 295–296 role of theory 665 object technology 1146 and reliability 294–295 typology of rules 666 make_cartesian 239, 762 automatic 301–314 use of this word in the singular 664 make_philosophers 1006 rationale 301 useful O-O techniques summary make_polar 239 casual approach 290, 291–293 871–874 1242 INDEX methods, see under analysis modularity 16, 39–66, 83–98, 146, multiple inheritance, see multiple metrics for object technology 65–66 643 under inheritance Microsoft 8, 67, 955, 1043, 1130, criteria 40–46 multiple results for a function 446, 1134 principles 53–63 758 Foundation Classes 1134 rules 46–53 multiple views 55, 836, 851–852, Word 108, 696 module 24, 39–66, 83–98, 209–210, 914–917 middle initial 125 494–497, 643, 923, 1198 in analysis 914–917, 920 middleman in contracts 575 abstracted 73, 90 maintaining consistency 915 and inheritance 495–497 8 of software 55 and type 170, 185, 1095–1096 multiple-entry subroutine (Fortran) military-aerospace community 1080 as a syntactic concept 170 1104–1106 millennium problem 18 family 84, 99 Mills, Harlan D. xi, 334, 341 generic 96 953 Milner, Robin 641, 956, 957, 1033 interface, see interface under:class; multiprogramming 954 Mingins, Christine 65, 948, 1160 package multithreading, see thread Mesa term 1081 minimum 1177 Munch, Edvard 81 Modula term 90, 1081 minimum (Ada) 1170, 1171 MUSE 1034 see also cluster MVC model 734, 745 Minimum_duration 910 specification, see interface Minsky, Naftaly 948 under:class; package mirroring 1056 super-module 209–210, 923 N MIS (Management Information traditional module structures 89– Systems) 230 93 N-version programming 426–427 mismatch, see: impedance mismatch; why closed 57 NAG library 443, 1151 mismatch under object why open 57 name module-type identification 185 mismatch_information 1044 adapting to the local context 538– Moffat, David V. 660 missionary 933 539 mold and instance 167–169 see also name clash, naming Mitchell, John G. 1097 Monash University 1160 conventions, style Mitchell, Richard 948 monitoring assertions at run time 392– name clash 535–540 mixed abstractions 730 399 and naming conventions 539 ML 641 Moon, David A. 1139 precise definition and rule 562 MML (FrameMaker) 391, 1159 MooZ 408 naming conventions 127–128, 539, moa 859 Morgan, David 1160 879–884 MOBILE_HOME 522 Morrison, R. 415 and name clashes 539 mode in interactive systems 1075, benefits 883–884 MORTGAGE 839 1153–1159 features 879–884 MOSES method 919 model inheritance 825 for classes 879 Motif 442, 818, 1064, 1065, 1067, general rules 879–880 modeling 228–231 1150 role of expanded types 256–258 grammatical categories 881 MOTIF 818, 819 see also simulation letter case 881 MOTOR 1015 modesty 441 local entities and routine arguments mountain path 905 880 modifier function 135 mouse 1071 standard feature names 882–883 Modula-2 53, 84, 90, 99, 211, 265, narrowing 595 447, 1079, 1081, 1097, 1106, 1137 move 880 NASA 1080 Modula-3 1137, 1139 move_ pixel 1070 move_ proportional 1070 native 933 modular composability, continuity, MS_WINDOWS 818 NATO Science Affairs Committee 99 decomposability, protection, multi-branch instruction 449–451 natural-language requirements 914, understandability multi-launcher 988, 1006 916–917 see under each of these terms multi-panel systems 675–694 deduced from formal text 916–917 Modular Protection principle 345 multimedia 1051 necessity, see wait by necessity modular units, see Linguistic Modular multiple criteria for inheritance 851– needs 196, 198 Units principle 858 needs directly 196 INDEX 1243 negative rule, see absolute negative O manipulating 231–236 rule, advisory rule mirroring 1056 negotiation in analysis 906 O’Brien, Patrick D. 746 mismatch 1041, 1042, 1043, 1044, Nero 864, 1135 Oberon 1137, 1139 1045, 1046, 1060 Obfuscated motto 116 Nerson, Jean-Marc 271, 277, 517, moving 312–313 C 876 715, 772, 919, 922, 1034, 1160 optimized placement on disks 1056 C++ 876 nesting 49–50, 209–210, 524–525, persistent 32, 225, 1037–1062, OBJ-2 160, 330, 400, 408 923, 1070 1199 of windows 524–525, 1070 object 165, 217–278, 1198 see also persistence Net library 1039, 1149, 1151, 1152 abstract 1103, 1193 precomputing 708–709 Neumann, Peter G. 315 active, see active object reachable adopting 311 see also Risks forum definition 290 as a modeling tool 228–231 see also unreachable new (Ada) 1085 as machine 751–752 reclamation, see space reclamation new (Simula) 1115 attaching to a reference, see under memory management NEW_MORTGAGE 840, 843 attachment request broker, see object request automatic duplication 1056 NEW_YORK 535, 536 broker basic form 219–220 Newton, Sir Isaac 864 reserving 983–985, 1027 blocking, see blocking object next 909, 910 root, see root object cache 1056 run-time object structure 227–228 next_in_list 910 cloning 245–246, 247–249, 274– separate 967 NEXTSTEP 1131, 1132 275, 583–584 shared 643–660 Nierstrasz, Oscar 1034 deep 247–249 how to obtain 648–649 shallow 247–249 NIH syndrome 75–76 initialization 656–657 composite 254–261 no hidden clause principle 994 software 219 concurrent access 982–983, 1031 No-Instantiation rule 487 storing and retrieving object conversion 1042 No_more_memory 432 structures 250–253, 1037–1062 copying 247, 274–275, 583–584 formats 1038–1039 nominal detection policy (persistence) created, external 968–969 technology, see object technology 1042 creation and destruction 279–316 non-deterministic wait 979 see also memory management, transient 1202 unreachable 284–290 non-object-oriented languages and garbage collection definition 290 environments 1099–1112 creation, see creation in classical approaches 285– current, see current under instance Non-Redundancy principle 343, 355 287 non-separate 1198 deallocation 294–296 definition 218–219 in object-oriented development non-strict boolean operator, see describing 118 288–290 boolean under operator development, see development user interface 1072 NON_UNDOABLE 717 object versioning 1054, 1056, 1057, NONE 582 do not confuse with class 165–169, 1059, 1061 nonlinear_ode 765 216 in Matisse 1056 NORMAL 1174 emulation, see emulation in Versant 1057 versus function 146 normalized relational database 1048 equality 245–246, 264–265 and attachment 264–265 weaning 311 Norwegian Computing Center 1114 external 218, 219, 732–733 wrapper notation design 278 finding the objects, see finding see object under wrapper notification, see under persistence under class Object Currents 35 noun 720 global, see shared Object Database Management Group, novariance 628, 1198 here for the picking 117, 720, 733 see ODMG standard null record (Ada 95) 1092 identity 225, 1052–1053, 1061, Object Magazine 35 1197, 1198 NUMERIC 171, 522, 523, 589, 610, Object Management Group 955 importing an object structure 976– 831 977 Object Pascal 443, 616, 1101, 1161 numerical phenetics, see phenetics integrity 513, 982–985, 999, 1056 Object Pursuit 720 Nygaard, Kristen 35, 1114, 1137, lifecycle 365 object request broker 955 1138 live 285 object technology 1244 INDEX

and Ada 95 1094–1095 OCX 67 operand 766–770 applied to graphical developments Odell, Jim 271, 918, 919 definition 766 1066 ODMG standard (Object Database distinguishing from option 767 contribution to analysis 907 Management Group) 1055, 1057 Operand principle 767 education, teaching, training, see Ogor, Robert 948 benefiting 769 teaching object technology checklist 770 OK button 1074 emulating in non-object-oriented possible exceptions 769 old 340 environments 1099–1112 107–108, 197, 413 for building search tools 1060 oldest 962 booting procedure 197 hardware support 309 OLE-COM 8, 67, 955, 1043 signal 417 levels of language support 1099– OMG, see Object Management Group operator 1100 OMT 917, 1162 binary 453 list of criteria 21–36 on-the-fly boolean rationale 101–120 garbage collection, see parallel non-strict 454–456, 458 Object Tool 1153, 1155, 1156 under garbage collection expression 453–454 object-based decomposition 114–115 object conversion 1041, 1042 precedence 896 object-oriented 1198 on_item 784 unary 453 analysis, see analysis once 648 operator feature, see operator under computation, basic mechanism feature 611–612 once attribute? 660 , see overloading contrasted with top-down once function 647–650 (see also operator under feature) architecture 684–693 and anchored types 652–653 database, see database and genericity 652, 660 optimistic locking 1055, 1057 design, see design emulating unique values 660 in Matisse 1056 education, teaching, training, see returning result of basic type 650 in Versant 1057 teaching object technology Once Function rule 653 optimization 208–209, 509–511, environment 1143–1160 once procedure 651 1147–1148 languages 1053, 1100, 1113–1140 once routine 647–660, 1036 option 766–770 methodology 663–948 and concurrency 1036 definition 766 methods, see methods under applications 648–653 distinguishing from operand 767 analysis see also once function, once or 454 rearchitecturing 441–443 procedure or else 454, 578 rearchitecturing, see one 522 Oracle 820, 1152, 1055 rearchitecturing Oracle 8 1055 style of computation 181–191 one_command 425 orange 147 teaching plan, see under teaching Ong, C.L. 745 object technology Ontos 1055 order relation 523 object-oriented computation OOIE (Object-Oriented Information ordering constraints 110–112, 202, basic mechanism 183 Engineering) 918 738–740 object-oriented software construction OOPSLA concurrency workshops organized hacking 60–61, 830, 869 definition 116, 147 1034 organized panic 417, 1090, 1198 issues 117–118 OOSE method 918 origin 285 Object-Z 160, 400, 408 OOZE 408 definition 290 reference 286 Objective-C 294, 443, 1099, 1106, open 1174, 1175 original_class_name 433 1107, 1131–1132 OPEN unified method 919 original_recipient_name 433 Objectivity 1055 Open-Closed principle 57–61, 63, 65, original_tag_name 432 ObjectStore 1055 83, 465, 495, 496, 511, 514, 517, 536, ObjEdit library 1149, 1152 577, 583, 592, 607, 633, 735, 768, Orr, Ken T. 120 Objekt Spektrum 35 803, 830, 834, 837, 839, 861, 869, OS, abbreviation for operating system obsolescence, obsolete 959, 1092, 1116, 1174 OS/2 201, 442, 818, 1064, 1150, 1152 see obsolete under class and feature and Ada 95 1092 OSA method 918 obsolete 802 OPEN_FIGURE 483, 527 Osmond curves 13, 20 Occam 980, 1033 openness for modules, why needed 57 Osmond, Roger F. 13, 20 Occam2 1033 openness of an object-oriented ostrich 859 occurrence 777 language 439–444, 1144 OSTRICH 627, 841, 843 INDEX 1245 others (Ada) 415 term used only for genericity (see correction 1042, 1045–1046 output 457 also argument, system parameter) detection 1042, 1042–1043, 1044, over 961 322 1045, 1046, 1060 parent 462, 500, 1199 from the language 1037–1039 overlay 282 Parents’ Invariant rule 570 notification 1042, 1044, 1060 overloading 93–98, 239, 564–566, Parnas, David Lorge xi, 64, 160, 806, schema evolution 1041–1046, 1134, 1199 1113 1060, 1201 and creation 239 naïve approaches 1041–1042 Parse library 1149, 1151 semantic 95–96 Persistence Closure principle 252, parse tree 115 syntactic 93–95 1037, 1038, 1039–1040, 1152 parsing, object-oriented approach overspecification 125, 573 persistent object, see under object 1151 O2 1055 person 277 part of relation 907 PERSON 810 partial correctness 337 P pessimism, pessimistic, see pessimism partial function 138–139, 377, 580 under typing alternatives 151–152 package 90–98, 209–210, 1081, Petri net 979, 981 partial implementation 503–504 1169–1188, 1199 phenetics 866–868 Pascal 45, 49, 56, 61, 64, 165, 176, as abstracted module 90 PHIGS graphical standard 1064 assessment of contribution to 211, 225, 230, 265, 269, 270, 282, PHILOSOPHER 1004 reusability 92–93 285, 286, 315, 327, 346, 386, 439, generic (in Ada) 1084–1085 443, 447, 449, 507, 616, 716, 737, pick-and-throw 1156–1159 implementation (in Ada) 1084 876, 940, 947, 1100–1101, 1106, picking (objects here for the –) 117, in Ada 392, 1081–1096, 1169– 1108, 1130, 1161, 1168 720, 733 1188 emulating object technology Pinson, Lewis J. 1138 in Java 392 1100–1101 pixel 1070 interface (in Ada) 1082–1083 modular extensions 1101 PL/I 46, 269, 270, 442, 898, 1080, not needed thanks to selective object-oriented extensions 1101, 1107 1136, 1137 exports 209–210 PL/360 1111 UCSD 947 package-class 1098 place_ pixel 1070 path expression 979, 980, 1033 pattern 1170 place_ proportional 1070 Pavarotti, Luciano 674 see also cluster plants, distinguishing from animals payroll system 105–106 specification, see interface under 841 Peano, Giuseppe 171 package PLATFORM_WINDOW 817 use in a client (in Ada) 1083–1084 pebble 1156 platitude versus principle 667 Paepcke, Andreas 1139 pedagogy Pliny the Elder 864 Page-Jones, Meilir 34, 119, 120, 730, see under teaching object plug-in 955, 956, 1147 745, 863 technology Poet 1055 painting 198 PEL library 442, 1067, 1150 PENTAGON 467 POINT 166, 172, 173, 175, 176, pan 1070 180, 216, 218, 859 Pérec, Georges 672 panel-driven systems 675–694, 709 POINT_2D 858 panic, see organized panic perfect foresight 629 performance, synonym for efficiency pointers 315 Papathomas, Michael 1033, 1034 (see this term) 9 polar_ready 760 paradox of levels 506 perimeter 461, 834 police chief 336 PARAGRAPH 850 754, 1152 polygon 460–461 parallel garbage collection, see under Perlis, Alan J. 99 POLYGON 460, 465, 466, 474, 475, garbage collection PERMANENT 853 483, 497, 527, 626, 627, 633, 834, parallel inheritance hierarchies 625 1122 persistence 32, 250–253, 1037–1062, Simula 1116 parallelism, see concurrency, hardware 1149, 1199 POLYLINE 483 parallelism closure 32, 252, 1037–1038, 1039– parameter 1040, 1152 polymorphic argument 637 actual 96, 321 when not applicable 1039–1040 polymorphic assignment 469 formal 96, 318 completeness, see closure under polymorphic attachment 467–470 constrained 588–590 persistence polymorphic call 638 1246 INDEX polymorphic catcall, see catcall and export status 357–359 process 956–963, 1123–1126, 1139, polymorphic data structure 329, 470– and inheritance 570–580 1140 472, 512, 585, 593, 692, 1199 in abstract data types 138–139 active 1123 type-specific access 593 tolerant or demanding style 354– idle 1123 polymorphic entity 469, 488, 637 357, 359–363 in discrete-event simulation 1123– polymorphic perversity 625–626 under concurrent execution 993– 1126, 1139, 1140 997 programmed as a class 960–963 polymorphism 28, 63, 467–472, 570– software process, see lifecycle 580, 816–817, 1097, 1174, 1175, Precondition 432 Precondition Availability rule 358 suspended 1123 1199 terminated 1123 precondition checking paradox 397 and assertions 570–580 process 681, 682, 687 limits 474 Precondition Paradox 995, 1036 Process 970 Polymorphism rule 817 precursor 507 PROCESS 961, 962, 963, 1004, polyonymy 269 Precursor 493, 494, 507, 517, 555– 1030, 1036, 1140 POOL 1034 560, 1128, 1140 PROCESS (Simula) 1123–1126, Pooley, Robert J. 1138 precursor of a feature 493 1139, 1140 Popper, Karl R. 812, 867, 868 predicate, see assertion processor 964–1032, 1199 portability 11, 15, 16, 19, 1066–1068, Pree, Wolfgang 71, 100 definition 964 1152 prefix 189 procurement of software 76 of GUI (Graphical User Interface) prefix feature, see prefix under feature PRODUCER (Simula) 1120 tools 1066–1068 premature ordering, see ordering producer, see under reuse; see also positive rule, see absolute positive constraints supplier rule, advisory rule preorder 523 PROGRAM 912 post_action 1040 prepare_cartesian 761 program, see system post_retrieve 1040 preprocessor 42 PROGRAM_FRAGMENT 910, 911 post_store 1040 Presentation Manager 442, 818, 1064, programming a TV station 911–912 postal code 18 1065, 1067, 1150 programs with holes 72, 505–506 338–410, 983, 993, 994, preserve 1040 project lifecycle, see lifecycle 1022–1024, 1177, 1199 and attributes 579 Principle of Least Surprise 454, 896 Project Tool 1153, 1154, 1155, 1156, and generalization 930 Principle of Modesty 441 1159 and inheritance 570–580 principle of selfishness 722 projecting software texts on a screen under concurrency 995, 997 principle of shelfishness 147–148 901 Postcondition 432 principle versus platitude 667 projection (in relational databases) 1048 postcondition paradox 995 principles (full list) 1189 proof by analogy 672 postgraduate 941 Principles of Truth 663 proof rule 1022–1024 POSTGRES 1055 print 582, 963 proper ancestor 464, 500, 1200 Postscript 108, 818 PRINT_CONTROLLER 968 proper descendant 464, 1200 Potter, John 567, 948, 1033 print_line 582 protected (Simula) 1115 practice, role in software methodology PRINTER 596, 602, 967, 1035 protection 45–46, 47, 48, 54 665–666 Simula 1120 prototyping 518 precomputing a polymorphic instance PRINTER_1 960 set 708–709 Proust, Marcel 887 private (Ada) 1086, 1087, 1098 pre_store 1040 proxy 968, 969, 989 private, see secret precedence of operators 896 prunable 883 procedural precepts (full list) 1189 prune 779, 882 means “imperative” (not the precipice and clouds 905–906 antonym of “object-oriented”); pSather 1034, 1137 precision in methodology rules 669 see functional 1100 pseudo-random number generation precision versus abstraction 905–906 procedure 89, 174, 203, 447–448, 754–755 precompilation 1146–1147 1199 public 51 precondition 146, 338–410, 838, call 447–448 Pugh, John R. 1138 1022–1024, 1199 creation, see creation procedure put 778, 884, 1178, 1179 abstract 576–577 once, see once procedure put_left 783 INDEX 1247 put_right 298, 607, 783 readability 615, 644 and once routines 648 put_state 691 and static typing 615 how to prohibit 583 put_transition 692 and symbolic constants 644 of an argument type 621–641 PVM (Parallel Virtual Machine) 970 readable 883 using the original version 493–494 REAL 171, 174, 188, 189, 220, 522, redo 706 Q 644 redoing, see undoing REAL_STACK 318 reengineering, see rearchitecturing qua (Simula) 1116 REAL_STACKS (Ada) 1082, 1084 ref (Simula) 1115 QUADRANGLE 467, 483, 858 realism, realistic, see realism under reference 222–225, 226–228, 240– Qualified Call rule 447, 453 typing 253, 265–270, 272–274, 445, 815, qualified call, see qualified under call reality 230–231 1053, 1200 quality 3–20, 294–296 virtual 231 and class invariants 403–406 attaching to an object, see external factors 4–16 rearchitecturing 441–443, 1151 attachment factors 3–16 Reasonable Precondition principle attachment, see under attachment internal factors 3 356, 357 comparison 244 tradeoffs 15 reattachment 231–232 counting, see reference counting quasi_inverse 424 Réaumur, René Antoine Ferchault de 673 declaring 226 query 135, 748, 987 definition 224 recipient_name 433 button 751 disciplined approach 277 expression 154 reclaim 297 encapsulating reference in databases, see query under reclamation, see space reclamation manipulations 269–270 database under memory management in databases 1053 property-based 1047 recompilation no references to subobjects 260– QUEUABLE 1181, 1183, 1184 see compilation 261 queue 127, 162, 410, 710–711, 734, time 1144 not sufficient 254 990–992, 1150, 1169, 1183 reconciliation 1150 operations 242–253 bounded 710–711, 992, 1183 record origin 286 QUEUE 734, 882, 1181, 1184, in relational databases 1048 self-reference 226–227 1187, 1188 record type (Pascal) 737 semantics 261–265 QUEUES (Ada) 1170 with variants 61–63 separate 967 Quicksort 72, 877 recovering from operating system states 240 type, see under type QUOTATION 232 signals 423–424 recovery block 438 versus simple values 272–274 void 240–241, 244–245 R rectangle 462–463, 524–525 reference (notation not retained) RECTANGLE 463, 465, 466, 483, 272, 286 Racine, Jean 1135 511, 513, 525, 527, 591, 626, 627, reference counting 302–304 raise 1072 633, 634, 826, 858, 1122 referential transparency 749–751, raise (Ada) 415, 436, 1090 recursion 170, 212, 235, 247, 248, 252, 253, 259, 277, 280, 295 752, 753, 754, 756 raise_mismatch_exception 1044 definition 750 recursive dispose 295 Ramaekers, Jean 315 reflection 1130 recycle 299 Randell, Brian 438 region, see critical region random numbers, see pseudo-random recycling objects 299–300 redeclaration 491–494, 1200 registration mechanism for detection number generation of object mismatches in persistence RANKED_GIRL 641 and assertions 570–580 and renaming 538 1042 Rannou, Robert 948 and typing 595–598 reification inheritance 831 rapid prototyping 518 conflicting under repeated definition 831 rating 910 inheritance 551–561 relation Ray, John 864, 865 definition 485 in relational databases 1048 reachable object, see unreachable redeem 839, 843 relational algebra 1048 under object redeemable 839 relational database, see relational reactivate (Simula) 1124 redefine 462, 507, 538 under database read 681, 682, 687 redefinition 28, 204, 834, 1200 relativity 194 1248 INDEX reliability 16, 68, 294–295, 331, 332, resume 1013, 1014 reverse assignment, reverse 441, 615, 1043 resume (Simula) 1119 assignment attempt, see assignment and memory management 294– resumption, see retrying attempt 295 retain 1000 reverse engineering 1150 and static typing 615 reversibility 919, 930, 931–933, 1150, retargeting, see targeting a tool remembered 710 1200 retrieved 252, 1039, 1045, 1047 remote execution 955–956, 1147 in BON 919 across the Internet 1147 retry 419, 420, 452 reversion 860 remove 298, 783, 880, 882 retrying 419–422, 424–425, 452, rewind 1173, 1174 remove_all_right 710 1090, 1200 Rich, Charles 99 remove_left 298 RETURN (Fortran) 1104 Riehle, Richard 1097 remove_oldest 963 return instruction (not retained) right 607 remove_right 298 211 Riley, David 948 remove_two 987 reusability 7, 15, 16, 67–100, 112– Rine, David 948 rename 536, 538 113, 115, 441, 607–609, 666, 735, ring 827, 1173, 1180, 1185 renaming rule 549–550, 562–563 740–741, 773, 830, 856, 905, 908, RING_ELEMENT 1176, 1177, 928–930, 1066, 1146–1147, 1200 renaming, see under feature 1178, 1179, 1180, 1184, 1185, and methodology 666 rendez-vous 958 1188 and the software development Risks forum 8, 125, 315–316 repairability 14 process 928–930 Web address 316 Repeated Inheritance rule 546 benefits 68–69 Rist, Robert 35, 948 repeated inheritance, see repeated goals 68–70 Ritchie, Dennis 1107 under inheritance in analysis 905, 908 robustness 5–6, 16, 331, 332, 389 repetition in software development 74 in graphical applications 1066 replace 783, 882 nature of reusable components 70– roman 900 replication under repeated inheritance 73 ROOM 629 544–548 obstacle roommate 622 representation independence 84–85, non-technical 74–81 root 98, 499 obstacles as synonym for “origin” (see that representation invariant, see technical 81–83 word) in memory management 285 “implementation invariant” under of abstracted modules 73 class 196, 1200 class invariant of and specifications 70– creation procedure 196 71, 89 require 112, 338 directory 199 of implementation 607–609 require else 578 object 195, 285, 288, 289, 290, requirements document 116, 720–725, of interface 607–609 1200 914–917 of non-concurrent software 1031 root (Lace) 199 various forms (natural language, of personnel 70 Roscoe, A. William 1033 of source code 72–73 graphical, formal) 914–917 Rosenbaum, Sarah xiv styles 608–609 rescue 419, 452 Ross, Herbert H. 868 reusability culture 929 rescue clause 419–422, 452 rotate 1071 reusable component correctness 427–430 Rousseau, Roger 948 role 429–430 what form? 70–98 routine 89–90, 173–176, 1200 tasks 427–430 reusable software component 67–100, body 178 when absent 430 1200 cannot modify its arguments 446 RESERVATION 692 distribution formats 79–80 inlining, see inlining reserve 978 how to find and access 77–79 once, see once routine reserving an object 983–985, 1027 indexing 78–79 overloading, see overloading restaurant 522 reuse routine grouping 84, 90 restore 1040 consumers 69–70 Routine_failure 432 restriction inheritance 826 producers 69–70 RS/6000 1152 definition 826 see reusability RTF (Microsoft’s Rich Text Format) Result 179, 210–213, 452 reuse-redo dilemma 82–83, 735 391, 1159 result of a function, see under function reuser of the month 929 rule INDEX 1249

see also absolute positive rule, seamless development, see separator 897–899 absolute negative rule, advisory seamlessness SEQUENCE 848, 857 rule, methodology, principle seamlessness 22–23, 506, 919, 930– sequential 102, 1201 self practice 878 933, 941, 1150, 1162, 1201 dependency 44 rule of change 814–816 in BON 919 SEQUENTIAL_TABLE 504, 505, rules role in education 941 831 full list of methodological rules search 791 set 410 1189 secondary education 941 SET 857 on library design 674 secret 51 set_developer_exception_context rules on rules 664–671 secretary-receptionist algorithm 435 Rumbaugh, James 934 1000–1002 set_mismatch_information 1044 run time 1201 security issues 956 setjmp 414 run-time SEGMENT 483, 829, 858, 909, 910, setup 961 object structure, see under object 911, 913 see also dynamic, run time, runtime Shang, David L. 629, 642 segment for a TV station 909–911 Shapiro, Marc 1034 type interrogation, see assignment select 554 attempt share 622, 633 select (SQL) 1049 runtime 30, 291, 293, 294, 297, 304, shared memory area 742 1148, 1200 selecting a feature under repeated shared object, see shared under object inheritance 553–555 definition 304, 1200 shared value, see shared under object selection (in relational databases) sharing in databases 1047 1048 S sharing under repeated inheritance selective export 191–194, 209–210, 544–548 609, 796–797, 1201 Sacks, Oliver 167 Shaw, Mary xi, 408, 1079, 1097 and inheritance 609 safe_share 640 architectural role 209–210 Shelf 1149 Sagan, Carl 672 Selective Export Inheritance rule 609 shelfishness, see principle of Saint-Hilaire, see Geoffroy Saint- Self 215, 641, 1137, 1139 shelfishness Hilaire self (Smalltalk) 453 Shell 42 same_type 582, 640 self practice 878 Shlaer, Sally 918, 922 SAN_FRANCISCO 497, 729 Self-Documentation principle 54–55, Shlaer-Mellor method 918 SANTA_BARBARA 535, 538 78, 179, 804, 890 Shneiderman, Ben 20 Santiago de Compostela 152 self-reference, see under reference Shopping List advice 772 Sarkis, Jean-Pierre 1160 semantics, see under reference, value shopping list approach to class design 642, 1137, 1139 semaphore 978, 1009–1012, 1036 111, 770–774 satisfiable call 1026 semicolon short form 176, 204, 389–392, 803– SAVE (Fortran) 1104 use as separator, terminator, or 804, 955, 1147, 1158, 1201 Scaife, Ross 277 optional element 897–899, 1088 displaying in the environment Schaffert, Craig 330, 1188 Semicolon Style principle 899 1158 side effect 748–764 schedule 909, 910 Semicolon Syntax rule 898 abstract 757 SCHEDULE 908, 909, 913 sentinel 784, 787, 788, 789, 791, 792– concrete 749 796 schedule for a TV station 908–909 forms 748–749 merging with list header 792–796 schema, schema evolution, see schema legitimate 759–764 separate 1201 evolution under persistence signal 414 Schiller, Friedrich 1141 call 967 class 967 signature 1201 Schmidt, Heinz 1160 entity 967–968 Silicon Graphics 1152 Schwartz, Laurent 672 object 967, 982–990 Simons, Anthony J. H. 629, 642 Schweitzer, Michael 301, 567 reference 967 SIMPLE 201 SCOOP (Simple Concurrent Object- type 967 Simpson, G.G. 866 Oriented Programming), see separate 952, 967 Simula 35, 49, 57, 81, 209, 211, 215, concurrency Separateness consistency rule 973, 272, 509, 517, 732, 988, 1080, 1099, Scott-Ram, N.R. 868 974, 975 1113–1126, 1138, 1139, 1140, 1167 scripting languages 754 Separatist 897–899 previously known as Simula 67 1250 INDEX

Simula 1 1114 software developer as arsonist 201– complete abstract data type Standards Group 1114 202 specification 139 simulated time 1123 Software Engineering Institute 55 package in Ada 1081–1091 simulation 732, 1122–1126, 1139, software IC™ 672 protected 359–363, 610 representations 123–124 1140 software inheritance 825 STACK 166, 318, 329, 500, 502, continuous 1122 SOFTWARE_ENGINEER 813 discrete-event 1122–1126, 1139, 530, 540, 576, 610, 857, 882, 989 1140 SOFTWARE_ENGINEER_1 815, stack-based memory management see also modeling 816 280–287 SIMULATION (Simula) 1123–1126, SOFTWARE_ENGINEER_2 815 STACK_OF_LINKABLES 299, 300 1139, 1140 SOFTWARE_ENGINEER_3 815 stackexp 140 sinecure 336 Sokal, Robert P. 866, 868 STACKS (Ada) 1086 Single Choice principle 61–63, 65, SOL (Société des Outils du Logiciel) STACK1 339 592, 1175 xi STACK2 349, 532 Single Name rule 549 Solaris 1152 STACK3 359, 610 Single Target principle 184, 185, 215 solve 765 STACK4 364 SIS (Swedish Standards Institute) SOMA (Semantic Object Modeling stalactite development process 925, 1138 Approach) 919 930 Sisyphus syndrome 59 Sommerville, Ian 415, 809 Stallman, Richard 100 ski team 621 SORTABLE_LIST 1186 standard names for features 882–883 SKIER 622, 631, 641 SORTED_LIST 1186 standard_clone 584 SKIER1 625, 628 soundness standard_copy 583 skip 716 of a garbage collector 305 Standish, Thomas A. 99 sleeping car 522 source of an attachment 262 STARS program (Software slice (of an array) 383 space, see memory management Technology for Adaptable, Reliable small classes 714–715 spaces, use in software texts 895–896 Systems) 81 Small Interfaces, see under interface special service 998–1002 start 782, 789 Smalltalk 35, 208, 320, 453, 517, 585, specialization and extension 499–500 starting_time 909 611, 734, 1050, 1056, 1057, 1075, state 1073–1076 specialization versus abstraction 858– 1099, 1114, 1126–1130, 1132, 1138, 859 abstract 756–758 1140, 1161, 1162 as a class 684–686 assessment 1129–1130 SPECIALTY_EMPLOYEE 853 concrete 756–758 efficiency issues 1129 specification 5, 150, 1201 diagram, see transition diagram Smalltalk 72 1138 completeness 153–159 in data structures 782–783 Smalltalk 76 1138 reusability 70–71 STATE 685, 686, 689, 690, 694, 731, SmallVDM 408 see also: short form; flat-short 734, 1075 Smith, Glen 1160 form; interface under class; Simula 1117 sneaky 750 requirements document state-based concurrency model 979 Sneath, Peter H.A. 866, 868 Speer, Brian R. 868 STATE_INSTITUTIONS 834 Snyder, Alan 610 spiral lifecycle 713, 925 static 1201 software Spivey, J. Michael 160 binding, see static under binding and reality 230–231 sponsor 909, 912 memory management 280–287 as operational model 732 SQL 1049, 1050 typing, see static under typing companies 76–77 embedded 1049 static-dynamic type consistency 475 component, see reusable software SQUARE 467, 483, 826 statically typed language 612 component st_number 692 statism 682–683 fault tolerance, see fault tolerance stable times of an object’s lifecycle Steel, Thomas B. 79 four worlds of software Stein, Jacob 1061 development 229–230 364 Stendhal 121, 148, 269 lifecycle, see lifecycle stack 123–162, 280–281, 285, 286, object, see under object 287, 329, 338–340, 348–364, 500– step 961, 962 process, see lifecycle 502, 530–532, 576–577, 610, 857, Stephan, Philippe 1160 quality, see quality 1081–1091, 1150 Stephenson, Ian 294, 305 Software Correctness property 333 bounded 576–577 Stevens, Peter F. 843, 868 INDEX 1251

Stop Point 1159 no references to subobjects 260– system parameter 650 stop_requested 962 261 System Tool 1153, 1156 STORABLE 252–253, 592, 1038, see also composite under object system validity 627, 628–641 1039, 1045, 1047, 1152 subroutine, see routine error 627 store 252, 253 Fortran 1104–1106 System Validity rule 634 multiple-entry 1104–1106 Store library 1149, 1152 system-valid 627, 636 subtype 835–836 Store library for object-oriented- relational combination 1050 subtype inheritance 825–826, 835– T 843 store_ignore 1040 definition 825 storing object structures, see under tab characters 894 subtyping object table 1150 enforcing the subtype view 836– in relational databases 1048 str_swap 1169 837 TABLE 82, 504 Strether, Lambert 301 versus other forms of inheritance string 456–457 833–835 table searching 74, 81–98 constant 653–654 subversion of software architecture TABLE_HANDLING 97 STRING 220, 456, 565, 583, 657, 682, 683 Tabourier, Yves 120 1186 subwindow 524–525, 1070 tabular form for requirements 914, STRING_COMPARABLE 1185 success 412 920 STRING_swap 1168 successive approximation 382, 384 tag_name 432 strong condition 335–337, 573 sufficient completeness 156–159 tagged (Ada 95) 1092 Stroustrup, Bjarne 35, 557, 1132, sufficient_duration 910 tagged_out 582 1138 SunOS 1152 Tang, Terry 1033, 1160 structural detection policy super (Smalltalk) 517, 1128, 1140 tangent_from 887 (persistence) 1042 super-module, see under module TAPE 1173, 1174, 1175 structural inheritance, see structure supplier 182–183, 862, 1201 Tardieu, Hubert 120 inheritance definition 182 target structure inheritance 532, 727, 831– suspended process 1123 of a call 184 832 of a tool in the object-oriented Suzuki, Norihisa 270, 277 definition 831 environment 1154–1158 Swanson, E. Burton 17–18, 20, 125 structure type (C) 737, 1109 of an attachment 262 swap 1168 structured design 64 single 184 Swift, Jonathan 104, 672, 750 structured programming 334, 1131 target 849 Switzer, Robert 948, 1034 control structures 277 targeting a tool 1154–1159 see Strether, Lambert Stuessy, Tod F. 868 task Sybase 820, 1152 style 180, 875–902 in Ada 980, 1091–1092 Sylla, Karl-Heinz 642 and creativity 878 to emulate classes 1098 applying rules in practice 180, symbolic constant 45, 644, 884–886 see also process 875–876 see also constant under attribute tasks of object-oriented development assertions 899 Symbolic Constant principle 644, 884 922 for comments and indexing clauses synchronization 977–982 taxomania 728, 743, 820–821 886–891 versus communication 977 taxon (pl. taxa) 866, 867 for constants 884–886 synchronous call 966, 1202 taxonomy importance of rules 877–878 Syntropy method 918 bibliography 868 naming rules 879–884 system 196–197, 688–690, 1202 history 864–867 self practice in this book 878 assembling 198–200 in the biological sciences 864–868 terseness and expliciteness 876– closure 196 limitations 841–843 877 execution 195 of inheritance 824–825 text layout and presentation 891– no main program in object-oriented premature 728–729 901 development 197–198 taxonomy exception 837 subcluster, see under cluster putting together 194–202 yoyo approach 860 subcontract, subcontracting 332, 576, retrieving 1041 teaching object technology 935–948 1201 storing 1041 industrial training 935–937 subobject 255–261 validity, see system validity introductory courses 937–940 1252 INDEX

non-introductory courses 940–942 TOOLS conferences (Technology of Trojan War 671 pedagogy 942–946 Object-Oriented Languages and True 220, 452 plan 946–947 Systems) 641, 642, 674, 1033, 1034 trying a type 592 TEACHING_ASSISTANT 520 tools for object-oriented software tuple template (C++) 1134, 1202 construction 1143, 1148–1150 in relational databases 1048 TEMPORARY_EMPLOYEE 852 top 679 Turing, Alan 407 tenuring 308 finding 107–108 TV station programming (example) terminated process 1123 top-down design 41, 43, 89, 103–114, 907–913 Terminatist 897–899 678–684, 1086 twin, not needed 274–275 terminator 897–899 as a technique for describing rather TWO_WAY_LIST 596, 599, 600, terseness 328, 876–877 than producing system 625, 710, 880, 1166 114 Tesler, Larry 715 TWO_WAY_TREE 796, 1070, 1166 topmost function 41, 104, 116 test 849 type 24, 167, 497, 1202 total correctness 337 TEST 533 anchored, see anchored declaration testing 392–398 total function 138 and inheritance 497 TEX 108, 391, 1159 total order 523 and module 170, 185, 1095–1096 text editor 715 Toy Story (movie) 953 application to development TEXT_FILE 1174 train car 522 environments 1157 as a semantic concept 170 textual form for requirements 920 training in object technology, see base class 325, 602–603 Thatcher. J. W. 160 teaching object technology Training Topics principle 936 basic 93, 171, 190, 191, 220, 222, then 448, 450 226, 228, 234, 254, 256, 257, 258, traitor 973–976, 977, 989, 1032, 1202 Theophrastus of Eresos 864 263, 265, 272, 276, 616, 636, 650, theorem prover 578 transaction 1047, 1054–1057, 1061 656, 881 theory, role in software methodology in Versant 1057 checking, see typing 665 long 1054–1055 conformance, see conformance, theta 763 transient object, see transient under Type Conformance rule object consistency 472–473 Thomas, Pete 948 transition 689, 692 enumerated, see unique value thrashing 292 transition diagram 676–678, 1075, expanded 254–261, 263–265, 412, thread 969, 970, 972, 1012, 1032 1076 445, 470, 616, 975–976 threshold model for object-oriented transition function 678–679 and analysis 907 databases 1053 and concurrency 975–976 transition graph, see transition diagram time definition 255 transition label 1072, 1076 computing 1123 effect on attachment and com- translate 172, 181, 1071 simulated 1123 parison 263–265, 412, 445 TIME 910 transmission, see data transmission properties 258–261 time (Simula) 1123 transparencies containing software role 256–258 time-sharing 954 texts, choice of layout and font 901 forcing 478, 591–595 TIMED 1019 transparency, see referential generalization 317–318 timeliness 14, 15, 16, 68 transparency interrogation, see assignment garbage collector property 305 TRAVERSABLE 857 attempt token sequence 115 tree 524–527, 1150 parameterization 318–320 TOKENIZER 848 abstract syntax tree 1038 protected (Ada 95) 1094 Tokoro, Mario 1033, 1034 definition 526 redefinition 621–641 reference 254, 256 tolerance, see fault tolerance see also binary tree, binary search tree definition 256 tolerant style for preconditions 354– role 319–320 357, 359–363 TREE 525, 567, 607 tree of life 859, 863 rule 323, 613 tool separate 967 Trellis 330, 1137, 1188 in an object-oriented environment static, dynamic 475–476 1153–1159 TRIANGLE 467, 483 tagged (Ada 95) 1094 tool developer 1064, 1067 triangle of computation 101–103, 964 trying 592 toolkit 1064–1065, 1073 trigger 434 type system 171–172 TOOLKIT 818, 819 troff 391, 1159 variable 629–630, 642 INDEX 1253

variation (reusability issue) 84, 97 UNDOABLE 717 Use Case principle 739 versus class 324–325 undoing 695–718, 932, 991 useful language 613–614 violation 612, 613, 614, 626, 627, implementation 705–707, 707–711 Usenet 35, 674 628, 630, 632, 634, 635, 636, 639, multi-level 696, 704–707, 716 user interface 109–110, 711–712, 713, 641 practical issues 696–697 1152–1159 Type Conformance rule 474, 591, 613 purpose and usefulness 695–698 interaction mechanisms 1071– Type Redeclaration rule 624 requirements on an undo-redo 1076, 1152–1159 type variable, see variable under type mechanism 697–698 object 1072 type variation inheritance, see type user interface 711–712 see also GUI (Graphical User under variation inheritance uneffecting inheritance 830 Interface) typed pick-and-throw 1157 definition 830 Ungar, David 316, 641, 1139 typeset 634, 635 V typing 322–323, 595–604, 611–642 Unified 919 a little bit typed 618–619 uniform access 55–57, 64, 175–176, Valente, Dino 1160 and efficiency 616 203–208, 775, 779, 888 Valéry, Paul 725 and inheritance 472–480 Uniform Access principle 57 validity and readability 615 unique value 654–655, 657–659 see class validity, system validity and redeclaration 595–598 compared to enumerated types value and reliability 615 657–659 semantics 261–265 application to development emulated by once function 660 van Ommeren, Robin 1160 environments 1157 UniSQL 1055 van Wijngaarden, Aad 100 becoming obnoxious? 591–592 United Kingdom variable, see entity, attribute dynamic 612–613, 616, 1128, university curriculum 941 1195 variant 451 unity 1180 variant, see loop variant arguments 616 Universal Class rule 580 definition 612–613 variation inheritance 828–830 universal class, see universal under definition 829 in Smalltalk 1128 class pessimism 636–638 functional 829 universal feature, universal operation, realism 613–614, 632 type 829 see universal under feature role 319–320 uneffecting, see uneffecting static 25–26, 595–604, 612–613, universal machine 79, 1137 inheritance 615–642, 835, 1202 universe 198 Vax 1152 basic definitions 612–613 Università degli Studi di Milano xi VBX 67 definition and advantages 615– University of Technology, Sydney xi VDM 160, 400, 408, 831 621 UNIVERSITY_PERSON 520 VDM++ 408 the issue 611–614 Unix 12, 72, 199, 414–415, 533, 737, vector 585–587 versus binding 619–621 802, 818, 1063, 1064, 1074, 1152 VECTOR 585, 588, 589, 610 and exceptions 414–415 VEHICLE 522 U folklore 802, 1063 VENTILATION_SYSTEM 831 pipe 44 verb 720 Shell 42 UCSD Pascal 947 verifiability 14 UML (Unified Modeling Language) Unixware 1152 Versant 1055, 1057, 1061 919 unqualified call, see under call versioning, see under class, object UNARY_TREE 604 unreachable object, see under object Vi editor (Unix) 696, 1074–1075, unstructured information 1060 UNCOL 79 1076 until 451 unconstrained genericity, see under view inheritance 851–858 genericity untyped, see dynamic under typing criteria 856–858 undefine 552 US Department of Defense (DoD) 55, not a beginner’s mechanism 854 undefinition 485, 551–553 81, 1079–1080 when appropriate 854–855 see also uneffecting inheritance US_DRIVER 544, 545, 546 violation undergraduate courses 941 usability, see ease of use see under type underline the nouns 700, 720–724 usable language 613–614 VIP client 999, 1031 understandability 43–44, 48, 50, 54 use (Ada) 1083, 1085 virtual undo 699 use case 112, 738–740 function (C++) 514, 620, 1133 1254 INDEX

machine 956, 1136 WEL library 442, 818, 1067, 1068, writer 222 reality 231 1149, 1150 Wulf, William 1079 routine (Simula) 1115 well-formed expression 153–155 Wyatt, Barbara B. 1033 virtual Welsh, Jim 660 WYSIWYG (What You See Is What C++ 514, 620 Wexelblat, Richard L. 1112 You Get) 1063, 1065 Simula 1115 Wheeler, David A. 1095, 1097 x 763 Vision library 820, 1039, 1067, 1146, when 450 1149, 1150, 1152 Ada 1089 X Visual Basic 67, 1130 widget (for graphical applications) Vladivostok 976 1066 X Window system 947 VMS 199, 1152 Wiener, Richard S. xi, 35, 901, 948, Xerox PARC (Palo Alto Research VOCATION 815 1138 Center) 1126, 1129, 1131 Void 244, 582 Wiley, E.O. 868 Xlib 1064 void, see under reference WIMP (Windows, Icons, Menus, XmPushButtonCallbackStruct Voltaire 498 Pointing device) 1063 (example of C/Motif name) 1065 window 524–525, 1070–1071 W xor 454 operations 1070–1071 window system 1064–1065 Wagner, E. W. 160 Y WINDOW 511, 512, 524, 560, 561, wait by necessity 952, 987–988, 989, 567, 817, 818, 1070 990, 1006, 1007–1009, 1015, 1027, Yacc 75 WINDOW_WITH_BORDER 558, 1033 Yahoo 78, 1060 560, 561 wait condition 990–998 Yates, Warren 948 WINDOW_WITH_BORDER_AND_ Yehudai, Amiram 642 wait_ for_ job 963 MENU 560, 561 wait_turn 1000 yield 1000, 1035 WINDOW_WITH_MENU 559, 560, Waldén, Kim 34, 271, 277, 517, 642, 561 Yokote, Yasuhiko 1034 745, 772, 901, 919, 921, 922, 934, Yonezawa, Akinori 999, 1033, 1034 Windows 199, 201, 442, 533, 1064, 1034, 1061 1065, 1067, 1068, 1150, 1152 YOOCC (Yes! An Object-Oriented walking menu 568 Windows NT xiv, 1067, 1152 -Compiler) 1151, 1160 War of the Semicolons 897–899 Windows 3.1 1152 Yourdon, Edward Nash 64, 120, 917, Warnier, Jean-Dominique 120 Windows xiv, 95 1152 922 watch-calculator 522 Wing, Jeannette M. 160 yoyo approach to classification 860, WATCHDOG 1020 Wintel 11 863 watchdog mechanism 1019–1021 wipe_out 298, 882 Yuksel, Deniz 1160 waterfall model of the software Wirfs-Brock, Rebecca 744 lifecycle 924–925 Wirth, Niklaus xi, 64, 119, 408, 1079, Z Waterloo Fortran 947 1097, 1111, 1137, 1139 Waters, Richard C. 99 with (Ada) 91, 1171 Z 100, 160, 330, 400, 408, 1167 weak condition 335–337, 573 withdrawals_list 364, 368, 369, Z++ 408 Weak Coupling 48 1046 Zdonik, Stanley B. 1061 wean 311 Word, see under Microsoft Zen 342–345 weaning an object 311 WORK_CONTRACT 855 zero 522, 1180 Web browser 3, 954, 955, 968, 1134 World-Wide Web 35, 954, 955–956, Zero Weight rule 157 Web Crawler 1060 968, 1032, 1060, 1147 Zilles, Stephen 160 Web library 1149, 1152 replacing databases? 1060 zooming 1150 Weber, Franz 628, 629, 642 wrapper 441, 1144, 1178–1187 Weber, Mats 1096, 1097 class 1178–1187 Weedon, Ray 948 object 1178–1187 Wegner, Peter 642, 1100 wrapup 962 2167 standard (US Department of weight 157 wristwatch 522 Defense) 55 Weight Consistency rule 156 writable 883 3E (Environment’s Execution Engine) Weiser, Mark 100 write-back 1042 1147