Stellar Science Logo

Cross Platform Software


Stellar Science creates custom scientific computing, modeling, and visualization applications, by applying a unique combination of customer interaction, domain expertise and modern software development technologies. Our approach uses object-oriented programming languages and appropriate domain-specific software libraries that are carefully selected to avoid constraining the final applications to any particular operating system or hardware configuration.

Making your software cross-platform can reduce your overall costs by enabling you to operate on the most cost-effective or most prevalent computers available in your business, now or in the future. It improves your flexibility and helps you market your products to more customers.

Programming Languages

Our primary language is ANSI/ISO C++. While this language is challenging for both programmers and compiler developers, it has matured to the point where questions like which features are implemented by a particular compiler, or whether or not numerical algorithms are faster in Fortran than in C++, are no longer germane. The power of the language and the extensive variety of high-quality C++ libraries make C++ particularly suitable to the Stellar Science application domain.

When rapid development is very important, we apply the Python language. This language is particulary well suited for integrating customers' existing components, including both libraries and complete applications, perhaps written in disparate languages. And, we have found that that the runtime performance of this interpreted language is remarkably good.

Both of these languages are object-oriented. Without presenting the obligitory sermon about the benefits of this software design and development technology, we assert that Stellar Science “gets it” — and that many don’t. We understand the Open-Closed Principle at a gut level.

While we have experience with Java, that experience generally leads us to seek other solutions. In arenas like image processing, Java performance is often dismal, except on platforms where certain components have been optimized. In short, Java is an acceptable cross platform solution only when you can tolerate lowest common denominator performance. Also, we have found that the interfaces for binding Java and C++ impose contraints that prevent their effective use in all but the most simple applications.

Libraries

Where possible, we use third-party C++ class libraries to provide high-level, powerful objects. In other cases, we use (and reuse) class libraries that we have constructed ourselves by refactoring objects created for specific projects. In either case, we require source code for the library, since compiled C++ objects are not binary-compatible across different compilers, even on the same operating system and hardware platform. We maintain a CVS repository for source code with secure access available to customers.

By choosing our libraries carefully and adhering to programming language standards, we've been able to write programs that share a common source code base and compiles and that run identically on Windows 98/Me/NT/2000/XP, Sun Solaris, SGI IRIX, various flavors of Linux, and Mac OS X. These of some of the libraries that we apply for our customers' projects.

Third-party Libraries

We've been particularly pleased with Qt, which also has a Python binding. For one project, we developed unique techniques to port from an older library (Galaxy) to Qt that allowed step-by-step migration rather than porting the entire application at once.

Stellar Science Libraries

Xio (XML Input/Output) is a XML persistence library. By relying on templates for XML persistence, rather than function overloading, our XIO library has the ability to define persistence mechanisms for commercial off-the-shelf or third-party class libraries, without needing any modification to their source code. For many common cases our library automates schema migration, a hurdle faced by anyone trying to use persistence in an evolving project where object data types change regularly, and it provides powerful tools for resolving the more complex cases.

Sip (Stellar Image Processing) has classes that provide image processing capabilties for an unusual range of pixel data types, such as 16-bit integer, float, double, and complex. The API is similar to the proprietary SGI ImageVision Library. Sip includes support for an extended version of the TIFF library, named TIFF-PL, that has authorized tags which specify a wide range of auxiliary data about the image. Stellar Science also maintains the TIFF-PL library.

Ami (Abstract Model Interface) provides a consistent interface for describing and operating on CAD-like models of physical objects. It is layered on the Open CASCADE library, but in general does not require knowledge of the Open CASCADE API. Models can be represented in several file formats, include IGES and STEP.

Math — Efficient objects for three-dimensional vectors and matrices. These are the foundation classes for application domains that work with physical objects that have attributes like position, velocity, and orientation.

World — Objects that deal with time, coordinate systems, and the kinematic behavior of rigid-body entities. The modeled entities include earth-fixed sites, earth-orbiting satellites, and Earth’s moon and sun. The objects in the library model such important details as leap-seconds, and Earth's nutation and precession.

What Can We Do For You?

As noted in our capabilities summary, our approach is suitable for small-team software development projects that require an iterative process to deal with changing requirements. We know the approach works from past and present successes. Contact us to discuss how Stellar Science can help with your projects.


Copyright © Stellar Science Ltd Co - All Rights Reserved.