GnuCash 2.4 小规模企业财务

GnuCash 2.4 small business accounting

开发团队收到通知,英国 PacktPub 公司出版了一本新书:

《GnuCash 2.4 小规模企业财务》,作者:Ashok Ramachandran.

一本财务管理的入门指导书。

开发者 Christian Stimming 参与了本书的编写,亦是审稿人。我们诚心地推荐这份意义满满的资料,欢迎在packtpub.com阅读,最主要,出版商已承诺将部分利润回赠给 GnuCash。加油!

规模

代码规模的老旧资料。

研究软件的源代码指标往往是相当有趣的,但财务软件的感觉一般般。经过多年发展,GnuCash 已从一个小的、方便的电子支票簿发展成一个相当大的多功能桌面程序。

超过30万行代码,1000多个文件;被翻译成23种语言,有139名作者和贡献者。

[code size graph]

对如此巨量的源代码还是没有概念,换个角度想,将其打印并装订好,这将相当于数十本《战争与和平》,整整一书架宽的源代码。

请注意,这是由开发者精心编写和调试的源代码(和文档),不是自动生成的。 工具(如 glade 或 swig)自动生成的大量代码,并不不计算在内。 这里所计算的每一行都是由人工输入、编辑、缩进、调整过多次的。

鉴于 Bugzilla里有大约400个未解决的 bug,这相当于每千行代码有一个 bug,或者每50页打印输出有一个 bug,这个比例对软件项目来说并不意外,接近常态。

下表是 GnuCash 的一些历史代码和文件数量指标。 请注意,并不是所有的代码都会被计算在内,如:Makefiles、configure.in 及 autogen.sh;自动生成的文件、从其他项目“借用”的文件;实验性文件、杂项 perl 脚本、各种转换器、附加组件和实用程序;最后,glade 文件也没有计算,尽管 GUI 的大部分都在 glade 中。

还需要注意的是,KLOC 不是衡量程序员生产力的好指标,甚至 wc 也不是计算 KLOC 的好方法。更好的标准是复杂度,例如,if-then-else 块的数量和大小、所有块的数量和大小或者每条语句的数学运算符数量。也许某一天我们会使用这些标准,但现在 KLOC 最直接,而且我们试图只统计手工编写的代码,避免自动生成的代码影响 KLOC 计数(这就是不计算 glade 文件的原因:它们体量很大、而且是自动生成的)。

表一.历史开发统计

版本 engine backend register ledger motif gnome 其它应用 import-export reports scheme business test docs 内文 合计 语言 贡献者
xacc-0.9 Sept 97 - - - - 34 files (7.5+0.9) - - - - - - - 5 files (0.4) 1 file (0.1) 40 files (8.8) 1 1
xacc-0.9w Dec 97 - - - - 51 files (13.8+1.5) - - - - - - - 9 files (0.8) 1 file (0.1) 61 files (16.2) 1 2
xacc-1.0.17 Feb 98 - - - - 52 files (14.8+1.8) - - - - - - - 12 files (1.4) 4 files (0.3) 68 files (18.3) 1 7
gnucash-1.1.15 Aug 98 24 files (6.2+1.5) - 31 files (6.1+1.7) 5 files (1.4+0.4) 30 files (7.4+0.7) 17 files (3.4+0.5) - - - 3 files (0.3) - - 16 files (1.9) 17 files (1.8) 159 files (34.7) 1 (0.17) 25
gnucash-1.2.2 Aug 99 41 files (10.2+3.6) - 28 files (5.5+1.7) 14 files (2.4+0.6) 26 files (8.7+0.5) - - - - 14 files (1.4) - - 30 files (2.6) 15 files (1.8) 168 files (39.0) 3 (0.54) 41
gnucash-1.3.6 April 2000 41 files (12.9+4.0) - 32 files (6.8+2.1) 19 files (4.0+0.8) - 78 files (32.2+3.0) - - - 74 files (4.0+0.7+12.3) - - 33 files (7.8) 25 files (4.5) 302 files (95.1) 5 (4.3) 61
gnucash-1.4.6 Sept 2000 43 files (13.0+3.6) - 27 files (5.9+2.0) 24 files (5.4+1.8) - 82 files (33.8+3.0) - - - 68 files (4.0+0.7+15.5) - - 36 files (9.3) 36 files (4.8) 316 files (101.9) 7 (6.0) 82
gnucash-1.4.12 April 2001 43 files (13.1+3.6) - 27 files (5.9+2.0) 24 files (5.4+1.8) - 82 files (33.5+3.0) - - - 73 files (4.0+0.7+17.7) - - 43 files (11.5) 39 files (6.0) 331 files (108.2) 12 (17.8) 97
gnucash-1.5.2 Sept 2000 46 files (14.9+3.7) - 29 files (6.3+2.0) 25 files (5.7+1.8) - 83 files (35.8+2.9) - - - 73 files (4.6+0.8+16.8) - - 37 files (10.7) 48 files (8.2) 341 files (114.2) 8 (7.8) 89
gnucash-1.6.0 June 2001 139 files (42.8+8.3) - 28 files (5.7+2.0) 23 files (10.1+1.5) - 132 files (60.0+4.2) - - - 102 files (6.2+0.8+27.3) - - 64 files (12.1) 69 files (12.9) 455 files (193.9) 11 (18.7) 123
gnucash-1.7.2 November 2002 104 files (28.7+7.8+3.3) 89 files (30.0+3.3) 34 files (5.2+2.0)
29 files (10.5+1.2)
17 files (9.4+0.7) - 143 files (56.0+4.7+0.9) 75 files (17.0+2.5+5.1) 78 files (11.1+1.5+7.3) 38 files (2.4+0.1+14.2) 17 files (3.4) 94 files (19.9+1.9+4.5) 72 files (7.9+0.1+0.7) 83 files (22.2) 62 files (11.6) 935 files (297.1) 21 (56.1) 130
gnucash-1.8.4 June 2003 100 files (29.7+8.3+3.4) 89 files (30.1+3.3) 35 files (5.3+2.0)
31 files (10.7+1.2)
17 files (10.2+0.8) - 151 files (58.7+5.1+1.1) 71 files (16.9+2.6+5.2) 86 files (13.3+1.8+7.5) 52 files (2.4+0.2+15.1) 17 files (4.1) 98 files (21.5+2.0+5.1) 76 files (8.6+0.2+0.7) 24 files (13.8)
199 files (80.3)
69 files (14.3) 1115 files (385.5) 23 (62.4) 139

每个单元格显示的信息如下:

.c、.h 和 .scm 代码的行数(.c + .h + .scm);如果没有 .scm 文件,则只显示(.c + .h);如果括号中只有一个数字,那就是正确的 KLOC。

其中 KLOC == 千行代码,由 wc 报告。如上所述,wc 并不是一个非常好的代码度量,但它是最方便的。

标题说明



engine
src/engine 和 include 目录的内容,1.1版从 motif 代码分离出来;数据存储后端(file-io,sql)在1.5版本中分离

backend
src/backend 目录(1.7及以后)或 src/engine/file、src/engine/sql(1.6及以前)的内容

register
src/register(1.6及以前) 目录或 src/register/register-core(1.7及以后)的内容。 寄存器在1.1版从motif代码中独立出来。统计可以看出,寄存器代码一直相当稳定,1.7 及以后版本,这个单元格显示了第二个计数:src/register/register-gnome 中的代码行数 (以前作为 gnome 的一部分)

ledger
仅在src目录下的.c、.h文件(1.6及以前)或src/register/ledger-core(1.7及以后)

motif
src/motif目录下的内容(1.2及以前)。motif的代码在1.2版本之后就停止了,因为大部分非gui代码都被移到了引擎、寄存器或分类账中。

gnome
src/gnome 和src/register/gnome 的内容(1.6 及以前)。1.7及以后的版本,它由src/gnome、src/gnome-search和src/gnome-util组成

其它应用
与程序相关的杂项目录(1.7及以后):src/app-file、src/app-utils、src/calculation、src/core-utils、src/gnc-module、src/network-utils、src/tax/us

import-export
导入/导出各种文件格式的代码:src/import-export 目录下的内容。

reports
生成报表和图表的代码:src/reports目录。

scheme
方案和guile代码在目录src/scm加上src/guile中(1.6及以前)。1.7及以后版本,这些代码大部分分离进报表、导入/导出和独立模块,只剩下杂项代码。

business
增加小规模企业功能的代码:src/business目录。

test
执行自动回归测试的代码:src/*/test目录。

docs
英文文档,包括在线帮助和手册(HTML、SGML 或 XML)。1.8.4及以后版本,栏下数字是翻译的非英文文档(目前是de、es、fr、pt_PT)。 这两个都很难统计,因为有相当大的格式变化和多个版本。

内文
面向开发者的设计文件和README文件数量。包括所有子目录中的.txt、.texinfo和README.*文件。 1.7及以后版本,只计算src子目录中的文件(不包括散落在其他地方的六七个文件)

语言
程序被翻译成的语言数量(po/*.po文件的数量)。括号内是语言文件的代码数量(grep msgid po/*.po |wc),单位为千。

贡献者
AUTHORS文件(1.6及以后)或README文件(早期版本)中被认可的人数。 包括主要开发者、补丁提交者和语言翻译者;还有在 gnucash-docs/AUTHORS 文件中列出的贡献者,但没有在 gnucash/AUTHORS 文件中。

HTML5 Powered with CSS3 / Styling, and Semantics

Copyright © 2001–2021 The GnuCash Project

服务器故障,请邮件: irc://irc.gnome.org/gnucash

翻译疑问,请联系: gnucash-devel@gnucash.org