SOFTWARE ENGINEERING
UNIT 4 REVISION
PRESENTED BY,
HARISHMA S (17BCA070)
PRANEETH V (17BCA093)
OBJECT ORIENTED
DESIGN USING UML
What is Object Oriented
Design?
Object Oriented Design (OOD) serves
as part of the object oriented
programming (OOP) process of
lifestyle.
It is mainly the process of using an
object methodology to design a
computing system or application.
This technique enables the
implementation of a software based on
the concepts of objects.
What is UML?
UML is an acronym that stands
for Unified Modeling Language.
In simple words, UML is a modern
approach to modelling and documenting
software.
UML itself finds different uses in software
development and business process
documentation:
Sketch (Forward and Backward
design)
Blueprint
Pseudo programming language
Types of UML diagrams
Behavioural UML diagrams :
Activity Diagram
Use Case Diagram
Interaction Overview Diagram
Timing Diagram
State Machine Diagram
Communication Diagram
Sequence Diagram
Structural UML Diagram
Class Diagram
Object Diagram
Component Diagram
Composite Structure
Diagram
Deployment Diagram
Package Diagram
Profile Diagram
DESIGN PATTERNS
What is a design pattern?
Design patterns are typical solutions to
common problems in software design. Each
pattern is like a blueprint that you can customize
to solve a particular design problem in your code.
Design patterns are a toolkit of tried and tested
solutions to common problems in software
design. Even if you never encounter these
problems, knowing patterns is still useful because
it teaches you how to solve all sorts of problems
using principles of object-oriented design.
Essential elements of
Patterns
NAME:
A meaningful name/ identifier for the pattern.
PROBLEM DESCRIPTION:
When to apply the pattern.
SOLUTION DESCRIPTION:
Elements that make up the pattern, the
relationships, responsibilities and collaborations.
CONSEQUENCES:
The results and trade-offs of applying the
pattern.
Classification of patterns
Creational patterns
Creating a collection of objects in flexible
ways
Structural patterns
Represents a collection of related objects.
Behavioural patterns
Capturing behaviour among a collection
of objects.
The 7 most important
patterns
Singleton
Factory method
Strategy
Observer
Builder
Adapter
State
[Link]
IMPLEMENTATION ISSUES
3 aspects of Implementation important to
software engineering:
Reuse
Configuration management
Host- target development
REUSE
Most modern software is constructed
by reusing existing components or
systems.
Software reuse is possible at 4 levels:
The abstraction level
The object level
The component level
The system level
CONFIGURE MANAGEMENT
During the development process, many
different versions of each software
component are created. If you don’t
keep track of these versions in a
configuration management system,
you are liable to include the wrong
versions of these components in your
system.
There are three main fundamental
configuration management activities
They are,
Versions management
System integration
Problem tracking
Host- Target Development
Most software development is based on a host-target
model. Software is developed on one computer (the host),
but runs on a separate machine (the target).
A software development platform should provide a range
of tools to support software engineering processes. These
may include:
1. An integrated compiler and syntax-directed editing
system that allows you to create, edit, and compile
code.
2. A language debugging system.
3. Graphical editing tools, such as tools to edit UML
models.
4. Testing tools, such as JUnit (Massol, 2003) that can
automatically run a set of tests on a new version of a
program.
5. Project support tools that help you organize the code
for different development projects.
OPEN SOURCE SOFTWARE
DEVELOPMENT
WHAT IS OSS?
Open source is a visible set of
instructions which is open to public or
users to change and customize as per
their needs.
Example: Linux, Libre office, Apache,
GIMP etc.,
Why OSS?
Customizable
Improvable
Redistributable
Runs literally everywhere, and for
everyone
Transparency
FREE!!
Free as in “FREEDOM”
Freedom to study the code
Freedom to improve the program
Freedom to run the program anytime,
for any purpose on any machine.
Freedom to redistribute.
Free Speech not Free Beer
CRITERIA FOR OPEN
SOURCE
Free distribution
Source code
Derived works
Integrity of the Author’s source code
No discrimination against person or groups
No discrimination against Fields of Endeavour
Distribution of licence
License must not be specific to a product
License must not restrict other software
License must be technologically neutral
SOFTWARE EVOLUTION
PROCESS
The process of developing a software
product using software engineering
principles & method is referred to as
software evolution.
This includes the initial development of
software & its maintenance & updates.
LIFE CYCLE OF SOFTWARE
EVOLUTION
SOFTWARE EVOLUTION
DYNAMICS
Software evolution dynamics is the study of
system change.
In the 1970s and 1980s, Lehman and Belady,
carried out several studies of system change
with a view to understanding more about
characteristics of software evolution.
The work continued in the 1990s as Lehman
and others investigated the significance of
feedback in evolution processes.
They proposed ‘Lehman’s laws’ concerning
system change.
LEHMAN’S LAW
Law of continuing change.
Law of increasing complexity.
Law of large program evolution.
Law of conservation of organization
stability.
Law of conservation of familiarity.
LEGACY SYSTEM
A legacy system refers to outdated
computer systems, programming
languages or application software that
are used instead of available upgraded
versions.
Usually they rely on obsolete
technology but are still essential for the
business.
REASON FOR
REQUIREMENT OF RE-
ENGINEERING
Most of the legacy system may be
poorly structured & their
documentation maybe either out of
date or non-existent .
The developers of these systems have
left organization, there may be no one
in the organization who really
understands the systems in detail.
These systems were also not designed
for change.