Wiley
Wiley.com
Print this page Share

Using Aspect-Oriented Programming for Trustworthy Software Development

ISBN: 978-0-470-13817-5
338 pages
May 2008
Using Aspect-Oriented Programming for Trustworthy Software Development (0470138173) cover image

Description

Learn how to successfully implement trustworthy computing tasks using aspect-oriented programming

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.

See More

Table of Contents

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 Effi ciency 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 Specifi cation 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

See More

Author Information

Vladimir O. Safonov, PhD, is Professor of the Computer Science Department at St. Petersburg University and the head of the university's Java Technology Laboratory. With some thirty years of experience leading major software projects, developing software, and teaching software technologies, Professor Safonov is one of the leading innovators in computer science and software engineering in Russia. He holds four U.S. software patents and four Russian software patents and has published five books and over eighty papers. He is also a Microsoft Research 2005/2006 RFP winner for TWC and Secure Software Development.
See More
Back to Top