Software Development - Software Design

Robert C Martin

URL Description
Bob Martin on the Future of Software Development
Jim Coplien and Bob Martin Debate TDD

Bob Martin is also known as Uncle Bob. He is an Agile Manifesto author, and author of books on Agile Programming, XP, UML, Object

Robert "Uncle Bob" Martin - Architecture: The Lost Years
  • The Web is an I/O channel.
  • Interactors are Use Case objects. Interactor has a method called execute(). Uses the Command Pattern.
  • Interactors have application specific business rules in them. They are coupled to the application.
  • Entities contain application independent information.
  • Separate the business rules that are application specific with those that are not.
  • Interactors point to the entities and the interactors point to the boundary objects. Hence no one depends on the interactors.
  • Delivery Mechanism points to the boundary (example is the web) .
  • Interactor derives from the Boundary object.
  • The User talks to the delivery mechanism.
  • User initiates a Request Model. Raw data structure.
  • The Result Model gets sent back to the user
  • Arrows point away from details and toward abstractions
  • You can test the Request and Result models. You can test without the application and delivery mechanism.
  • You do not couple your application objects to a framework.
  • Once you derive from base classes you are married to them.
  • You should never trust frameworks.
  • Don't tie your models to a framework.
Robert C Martin - Clean Architecture and Design
Robert C Martin - Functional Programming; What? Why? When?
Robert C Martin - The Single Responsibility Principle
Software Architecture (Robert C. Martin)
  • Controller controls input
  • Presenters control output
  • Database is a detail not the center of the system
  • Database should not contain business rules
  • Business rules don't need to know about SQL
  • A good architecture maximizes the number of decisions not made.
  • Entities do not need to match the database tables
  • The Database is a plugin to the application
  • GUI is a plugin to the business rules
Test Driven Development with Robert C. Martin (Uncle Bob)

The Three Laws of TDD

  1. Your are not allowed to write any production code unless it is to make a failing unit test pass.
  2. You are not allowed to write any more of a unit test than is sufficient to fail; and compilation failures are failures.
  3. You are not allowed to write any more production code than is sufficient to pass the one failing unit test.

The moon; Tests (Robert C Martin)