In this chapter we have seen the various building blocks upon which the thesis is built. We will now put them all into context, relating them and pointing out the consequences of our domain analysis. We will first briefly summarize the most important ideas introduced in the different sections.
In section 1.1 we have introduced the most important concepts related to the object-oriented paradigm. An object is a real-world or abstract entity made up of an identity, a state, and a behavior. A class is an abstraction of a set of objects that have the same behavior and represent the same kind of instances. The object-oriented paradigm can be deployed in the different phases of a software life-cycle and the UML language supports most of the activities contained in them. Apart from the concepts of object and class and the different kinds of relationships that can be established between objects and classes, other concepts such as encapsulation, inheritance hierarchies or polymorphism are important for fully understanding the object-oriented paradigm. The object-oriented paradigm presents many different advantages that can be summarized in the following: it maps more directly to real world concepts, it enhances encapsulation, it improves information hiding, it promotes good structuring and it favors re-use. Finally, it is important to note that, although it is often considered otherwise, object-orientation does not imply less efficient code and furthermore its techniques make it even easier to end up having more efficient and robust final results.
In the next section, 1.2, we have defined the main concepts related to models and systems. The most commonly accepted definition of a system is that by Hall and Fagen in which they define a system as ``a set of objects together with relationships between the objects and between their attributes.'' On the other hand, a model is an abstract representation of a system with a well-defined purpose, different models may exist for a single system. It is also important to note that the birth of object-orientation is very much related to the study of system simulations by Kristan Nygaard. Finally we define a metamodel as a ``model of models'', that is an abstract model that can be used to model a collection of related models.
In section 1.3 we have addressed the issue of software framework development. Although many different definitions can be given for a software framework it is that of Ralph E. Johnson in [Johnson and Foote, 1988] the one that is usually cited. According to this definition,``a framework is a set of classes that embodies an abstract design for solutions to a family of problems''. Frameworks offer a way to reuse analysis, design and code. Frameworks can be classified, among other ways, into white-box and black-box. In white-box frameworks users extend previously existing classes, particularizing for their specific needs. On the other hand, black-box frameworks offer ready-to-use components that can be used as building blocks for an application. Although different approaches may be used for developing a software framework, it is usually recommended to use an application-driven methodology, using a limited amount of already existing applications as the driving force and favoring user-feedback as much as possible. Finally, a well-designed software framework can become a sort of metamodel in itself as it will offer a model of models for a given domain.
Metadata is defined as ``data about data''. In section 1.4 we introduce the most important concepts and tools related to metadata and our domain of object-orientation and multimedia signal analysis. XML is a general-purpose tagged language that is rapidly becoming the standard for metadata annotation of any sort. Using this same language, MPEG-7 is an ISO proposed standard for multimedia annotation. On the other hand the Object Management Group of the ACM has also proposed the MOF (Meta Object Facility) standard as a metadata management framework for object-oriented systems and technologies.
Graphical Models of Computation are abstract representations of a family of related computer-based systems that use a graph-based representation as the primary way of communicating information about the system. There are many different graphical MoC's, each of them particularly well-suited for some purpose. The most important are outlined in section 1.5. In the context of signal processing applications, Kahn Process Networks and related models such as Dataflow Networks are of particular importance. Although some authors defend that these models should be seen as instances of the Process-Oriented paradigm we defend the thesis that process-orientation or actor-orientation is not more than a particular instance of the object-oriented paradigm.
As a conclusion we must point out that this present chapter has presented the most important foundational issues upon which we build our thesis. We have related concepts and ideas coming from disciplines such as software engineering, signal processing and system analysis. Although some of the issues here presented may seem trivial to a reader familiar with a particular technology we believe that the way that subjects are presented and related is not trivial in any way. Furthermore, it is important that the reader of the next chapter has a clear view of how and why different basic concepts are used.
It is in this sense important to note that although object-orientation is the obvious driving force that ties together the different hypothesis and parts of the work there other concepts presented in this chapter are not less important. We use object-orientation for describing systems through particular models and therefore it is important to have a clear view of what both systems and models mean and how they are used. It is also in this sense that graphical Models of Computation and software patterns associated to them play an important role in our work.
Software frameworks also play a central part in this work. The whole metamodel for digital signal processing, central to this Thesis and presented in chapter 4, was abstracted from (or rather in) the design of the CLAM framework for audio and music. It is also a thesis of this work that software frameworks, when well-designed and sufficiently generically constructed, generate domain metamodels, where a metamodel can be defined as a model of models or a classification of classes. Finally metadata is an important concept also related to metamodels. In different parts of this thesis, and particularly in chapter 5, we will see ways of using metadata.