Dear all,
I'm thinking about implementing a software solution in Pharo (as one of
the candidate environments), it's a project that I'm dealing with
professionally. The goal is to develop a financial planning/simulation
application on the country level, which is at present developed as a set
of interrelated Excel spreadsheets. The requirement is that the solution
should be more "manageable", resilient and straightforward than Excel
permits, that it should present a workflow to the user - i.e. , that the
tasks the user should do are suggested through the GUI.
The majority of the data is in a form of a time series (for instance:
GDP for a series of years). There are many variables in the model which
shoud be calculated from other variables, year by year. There are also
lagged variables (the value for the current year depends from the value
of previous year), and running averages. There are also some variables
which are not time series (parameters). As a part of GUI, there is a
need to present the results as diagrams, too (scatterplots, line
charts), otherwise tables are the output.
I found Pharo to be a very elegant language and environment, with
version 8.0 it became pretty stable, however I don't have any
experiences in building software solutions of this type in Smalltalk. In
other words, I'd like to be more confident in setting the architecture,
both in the sense of the model content (variables interrelation) and the
architecture of classes. Besides, for the calculated variables I'd like
to have a relatively simple syntax to define them (like 'GDPpC <- GDP /
Population').
My thoughts and questions:
- for easier maintenance I'd like to separate the data from the code -
so the question is what would be the best way to implement persistence
(another Pharo image - with what?, some relational database, XML/JSON,
flat files ...)
- I wonder what would be the best "architecture" of classes - so, we
have a lot of aggregate variables like GDP and population, which can be
grouped at least according to the stage in the planning workflow. There
are also resulting (calculated) variables (e.g. GDP per capita). On the
other hand, since this is a planning software, it's a kind of
simulation, where we have a "data warehouse", experiments and results
- As a core packages I would use Spec2, Roassal, and PolyMath.
I'm just thinking aloud, and would greatly appreciate any thoughts from
experienced Pharoers :-)
Best wishes,
Tomaz