A software
framework is a reusable design for a software system (or subsystem). This
is expressed as a set of abstract classes and the way their instances
collaborate for a specific type of software (Johnson and Foote 1988; Deutsch
1989). All software frameworks are object-oriented designs. Although designs
don't have to be implemented in an object-oriented language, they usually are.
According to
Pree (1994), software frameworks consist of frozen spots and hot spots.
On the one hand, frozen spots define the overall architecture of a
software system, that is to say its basic components and the relationships
between them. These remain unchanged (frozen) in any instantiation of the
application framework. On the other hand, hot spots represent those
parts where the programmers using the framework add their own code to add the functionality
specific to their own project.
Software
frameworks define the places in the architecture
where adaptations for specific functionality should be made - the hot spots. In
an object-oriented environment, a framework consists of abstract and concrete classes.
Instantiation of such a framework consists of composing and subclassing the
existing classes (Buschmann 1996).
When developing
a concrete software system with a software framework, the hot spots are
specialized according to the specific needs and requirements of the system.
Software frameworks rely on the Hollywood Principle: "Don’t call us, we’ll
call you." (Larman 2002). This means that the user-defined classes (for
example, new subclasses), receive messages from the predefined framework classes.
These are usually handled by implementing superclass abstract methods.
The challenge
for this final thesis is to implement those notions of software framework in an
embedded system such as a phone running on Symbian OS series 60. The choice of
Python scripting language is the main concern for this framework. In order to
meet the final thesis attempt, the framework will be evaluated and compared to
similar Java client implementation. This will define the operability and
interest on commercial projects.
The work will be
divided in five parts: learning part, system analyse, coding, testing and then
documenting. The learning part will treat the phone architecture, the analysing
tools and method, the testing tools and methods. The analysing part consists in
drawing a UML2 representation of the framework and defining the structure, hot and
cold spots, agents and relationships. Then, the coding part concentrate in
coding the UML2 analyse in Python scripting language. The testing part will
insure that the software meets the specifications. Finally, the documentation
will be made since the beginning of the thesis period.