 Beyond their obvious exacerbated when one considers porting the engine to differences, hardware and software analyses have some other radio platforms. For example, there could be a re- subtle differences. In general, hardware is analyzed in search and development platform that is used to test terms of its capabilities. For example, a particular radio a variety of cognitive algorithms. As these algorithms frequency (RF) front-end (RFFE) can transmit up to a mature, it is desirable to begin using these algorithms in certain frequency, a data converter can sample a maxi- deployed systems. Ideally, one would just need to place mum bandwidth, and a processor can provide a maximum the cognitive engine in the deployed system's manage- number of million instructions per second (MIPS). ment structure. However, if no abstraction were available Software, in contrast, is generally treated as an enabler. to isolate the cognitive engine from the underlying For example, (1) a signal processing library can support hardware, the cognitive engine would need to be modi- types of modulation, (2) an os can support multi- fied to support the new hardware platform. It is clear threading, or (3) a particular middleware implementation that an abstraction is desirable to isolate the cognitive can support naming structures. Given this general form of engine from the underlying hardware. The abstraction of viewing hardware and software, this chapter presents hardware capabilities for radio software architecture is hardware choices as an upper bound on performance, and a primary design issue. software as a minimum set of supported features and SDR is more than just an abstraction of the underlying capabilities. hardware from the application. SDR is a methodology for Cognitive radio (CR) assumes that there is an un- the development of applications, or waveforms in SDR derlying system hardware and software infrastructure parlance, in a consistent and modular fashion such that that is capable of supporting the flexibility demanded by both soft