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 | |
|
|
15 | |
|
|
23 | |
|
|
25 | |
|
|
27 | |
|
2.4 Software Engineering Technologies and Tools for TWC |
|
|
30 | |
|
|
31 | |
|
|
31 | |
|
|
34 | |
|
2.5.3 .NET and Reliability |
|
|
37 | |
|
2.5.4 .NET TWC Tools FxCop and Spec# |
|
|
39 | |
|
|
42 | |
|
|
42 | |
|
|
44 | |
|
2.6.3 Java and Reliability |
|
|
46 | |
|
|
48 | |
|
|
49 | |
3. Aspect-Oriented Programming and Aspect.NET |
|
50 | |
|
|
50 | |
|
|
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 | |
|
|
73 | |
|
|
76 | |
|
|
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 | |
|
|
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 | |
|
|
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 | |
|
|
|
|
123 | |
|
|
125 | |
4. Principles and Application of AOP in TWC |
|
128 | |
|
4.1 AOP and TWC: Cooperation Rather Than Violation |
|
|
128 | |
|
|
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 | |
|
|
149 | |
|
|
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 | |
|
|
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 | |
|
|
268 | |
6. Conclusion |
|
269 | |
|
|
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 1 |
|
|
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 | |
|
|
276 | |
|
|
279 | |
|
|
282 | |
|
|
284 | |
|
|
295 | |
References |
|
321 | |
Index |
|
329 | |