OpenAcct General Specification

Description

OpenAcct is open source bookkeeping software for small and medium sized businesses and for not-for-profit organizations. It supports multiple backend databases and multiple simultaneous users on backends which support it. OpenAcct is designed from the ground up to support multiple currencies and double-entry financial accounting.

OpenAcct is not designed to be a complete solution for accounting software, but rather is designed to "do one thing well". In particular, OpenAcct does not provide a graphical interface. OpenAcct does provide a command line interface as a thin layer over the domain library. The domain library is designed to be usable from other applications as a means of implementing financial bookkeeping.

Features

OpenAcct will support the following general feature areas:

  • General Ledger
  • Accounts Receivable
  • Accounts Payable
  • Banking
  • Billing
  • Financial Statements
  • Multiple currencies
  • Fund accounting

Licensing

OpenAcct will be licensed under the GNU General Public License version 3 (GPL v. 3). At the option of Steven Bosnick the source code in libacct and the backend libraries can be relicensed under the GNU Lesser General Public License version 3 (LGPL v. 3). This relicensing would permit libacct to be used as the domain model for a differently licensed front end. An distribution of libacct in binary form would still have to satifiy the licensing requirments of Code Synthesis' ODB (GPL, open source license exception from Code Synthesis, or proprietary license from Code Synthesis).

Deliverables

OpenAcct will deliver the following user-installable binary components:

Component Purpose
acct Command line interface to manipulate the domain model
libacct Domain model and the common persistance code
libacct-mysql Persistance code for the MySQL backend
libacct-sqlite Persistance code for the SQLite backend
libacct-pg Persistance code for the PostgreSQL backend

Implementation

Testing

OpenAcct testing will include acceptance testing using Cucumber, unit and integration testing using googletest, and possibly RSpec for some integration tests of the entire command line interface. Ideally the acceptance tests would be externally reviewed by someone with an accounting background. Tests of the entire command line interface that are not appropriate for external reviews would be good candidates for testing with RSpec.

Documentation

OpenAcct will use Doxygen to produce conceptual documentation describing the concepts it uses, command line documentation describing all subcommands and options of the command line interface, and library documentation of all entities, services, and support classes in the domain model.

Dependencies

Runtime

Dependancy Purpose
ODB C++ object-relational mapping used to generate and run the persistance code
XSD C++ statically typed object model for parsing and serializing XML described by an XSD file. Used for the standard input and output of the command line interface, when appropriate.
Boost Well designed, cross-platform, peer reviewed libraries.

Testing

Dependancy Purpose
Cucumber Externally reviewed acceptance testing
googletest Unit testing and some integration testing
RSpec Some integration testing of the whole command line interface when external reviews are not called for

Build

Dependancy Purpose
Doxygen Generate documentation in various formats
CMake Generate a platforrm-specific build system
Unless otherwise stated, the content of this page is licensed under Creative Commons Attribution-ShareAlike 3.0 License