Technical Software Development
Development work at Objexx is carried out with an efficient process and a breadth of skills and experience. Smart choices of languages, tools, and milestones provide a solid foundation for on-time delivery of excellent solutions. Object-oriented design is used where it can enhance code quality and flexibility. Algorithms are crafted to meet challenging technical and performance requirements and implemented in cross-platform, standard-compliant code. Testing and designing for testability are intrinsic to the Objexx development process.
Agile Process
Objexx uses an agile development process to ensure efficiency and to afford clients early and frequent feedback on progress. Some of the key aspects of this process are:
- Frequent milestone deliverables of increasing functionality.
- Lightweight requirement and design changes.
- Unit tests and mock components are developed along with the application code.
- Regular client engagement and feedback.
Object-Oriented Design
Object-oriented solutions can be built to provide highly modular, robust and testable systems. Knowledge of best practices and the tradeoffs of object-oriented design patterns and techniques assure sound, well-engineered solutions.
Testing
Test-driven development is intrinsic to an agile process. Unit tests are built along with application components. Live (assertion) tests are used to check class invariants and function pre and post-conditions. Static and dynamic testing are part of the regular QA process.
Languages, Libraries and Tools
Objexx uses a range of languages and libraries to meet project requirements. Most core development is done in C++, Python, and Fortran. Experience with a large collection of libraries and development tools enables Objexx to build powerful solutions efficiently.
Languages
- C++
- Fortran
- Python
- Julia
Libraries
- Boost
- HDF5, PyTables, h5py
- NumPy, SciPy, Blaze, Numba, numexpr
- matplotlib, VisPy, PyQtGraph, Qwt, PyQwt
- Qt, PyQt, PySide
- OpenSceneGraph, POV-Ray™
- OpenMP, OpenCL, CUDA, OpenACC
Tools
- Visual C++, Intel oneAPI C++ GCC, Clang
- Intel Fortran, GFortran, Lahey Fortran
- VTune, Zoom, prof, oprofile, gprof
- Git, Mercurial, Subversion
- Make, CMake, SCons, jam, ...
- GitHub, GitLab
- Googletest (C++), unittest (Python), ObjexxFTK:UnitTest (Fortran)
Technical Skills
Objexx specialized technical development skills include:
- Object-oriented design
- High-performance sequential and parallel algorithms
- Performance tuning and refactoring
- Vectorization/parallelization
- Graphical User Interface (GUI) development
- 3D visualization
- Fortran modernization and conversion to C++ or Python
- Numerical algorithms and analysis
- Signal analysis
- Optimization
- 3D mechanics and simulation
- Biomolecular modeling
- Building energy modeling
- Finite element modeling