For any project of respectable size, the final quality obtained depends on the creators capacity to design a correct and coherent architecture. This design phase needs a profound understanding of the programming paradigm, and a good dose of experience to anticipate possible difficulties. A well designed architecture should not only be well adapted to the needs of the project, but should also guarantee the maintainability of the system and the possibility for this system to evolve.
Object oriented programming
Object oriented programming (OOP) is a technique that has many advantages when it comes to complex projects. Among other things, it imposes a common set of rules on all the developers involved. Consequently, OOP naturally creates code that forms coherent systems on all levels.
Object classes from modules : this kind of software is modular, and as such easy to maintain and evolve. Modularity facilitates easy sharing of the code in a developer team and makes the code reusable. The concept of inheritance removes the unnecessary duplication of code and this, again, makes for code that is easy to maintain and grow.
SAPHIR uses object oriented programming under LabVIEW since 2003 (LabVIEW 7). Our software architects are in charge of trainings concerning this style of programming.
Plug-in style architecture (or extension modules) offer an high level of modularity. This permits for the addition of functionality to a program without the need to change or re-compile the core.
It is possible, for example, to assure the compatibility of similar hardware just by redeveloping the plugin. The core application is not modified, nor re-compiled.
Distributed architecture / client-server systems
Distributed systems consist of different elements that need to function together : software (client-server), embedded hardware (cRIO etc.), and logic controllers (PLC).
Elements that need to be put in place are numerous and varied : standard programming of software, programming in real time, FPGA programming, creation of interfaces between different pieces of software, assuring correct communication and network performances, PLC communication protocols...
SAPHIR has developed it's global competences in numerous large scale projects.
Creation and diffusion of libraries
La création et la distribution de bibliothèques répond à une double problématique. La diffusion de briques logiciels pour votre équipe de développement, ou pour vos clients (exemple : diffusion des drivers LabVIEW associés aux matériels que vous commercialisez). Il existe aujourd'hui des méthodes et des outils professionnels pour gérer le déploiement de ces briques logiciels. SAPHIR les met en œuvre en interne, mais également pour la diffusion de ses toolkits LabVIEW.
The creation and diffusion of software libraries resolve a double issue. The sharing of software modules for your development team, or for your clients (for example, sharing the LabVIEW drivers that are connected to the hardware that you commercialize). There currently are different techniques and professional tools to handle the deployment of these modules. SAPHIR uses these tools internally, but also to share it's LabVIEW toolkits .
To go a step further then just obtaining data, our expertise in signal processing will allow you to explore all the sides and possibilities of your measurements.
Frequency linked representations of signals are filled with information. Particularly useful for signal analysis, it allows you to discern elements that are invisible in a time linked representation. From spectrograms to short term Fourier transforms, from wavelets to Wigner-Ville transforms, we have a firm grasp of all these processing tools we have been putting to work in our applications.
Digital filtering, in a very broad sense, is very common. It might be to remove noise from your signals (denoising), to predict (Kalman filtering), to perform spatial filtering (beamforming) or to separate sources. We are able to integrate these functionalities even when there are strong constraints (real-time processing, FPGA).
Detection and analysis of transients
The processing of transients is getting more and more in demand. It can, for example, help detect machine malfunctions, or the non conformity of a product being fabricated. Trough our broad experience, we can help find the relevant pointers and identify discrete events.
Our broad scientific interests and our drive to innovate make SAPHIR a great partner for all your R&D projects. We take care of all pre-studies of the field during the specification process, documentation, proof of concept and the final production. SAPHIR is authorized by the MESR (Ministry of Higher Education and Research) to conduct official Research and Development projects.
integration of algorithms
Our expertise in signal processing and software development allows us to smoothly integrate algorithms in all different targets (FPGA, Real-Time OS, GPU). Correctly integrating algorithms often needs adaptation of such to optimize performance and reduce load.
Feeding on our daily use of these systems, we offer a dedicated signal processing training for LabVIEW run by our own team.
Audits consist of studies performed on source code to discover weak points or non-conformities. This is formalized trough the documentation of our observations and the specifications of the actions that need to be taken to optimize performance and obtain the highest level of quality.
Some applications need a particularly high level of performance. In those cases, a deep understanding and knowledge of LabVIEW and it's possibilities is needed to create high performance code (minimizing memory reallocation, for instance). Our most experienced developers are able to quickly identify whether or not the performance level of existing software is the highest obtainable.
LabVIEW is a programming language that makes great use of the power of multiprocessor systems. At the same time, to optimize performance on these systems, advanced programming is needed: Asynchronous processes, strict UI thread handling, advanced FOR loops, ...
Rigorous live memory management is of great influence on the performance and solidity of a software application.
The quality of software is also greatly dependent on the ergonomics of it's interface (HCI or UI). High attention to the ergonomics result in better user experiences and less user errors. Realizing the importance of this, we offer professional high quality interfaces. Topaze, our application that permits to visualize and analyse measurement data is a great example as you will be able to see in the video below.
More generally, our team can work on existing applications, by adding functionalities to the source code and create a more readable system. This is done primarily to make maintenance easier and to add functions.
lending your team a hand
If you have teams developing LabVIEW applications in your company, they might run in to difficulties organizing the structure, taking care of version control, making sure the code is easy to maintain or to reach the desired level of complexity..
We can help you by putting in place methodologies and tools that professionalize your developments to reach the desired level of quality.
- Documentation and references
- Source code control (version control)
- Project management
- Dealing with libraries and shared plugins
- Specific trainings