Login  Register

Thinking aloud about project at hand

Posted by eftomi on Apr 09, 2020; 7:12pm
URL: https://forum.world.st/Thinking-aloud-about-project-at-hand-tp5114737.html

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