![]() |
![]() |
|||||
Scientific and Engineering Software DevelopmentObjexx 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 DesignAdvanced object-oriented designs are crafted into solutions that are highly modular, well insulated, and extensible:
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 ProcessObjexx 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. Collaborative DevelopmentObjexx uses tools and processes designed to facilitate collaboration between development team members and to provide an open environment that enables a high degree of client involvement. Objexx generally uses the web-based Trac system to provide a central project portal where roadmaps and tickets can be tracked and project documentation and materials can be viewed and contributed to by team members. Objexx uses modern distributed version control systems such as Mercurial and Git to enable developers to collaborate without the constraints imposed by traditional version control systems.
High-Performance AlgorithmsObjexx 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/VisualizationElegant and efficient graphical interfaces and visualization components are developed to client specifications. Objexx uses high-quality cross-platform GUI frameworks such as Qt™ and PyQt/PySide, integrating 2D and 3D data and model visualization support into the GUI using graphics libraries such as matplotlib, Qwt, PyQwt, VTK, and OpenGL®, using 3D visualization and animation built with OpenSceneGraph for real-time display and with POV-Ray™ for high-quality ray-traced output. ReengineeringObjexx
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 an object-oriented
C++ or Python layer and GUI, or applying such a wrapping approach as an
interim stage followed by a full migration to a modern computational
core. Computational results can be migrated to a modern, portable,
space-efficient data file format such as HDF5. Objexx has developed innovative dynamic GUIs for large engineering applications with hundreds of input parameters.
Configuration files provide a single point of definition for the
parameters from which the GUI is constructed programatically, avoiding
the maintenance burden of many hard-coded parameters and making the
addition and modification of the input specifications extremely
efficient. The Objexx 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. ResourcesSlides from the Objexx training course on Migrating to a C++ Object Oriented Design. Fortran MigrationObjexx provides a range of Fortran migration services to preserve the value of client legacy code:
DocumentationHigh-quality documentation can be provided in a variety of source and target formats including LaTeX, AsciiDoc, reStructuredText, DocBook, PDF, HTML, and Word. ContactContact Objexx for further information on our scientific and engineering software development services. |
|
|||||
| | | | | | | | | | ||||||
| Copyright © 2012 Objexx Engineering, Inc. All Rights Reserved. | ||||||