Home Objexx Engineering
 

Scientific & Engineering Software Development

Objexx provides state of the art scientific and engineering software development, reengineering, modernization, and migration services. Advanced algorithms are developed to meet challenging technical and performance requirements and implemented in cross-platform C++, Python, or Fortran 95.

Object-oriented design is used to provide high modularity and maintainability. Objexx solutions are robust and testable. We follow an evolutionary "agile" process built around frequent releases and comprehensive testing that provides the client with exceptional feedback opportunities and the flexibility to adapt to changing requirements.

Legacy Fortran can be ported, modernized, and migrated to Fortran 95 or C++.

Complete software solutions are built to meet client requirements for complex engineering systems, from analysis to design to implementation and documentation.

Object-Oriented Design

Advanced object-oriented designs are crafted into solutions that are highly modular, well insulated, and extensible:

  • Decoupled interface-based designs.
  • Pluggable modules and types.
  • Object-oriented design patterns.
  • Expression templates, policy classes, and other template techniques.
  • Best practices for lifetime, ownership, and dependency management.

Systems can be built in C++ for performance and the security of static typing or in Python for its rapid development benefits. Hybrid solutions using C++ for performance-critical subsystems under a Python front-end can be an excellent solution for some applications. Hybrid designs incorporating Fortran computational modules wrapped for use from Python or C++ can be a cost-effective solution for modernizing legacy Fortran applications.

Agile Process

Objexx projects are carried out using a agile process that produces functional releases of increasing capability early and regularly to support the natural evolution of requirements as projects proceed. Agile methods are highly successful and cost-effective compared to traditional approaches with a heavy up-front requirements and design processes that can't elicit early feedback and are inflexible in the face of inevitable changing requirements.

An essential part of an agile process is the development of comprehensive testing in parallel with application code, and for projects with a reengineering component this test driven development approach is even more critical.

High-Performance Algorithms

Objexx develops advanced, high performance technical algorithms to meet client requirements, bringing expertise in discrete algorithms, kinematics, dynamics, structures, optimization, and biomolecular modeling, signal analysis, and numerical methods. Objexx has a track record of building object-oriented systems that use optimized algorithms and data structures to achieve dramatic performance gains over the legacy systems that they replace -- extensibility and performance are not mutually exclusive.

GUI/Visualization

Graphical interfaces and visualization components are developed to client specifications. Objexx has experience with high-quality cross-platform GUI frameworks such as Qt and with integrating 2D and 3D data and model visualization support into the GUI using a variety of graphics libraries and with generating high-quality ray-traced POV-Ray™ images and animation frames.

Reengineering

Objexx specializes in reengineering technical applications to provide the benefits of modern languages and designs while preserving the value of the computational code. This can involve diverse approaches such as wrapping core Fortran or C computational code with object-oriented C++ or Python layers and GUI, or applying a wrapping approach as an interim stage followed by a migration to a modern computational core.

The agile process allows the reengineering process to evolve through a series of release-quality milestones that can be evaluated and put into production use by the client when desired.

A combination of in-source assertion tests, unit tests, and static and dynamic testing is used to build a safety net around applications to allow this evolutionary reengineering process to preserve, and even improve, the quality of the code. The ObjexxFTK was developed to provide robust unit and assertion testing for Fortran, where testing at this granularity is unfortunately rare.

Fortran Migration

Objexx provides a range of Fortran migration services to preserve the value of client legacy code:

  • Porting to new platforms and compilers.
  • Maintenance and repair.
  • Cross-platform redesign.
  • Conversion to modern Fortran 95 syntax and idioms.
  • Migration to robust object-based designs using derived types and modules.
  • Integration with object-oriented C++ or Python front-end and library code.
  • Migration to C++ using a process designed to preserve the code structure within maintainable C++.

Documentation

High-quality documentation can be provided in a variety of source and target formats including LaTeX, AsciiDoc, reStructuredText, DocBook, PDF, HTML, and Word.

Contact

Contact Objexx for further information on our scientific and engineering software development services.

 

 

 

 


UML for UniPosition

 

 

Spatial Sort Algorithm

 

 

    Surface Plot