Everything on Category: Software Engineering

My new talk about .NET Threading is online

2017-02-03 at 12:48 0 comments

My new talk about .NET Threading that I held last Monday at the .NET User Group Regensburg is now online. In it, we’ll take a look behind the curtain of threads, the thread pool, tasks and async await as well as lock-free programming.

Continue reading

More on Design by Contract: Assertions and Inheritance

2016-05-07 at 14:36 0 comments

My previous two posts about Bertrand Meyer’s Design by Contract (DbC) were mainly introductions to pre- and post-conditions and class invariants and how they can be implemented in C# – in this one we’ll check out what implications DbC has if it is combined with the inheritance mechanism of object-oriented programming languages.

Continue reading

My Design by Contract Talk is Online

2016-01-30 at 14:36 0 comments

If you happen to speak German, you can watch the video of my latest talk at the .NET User Group Regensburg which I held on last Monday, the 25th. of January. In it, we discuss the basics of Design by Contract with its Pre- and Post-Condtions, Class Invariants, and Variants and Invariants for loops as well as a framework called Code Contracts that provides functionality to introduce DbC in .NET. Furthermore, we check out alternatives to Code Contracts and the importance of executable specifications.

Continue reading

More on Design by Contract: Class Invariants

2015-10-07 at 20:25 0 comments

In one of my last posts, I discussed the basics of Bertrand Meyer’s Design by Contract, namely pre- and post-conditions on methods. These Boolean assertions are used to check if the caller supplied valid arguments and performed the call while the target object was in a valid state, as well as to verify that the method produced the correct return value and/or side effects after it executed completely. This allows us to give semantical meaning to methods on our objects.

Continue reading

Avoid the internal modifier by default

2015-09-27 at 16:29 0 comments

In one of his recent posts, Mark Seemann argued that you should not use the internal modifier for types and their members, because this decreases the testability of your code. While I totally agree with him on the subject, I want to highlight another reason for not using internal: the extensibility of your reusable code bases.

Continue reading