Two-Thirds of SDR is SD Tutorial
Presented by Bruce Trask, MDE Systems Inc, USA
Developing Software Define Radio (SDR) Software is hard. Some could make a case that is it one of the most difficult software domains to tackle. If you had to come up with a list of modifiers that describe the type of software involved in making for SDRs, it might include some or all of but not limited to the following:
• Distributed
• Real-time
• Embedded
• High Performance
• Fault Tolerant
• Dynamic
• Secure
• Networked
• Heterogeneous
• Portable
• Compliant
• Life Critical
• Multi-threaded
• Multi-process
• Object Oriented
• C/C++
Each one of these items introduces unique challenges by themselves. For example, "embedded" usually brings with it the sometimes onerous task of cross compilation; embedded systems typically have limited input and display devices; they have limited tools, limited resources etc. "Embedded" usually includes with it the use of a Real-time Operating System and all the idiosyncrasies that come with that. "Portable" implies a well architected software base that behaves robustly in the presence of multiple degrees of freedom or axes of change (see section degrees of freedom below). Software that's portable has to evolve gracefully into the future in the presence of these changes. "Distributed" brings with it all the challenges of networked systems, including performance, interoperability, connection management, distributed error handling etc. The list goes when considering the challenges the above items introduce when considered alone.
Let's take it a step further. When we are asked to develop these types of systems, we are being asked to tackle these various aspects *all at the same time*. Now consider that many of these aspects above are somewhat, if not fully diametrically, conflicting concerns with each other. In other words we need to reconcile all these forces which are not necessarily pushing our software systems in the same direction. In fact they may be pushing our software in opposite directions simultaneously. Consider "Dynamic" and "Secure". "Dynamic" implies that the system is extremely flexible and configurable. With the dynamic facilities provided by some of the standard SDR deployment and configuration frameworks, we can load whole new waveforms onto the radios over the air. This flexibility and dynamism introduces some Security challenges that are not easy to solve. "High Performance" and "Portable" is another example pair that don't necessarily work well together.
Typically we handle portability with standards and/or the introduction of levels of indirection each of which can strain the performance of the system. Similar stories could be told for other pairs, such as "Fault Tolerant" and "Real-time" or "Dynamic" and "High Performance". Let's look at it from the perspective of change. A brief list of degrees of freedom against which many types of SDR software has to behave and evolve gracefully include:
• Hardware (x86, arm, ppc and various versions thereof)
• Operating System (Linux, Integrity, VxWorks ...)
• Middleware (vendors, configurations)
• Core Framework (vendors, versions)
• Optimization Levels (space - speed)
• Memory Footprint • Processor Power (size weight and power)
• Virtualization
• Transports (TCP/IP, Shared Memory, Custom IPC)
• Tool chains
• Kernel Versions
So, in short, we have to successfully tackle all of the above, individually and together and in a way that reconciles, resolves and unifies the seemingly conflicting concerns. All the while doing it on time and under budget of course!
Needless to say, this is quite a cross to bear. Given the complexities and changes of the problem domain and the complexities and changes in the solution domain, your company's technology has to be at a maximum to even have a chance of success. Many teams have reached a complexity ceiling when using their current tools, techniques and infrastructure. Many engineers and their teams are buried in software artifacts that do not effectively capture their domain. This tutorial will cover how to tackle the above with a host of advanced software technologies including Model Driven Engineering (MDE), Software Product Lines (SPL), Distributed Real-time and Embedded (DRE) technologies as well as Agile Software Development (ASD) all the while tailoring the above to the uniquenesses of the SDR domain. It will show how these can be used in synergy to scalably tackle the complexities of the SDR domain.
|