Adaptive Code via C# Agile coding with design patterns and SOLID principles (2014)