ences is the need to variables (such as in a data structure) and functions accomplish a variety of quite different goals. This section that can operate on those member variables. From a ter- outlines some of the key development concepts and tools minology standpoint, a class is an object's type, and an that are used in modern SDR design. object is a specific instance of a particular class. There are several rules governing the semantics of classes, but they generally allow the developer to create arbitrary levels of 2.4a.3.1 Design philosophies and openness (or visibility), different scopes, different con- patterns texts, and different implementations for function calls that have the same name. OOP has several complex di- Software design has been largely formalized into a variety of mensions; additional information can be found elsewhere design philosophies, such as object-oriented programming (e.g., Budd [2] and Weisfeld [3]). (OOP), component-based programming (CBP), or aspect- The differences inherent in OOP have dramatic im- oriented programming (AOP). Beyond these differences plications for the development of software. Extending is the specific way in which the different pieces of the the analogy from the previous example, it is now possible applications are assembled, which is generally referred to as to break up every item on your desktop into a separate a design pattern. This section describes design philosophies object. Each object has some properties, such as the first, providing a rationale for the development of different temperature of your soda, and each object also has some approaches. From these philosophies, the one commonly functions that you can access to perform a task on that used in SDR will be expanded into different design object, such as drinking some of your soda. There are patterns, showing a subset of approaches that are possible several languages today that are OOP languages. The two for SDR design. most popular ones are Java and C++, although several other languages today are also OO