Transferências

Novo livro: GnuCash 2.4 Small Business Accounting

GnuCash 2.4 small business accounting

A equipa de desenvolvimento do GnuCash recebeu notícias sobre um novo livro publicado por PacktPub, UK:

GnuCash 2.4 Small Business Accounting, by Ashok Ramachandran.

Este é um guia do principiante para gerir as suas contas.

O nosso próprio programador Christian Stimming tem contribuído para este livro como revisor e podemos apaixonadamente recomendar o resultado desta frutuosa colaboração. Sinta-se à vontade para espreitar este livro em packtpub.com e, o melhor de tudo, a editora comprometeu-se a doar uma percentagem das vendas do livro ao projeto GnuCash. Divirta-se com este livro!

Dimensões

Bastantes vezes é interessante estudar a métrica do código fonte por trás de um projeto de desenvolvimento de uma aplicação. Não admira, afinal é contabilidade. O GnuCash cresceu, ao longo dos anos, de um pequeno livro de cheques eletrónico para um grande e multifuncional programa de computador.

O GnuCash atualmente consiste em mais de um terço de milhão de linhas de código, espalhadas por mais de mil ficheiros. Foi traduzido em mais de vinte idiomas e agradece a mais de 130 autores e contribuidores.

[code size graph]

Se teve problemas ao navegar em todo este código, pense assim: em papel e ligado em volumes, seria equivalente a doze cópias da obra "Guerra e paz" de Tolstoi, basicamente uma prateleira completa de uma biblioteca.

Lembre-se, isto é código fonte (e documentação) criada e depurada por humanos, *não* é código gerado automaticamente. Ferramentas (como o Glade ou o Swig) podem gerar milhões de linhas de código automaticamente; Não estamos a contar com essas. Cada uma das linhas aqui contadas foi escrita, editada, indentada e afinada múltiplas vezes por mãos humanas.

Dado que temos cerca de 400 erros pendentes no Bugzilla, resulta em cerca de um erro por cada 1000 linhas de código, ou um erro por 50 páginas impressas. Esta contagem de erros não é atípica para projetos de programação; está dentro da norma.

A tabela abaixo mostra algumas linhas históricas de código e número de métrica de ficheiros do projeto de desenvolvimento do GnuCash. Note que nem todo o código está contado: por exemplo, os Makefiles, configure.in e autogen.sh não estão contados. Mais, ficheiros gerados automaticamente não são contados, nem os ficheiros que foram "emprestados" por outros projetos. Também não são contados os ficheiros experimentais, vários scripts perl, vários conversores, extensões e utilitários. Finalmente, ficheiros glade não são contados, embora grande parte do ambiente de utilizador seja descrito em ficheiros glade.

Note também que KLOCs não são uma boa medida de produtividade de programação, nem tampouco wc é uma boa maneira de cotar KLOCs. Muito melhores medidas são as métricas de complexidade, que, por exemplo, contam o número e tamanho de blocos if-then-else, ou o número e tamanho de todos os blocos, ou o número de operadores matemáticos por declaração. Talvez um dia apliquemos uma dessas ferramentas a este código. Por agora é o que temos. Por outro lado, tentámos contar só os ficheiros que contêm código editado por humanos. O objetivo disto é evitar inflacionar a contagem de KLOCs com código gerado automaticamente (que é o motivo para não contarmos ficheiros Glade, que são grandes e automaticamente gerados).

Tabela 1. - estatísticas de desenvolvimento

Versão engine backend register ledger motif gnome ap.mistas import-export reports scheme business test docs txt interno Total Idiomas Créditos de autor
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

Cada célula mostra o seguinte:

número de ficheiros *c e *.h e *.scm (KLOCS em *.c + KLOCS em *.h + KLOCS em *.scm). Se não houver ficheiros *.scm na pasta, só são mostrados (KLOCS em *.c + KLOCS em *.h). Se só houver um número no parênteses, é a contagem KLOC apropriada para a estatística.

onde KLOC == kilo-lines-of-code, como reportado pelo wc. Como assinalado acima, o wc não é uma medida de código terrivelmente boa, mas é a que temos à mão.

Legenda das colunas da tabela



engine
Conteúdo de src/engine e das pastas incluídas. O motor foi extraído do código motivo na versão 1.1. O motor de armazenamento de dados (file-io, sl) foi extraído no decurso da versão 1.5

backend
Conteúdo da pasta src/backend (versão 1.7 e posteriores) ou de src/engine/file, src/engine/sql (versão 1.6 e anteriores)

register
Conteúdo da pasta src/register (versão 1.6 e anteriores) ou src/register/register-core (versão 1.7 e posteriores). O diário foi extraído como componente separado do código motivo na versão 1.1. Como se pode ver nas estatísticas, o código do registo tem sido razoavelmente estável. Na versão 1.7 e posteriores, esta célula mostra uma 2ª contagem: o número de linhas de código em src/register/register-gnome (anteriormente contadas como parte do GNOME)

ledger
Ficheiros *.c, *.hna pasta src só (versão 1.6 e anteriores) ou src/register/ledger-core (versão 1.7 e posteriores)

motif
Conteúdo da pasta src/motif (versão 1.2 e anteriores). A versão motivo do código foi descontinuada após a versão 1.2, depois da maioria do código não visível ao utilizador ter sido movido para o motor, para os diários ou para o livro razão.

gnome
Conteúdo de src/gnome mais src/register/gnome (versão 1.6 e anteriores). Para a versão 1.7 e posteriores, isto consiste em src/gnome, src/gnome-search e src/gnome-util

ap.mistas
Conteúdo de pastas várias relacionadas com a aplicação (versão 1.7 e posteriores): src/app-file, src/app-utils, src/calculation, src/core-utils, src/gnc-module, src/network-utils, src/tax/us

import-export
Código para importar e exportar vários formatos de ficheiros: conteúdo da pasta src/import-export.

reports
Código para gerar relatórios e gráficos: conteúdo da pasta src/reports directory.

scheme
Esquema e código guile nas pastas src/scm mais src/guile (versão 1.6 e anteriores). Na versão 1.7 e posteriores, muito deste código foi para relatórios, importação/exportação e módulos individuais; só resta aqui código misto.

business
Código para adicionar a funcionalidade de pequenos negócios: conteúdo da pasta src/business.

test
Código para realizar testes de regressão automática: conteúdo das pastas src/*/test.

docs
Documentação de utilização só em Inglês, incluindo a ajuda online e o manual (html, sgml ou xml). Para a versão 1.8.4 e posteriores, o número abaixo da barra conta a documentação traduzida noutros idiomas (atualmente de, es, fr, pt_PT). Ambos são algo difíceis de contar dado a grande variedade de formatos e versões concorrentes.

txt interno
O número de documentos de design e ficheiros LEIA-ME destinados aos programadores. Inclui ficheiros *.txt, *.texinfo e README.* em todas as subpastas. Para a versão 1.7 e posteriores só são contados os que estão na subpasta src (deixando de fora meia dúzia noutros locais).

Idiomas
O número de idiomas em que as mensagens da aplicação foram traduzidas (o número de ficheiros po/*.po). Entre parênteses, o número de mensagens nos ficheiros de mensagens (grep msgstr po/*.po |wc), em milhares.

Créditos de autor
O número de pessoas mencionadas no ficheiro AUTHORS (versão 1.6 e posterior) ou no ficheiro README (versões anteriores). Inclui programadores chefe, programadores de patches e tradutores. Inclui também créditos adicionais listados no ficheiro gnucash-docs/AUTHORS que não estão listados no ficheiro gnucash/AUTHORS principal.

Valid XHTML + RDFa

Copyright © 2001-2017 The GnuCash Project

Relatórios de saída de servidor & email para: gnucash-devel@gnucash.org

Problemas de tradução? Contacto: gnucash-devel@gnucash.org