SlideShare a Scribd company logo
SOLID
Single Responsibility Principle
           Open/Closed Principle

                       Dennis van der Stelt               Pascal de Jonge
                          Software Architect            Development Lead
                                      Tellus                         Tellus
      http://bloggingabout.net/blogs/dennis/   http://www.pazquality.com/
                                  @dvdstelt                   @pdejonge
                        dvdstelt@tellus.com           pdejonge@tellus.com




                                                    Software Development Network 2013
Software Development Network 2013
AGENDA




         Software Development Network 2013
SOLID
History




          Software Development Network 2013
Guidance




   Software Development Network 2013
SOLID
Five principles




       Single Responsibility                        SOLID                   Open/Closed




        Liskov Substitution                 Interface Seggregation      Dependency Inversion




     Learn them, love them, live by them…




                                                                     Software Development Network 2013
Software Craftsmanship
is really, really, ridiculously good looking code


                                            Software Development Network 2013
SOLID
Books




        Software Development Network 2013
SOLID
Single Responsibility Principle




                                  Software Development Network 2013
SINGLE RESPONSIBILITY PRINCIPLE




                 there should never be more than
                 one reason for a class to change




                                  Software Development Network 2013
SINGLE RESPONSIBILITY PRINCIPLE




 just because you can, doesn’t mean you should

                                  Software Development Network 2013
SINGLE RESPONSIBILITY PRINCIPLE


Rules that apply to classes
 rule                                            rule   same goes for methods,
           they should be small                         which we count by #
01                                               03     lines
 rule                                            rule
           they should be smaller                       how to measure class
02         than that                             04     size?


        Responsibility : “a reason for change”




                                                              Software Development Network 2013
SINGLE RESPONSIBILITY PRINCIPLE
Why would we want to separate responsibilities?




                                                  Software Development Network 2013
SINGLE RESPONSIBILITY PRINCIPLE
Why would we want to separate responsibilities?




                                                  Software Development Network 2013
SINGLE RESPONSIBILITY PRINCIPLE

Sometimes hard to see…
interface IModem
{
    void Dial(string phoneNumber);
    void Hangup();
    void Send(char c);
    char Receive();
}




                                     Software Development Network 2013
SINGLE RESPONSIBILITY PRINCIPLE
 public interface IConnection
 {
     void Dial(string phoneNumber);
     void Hangup();
 }


 public interface IDataChannel
 {
     void Send(char c);
     char Receive();
 }


 public class Modem
 {
     public Modem(IConnection connection, IDataChannel dataChannel)
     {
         // ...
     }
 }


                                                                 Software Development Network 2013
SINGLE RESPONSIBILITY PRINCIPLE

                     Rule of thumb
             If you can’t come up with a
  name for your class, it’s probably doing too much!




                                        Software Development Network 2013
DEMO
InvoiceCreator




                 Software Development Network 2013
SINGLE RESPONSIBILITY PRINCIPLE
 Violation


• God class unneeded complexity
  Don’t create
• However
   public class OrderService
  {
      public   Order Get(int orderId) { }
      public   Order Get(string name) { }
      public   Order Save(Order order) { }
      public   Order SubmitOrder(Order order) { }
      public   void CancelOrder(Order order) { }
      public   void ProcessOrderReturn(int orderId) { }
      public   void ShipOrder(Order order) { }
  }


                                               Software Development Network 2013
more classes != more
      complex




                       Software Development Network 2013
Software Development Network 2013
SOLID
Open/Closed Principle




                        Software Development Network 2013
OPEN/CLOSED PRINCIPLE




               software entities should be open for
                    extension, but closed for
                          modification




                                 Software Development Network 2013
OPEN/CLOSED PRINCIPLE
Non changed code doesn’t need new…




                                     Software Development Network 2013
DEMO
Useful patterns




                  Software Development Network 2013
TEMPLATE METHOD PATTERN



           AbstractBase class
 Program          Initialize
               SendMessage
                  Finalize
                  Execute

           EmailSende
           r

               SendMessage




                                Software Development Network 2013
Software Development Network 2013
CONCLUSION




  Single Responsibility           SOLID                   Open/Closed




   Liskov Substitution    Interface Seggregation      Dependency Inversion




                                                   Software Development Network 2013
Thank you
                                            questions?

                 Dennis van der Stelt               Pascal de Jonge
                    Software Architect            Development Lead
                                Tellus                         Tellus
http://bloggingabout.net/blogs/dennis/   http://www.pazquality.com/
                            @dvdstelt                   @pdejonge
                  dvdstelt@tellus.com           pdejonge@tellus.com




                                                                        33
                                              Software Development Network 2013

More Related Content

PPTX
Object Oriented Design SOLID Principles
rainynovember12
 
PPTX
SOLID Principles of Refactoring Presentation - Inland Empire User Group
Adnan Masood
 
PDF
Introduction to SOLID Principles
Ganesh Samarthyam
 
PDF
Solid Principle
Murali Pachiyappan
 
PDF
SOLID Design principles
Mohamed Sanaulla
 
ODP
Geecon09: SOLID Design Principles
Bruno Bossola
 
PPT
The OO Design Principles
Steve Zhang
 
PDF
Solid principles of oo design
Confiz
 
Object Oriented Design SOLID Principles
rainynovember12
 
SOLID Principles of Refactoring Presentation - Inland Empire User Group
Adnan Masood
 
Introduction to SOLID Principles
Ganesh Samarthyam
 
Solid Principle
Murali Pachiyappan
 
SOLID Design principles
Mohamed Sanaulla
 
Geecon09: SOLID Design Principles
Bruno Bossola
 
The OO Design Principles
Steve Zhang
 
Solid principles of oo design
Confiz
 

What's hot (20)

PDF
SOLID Design Principles applied in Java
Ionut Bilica
 
PDF
Object Oriented Design Principles
Thang Tran Duc
 
KEY
SOLID Design Principles
Samuel Breed
 
PPTX
Learning solid principles using c#
Aditya Kumar Rajan
 
PPTX
Writing Maintainable Software Using SOLID Principles
Doug Jones
 
PPT
3.o o design -_____________lecture 3
Warui Maina
 
PPTX
S.O.L.I.D. Principles for Software Architects
Ricardo Wilkins
 
PPT
Principle of OOD
Jon Kartago Lamida
 
PDF
Introduction to Object Oriented Design
Oleg Yaroshevych
 
PDF
Refactoring for Software Design Smells
Ganesh Samarthyam
 
PPTX
Refactoring Applications using SOLID Principles
Steven Smith
 
PPTX
IoC and Mapper in C#
Huy Hoàng Phạm
 
PPTX
Solid principles
Monica Rodrigues
 
KEY
"SOLID" Object Oriented Design Principles
Serhiy Oplakanets
 
PDF
The Open Closed Principle - Part 1 - The Original Version
Philip Schwarz
 
PPT
Design poo my_jug_en_ppt
agnes_crepet
 
PDF
Applying Design Principles in Practice
Tushar Sharma
 
PPTX
CodeCamp Iasi 10 march 2012 - Scratching-SOLID
Codecamp Romania
 
PPT
Design Smells
Giorgio Vespucci
 
ODP
Principles of Object Oriented Design
Jon Kartago Lamida
 
SOLID Design Principles applied in Java
Ionut Bilica
 
Object Oriented Design Principles
Thang Tran Duc
 
SOLID Design Principles
Samuel Breed
 
Learning solid principles using c#
Aditya Kumar Rajan
 
Writing Maintainable Software Using SOLID Principles
Doug Jones
 
3.o o design -_____________lecture 3
Warui Maina
 
S.O.L.I.D. Principles for Software Architects
Ricardo Wilkins
 
Principle of OOD
Jon Kartago Lamida
 
Introduction to Object Oriented Design
Oleg Yaroshevych
 
Refactoring for Software Design Smells
Ganesh Samarthyam
 
Refactoring Applications using SOLID Principles
Steven Smith
 
IoC and Mapper in C#
Huy Hoàng Phạm
 
Solid principles
Monica Rodrigues
 
"SOLID" Object Oriented Design Principles
Serhiy Oplakanets
 
The Open Closed Principle - Part 1 - The Original Version
Philip Schwarz
 
Design poo my_jug_en_ppt
agnes_crepet
 
Applying Design Principles in Practice
Tushar Sharma
 
CodeCamp Iasi 10 march 2012 - Scratching-SOLID
Codecamp Romania
 
Design Smells
Giorgio Vespucci
 
Principles of Object Oriented Design
Jon Kartago Lamida
 
Ad

Viewers also liked (20)

PPTX
Open Closed Principle kata
Paul Blundell
 
PPTX
Dependency Inversion Principle
Marco Mangia Musardo
 
PPTX
SOLID Principles part 2
Dennis van der Stelt
 
PPT
Smolen Alex Securing The Mvc Architecture Part Two
alsmola
 
PPTX
Solid principles
Viet Vu
 
ODP
Open Close Principle
Thaichor Seng
 
PDF
jeas_0816_4883
Saurabh Parkhe
 
PDF
[Webinar] Refatoração em PHP
KingHost - Hospedagem de sites
 
PPTX
Implementing The Open/Closed Principle
Sam Hennessy
 
PPTX
The Style of C++ 11
Sasha Goldshtein
 
PPTX
Idiomatic C++
Federico Ficarelli
 
PDF
Distributed Systems Design
Dennis van der Stelt
 
PPT
STL ALGORITHMS
fawzmasood
 
PPT
Operator overloading
farhan amjad
 
PPTX
Improving The Quality of Existing Software
Steven Smith
 
PPT
C++ Advanced
Vivek Das
 
PPTX
Web Service Basics and NWS Setup
Northeastern University
 
PPTX
Bjarne Stroustrup - The Essence of C++: With Examples in C++84, C++98, C++11,...
Complement Verb
 
PPTX
SOLID principles
Jonathan Holloway
 
PPT
Operator overloading
Northeastern University
 
Open Closed Principle kata
Paul Blundell
 
Dependency Inversion Principle
Marco Mangia Musardo
 
SOLID Principles part 2
Dennis van der Stelt
 
Smolen Alex Securing The Mvc Architecture Part Two
alsmola
 
Solid principles
Viet Vu
 
Open Close Principle
Thaichor Seng
 
jeas_0816_4883
Saurabh Parkhe
 
[Webinar] Refatoração em PHP
KingHost - Hospedagem de sites
 
Implementing The Open/Closed Principle
Sam Hennessy
 
The Style of C++ 11
Sasha Goldshtein
 
Idiomatic C++
Federico Ficarelli
 
Distributed Systems Design
Dennis van der Stelt
 
STL ALGORITHMS
fawzmasood
 
Operator overloading
farhan amjad
 
Improving The Quality of Existing Software
Steven Smith
 
C++ Advanced
Vivek Das
 
Web Service Basics and NWS Setup
Northeastern University
 
Bjarne Stroustrup - The Essence of C++: With Examples in C++84, C++98, C++11,...
Complement Verb
 
SOLID principles
Jonathan Holloway
 
Operator overloading
Northeastern University
 
Ad

Similar to SOLID Principles part 1 (20)

PDF
ElizabethPrattConsulting_DellPortfolio
Liz Pratt
 
PPTX
JDXA, The KISS ORM for Android
Damodar Periwal
 
PPTX
It’s All About Developers. Discover Cisco DevNet. - Jason Goecke - Codemotion...
Codemotion
 
PDF
Are You a SOLID Coder?
Steve Green
 
PDF
Curious Coders Java Web Frameworks Comparison
Hamed Hatami
 
PDF
Create first android app with MVVM Architecture
khushbu thakker
 
PPTX
Applying DevOps, PaaS and cloud for better citizen service outcomes - IBM Fe...
Sanjeev Sharma
 
PDF
From desktop to the cloud, cutting costs with Virtual kubelet and ACI
Adi Polak
 
PDF
GDSC NIET ORIENTATION ).pdf
YashiGupta410690
 
PPTX
.NET Architecture for Enterprises
Wade Wegner
 
PDF
JAVA Magazine Sep-Oct 2013
Erik Gur
 
PDF
Pense fora da caixa: Aplique Agilidade com Domain Driven Design. VocĂŞ ainda u...
Yan Justino
 
PPTX
Dependency Injection, Design Principles and Patterns
Juan Lopez
 
PDF
Deploy Angular to the Cloud
Simona Cotin
 
ODP
Intro to Open Cloud Initiative
John Mark Walker
 
PDF
Clean Architecture
NSCoder Mexico
 
PPT
bGenius kennissessie_20120510
bgenius
 
PPTX
Gdsc lbce offline accelerator meet -1
Diksha71
 
PDF
CampDevOps keynote - DevOps: Using 'Lean' to eliminate Bottlenecks
Sanjeev Sharma
 
PDF
JavaOne 2015: 14 Key Lessons, you should learn
ACA IT-Solutions
 
ElizabethPrattConsulting_DellPortfolio
Liz Pratt
 
JDXA, The KISS ORM for Android
Damodar Periwal
 
It’s All About Developers. Discover Cisco DevNet. - Jason Goecke - Codemotion...
Codemotion
 
Are You a SOLID Coder?
Steve Green
 
Curious Coders Java Web Frameworks Comparison
Hamed Hatami
 
Create first android app with MVVM Architecture
khushbu thakker
 
Applying DevOps, PaaS and cloud for better citizen service outcomes - IBM Fe...
Sanjeev Sharma
 
From desktop to the cloud, cutting costs with Virtual kubelet and ACI
Adi Polak
 
GDSC NIET ORIENTATION ).pdf
YashiGupta410690
 
.NET Architecture for Enterprises
Wade Wegner
 
JAVA Magazine Sep-Oct 2013
Erik Gur
 
Pense fora da caixa: Aplique Agilidade com Domain Driven Design. VocĂŞ ainda u...
Yan Justino
 
Dependency Injection, Design Principles and Patterns
Juan Lopez
 
Deploy Angular to the Cloud
Simona Cotin
 
Intro to Open Cloud Initiative
John Mark Walker
 
Clean Architecture
NSCoder Mexico
 
bGenius kennissessie_20120510
bgenius
 
Gdsc lbce offline accelerator meet -1
Diksha71
 
CampDevOps keynote - DevOps: Using 'Lean' to eliminate Bottlenecks
Sanjeev Sharma
 
JavaOne 2015: 14 Key Lessons, you should learn
ACA IT-Solutions
 

More from Dennis van der Stelt (16)

PDF
Change your architecture during deployment
Dennis van der Stelt
 
PDF
Dealing with eventual consistency
Dennis van der Stelt
 
PDF
Dealing with eventual consistency
Dennis van der Stelt
 
PDF
Death of the batch job
Dennis van der Stelt
 
PDF
Death of the batch job - NServiceBus Sagas
Dennis van der Stelt
 
PDF
Distributed Systems Principles
Dennis van der Stelt
 
PDF
Building reliable applications with messaging
Dennis van der Stelt
 
PDF
Distributed Systems principles
Dennis van der Stelt
 
PDF
Een andere kijk op Microservices
Dennis van der Stelt
 
PDF
Duplicating data or replicating data in Micro Services
Dennis van der Stelt
 
PDF
LIDNUG : Reliable applications with messaging
Dennis van der Stelt
 
PPTX
Silverlight & WCF RIA
Dennis van der Stelt
 
PPTX
Test Driven Development
Dennis van der Stelt
 
PPTX
AppFabric Velocity
Dennis van der Stelt
 
PPTX
Continuous integration
Dennis van der Stelt
 
PPTX
App fabric introduction
Dennis van der Stelt
 
Change your architecture during deployment
Dennis van der Stelt
 
Dealing with eventual consistency
Dennis van der Stelt
 
Dealing with eventual consistency
Dennis van der Stelt
 
Death of the batch job
Dennis van der Stelt
 
Death of the batch job - NServiceBus Sagas
Dennis van der Stelt
 
Distributed Systems Principles
Dennis van der Stelt
 
Building reliable applications with messaging
Dennis van der Stelt
 
Distributed Systems principles
Dennis van der Stelt
 
Een andere kijk op Microservices
Dennis van der Stelt
 
Duplicating data or replicating data in Micro Services
Dennis van der Stelt
 
LIDNUG : Reliable applications with messaging
Dennis van der Stelt
 
Silverlight & WCF RIA
Dennis van der Stelt
 
Test Driven Development
Dennis van der Stelt
 
AppFabric Velocity
Dennis van der Stelt
 
Continuous integration
Dennis van der Stelt
 
App fabric introduction
Dennis van der Stelt
 

Recently uploaded (20)

PDF
Responsible AI and AI Ethics - By Sylvester Ebhonu
Sylvester Ebhonu
 
PDF
Structs to JSON: How Go Powers REST APIs
Emily Achieng
 
PDF
Peak of Data & AI Encore - Real-Time Insights & Scalable Editing with ArcGIS
Safe Software
 
PPTX
What-is-the-World-Wide-Web -- Introduction
tonifi9488
 
PPTX
AI in Daily Life: How Artificial Intelligence Helps Us Every Day
vanshrpatil7
 
PPTX
Dev Dives: Automate, test, and deploy in one place—with Unified Developer Exp...
AndreeaTom
 
PPTX
Agile Chennai 18-19 July 2025 | Emerging patterns in Agentic AI by Bharani Su...
AgileNetwork
 
PPTX
Agile Chennai 18-19 July 2025 Ideathon | AI Powered Microfinance Literacy Gui...
AgileNetwork
 
PDF
Get More from Fiori Automation - What’s New, What Works, and What’s Next.pdf
Precisely
 
PDF
AI-Cloud-Business-Management-Platforms-The-Key-to-Efficiency-Growth.pdf
Artjoker Software Development Company
 
PDF
How ETL Control Logic Keeps Your Pipelines Safe and Reliable.pdf
Stryv Solutions Pvt. Ltd.
 
PPTX
Introduction to Flutter by Ayush Desai.pptx
ayushdesai204
 
PDF
Economic Impact of Data Centres to the Malaysian Economy
flintglobalapac
 
PDF
Orbitly Pitch Deck|A Mission-Driven Platform for Side Project Collaboration (...
zz41354899
 
PDF
GDG Cloud Munich - Intro - Luiz Carneiro - #BuildWithAI - July - Abdel.pdf
Luiz Carneiro
 
PDF
CIFDAQ's Market Wrap : Bears Back in Control?
CIFDAQ
 
PDF
Using Anchore and DefectDojo to Stand Up Your DevSecOps Function
Anchore
 
PDF
Unlocking the Future- AI Agents Meet Oracle Database 23ai - AIOUG Yatra 2025.pdf
Sandesh Rao
 
PPTX
The Future of AI & Machine Learning.pptx
pritsen4700
 
PPTX
New ThousandEyes Product Innovations: Cisco Live June 2025
ThousandEyes
 
Responsible AI and AI Ethics - By Sylvester Ebhonu
Sylvester Ebhonu
 
Structs to JSON: How Go Powers REST APIs
Emily Achieng
 
Peak of Data & AI Encore - Real-Time Insights & Scalable Editing with ArcGIS
Safe Software
 
What-is-the-World-Wide-Web -- Introduction
tonifi9488
 
AI in Daily Life: How Artificial Intelligence Helps Us Every Day
vanshrpatil7
 
Dev Dives: Automate, test, and deploy in one place—with Unified Developer Exp...
AndreeaTom
 
Agile Chennai 18-19 July 2025 | Emerging patterns in Agentic AI by Bharani Su...
AgileNetwork
 
Agile Chennai 18-19 July 2025 Ideathon | AI Powered Microfinance Literacy Gui...
AgileNetwork
 
Get More from Fiori Automation - What’s New, What Works, and What’s Next.pdf
Precisely
 
AI-Cloud-Business-Management-Platforms-The-Key-to-Efficiency-Growth.pdf
Artjoker Software Development Company
 
How ETL Control Logic Keeps Your Pipelines Safe and Reliable.pdf
Stryv Solutions Pvt. Ltd.
 
Introduction to Flutter by Ayush Desai.pptx
ayushdesai204
 
Economic Impact of Data Centres to the Malaysian Economy
flintglobalapac
 
Orbitly Pitch Deck|A Mission-Driven Platform for Side Project Collaboration (...
zz41354899
 
GDG Cloud Munich - Intro - Luiz Carneiro - #BuildWithAI - July - Abdel.pdf
Luiz Carneiro
 
CIFDAQ's Market Wrap : Bears Back in Control?
CIFDAQ
 
Using Anchore and DefectDojo to Stand Up Your DevSecOps Function
Anchore
 
Unlocking the Future- AI Agents Meet Oracle Database 23ai - AIOUG Yatra 2025.pdf
Sandesh Rao
 
The Future of AI & Machine Learning.pptx
pritsen4700
 
New ThousandEyes Product Innovations: Cisco Live June 2025
ThousandEyes
 

SOLID Principles part 1

  • 1. SOLID Single Responsibility Principle Open/Closed Principle Dennis van der Stelt Pascal de Jonge Software Architect Development Lead Tellus Tellus http://bloggingabout.net/blogs/dennis/ http://www.pazquality.com/ @dvdstelt @pdejonge [email protected] [email protected] Software Development Network 2013
  • 3. AGENDA Software Development Network 2013
  • 4. SOLID History Software Development Network 2013
  • 5. Guidance Software Development Network 2013
  • 6. SOLID Five principles Single Responsibility SOLID Open/Closed Liskov Substitution Interface Seggregation Dependency Inversion Learn them, love them, live by them… Software Development Network 2013
  • 7. Software Craftsmanship is really, really, ridiculously good looking code Software Development Network 2013
  • 8. SOLID Books Software Development Network 2013
  • 9. SOLID Single Responsibility Principle Software Development Network 2013
  • 10. SINGLE RESPONSIBILITY PRINCIPLE there should never be more than one reason for a class to change Software Development Network 2013
  • 11. SINGLE RESPONSIBILITY PRINCIPLE just because you can, doesn’t mean you should Software Development Network 2013
  • 12. SINGLE RESPONSIBILITY PRINCIPLE Rules that apply to classes rule rule same goes for methods, they should be small which we count by # 01 03 lines rule rule they should be smaller how to measure class 02 than that 04 size? Responsibility : “a reason for change” Software Development Network 2013
  • 13. SINGLE RESPONSIBILITY PRINCIPLE Why would we want to separate responsibilities? Software Development Network 2013
  • 14. SINGLE RESPONSIBILITY PRINCIPLE Why would we want to separate responsibilities? Software Development Network 2013
  • 15. SINGLE RESPONSIBILITY PRINCIPLE Sometimes hard to see… interface IModem { void Dial(string phoneNumber); void Hangup(); void Send(char c); char Receive(); } Software Development Network 2013
  • 16. SINGLE RESPONSIBILITY PRINCIPLE public interface IConnection { void Dial(string phoneNumber); void Hangup(); } public interface IDataChannel { void Send(char c); char Receive(); } public class Modem { public Modem(IConnection connection, IDataChannel dataChannel) { // ... } } Software Development Network 2013
  • 17. SINGLE RESPONSIBILITY PRINCIPLE Rule of thumb If you can’t come up with a name for your class, it’s probably doing too much! Software Development Network 2013
  • 18. DEMO InvoiceCreator Software Development Network 2013
  • 19. SINGLE RESPONSIBILITY PRINCIPLE Violation • God class unneeded complexity Don’t create • However public class OrderService { public Order Get(int orderId) { } public Order Get(string name) { } public Order Save(Order order) { } public Order SubmitOrder(Order order) { } public void CancelOrder(Order order) { } public void ProcessOrderReturn(int orderId) { } public void ShipOrder(Order order) { } } Software Development Network 2013
  • 20. more classes != more complex Software Development Network 2013
  • 22. SOLID Open/Closed Principle Software Development Network 2013
  • 23. OPEN/CLOSED PRINCIPLE software entities should be open for extension, but closed for modification Software Development Network 2013
  • 24. OPEN/CLOSED PRINCIPLE Non changed code doesn’t need new… Software Development Network 2013
  • 25. DEMO Useful patterns Software Development Network 2013
  • 26. TEMPLATE METHOD PATTERN AbstractBase class Program Initialize SendMessage Finalize Execute EmailSende r SendMessage Software Development Network 2013
  • 28. CONCLUSION Single Responsibility SOLID Open/Closed Liskov Substitution Interface Seggregation Dependency Inversion Software Development Network 2013
  • 29. Thank you questions? Dennis van der Stelt Pascal de Jonge Software Architect Development Lead Tellus Tellus http://bloggingabout.net/blogs/dennis/ http://www.pazquality.com/ @dvdstelt @pdejonge [email protected] [email protected] 33 Software Development Network 2013

Editor's Notes

  • #4: There are other talks that will go into Big Data and Hadoop so we’ll only do a quick overview of that right now. We’ll spend most of our time on Hive.
  • #5: 5 basic principles of OOPDIntroduced in 2000By Robert C. Martin (Uncle Bob)Whenapplied, more likelyto have a bettermaintainableandextendable system over time.
  • #6: Guidelines, not hard rules, not a dogmaUse common senseDon’tjustthrowthemaway
  • #14: Major problem, as we have toinclude GUI related .dll’stoourGeometryService, but it NEVER uses these.
  • #15: Major problem, as we have toinclude GUI related .dll’stoourGeometryService, but it NEVER uses these.
  • #16: What is wrong with this modem interface?Answer :Connection & Data Transfer are combined
  • #17: What is wrong with this modem interface?Answer :Connection & Data Transfer are combined
  • #21: Don’tcreatedunneededcomplexityHowever, more classes != more complexityThis is supposedto make your life easier!But noteasiertobelazy
  • #22: Classes are organized, as top left pictureNot chaos, like bottom right picture
  • #24: What do you like more?Changing other people’s code?Or writing new code?
  • #25: OCPExisting code should not be edited when new functionality is added, because…don’tneedto re-test working code;don’tneed new code reviews;don’tneedtoexamindependent code
  • #28: Some examples of organizations that delivering new value based in the form of revenue growth, cost savings or creating entirely new business models.Yahoo - AS with Hive, Klout - AS with Hive (white paper), GE - Hive AnalyticsYahoo! (Gartner BI Excellence Award Winner) is driving growth for existing revenue streams:Yahoo! manages a powerful, scalable advertising exchange that includes publishers and advertisers.Advertisers want to get the most out of their investment by reaching their targeted audiences effectively and efficiently.Yahoo! needs visibility into how consumers are responding to ads alongmany dimensions (websites, creative, time of day, gender, age, location) to make the exchangework as efficiently and effectivelyas possible.Yahoo! doubled its revenue by allowing campaign managers to “tune” campaign targeting and creative.Yahoo! drove an increase in spending from advertisers since they got better performance by advertising through Yahoo!.Yahoo! TAO exposed customer segment performance to campaign managers and advertisers for the first time.Klout is creating new businesses and revenue streams:Klout’s mission is to help everyone understand and leverage their influence. Klout uses Big Data to unify the social web (consumers, brands, and partners) with social networking and activity, along with data to generate a Klout score and enable analysis, targeting, and social graphs.Helps consumers manage their “social brand.”Helps brands reach influencers at scale.Helps data partners enhance their services (customer loyalty, CRM, media and identity, and marketing). For example, the Palms uses Klout scores in addition to their normal customer rewards program to determine whether or not to upgrade their customers to a better room during their stay. The Huffington Post uses Klout to help serve the best curated Twitter content.Klout Case Study: http://www.microsoft.com/casestudies/Microsoft-SQL-Server-2012-Enterprise/Klout/Data-Services-Firm-Uses-Microsoft-BI-and-Hadoop-to-Boost-Insight-into-Big-Data/710000000129Case Study on Thailand’s Department of Special Investigations : http://www.microsoft.com/casestudies/Microsoft-SQL-Server-2012-Enterprise/Department-of-Special-Investigation/Thai-Law-Enforcement-Agency-Optimizes-Investigations-with-Big-Data-Solution/710000001175 GE is driving operational efficiencies:GE is running several use cases on its Hadoop cluster while incorporating several different disparate sources to produce results. Along with sentiment analysis, GE is running web analytics on its internal cloud structure and looking at load usage, user analytics, and failure mode analytics. GE built a recommendation engine for its intranet involving various press releases users might be interested in based on their function, user profiles, and prior visits to its site. GE is working with several types of remote monitoring and diagnostic data from energy and wind businesses.
  • #29: Big data is often described as problems that have one or more of the 3 (or 4) Vs – volume, velocity, variety, variability. Think about big data when you describe a problem with terms like tame the chaos, reduce the complexity, explore, I don’t know what I don’t know, unknown unknowns, unstructured, changing quickly, too much for what my environment can handle now, unused data.Volume = more data than the current environment can handle with vertical scaling, need to make sure of data that it is currently too expensive to useVelocity = Small decision window compared to data change rate, ask how quickly you need to analyze and how quickly data arrivesVariety = many different formats that are expensive to integrate, probably from many data sources/feedsVariability = many possible interpretations of the data
  • #30: Append only, bulk data operations