Skip to content

fcasad/designing-for-correctness

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

18 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

designing-for-correctness

WIP

Heavily derivative of these excellent posts on Scott Wlaschin's blog:

For all implementations:

Use Cases:
  • create order
  • add order item to order
  • remove order item from order
  • pay for order
  • refund order
  • complete order
Business Rules:
  • cannot modify paid order
  • cannot pay for order with no items, or already paid order
  • can only refund paid orders, which are not already refunded or completed
  • can only complete paid orders, which are not refunded
Properties / Invariants:
  • Always true:
    1. paid order must have items
    2. refunded order must be paid
    3. therefore: refunded order must have items
    4. completed order must be paid
    5. therefore: completed order must have items
  • Never true:
    1. refunded order must not be completed
    2. therefore: completed order must not be refunded

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published