{"product_id":"codecharts-isbn-9780470626948","title":"Codecharts","description":"\u003cb\u003eNEW LANGUAGE VISUALIZES PROGRAM ABSTRACTIONS CLEARLY AND PRECISELY\u003c\/b\u003e  \u003cp\u003ePopular 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.\u003c\/p\u003e \u003cp\u003eHundreds of figures and examples in this book illustrate how Codecharts are used to:\u003c\/p\u003e \u003cul\u003e \u003cli\u003e \u003cp\u003eVisualize the building-blocks of object-oriented design\u003c\/p\u003e \u003c\/li\u003e \u003cli\u003e \u003cp\u003eCreate bird's-eye roadmaps of large programs with minimal symbols and no clutter\u003c\/p\u003e \u003c\/li\u003e \u003cli\u003e \u003cp\u003eModel blueprints of patterns, frameworks, and other design decisions\u003c\/p\u003e \u003c\/li\u003e \u003cli\u003e \u003cp\u003eBe exactly sure what diagrams claim about programs and reason rigorously about them\u003c\/p\u003e \u003c\/li\u003e \u003c\/ul\u003e \u003cp\u003eTools supporting Codecharts are also shown here to:\u003c\/p\u003e \u003cul\u003e \u003cli\u003e \u003cp\u003eRecover design from plain Java and visualize the program's roadmap\u003c\/p\u003e \u003c\/li\u003e \u003cli\u003e \u003cp\u003eVerify conformance to design decision with a click of a button\u003c\/p\u003e \u003c\/li\u003e \u003c\/ul\u003e \u003cp\u003e\u003cb\u003eThis classroom-tested book includes two main parts:\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003e\u003cb\u003ePractice\u003c\/b\u003e (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.\u003c\/p\u003e \u003cp\u003e\u003cb\u003eTheory\u003c\/b\u003e (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 \u003ci\u003esatisfies\u003c\/i\u003e 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\").\u003c\/p\u003e \u003cp\u003ePreface xi\u003c\/p\u003e \u003cp\u003eAcknowledgements xiii\u003c\/p\u003e \u003cp\u003eGuide to the Reader xv\u003c\/p\u003e \u003cp\u003eCodecharts xix\u003c\/p\u003e \u003cp\u003ePropositions xxv\u003c\/p\u003e \u003cp\u003e\u003cb\u003ePrologue 1\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003e\u003cb\u003e1. Motivation 3\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003e\u003cb\u003e2. Design Description Languages 7\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003e2.1 Theory Versus Practice 9\u003c\/p\u003e \u003cp\u003e2.2 Decidability 11\u003c\/p\u003e \u003cp\u003e2.3 Abstraction 12\u003c\/p\u003e \u003cp\u003e2.4 Elegance 16\u003c\/p\u003e \u003cp\u003e\u003cb\u003e3. An Overview of Codecharts 19\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003e3.1 Object-Orientation 19\u003c\/p\u003e \u003cp\u003e3.2 Visualization 23\u003c\/p\u003e \u003cp\u003e3.3 Rigour 26\u003c\/p\u003e \u003cp\u003e3.4 Automated Verifiability 28\u003c\/p\u003e \u003cp\u003e3.5 Scalability 30\u003c\/p\u003e \u003cp\u003e3.6 Genericity 32\u003c\/p\u003e \u003cp\u003e3.7 Minimality 33\u003c\/p\u003e \u003cp\u003e3.8 Information Neglect 34\u003c\/p\u003e \u003cp\u003e\u003cb\u003e4.UML Versus Codecharts 37\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003e\u003cb\u003e5.Historical Notes 43\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003e\u003cb\u003ePart I: Practice 45\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003e\u003cb\u003e6. Modelling Small Programs 47\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003e6.1 Modelling Individual Classes 49\u003c\/p\u003e \u003cp\u003e6.2 Modelling Individual Methods 50\u003c\/p\u003e \u003cp\u003e6.3 Modelling Properties 53\u003c\/p\u003e \u003cp\u003e6.4 Modelling Implementation Minutia 55\u003c\/p\u003e \u003cp\u003e6.5 Modelling Simple Relations 56\u003c\/p\u003e \u003cp\u003e6.6 Modelling Indirect Relations 64\u003c\/p\u003e \u003cp\u003e6.7 Subtyping 66\u003c\/p\u003e \u003cp\u003e\u003cb\u003e7. Modelling Large Programs 71\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003e7.1 Modelling Sets of Classes 75\u003c\/p\u003e \u003cp\u003e7.2 Modelling Total Relations Between Sets 77\u003c\/p\u003e \u003cp\u003e7.3 Modelling Sets of Methods (Clans) 81\u003c\/p\u003e \u003cp\u003e7.4 Modelling Isomorphic Relations 83\u003c\/p\u003e \u003cp\u003e7.5 Modelling Sets of Methods (Tribes) 85\u003c\/p\u003e \u003cp\u003e7.6 Modelling Class Hierarchies 90\u003c\/p\u003e \u003cp\u003e7.7 Modelling Methods in Hierarchies 93\u003c\/p\u003e \u003cp\u003e7.8 Modelling Properties of Sets 97\u003c\/p\u003e \u003cp\u003e7.9 Case Study: Total Versus. Isomorphic 98\u003c\/p\u003e \u003cp\u003e7.10 Case Study: JDOM 101\u003c\/p\u003e \u003cp\u003e7.11 Case Study: Java 3D 103\u003c\/p\u003e \u003cp\u003e\u003cb\u003e8. Modelling Industry-Scale Programs 109\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003e8.1 Modelling Sets of Hierarchies 111\u003c\/p\u003e \u003cp\u003e8.2 Modelling Sets of Sets of Methods (Clans) 112\u003c\/p\u003e \u003cp\u003e8.3 Modelling Sets of Sets of Methods (Tribes) 115\u003c\/p\u003e \u003cp\u003e8.4 Modelling Total Relations Revisited 118\u003c\/p\u003e \u003cp\u003e8.5 Modelling Isomorphic Relations Revisited 120\u003c\/p\u003e \u003cp\u003e\u003cb\u003e9. Modelling Design Motifs 127\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003e\u003cb\u003e10. Modelling Application Frameworks 133\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003e10.1 Case Study: Enterprise JavaBeans 135\u003c\/p\u003e \u003cp\u003e10.2 Case Study: JUnit 136\u003c\/p\u003e \u003cp\u003e\u003cb\u003e11. Modelling Design Patterns 139\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003e11.1 Case Study: The Composite Pattern 140\u003c\/p\u003e \u003cp\u003e11.2 Case Study: The Iterator Pattern 145\u003c\/p\u003e \u003cp\u003e11.3 Case Study: The Factory Method Pattern 149\u003c\/p\u003e \u003cp\u003e11.4 Case Study: The Abstract Factory Pattern 154\u003c\/p\u003e \u003cp\u003e11.5 Concluding Remarks 157\u003c\/p\u003e \u003cp\u003e\u003cb\u003e12. Modelling Early Design Revisited 159\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003e\u003cb\u003e13. Advanced Modelling Techniques 161\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003e13.1 Ad Hoc Symbols 161\u003c\/p\u003e \u003cp\u003e13.2 Modelling Information Hiding 164\u003c\/p\u003e \u003cp\u003e\u003cb\u003ePart II: Theory 167\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003e\u003cb\u003e14. Abstract Semantics 169\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003e14.1 Finite Structures 170\u003c\/p\u003e \u003cp\u003e14.2 Abstract Semantics Functions 174\u003c\/p\u003e \u003cp\u003e14.3 Design Models 174\u003c\/p\u003e \u003cp\u003e14.4 Program Modelling Revisited 177\u003c\/p\u003e \u003cp\u003e\u003cb\u003e15. Verification 179\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003e15.1 Verifying Closed Specifications 180\u003c\/p\u003e \u003cp\u003e15.2 Verifying Open Specifications 183\u003c\/p\u003e \u003cp\u003e15.3 Verifying Pattern Implementations 186\u003c\/p\u003e \u003cp\u003e15.4 Tool Support for Automated Verification 188\u003c\/p\u003e \u003cp\u003e\u003cb\u003e16. Schemas 191\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003e\u003cb\u003e17. LePUS3 in Classical Logic 195\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003e17.1 LePUS3 and Class-Z as First-Order Languages 195\u003c\/p\u003e \u003cp\u003e17.2 Specifications in the Predicate Logic 196\u003c\/p\u003e \u003cp\u003e17.3 The Axioms of Class-Based Programs 198\u003c\/p\u003e \u003cp\u003e\u003cb\u003e18. Reasoning about Charts 201\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003eAppendix I: The Gang of Four Companion 213\u003c\/p\u003e \u003cp\u003eAppendix II: Formal Definitions 229\u003c\/p\u003e \u003cp\u003eAppendix III: UML Quick Reference 233\u003c\/p\u003e \u003cp\u003eReferences 235\u003c\/p\u003e \u003cp\u003eIndex 239\u003c\/p\u003e  \u003cb\u003eAMNON H. EDEN, PhD\u003c\/b\u003e, is a computer scientist with the School of Computer Science and Electronic Engineering at the University of Essex and a research fellow at the Center for Inquiry. Dr. Eden has worked as a programmer and consultant to leading software companies, chaired the Software Engineering Diploma Programme at the Tel Aviv College of Management, and served as the associate editor of Minds and Machines. His publications include an entry in the \u003ci\u003eStanford Encyclopedia of Philosophy\u003c\/i\u003e and articles in leading software engineering journals.  \u003cp\u003e\u003cb\u003eJONATHAN NICHOLSON, PhD\u003c\/b\u003e, earned his doctorate from the School of Computer Science and Electronic Engineering at the University of Essex under the co-supervision of Prof. Raymond Turner and Dr. Eden. His research centres on object-oriented design, with a focus on the development and implementation of the logic underlying the language of Codecharts.\u003c\/p\u003e  \u003cb\u003eNEW LANGUAGE VISUALIZES PROGRAM ABSTRACTIONS CLEARLY AND PRECISELY\u003c\/b\u003e  \u003cp\u003ePopular 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.\u003c\/p\u003e \u003cp\u003eHundreds of figures and examples in this book illustrate how Codecharts are used to:\u003c\/p\u003e \u003cul\u003e \u003cli\u003e \u003cp\u003eVisualize the building-blocks of object-oriented design\u003c\/p\u003e \u003c\/li\u003e \u003cli\u003e \u003cp\u003eCreate bird's-eye roadmaps of large programs with minimal symbols and no clutter\u003c\/p\u003e \u003c\/li\u003e \u003cli\u003e \u003cp\u003eModel blueprints of patterns, frameworks, and other design decisions\u003c\/p\u003e \u003c\/li\u003e \u003cli\u003e \u003cp\u003eBe exactly sure what diagrams claim about programs and reason rigorously about them\u003c\/p\u003e \u003c\/li\u003e \u003c\/ul\u003e \u003cp\u003eTools supporting Codecharts are also shown here to:\u003c\/p\u003e \u003cul\u003e \u003cli\u003e \u003cp\u003eRecover design from plain Java and visualize the program's roadmap\u003c\/p\u003e \u003c\/li\u003e \u003cli\u003e \u003cp\u003eVerify conformance to design decision with a click of a button\u003c\/p\u003e \u003c\/li\u003e \u003c\/ul\u003e \u003cp\u003e\u003cb\u003eThis classroom-tested book includes two main parts:\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003e\u003cb\u003ePractice\u003c\/b\u003e (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.\u003c\/p\u003e \u003cp\u003e\u003cb\u003eTheory\u003c\/b\u003e (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 \u003ci\u003esatisfies\u003c\/i\u003e 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\").\u003c\/p\u003e","brand":"Wiley","offers":[{"title":"Default Title","offer_id":47988940308709,"sku":"NP9780470626948","price":115.95,"currency_code":"USD","in_stock":false}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/1842\/7735\/files\/9780470626948.jpg?v=1761782136","url":"https:\/\/k12savings.com\/products\/codecharts-isbn-9780470626948","provider":"K12savings","version":"1.0","type":"link"}