3. Why using a framework
● We do not want to “reinvent the wheel”
– Reuse of code + Reuse of implementation
● We want to dedicate as less time as possible to
implemtation, why not use something that has
proven to be useful in a similar situation.
– Framework = Patterns + Implementation
4. Frameworks, libraries, applications
(I)
● A Framework is a general pool of constructs that
is not tightly enough organized to constitute a
predictive theory.
● A Software Framework is an abstract design that
can be instantiated in a particular way for a
particular application.
● An OO Software Framework is a set of classes
that embodies an abstract design for solutions to a
family of problems.
5. Frameworks, libraries, applications
(II)
● A Software Framework must offer:
– Readytouse components (blackbox)
– Extension capabilities (whitebox)
● A Software Framework has to somehow grant
access to source code.
6. Frameworks, libraries, applications
(III)
● A software library is simply a collection of
functionalities that are conveniently packed and
can be accessed through an API
● It is used from an application.
9. Matlab and similar environments:
What is wrong with Matlab anyway?
● Matlab is Proprietary
– Everyone has it?
● What about the toolkits
– Do I really know what is going on inside? Does that
matter?
– This problem has an obvious solution: Octave (
www.octave.org)
● It is used by many “top” institutions such as NASA
● It has an interesting open and growing repository: Octave
Forge
10. Matlab and similar environments:
What is wrong with Matlab anyway?
● Matlab is Unefficient
– Some disciplines such as MIR have to really do
numbercrunching and large database analysis.
– Matlab code may take many times more than its
functional equivalent in a compiled programming
language.
● Matlab is Unstructured
– By definition Matlab and similar environments favor
unstructured code
– They do not favor reusability
11. C++ Software Frameworks
● Why C++?
– It is efficient
– It can be OO
– It is a nonproprietary standard
– Many existing tools are on C++
● Other languages
– Java
● it is not efficient and it is proprietary
– Perl
● it is not efficient and it is not OO
12. Conclusions
● It is worth to use a framework
● It is important to know what is out there and what
we can expect from it
● Frameworks are evolving by nature
● Frameworks generate metamodels