Using Aspect-Oriented Programming for Trustworthy Software DevelopmentISBN: 978-0-470-13817-5
Hardcover
352 pages
May 2008
This is a Print-on-Demand title. It will be printed specifically to fill your order. Please allow an additional 10-15 days delivery time. The book is not returnable.
|
Preface ix
1. Introduction 1
1.1 The Role of Aspect-Oriented Programming in Trustworthiness 1
1.2 Historical Background and Personal Experience 3
1.3 Organization of the Book 8
2. Trustworthy Computing, Software Engineering, and Computer Science 10
2.1 History of and Growing Need for TWC 10
2.2 Microsoft’s TWC Initiative 13
2.3 The Four Pillars of TWC 15
2.3.1 Security 15
2.3.2 Privacy 23
2.3.3 Reliability 25
2.3.4 Business Integrity 27
2.4 Software Engineering Technologies and Tools for TWC 30
2.5 TWC and .NET 31
2.5.1 .NET Overview 31
2.5.2 .NET Security 34
2.5.3 .NET and Reliability 37
2.5.4 .NET TWC Tools FxCop and Spec# 39
2.6 TWC and Java 42
2.6.1 Java Overview 42
2.6.2 Java Security 44
2.6.3 Java and Reliability 46
2.6.4 Java TWC Tools 48
2.7 Summary 49
3. Aspect-Oriented Programming and Aspect.NET 50
3.1 History of AOP 50
3.2 AOP Basics 54
3.3 AOP and Related Technologies and Tools 66
3.3.1 AspectJ and AspectWerkz 66
3.3.2 Other AOP Tools and Approaches to Separation of Concerns 70
3.4. Pitfalls of AOP 73
3.5 AOP for Java 76
3.6 AOP for .NET 79
3.7 Aspect.NET Principles and Architecture 85
3.7.1 Motivation and Key Ideas 85
3.7.2 Basic Concepts of AOP 88
3.7.3 Example 91
3.7.4 Representing Aspects by Custom Attributes 92
3.7.5 Example in Terms of Custom Attributes 94
3.7.6 Summary of Our Approach to AOP 95
3.7.7 Aspect.NET Architectural Principles 97
3.7.8 Syntax of AOP Metalanguage (Version 1.0) 99
3.7.9 Another Example 101
3.8 Features and Use of Aspect.NET 102
3.8.1 Prerequisites for Using Aspect.NET 2.1 103
3.8.2 Previous Releases of Aspect.NET and the Compatibility Mode 103
3.8.3 Aspect.NET Architecture 104
3.8.4 Case Study: Using the Aspect.NET Framework 106
3.8.5 Aspect.NET Framework Options 113
3.8.6 Aspect.NET.ML Metalanguage 114
3.8.7 Samples Included in the Aspect.NET 2.1 Release 122
3.8.8 Experience of Aspect.NET Use and User Feedback 123
3.9 Summary
3.9.1 AOP 123
3.9.2 Aspect.NET 125
4. Principles and Application of AOP in TWC 128
4.1 AOP and TWC: Cooperation Rather Than Violation 128
4.2 AOP for Security 132
4.3 AOP for Error Handling 136
4.4 AOP for Synchronization 142
4.5 AOP for Trustworthy Multithreading- and Multicore-Based Applications 145
4.6 AOP for Privacy 149
4.7 AOP for Reliability 153
4.7.1 Using AOP to Make Implementation Reliable 153
4.7.2 Using AOP for Software Testing 157
4.7.3 Using AOP to Support Formal Specification and Verification Methods 164
4.8 AOP for Business Integrity 165
4.9 AOP for Design by Contract 168
4.10 Using AOP via Aspect.NET to Improve Productivity and Reliability 183
4.10.1 Effort Estimation Using the COCOMO Model 184
4.10.2 Assessment of Aspect.NET Using the ICED-T Model 187
4.10.3 Assessment of Requirements of Aspect.NET Using the SQFD Model 190
4.11 Application Efficiency and Performance Using AOP 193
4.11.1 Performance Measurement 194
4.11.2 Implementation Details and the Woven IL Code 197
4.11.3 Another Performance Measurement Example 198
4.12 AOP and Agile Programming Approaches 202
4.13 Summary 206
5. Teaching TWC and AOP 208
5.1 The ERATO Teaching Paradigm and the SPBU.NET Project 209
5.1.1 The ERATO Teaching Paradigm 209
5.1.2 The SPBU.NET Project 212
5.2 The T-ERATO Teaching Paradigm and the TrustSPBU.NET Project 215
5.2.1 The T-ERATO Teaching Paradigm 215
5.2.2 The TrustSPBU.NET Project 217
5.3 Teaching Trustworthy Software Engineering, Including AOP 220
5.3.1 Structure of the Secure Software Engineering Course 220
5.4 Teaching Trustworthy .NET and C# Programming 238
5.4.1 Structure of the Trustworthy .NET and C# Programming Course 239
5.4.2 Structure of the .NET and C# Programming Seminar 249
5.5 Teaching Trustworthy Java Technology 251
5.5.1 Structure of the Java Course 252
5.5.2 Structure of the Java Seminar 257
5.6 Teaching Trustworthy Operating Systems and Networking 260
5.6.1 Structure of the Trustworthy Operating Systems and Networking Course 262
5.7 Teaching Trustworthy Compiler Development 263
5.7.1 Structure of the Trustworthy Compiler Development Course 265
5.7.2 Structure of the Compiler Development Seminar 266
5.8 Summary 268
6. Conclusion 269
6.1 Summary of the Book 269
6.2 Perspectives: Integration of TWC, AOP, Formal Methods, and Knowledge Management 271
6.2.1 Application of Formal Methods to Trustworthy AOP 272
6.2.2 Smart Knowledge-Based AOP 273
6.2.3 AOP Specification and Design Support Tools 273
6.2.4 Trustworthy Reverse Engineering and Refactoring Tools for AOP 274
6.2.5 Aspect-Oriented Modeling on the Basis of Extended UML 275
Appendix: Examples of Aspect.NET Aspects 276
A.1 TestArgs Example 276
A.2 RetTest Example 279
A.3 RetTest2 Example 282
A.4 QuickSort Example 284
A.5 Matrix Example 295
References 321
Index 329