User:Conseo-Polyc0l0rNet/Harvester/Planning/conceptual design

From Wiki
Jump to: navigation, search

Contents

Conceptual design

This is a first basis out of the current (non-managed) process to estimate target size and time needed to accomplish the goal.

Server-side

This ER-diagram shows all elements currently planned for the Harvester. You can also map that to the Java API of the harvest package.

ER-diagram

To estimate the project at this initial stage of the process, I will simply make some completion estimates regarding current functionality, will then assess a rough time estimate.

The harvesting service can be modularized in 4 different services. We will apply the PSP0 process on each module, by adding subsections to each document including requirements (otherwise documents get scattered too much). Sections will be named after the main service.

store relevant messages (HarvestCache)

class current size percentage complete missing lines
HarvestCache 467 70 % 200
DiffMessage 80 90 % 9
Message 42 95 % 2
MessageContext 47 95 % 2

Total: 213

web scheduler and fetcher (HarvestRunner)

class current size percentage complete missing lines
HarvestRunner 328 55 % 268
FetchJob 29 95 % 2

Total: 270

authenticate message against system identities (Authenticator)

class current size percentage complete missing lines
Authenticator 4 80 % 1
BasicAuthenticator 18 70 % 8
WikiAuthenticator 35 70 % 15

Total: 24

messaging system (Kicker)

class current size percentage complete missing lines
Kicker 65 20 % 260
KickReceiver 4 80 % 1
Kick 3 90 % 1
ManualKick 0 0 % 12
Configurator 123 60 % 82
ConfigKick 15 80 % 4

Total: 360

Following this humble estimation, we can speculate:

All server side services amount to Total: 867

Since these numbers are gathered with sloccount, which only counts the pure code, me not closely following a coding style fitting loc-counting and the overall weakness of the process. I assume I can deal with 2 lines per hour (since sloccount does not count code overhead, docs, design etc.). This makes 433 hours for an initial estimate. For one full time programmer this is 54 days.

Client-side

For a first version of the track similiar to the current feed, I simply assume it takes double the amount of code for the current feed. This is 236 + some more in the bite/visual plumbing, let's say 600 in total. 300 hours, 38 days for one programmer.