This is a c# implementation of the Payroll Case Study from Uncle Bob's book Agile Software Development - Principles, Patterns, and Practices
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
Metrics
PayrollCaseStudy.CommonTypes
PayrollCaseStudy.ConsoleHost
PayrollCaseStudy.InMemPayrollDatabase
PayrollCaseStudy.PayrollApplication
PayrollCaseStudy.PayrollDatabase
PayrollCaseStudy.PayrollDomain
PayrollCaseStudy.PayrollFactory
PayrollCaseStudy.PayrollImplementation
PayrollCaseStudy.Tests
PayrollCaseStudy.TextParser
PayrollCaseStudy.TransactionApplication
PayrollCaseStudy.TransactionFactory
PayrollCaseStudy.TransactionImplementation
.gitignore
PayrollCaseStudy.sln
README.md

README.md

PPP Payroll Case Study

This is a C# implementation of the Payroll Case Study from Uncle Bob's book Agile Software Development - Principles, Patterns, and Practices. It's based on the original book (not the C# one), though I'm interested how the two implementations compare.

Releases

Wishlist

  • Real database implementation
  • Acceptance tests
  • Web frontend

Package strategies

Several strategies for packaging the code are suggested in the book. I implemented those and tagged the commits. I also used NDepend to generate abstractness vs instability diagrams for each strategy.

Packaged by conceptual relation

This is from figure 22-1 on page 276. Source.

Abstractness vs instability:

Packaged by common closure principle

This is from figure 22-2 on page 277. Source.

Abstractness vs instability:

Packaged by REP

This is from figure 22-3 on page 280. Source.

Abstractness vs instability:

Final packaging in book

This is from figure 22-11 on page 289. Source.

Abstractness vs instability: