cp323 Lect1
cp323 Lect1
cp323 Lect1
DEVELOPMENT
INTRODUCTION
Software framework
● In computer programming, a software
framework is an abstraction in which
software, providing generic functionality,
can be selectively changed by additional
user-written code, thus providing
application-specific software.
Software framework
● It provides a standard way to build and
deploy applications and is a universal,
reusable software environment that
provides particular functionality as part of a
larger software platform to facilitate the
development of software applications.
Software framework
● Software frameworks may include support
programs, compilers, code libraries,
toolsets, and application programming
interfaces (APIs) that bring together all the
different components to enable
development of a project or system.
Software library
● In computer science, a library is a collection
of non-volatile resources used by computer
programs, often for software development.
● These may include configuration data,
documentation, help data, message
templates, pre-written code and subroutines,
classes, values or type specifications.
Software library
● A library is also a collection of implementations of
behavior, written in terms of a language, that has a
well-defined interface by which the behavior is
invoked.
● For instance, people who want to write a higher-level
program can use a library to make system calls
instead of implementing those system calls over and
over again
Software Framework Vs Software library
● Inversion of control: In software
engineering, inversion of control (IoC) is a
programming principle.
● IoC inverts the flow of control as compared
to traditional control flow.
Software Framework Vs Software library
● A software architecture with this design inverts
control as compared to traditional procedural
programming
● In a framework, unlike in libraries or in standard user
applications, the overall program's flow of control is
not dictated by the caller, but by the framework.
Software Framework Vs Software library
● Default behaviour: This can be provided
with the invariant methods of the Template
Method Pattern in an abstract class which is
provided by the framework.
Software Framework Vs Software library
● Extensibility is a software engineering and systems
design principle that provides for future growth.
● Extensibility is a measure of the ability to extend a
system and the level of effort required to
implement the extension.
● Extensions can be through the addition of new
functionality or through modification of existing
functionality.
Software Framework Vs Software library
● Extensibility: A user can extend the
framework – usually by selective overriding –
or programmers can add specialized user
code to provide specific functionality.
● This is usually achieved by a hook method in
a subclass that overrides a template method
in the superclass
Software Framework Vs Software library
● In object-oriented programming, the open–
closed principle states "software entities
(classes, modules, functions, etc.) should be
open for extension, but closed for
modification"
● That is, such an entity can allow its behaviour to
be extended without modifying its source code.
Software Framework Vs Software library
● Non-modifiable framework code: The
framework code, in general, is not supposed
to be modified, while accepting user-
implemented extensions.
● In other words, users can extend the
framework, but cannot modify its code.
Rationale of Software Frameworks
● Frameworks reduce overall development
time by allowing programmers and
designers to devote their time to meet
software requirements rather than dealing
with the more standard low-level details of
providing a working system.
Rationale of Software Frameworks
● Using any library solution necessarily pulls
in extras and unused extraneous assets
unless the software is a compiler-object
linker making a tight (small, wholly
controlled, and specified) executable
module.
Rationale of Software Frameworks
● In most cases, the framework has good
documentation and support.
● Typically, paid support will almost always be
faster and more concise, but this also
depends on the level of activity within the
framework.
Web Framework Categories
● Server side (Bakend)
● Client side (Frontend)
Frameworks Architecture
● According to Pree (1994), software
frameworks consist of frozen spots and hot
spots. Frozen spots define the overall
architecture of a software system, that is to
say its basic components and the
relationships between them.
Frameworks Architecture
● These remain unchanged (frozen) in any
instantiation of the application framework.
● Hot spots represent those parts where the
programmers using the framework add
their own code to add the functionality
specific to their own project.
Frameworks Architecture
● 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.
Assignment
Discuss the popular used front-end and back-
end web application development frameworks.
End