Some peculiarities in the scientific software development cause the ESSS team to work with its own methodology, which incorporates the best methodologies available today. This process is a cornerstone of the ESSS success. It follows the stages below:
Requirements Detailing
Architectural Planning
Implementation
Tests
Adjustments
Implantation
The ESSS team continuously revise the all the project’s requirements throughout this process, in order to adjust it to the customer needs and possibilities.
Bibliographic References
You can find below some bibliographic references that compose the basis of the ESSS methodology. This compilation may guide the engineer/programmer in the daily work of scientific software development in C++.
Intermediate: introduction to the object orientation paradigms and its use in C++
Advanced: oriented development techniques for scientific applications
Multi-approach, Multi-platform, Multi-paradigm and Multi-language are the cornerstones of our scientific applications development.
Multi-approach
ESSS follows an approach called multi-approach which recognizes that there is no tool, methodology or philosophy on software development available in the market that owns the ideal characteristics to the creation of all modules to form an application. The multi-approach idea consists of using different tools and methodologies for different modules of an application (numerical kernel, 3D visualization, graphical interface, data integration), allowing the best of each one to be used in its plenitude in the applications developed.
Multi-platform
Specialty in the creation of multi-platform applications allows the customer to choose among various operational systems (Windows/Unix - Linux, SUN, SGI, HP) to execute its applications, and also allows an excellent use of available computational resources, even on a heterogeneous state of operational systems.
Multi-paradigm
The adoption of an object-oriented design in the high level of application architecture allows the representation of real world concepts in the computational world, making the outline easy and clear to understand. At the lower leveles of the application, an approach based on generic programming is necessary to guarantee the numerical performance demanded by the applications, but also maintaining a necessary flexibility to its expansion.
Multi-language
By using the most modern models on software hybrid development, by combining the C++ and Python languages, it is possible to join the high performance necessary to numerical and visualization modules of C++, with the flexibility and fast development of Python, when implementing graphical user interfaces and management controls.