Inversion of Control

Download Report

Transcript Inversion of Control

CompSci 230 S2 2013
Software Construction
Frameworks
Agenda & Reading

Topics:






Reading


2
Frameworks
Extensibility
Inversion of Control
Java Frameworks
Advantages & Disadvantages
Software framework Wikipedia
Frameworks in Java
COMPSCI 230: 10
Framework

Generic software platform for a certain type of applications

Consists of parts that are found in many apps of that type





Often evolved by developing many apps of that type and reusing
code more and more
Characteristics:



3
Libraries with APIs (classes with methods etc.)
Ready-made extensible programs ("engines")
Sometimes also tools (e.g. for development, configuration, content)
Reusable: the parts can be used for many apps of that type
Extensible: developers can add their own app-specific code
Inversion of Control: framework often calls your code
COMPSCI 230: 10
Framework Examples
Web Application Frameworks
GUI
Toolkits
4
COMPSCI 230: 10
Extensibility

All frameworks can be extended to cater for app-specific
functionality.


A framework is intended to be extended to meet the needs of a
particular application
Common ways to extend a framework:



Extension is carried out by sub-classing, overriding methods, and
implementing interfaces
Plug-ins: framework can load
certain extra code in a specific format
Within the framework language:



5
Subclassing & overriding methods
Implementing interfaces
Registering event handlers
COMPSCI 230: 10
Inversion of Control

A framework employs an inverted flow of control between
itself and its clients.




Example: Java's Swing and AWT classes.

6
When using a framework, one usually just implements a few
callback functions or specializes a few classes, and then invokes a
single method or procedure.
The framework does the rest of the work for you, invoking any
necessary client callbacks or methods at the appropriate time and
place.
i.e. "Don't call us, we'll call you.“, or "Leave the driving to us.“
They have a huge amount of code to manage the user interface, and
there is inversion of control because you start the GUI framework
and then wait for it to call your listeners
COMPSCI 230: 10
Inversion of Control

Traditional Program Execution
The app has control over the
execution flow, calling library
code when it needs to.
7
Inversion of Control
The framework has control over
the execution flow, calling app
code for app-specific behavior.
COMPSCI 230: 10
Inversion of Control
Example: Java Applets
8
COMPSCI 230: 10
What is Java Frameworks?


Frameworks are large bodies (usually many classes) of
prewritten code to which you add your own code to solve a
problem in a specific domain.
In Java technology there are so many frameworks that helps
the programmers to build complex applications easily.
Examples:


GUI Framework: eg Java's Swing and AWT classes
Collection Framework/library


9
It is a unified architecture for representing and manipulating collections
It contains Interfaces, Implementations and algorithms
COMPSCI 230: 10
Collections Framework

The Java Collections Framework provides the following
benefits:

Reduces programming effort


Increases program speed and quality


It provides high-performance, high-quality implementations of useful data
structures and algorithms
Fosters software reuse

10
Concentrate on the important parts of your program rather than on the
low-level "plumbing" required to make it work.
New data structures that conform to the standard collection interfaces are
by nature reusable. The same goes for new algorithms that operate on
objects that implement these interfaces.
COMPSCI 230: 10
Frameworks VS libraries

Framework uses your code because it is usually the
framework that is in control.



11
It means the framework controls the sequence and logic of some
operation and calls your code to provide certain details
You make use of a framework by calling its methods,
inheritance, and supplying "callbacks", listeners, etc
Note: although sometimes large libraries are referred to as
frameworks, this is probably not the most common use of the
term.
COMPSCI 230: 10
Advantages


Reuse can save cost and time
Higher level of abstraction



12
Frameworks provides a standard working system through which
user can develop the desired module of application or complete
application instead of developing lower level details.
Developers can devote more time in developing the software
requirement
Reduced maintenance cost (if the framework is maintained by
someone else)
COMPSCI 230: 10
Disadvantages

Can lead to code bloat



Cost of learning a framework



13
Framework may contain lots of unused code
May need to use several frameworks
Spend more time in assessing the concept, function and its uses in
developing the program.
Licensing cost (for commercial frameworks)
A generic ‘one-size-fits-all’ does not work so efficiently for
any specific software. There is need to extend framework
with specific code to develop any specific software.
COMPSCI 230: 10