Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Accounting Software Design Patterns [closed]

People also ask

What are patterns in accounting?

A pattern is identified by a line that connects common price points, such as closing prices or highs or lows, during a specific period of time. Chartists seek to identify patterns as a way to anticipate the future direction of a security's price. Patterns are the foundation of technical analysis.

Are software design patterns still relevant?

Quick answer: yes. Especially when you're at the beginning of your journey, design patterns are a good starting point. Even if you won't use them right away in your first projects, getting to know them will help you understand the existing solutions you're using. Complex solutions are made of patterns.


A while ago when I was assigned to work on such a system, I found this link in the Martin Fowler website:

Martin Fowler - Accounting Patterns

It contais some patterns for accounting software, such as accounting entries, transactions and adjustments. The architecture he describes is based on events. Never read it entirely, as the system I work on was already in the middle of its development stage and I couldn't change the design.

Hope it helps.


Martin Fowler's Analysis Patterns covers some of those topics.


I would have the following structural classes:

  1. Account - Represents a financial account. eg. Cash, Sale, Expense;
  2. Category - The category where the Account belongs to. eg. Asset, Expenses, Revenues;
  3. Mutation - Represents a financial entry of an account.
  4. Transaction - Contains a collection of mutations.
  5. Money - A composite class using Currency object and storing amount as long integer;

When I approached the design initially I kept thinking about Decorator and Builder Patterns. Tax calculation can use the Strategy Pattern. Observer Pattern can be used to veto Transaction.


For dealing with currencies, remember that you need to always remember not just what currency the amount was entered in, but also what time it was entered, and what the rate of each currency was at that time. Also, accountants are not forgiving when it comes to "inaccuracies" in amounts. If an amount is entered, you have to store it as it was entered, and not convert it first, because afterwards you won't be able to guarantee that you can get back the entered amount just like it was entered.

These may sound like obvious things, but people do sin against them in the real world.