Using Aspect-Oriented Programming for Trustworthy Software Development
This landmark publication fills a gap in the literature by not only describing the basic concepts of trustworthy computing (TWC) and aspect-oriented programming (AOP), but also exploring their critical interrelationships. The author clearly demonstrates how typical TWC tasks such as security checks, in-and-out conditions, and multi-threaded safety can be implemented using AOP.
Following an introduction, the book covers:
Trustworthy computing, software engineering, and computer science
Aspect-oriented programming and Aspect.NET
Principles and case studies that apply AOP to TWC
Coverage includes Aspect.NET, the AOP framework developed by the author for the Microsoft.NET platform, currently used in seventeen countries. The author discusses the basics of Aspect.NET architecture, its advantages compared to other AOP tools, and its functionality. The book has extensive practical examples and case studies of trustworthy software design and code using the Aspect.NET framework. In addition, the book explores other software technologies and tools for using AOP for trustworthy software development, including Java and AspectJ.
This book also includes a valuable chapter dedicated to ERATO, the author's teaching method employed in this book, which has enabled thousands of students to quickly grasp and apply complex concepts in computing and software engineering, while the final chapter presents an overall perspective on the current state of AOP and TWC with a view toward the future.
Software engineers, architects, developers, programmers, and students should all turn to this book to learn this tested and proven method to create more secure, private, and reliable computing.
1.1 The Role of Aspect-Oriented Programming in Trustworthiness.
1.2 Historical Background and Personal Experience.
1.3 Organization of the Book.
2. Trustworthy Computing, Software Engineering, and Computer Science.
2.1 History of and Growing Need for TWC.
2.2 Microsoft’s TWC Initiative.
2.3 The Four Pillars of TWC.
2.3.4 Business Integrity.
2.4 Software Engineering Technologies and Tools for TWC.
2.5 TWC and .NET.
2.5.1 .NET Overview.
2.5.2 .NET Security.
2.5.3 .NET and Reliability.
2.5.4 .NET TWC Tools FxCop and Spec#.
2.6 TWC and Java.
2.6.1 Java Overview.
2.6.2 Java Security.
2.6.3 Java and Reliability.
2.6.4 Java TWC Tools.
3. Aspect-Oriented Programming and Aspect.NET.
3.1 History of AOP.
3.2 AOP Basics.
3.3 AOP and Related Technologies and Tools.
3.3.1 AspectJ and AspectWerkz.
3.3.2 Other AOP Tools and Approaches to Separation of Concerns.
3.4. Pitfalls of AOP.
3.5 AOP for Java.
3.6 AOP for .NET.
3.7 Aspect.NET Principles and Architecture.
3.7.1 Motivation and Key Ideas.
3.7.2 Basic Concepts of AOP.
3.7.4 Representing Aspects by Custom Attributes.
3.7.5 Example in Terms of Custom Attributes.
3.7.6 Summary of Our Approach to AOP.
3.7.7 Aspect.NET Architectural Principles.
3.7.8 Syntax of AOP Metalanguage (Version 1.0).
3.7.9 Another Example.
3.8 Features and Use of Aspect.NET.
3.8.1 Prerequisites for Using Aspect.NET 2.1.
3.8.2 Previous Releases of Aspect.NET and the Compatibility Mode.
3.8.3 Aspect.NET Architecture.
3.8.4 Case Study: Using the Aspect.NET Framework.
3.8.5 Aspect.NET Framework Options.
3.8.6 Aspect.NET.ML Metalanguage.
3.8.7 Samples Included in the Aspect.NET 2.1 Release.
3.8.8 Experience of Aspect.NET Use and User Feedback.
4. Principles and Application of AOP in TWC.
4.1 AOP and TWC: Cooperation Rather Than Violation.
4.2 AOP for Security.
4.3 AOP for Error Handling.
4.4 AOP for Synchronization.
4.5 AOP for Trustworthy Multithreading- and Multicore-Based Applications.
4.6 AOP for Privacy.
4.7 AOP for Reliability.
4.7.1 Using AOP to Make Implementation Reliable.
4.7.2 Using AOP for Software Testing.
4.7.3 Using AOP to Support Formal Specification and Verification Methods.
4.8 AOP for Business Integrity.
4.9 AOP for Design by Contract.
4.10 Using AOP via Aspect.NET to Improve Productivity and Reliability.
4.10.1 Effort Estimation Using the COCOMO Model.
4.10.2 Assessment of Aspect.NET Using the ICED-T Model.
4.10.3 Assessment of Requirements of Aspect.NET Using the SQFD Model.
4.11 Application Effi ciency and Performance Using AOP.
4.11.1 Performance Measurement.
4.11.2 Implementation Details and the Woven IL Code.
4.11.3 Another Performance Measurement Example.
4.12 AOP and Agile Programming Approaches.
5. Teaching TWC and AOP.
5.1 The ERATO Teaching Paradigm and the SPBU.NET Project.
5.1.1 The ERATO Teaching Paradigm.
5.1.2 The SPBU.NET Project.
5.2 The T-ERATO Teaching Paradigm and the TrustSPBU.NET Project.
5.2.1 The T-ERATO Teaching Paradigm.
5.2.2 The TrustSPBU.NET Project.
5.3 Teaching Trustworthy Software Engineering, Including AOP.
5.3.1 Structure of the Secure Software Engineering Course.
5.4 Teaching Trustworthy .NET and C# Programming.
5.4.1 Structure of the Trustworthy .NET and C# Programming Course.
5.4.2 Structure of the .NET and C# Programming Seminar.
5.5 Teaching Trustworthy Java Technology.
5.5.1 Structure of the Java Course.
5.5.2 Structure of the Java Seminar.
5.6 Teaching Trustworthy Operating Systems and Networking.
5.6.1 Structure of the Trustworthy Operating Systems and Networking Course.
5.7 Teaching Trustworthy Compiler Development.
5.7.1 Structure of the Trustworthy Compiler Development Course.
5.7.2 Structure of the Compiler Development Seminar.
6.1 Summary of the Book.
6.2 Perspectives: Integration of TWC, AOP, Formal Methods, and Knowledge Management.
6.2.1 Application of Formal Methods to Trustworthy AOP.
6.2.2 Smart Knowledge-Based AOP.
6.2.3 AOP Specification and Design Support Tools.
6.2.4 Trustworthy Reverse Engineering and Refactoring Tools for AOP.
6.2.5 Aspect-Oriented Modeling on the Basis of Extended UML.
Appendix: Examples of Aspect.NET Aspects.
A.1 TestArgs Example.
A.2 RetTest Example.
A.3 RetTest2 Example.
A.4 QuickSort Example.
A.5 Matrix Example.