Vladimir Safonov

Subscribe to Vladimir Safonov: eMailAlertsEmail Alerts
Get Vladimir Safonov: homepageHomepage mobileMobile rssRSS facebookFacebook twitterTwitter linkedinLinkedIn

Top Stories by Vladimir Safonov

This article is the third part of the series of articles in this journal to describe our Aspect.NET project – an aspect-oriented programming (AOP) framework for Microsoft.NET based on a number of new ideas (for the first two articles, see #4 and 5 in the References section). This article analyzes the advantages of using AOP, presents the current status of Aspect.NET – its design principles, its working version – and gives some practical examples. The evolution of software and the customers’ for it, as well as the needs of the everyday fixing, update, and enhancement of software often lead to poorly understandable and tangled code, with fragments of implementation of quite different functionalities unclearly intermixed in the same software modules.     The AOP approach allows you to define the implementation of crosscutting concerns in separat... (more)

SPBU.NET: Principles and Experience of Teaching .NET, Compilers, Software Engineering, and OS

This article is devoted to my SPBU.NET educational project supported by Microsoft Research in 2004 and accomplished in 2004-2005. The goal of the project was to develop a complex of educational materials on Microsoft.NET, compilers, software engineering, and operating systems, based on my 28 years of teaching and R&D experience at St. Petersburg University. The results of the project [1-6] are uploaded to the Microsoft Developer's Network Academic Alliance Curriculum Repository (MSDNAA CR) Web site in the form of presentations and lecture notes for four courses (in English) and m... (more)

Aspect.NET: Concepts and Architecture

This article presents a new approach to aspect-oriented programming (AOP) - an advanced programming paradigm and technology that supports the separation, design, implementation, location, and updating of crosscutting concerns implemented as aspects. The most common AOP tools - AspectJ, HyperJ, etc., contain a lot of AOP foundation ideas and useful features, but they are focused on Java technology and are currently available as AOP extensions of Java. My approach, on the other hand, takes full advantage of the .NET architecture. It's based on the following principles: aspects for ... (more)


Aspect-oriented programming (AOP) is a new programming paradigm that supports software component reuse and modification. Each application can be regarded as a collection of implementations of ideas or concerns. Some concerns can be implemented as a programming module or a collection of modules. We'll refer to these as modular concerns. Other concerns are referred to as crosscutting concerns. They cannot be implemented by a set of modules only but also require the addition of program fragments, usually executable statements, to the modules implementing other concerns. Two example... (more)

TrustSPBU.NET: Extending University Courses on .NET, Compilers, Software Engineering and OS by Trustworthy Computing Content

This article continues the series devoted to principles of teaching .NET and other modern technologies. The first article described my SPBU.NET educational project and the ERATO (Experience - Retrospective - Analysis - Theory - Oncoming perspectives) teaching paradigm that I use in my courses and seminars on .NET, compilers, software engineering, and operating systems, parts of my SPBU.NET project supported by Microsoft Research in 2004. In 2006, thanks to support from Microsoft Research, I started a new educational project - TrustSPBU.NET. The goal of this project was to add tr... (more)