NEW LANGUAGE VISUALIZES PROGRAM ABSTRACTIONS CLEARLY AND PRECISELYPopular software modelling notations visualize implementation minutiae but fail to scale, to capture design abstractions, and to deliver effective tool support. Tailored to overcome these limitations, Codecharts can elegantly model roadmaps and blueprints for Java, C++, and C# programs of any size clearly, precisely, and at any level of abstraction. More practically, significant productivity gains for programmers using tools supporting Codecharts have been demonstrated in controlled experiments.Hundreds of figures and examples in this book illustrate how Codecharts are used to:Visualize the building-blocks of object-oriented designCreate bird's-eye roadmaps of large programs with minimal symbols and no clutterModel blueprints of patterns, frameworks, and other design decisionsBe exactly sure what diagrams claim about programs and reason rigorously about themTools supporting Codecharts are also shown here to:Recover design from plain Java and visualize the program's roadmapVerify conformance to design decision with a click of a buttonThis classroom-tested book includes two main parts:Practice (Part I) offers experienced programmers, software designers and software engineering students practical tools for representing and communicating object-oriented design. It demonstrates how to model programs, patterns, libraries, and frameworks using examples from JDK, Java 3D, JUnit, JDOM, Enterprise JavaBeans, and the Composite, Iterator, Factory Method, Abstract Factory, and Proxy design patterns.Theory (Part II) offers a mathematical foundation for Codecharts to graduate students and researchers studying software design, modelling, specification, and verification. It defines a formal semantics and a satisfies relation for design verification, and uses them to reason about the relations between patterns and programs (e.g., "java.awt implements Composite" and "Factory Method is an abstraction of Iterator").
Author(s): Amnon H. Eden
Edition: 1
Publisher: Wiley
Year: 2011
Language: English
Pages: 276
Tags: Библиотека;Компьютерная литература;Культура и искусство программирования;
Codecharts......Page 5
Contents......Page 9
Preface......Page 13
Acknowledgements......Page 15
Guide to the Reader......Page 17
Codecharts......Page 21
Propositions......Page 27
Prologue......Page 29
1. Motivation......Page 31
2. Design Description Languages......Page 35
2.1 Theory Versus Practice......Page 37
2.2 Decidability......Page 39
2.3 Abstraction......Page 40
2.4 Elegance......Page 44
3.1 Object-Orientation......Page 47
3.2 Visualization......Page 51
3.3 Rigour......Page 54
3.4 Automated Verifiability......Page 56
3.5 Scalability......Page 58
3.6 Genericity......Page 60
3.7 Minimality......Page 61
3.8 Information Neglect......Page 62
4. UML Versus Codecharts......Page 65
5. Historical Notes......Page 71
PART I: Practice......Page 73
6. Modelling Small Programs......Page 75
6.1 Modelling Individual Classes......Page 77
6.2 Modelling Individual Methods......Page 78
6.3 Modelling Properties......Page 81
6.4 *Modelling Implementation Minutia......Page 83
6.5 Modelling Simple Relations......Page 84
6.6 Modelling Indirect Relations......Page 92
6.7 *Subtyping......Page 94
7. Modelling Large Programs......Page 99
7.1 Modelling Sets of Classes......Page 103
7.2 Modelling Total Relations Between Sets......Page 105
7.3 Modelling Sets of Methods (Clans)......Page 109
7.4 *Modelling Isomorphic Relations......Page 111
7.5 Modelling Sets of Methods (Tribes)......Page 113
7.6 Modelling Class Hierarchies......Page 118
7.7 Modelling Methods in Hierarchies......Page 121
7.8 Modelling Properties of Sets......Page 125
7.9 *Case Study: Total Versus. Isomorphic......Page 126
7.10 Case Study: JDOM......Page 129
7.11 Case Study: Java 3D......Page 131
8. *Modelling Industry-Scale Programs......Page 137
8.1 Modelling Sets of Hierarchies......Page 139
8.2 Modelling Sets of Sets of Methods (Clans)......Page 140
8.3 Modelling Sets of Sets of Methods (Tribes)......Page 143
8.4 Modelling Total Relations Revisited......Page 146
8.5 Modelling Isomorphic Relations Revisited......Page 148
9. Modelling Design Motifs......Page 155
10. Modelling Application Frameworks......Page 161
10.1 Case Study: Enterprise JavaBeans......Page 163
10.2 Case Study: JUnit......Page 164
11. Modelling Design Patterns......Page 167
11.1 Case Study: The Composite Pattern......Page 168
11.2 Case Study: The Iterator Pattern......Page 173
11.3 Case Study: The Factory Method Pattern......Page 177
11.4 *Case Study: The Abstract Factory Pattern......Page 182
11.5 *Concluding Remarks......Page 185
12. Modelling Early Design Revisited......Page 187
13.1 Ad Hoc Symbols......Page 189
13.2 Modelling Information Hiding......Page 192
PART II: Theory......Page 195
14. Abstract Semantics......Page 197
14.1 Finite Structures......Page 198
14.3 Design Models......Page 202
14.4 Program Modelling Revisited......Page 205
15. Verification......Page 207
15.1 Verifying Closed Specifications......Page 208
15.2 Verifying Open Specifications......Page 211
15.3 Verifying Pattern Implementations......Page 214
15.4 Tool Support for Automated Verification......Page 216
16. *Schemas......Page 219
17.1 LePUS3 and Class-Z as First-Order Languages......Page 223
17.2 Specifications in the Predicate Logic......Page 224
17.3 The Axioms of Class-Based Programs......Page 226
18. Reasoning about Charts......Page 229
Appendix I: The Gang of Four Companion......Page 241
Appendix II: Formal Definitions......Page 257
Appendix III: UML Quick Reference......Page 261
References......Page 263
Index......Page 267