Steve Bohlen

SpringSource

Senior Software Engineer

  • Refactoring to a S.O.L.I.D. Foundation

    In this session we take a small, functional but tightly-coupled, software solution and improve its design using each of Robert C. Martin's S.O.L.I.D. principles as follows: SRP: Single Responsibility Principle; OCP: Open-Close Principle; LSP: Liskov Substitution Principle; ISP: Interface Segregation Principle; DIP: Dependency Inversion Principle. Each principle is applied in sequence to the existing solution, making it possible for the attendee to observe the principle in relative isolation first while also evolving an understanding of how the principles all collaboratively reinforce each other when applied together. Before each principle is applied and the solution is refactored to introduce it, the attendee is presented with one or two simple PowerPoint slides to introduce the concept and provide some abstract understanding of its goals and benefits to OO programming. The principle is then applied to the existing solution, demonstrating the practical application of the principle to working software. At each step along the way, the existing solution (a simple console application) is re-executed, demonstrating that the overall behavior of the software solution has not been negatively impacted by the various refactorings.

    Level: 100

    Speaker: Steve Bohlen

    Topics: Architecture

  • Unit Testing Patterns and Anti-Patterns

    Trying to unit test your code but finding that you end up with brittle, hard-to-maintain unit tests that are taking more and more of your time to keep current as your production code evolves? Do you KNOW you should be writing tests, but just cannot find an efficient way to do so? Then this talk is for YOU! Effective unit testing is more art than science -- in this talk we'll look at both Patterns and Anti-Patterns for writing, organizing, and designing efficient, effective unit tests that help to ensure your tests continue to add value to your project throughout its evolution rather than becoming an anchor that weighs down your progress and impedes your speed! Learn both what to do and what NOT to do from someone who has been writing unit tests for over ten years! Attendees should have at least some familiarity with basic unit testing frameworks (using Asserts, etc.) and be comfortable with general C# language constructs.

    Level: 200

    Speaker: Steve Bohlen

    Topics: Unit Testing

  • Taming Dependency Chaos with Inversion of Control Containers

    If a little decomposition is good, then A LOT of decomposition is better right? Well, maybe not :) In this talk, we'll take a look at understanding the intent behind Dependency Injection, understand the value of following the Single Responsibility Principle in our OO designs, and investigate the trouble that blind adherence to this pattern can often cause in our projects. To solve these problems, we'll dig into the benefits of using an Inversion-of-Control (IoC) container, explore just what's really going on under the hood with these things, and understand patterns and anti-patterns for their use in our code. Attendees should possess good intermediate C# language skills and understand core OO design principles.

    Level: 200

    Speaker: Steve Bohlen

    Topics: Architecture