LePUS3, the language of Codecharts, has proven to radically cut the costs of key tasks in software development and significantly improves the quality of software produced. This classroom-tested resource teaches this visual language through extensive examples and case studies, offering more precise and elegant notation than any other text on the market. It provides accessible, illustration-driven content, with blueprints and roadmaps of programs appearing on almost every page. The book is written for software professionals, third- and fourth-year students of computer science, and graduate students and researchers in software engineering.
AMNON H. EDEN, PhD, 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 Stanford Encyclopedia of Philosophy and articles in leading software engineering journals.
JONATHAN NICHOLSON, PhD, 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.
Preface.
Acknowledgements.
Guide to the Reader.
Codecharts.
Propositions.
Prologue.
1. Motivation.
2. Design Description Languages.
2.1 Theory Versus Practice.
2.2 Decidability.
2.3 Abstraction.
2.4 Elegance.
3. An Overview of Codecharts.
3.1 Object-Orientation.
3.2 Visualization.
3.3 Rigour.
3.4 Automated Verifiability.
3.5 Scalability.
3.6 Genericity.
3.7 Minimality.
3.8 Information Neglect.
4. UML Versus Codecharts.
5. Historical Notes.
PART I: Practice.
6. Modelling Small Programs.
6.1 Modelling Individual Classes.
6.2 Modelling Individual Methods.
6.3 Modelling Properties.
6.4 Modelling Implementation Minutia.
6.5 Modelling Simple Relations.
6.6 Modelling Indirect Relations.
6.7 Subtyping.
7. Modelling Large Programs.
7.1 Modelling Sets of Classes.
7.2 Modelling Total Relations Between Sets.
7.3 Modelling Sets of Methods (Clans).
7.4 Modelling Isomorphic Relations.
7.5 Modelling Sets of Methods (Tribes).
7.6 Modelling Class Hierarchies.
7.7 Modelling Methods in Hierarchies.
7.8 Modelling Properties of Sets.
7.9 Case Study: Total Versus. Isomorphic.
7.10 Case Study: JDOM.
7.11 Case Study: Java 3D.
8. Modelling Industry-Scale Programs.
8.1 Modelling Sets of Hierarchies.
8.2 Modelling Sets of Sets of Methods (Clans).
8.3 Modelling Sets of Sets of Methods (Tribes).
8.4 Modelling Total Relations Revisited.
8.5 Modelling Isomorphic Relations Revisited.
9. Modelling Design Motifs.
10. Modelling Application Frameworks.
10.1 Case Study: Enterprise JavaBeans.
10.2 Case Study: JUnit.
11. Modelling Design Patterns.
11.1 Case Study: The Composite Pattern.
11.2 Case Study: The Iterator Pattern.
11.3 Case Study: The Factory Method Pattern.
11.4 Case Study: The Abstract Factory Pattern.
11.5 Concluding Remarks.
12. Modelling Early Design Revisited.
13. Advanced Modelling Techniques.
13.1 Ad Hoc Symbols.
13.2 Modelling Information Hiding.
PART II: Theory.
14. Abstract Semantics.
14.1 Finite Structures.
14.2 Abstract Semantics Functions.
14.3 Design Models.
14.4 Program Modelling Revisited.
15. Verification.
15.1 Verifying Closed Specifications.
15.2 Verifying Open Specifications.
15.3 Verifying Pattern Implementations.
15.4 Tool Support for Automated Verification.
16. Schemas.
17. LePUS3 in Classical Logic.
17.1 LePUS3 and Class-Z as First-Order Languages.
17.2 Specifications in the Predicate Logic.
17.3 The Axioms of Class-Based Programs.
18. Reasoning about Charts.
Appendix I: The Gang of Four Companion.
Appendix II: Formal Definitions.
Appendix III: UML Quick Reference.
References.
Index.