St Louis Day of.NET 2011 Refactoring to a SOLID Foundation Steve Bohlen Senior Software Engineer SpringSource/VMware Blog:

Slides:



Advertisements
Similar presentations
Jim McKeeth | Podcast at Delphi.org
Advertisements

Writing Unit Tests with Microsoft Fakes Copyright © Intertech, Inc Slide 1 Writing Unit Tests with Microsoft Fakes.
Design Principles & Patterns
Today’s session will be recorded and available 24/7 on What's New in Q for ASP.NET AJAX.
Since 1995, we’ve been building innovative custom solutions specifically designed to meet the unique needs of America’s most recognized companies. If you.
Columbia, Maryland - Summer 2011 Introduction to Agile Principles, Practices, and Processes Steve Bohlen Senior Software Engineer SpringSource/VMware.
St Louis Day of.NET 2011 Taming Dependency Chaos with Inversion of Control Containers Steve Bohlen Senior Software Engineer SpringSource/VMware
General OO Concepts and Principles CSE301 University of Sunderland Harry R. Erwin, PhD.
Lecture 9 Improving Software Design CSC301-Winter 2011 – University of Toronto – Department of Computer Science Hesam C. Esfahani
SOLID Object Oriented Design Craig Berntson
1 Software Maintenance and Evolution CSSE 575: Session 6, Part 1 The “SEAM” Model Steve Chenoweth Office Phone: (812) Cell: (937)
Kansas City Developer Conference 2011 Unit Testing Patterns and Anti-Patterns Steve Bohlen Blog:
Kansas City Developer Conference 2011 Domain Driven Design Implementation Patterns and Considerations in.NET.
Developed by Reneta Barneva, SUNY Fredonia Component Level Design.
St Louis Day of.NET 2011 Unit Testing Patterns and Anti-Patterns Steve Bohlen Senior Software Engineer SpringSource/VMware Blog:
Domain Driven Design Implementation Patterns and Considerations in.NET.
Full day of Sitefinity The process of delivering websites… PlanBuildTestDeliver Plan Idea management EstimationRequirementsScheduling BuildCustomization.
Daniel Levy Solutions Consultant, Telerik Testing Tools Division.
Presenter - Donn Felker.  Senior Consultant for Microsoft Gold Certified Partner- Statêra.  8 years of experience in developing and architecting enterprise.
Building SOLID Software with Dependency Injection Jeremy Rosenberg.
CLASS DESIGN PRINCIPLES Lecture 2. The quality of the architecture What is a good design? It is the design that at least does not have signs of “bad”.
1 OO Design Novosoft, 2001 by V. Mukhortov. 2 OO Design Goals  Flexibility Changes must be localized  Maintainability Modules requiring changes can.
Ch:10 Component Level Design Unit 4. What is Component? A component is a modular building block for computer software Because components reside within.
Company Confidential – Do Not Duplicate 2 Copyright 2008 McLane Advanced Technologies, LLC S.O.L.I.D. Software Development Achieving Object Oriented Principles,
© 2004 Capgemini - All rights reserved SOLID - OO DESIGN PRINCIPLES Andreas Enbohm, Capgemini.
WEB &.NET Web development trends in.NET World. Sanjay Jagarlamudi Associate Director at MATRIX Founder Dallas HTML5 Group Father of two girls.
Introduction to SOLID Principles. Background Dependency Inversion Principle Single Responsibility Principle Open/Closed Principle Liskov Substitution.
S.O.L.I.D. Software Development 12 January 2010 (Martin Verboon, Patrick Kalkman, Stan Verdiesen)
SOLID Principles in Software Design
SWE © Solomon Seifu ELABORATION. SWE © Solomon Seifu Lesson 12-5 Software Engineering Design Goals.
Alcatel-Lucent CDC Workshop, Coaching & Knowledge Transfer Coding.
The benefits of SOLID in software development Ruben Agudo Santos (GS-AIS-HR)
Using Mock Objects with Test Driven Development Justin Kohlhepp
Jean-Claude Trachsel Senior Consultant Trivadis AG.
 What is SOLID  The S in SOLID  The O in SOLID  The L in SOLID  The I in SOLID  The D in SOLID  Questions.
Incremental Design Why incremental design? Goal of incremental design Tools for incremental design  UML diagrams  Design principles  Design patterns.
Elements of OO Abstraction Encapsulation Modularity Hierarchy: Inheritance & Aggregation 4 major/essential elements3 minor/helpful elements Typing Concurrency.
OO Design Principles Copyright © Vyacheslav Mukhortov, Nikita Nyanchuk-Tatarskiy, Copyright © INTEKS LLC,
1 Software Engineering: A Practitioner’s Approach, 6/e Chapter 11a: Component-Level Design Software Engineering: A Practitioner’s Approach, 6/e Chapter.
Design for testability as a way to good coding Simone Chiaretta Architect, Council of the EU December 9 th,
High Cohesion Low Coupling Old Standards for Object Oriented Programming.
Five design principles
Refactoring Advanced Software Engineering Dr Nuha El-Khalili.
CHAPTER 3 MODELING COMPONENT-LEVEL DESIGN.
Principles of Object Oriented Design
PRINCIPLES OF OBJECT ORIENTED DESIGN S.O.L.I.D. S.O.L.I.D Principles What is SOLID?  Acrostic of 5 Principles:  The Single Responsibility Principle.
SOLID Design Principles
SOLID Principles in Software Design
Dependency Inversion Principle Jon McBee Principal Software Engineer Ultratech CNT.
Session 33 More on SOLID Steve Chenoweth Office: Moench Room F220 Phone: (812) Chandan Rupakheti Office: Moench.
SOLID PHP & Code Smell Wrap-Up
Liskov Substitution Principle Jon McBee CLA, CLED, CTD, CPI, LabVIEW Champion.
Microsoft Advertising 16:9 Template Light Use the slides below to start the design of your presentation. Additional slides layouts (title slides, tile.
Clean Code and How to Achieve Zero Defects Jason Jolley Director, Application Development Micro Strategies, Inc.
Beginning Software Craftsmanship Brendan Enrick Steve Smith
Mantas Radzevičius ifm-2/2
Interface Segregation / Dependency Inversion
Course information Old exam Resit Report Result and walkthrough
Dependency Inversion Principle
Software Architecture & Difference from Design
Copyright © by Curt Hill
Software Re-engineering - Theoretical and Practical Approaches
Tech·Ed North America /18/ :26 AM
תכנות אסינכרוני, תקשורת ופיתוח אפליקציות ל-Windows 8
11/29/2018 © 2014 Microsoft Corporation. All rights reserved. Microsoft, Windows, and other product names are or may be registered trademarks and/or trademarks.
A (partial) blueprint for dealing with change
European conference.
Object Oriented Design & Analysis
Some principles for object oriented design
Liskov Substitution Principle (LSP)
Presentation transcript:

St Louis Day of.NET 2011 Refactoring to a SOLID Foundation Steve Bohlen Senior Software Engineer SpringSource/VMware Blog:

St Louis Day of.NET 2011 Sleep is for Wimps!

St Louis Day of.NET 2011 Indulge Yourself!

St Louis Day of.NET 2011 Get your LEARN on!

St Louis Day of.NET 2011 Do I suck? Let me (and the world) know!

St Louis Day of.NET 2011 Who am I? …and why should you care? Steve Bohlen I Read Books + Write Software vs. “Read Software + Write Books” Blog, Screencast, Speak, Share, Learn

St Louis Day of.NET 2011 Steve Bohlen Nearly 20 years developing software LISP, Delphi, C/C++, VB, VB.NET, C# Senior Engineer Springsource/VMware Co-Founder, NYC Alt.Net User Group Co-Organizer, NYC DDD User Group Contributor: various OSS projects NHibernate NDbUnit Spring.NET blog:

St Louis Day of.NET 2011 RAD Controls for ASP.NET AJAX RAD Controls for Silverlight RAD Controls for Windows Phone RAD Controls for Winforms RAD Controls for WPF Telerik Reporting Telerik OpenAccess ORM Telerik JustCode Telerik JustMock Telerik Extensions for ASP.NET MVC Test Studio Express Telerik TeamPulse Telerik Test Studio Sitefinity CMS Telerik JustDecompile C#/VB.NET Converter ASPX to Razor Converter

St Louis Day of.NET 2011

Disciplined technique Restructuring an existing body of code Altering its internal structure without changing its external behavior A series of small behavior-preserving transformations Each 'refactoring’ does little by itself A sequence of transformations can produce a significant restructuring Each refactoring is small so it's less likely to go wrong The system is kept fully working after each small refactoring Refactoring

St Louis Day of.NET 2011

Refactoring Tools Developer Express CodeRush JetBrains Resharper Telerik JustCode Visual Studio Professional Notepad!

St Louis Day of.NET 2011

Introduction to S.O.L.I.D. SOLIDSOLID ingle Responsibility Principle RP CP SP SP IP pen-Close Principle iskov Substitution Principle nterface Segregation Principle ependency Inversion Principle

St Louis Day of.NET 2011 Introduction to S.O.L.I.D. SOLIDSOLID ingle Responsibility Principle pen-Close Principle iskov Substitution Principle nterface Segregation Principle ependency Inversion Principle

St Louis Day of.NET 2011

Single Responsibility Principle There should never be more than one reason for a class to change.

St Louis Day of.NET 2011 Refactoring to a S.O.L.I.D. Foundation SRP Demo

St Louis Day of.NET 2011 Introduction to S.O.L.I.D. SOLIDSOLID ingle Responsibility Principle pen-Close Principle iskov Substitution Principle nterface Segregation Principle ependency Inversion Principle

St Louis Day of.NET 2011

Open-Closed Principle Software Entities (Classes, Modules, Functions, etc.)should be Open for Extension, but Closed for Modification.

St Louis Day of.NET 2011 Refactoring to a S.O.L.I.D. Foundation OCP Demo

St Louis Day of.NET 2011 Introduction to S.O.L.I.D. SOLIDSOLID ingle Responsibility Principle pen-Close Principle iskov Substitution Principle nterface Segregation Principle ependency Inversion Principle

St Louis Day of.NET 2011

Liskov Substitution Principle If for each object o 1 of type S there is an object o 2 of type T such that for all programs P defined in terms of T, the behavior of P is unchanged when o 1 is substituted for o 2, then S is a subtype of T. WTF ?!?

St Louis Day of.NET 2011 Liskov Substitution Principle Functions that use pointers or references to base classes must be able to use objects of derived classes without knowing it.

St Louis Day of.NET 2011 Refactoring to a S.O.L.I.D. Foundation LSP Demo

St Louis Day of.NET 2011 Introduction to S.O.L.I.D. SOLIDSOLID ingle Responsibility Principle pen-Close Principle iskov Substitution Principle nterface Segregation Principle ependency Inversion Principle

St Louis Day of.NET 2011

Interface Segregation Principle Clients should not be forced to depend upon interfaces that they do not use.

St Louis Day of.NET 2011 Refactoring to a S.O.L.I.D. Foundation ISP Demo

St Louis Day of.NET 2011 Introduction to S.O.L.I.D. SOLIDSOLID ingle Responsibility Principle pen-Close Principle iskov Substitution Principle nterface Segregation Principle ependency Inversion Principle

St Louis Day of.NET 2011

Dependency Inversion Principle High Level Modules should not depend upon Low Level Modules. Both should depend upon abstractions. Abstractions should not depend upon details. Details should depend upon abstractions.

St Louis Day of.NET 2011 Refactoring to a S.O.L.I.D. Foundation DIP Demo

St Louis Day of.NET 2011 Thinking About Re-Assembly Presto!

St Louis Day of.NET 2011 Dependency Injection Frameworks StructureMap Spring.NET Castle Windsor NInject Funq Unity More…

St Louis Day of.NET 2011 Refactoring to a S.O.L.I.D. Foundation Closing Thoughts

St Louis Day of.NET 2011

fini Steve Bohlen Senior Software Engineer SpringSource/VMware Blog: