Download as pdf or txt
Download as pdf or txt
You are on page 1of 5

Software Engineering

Name:

Ahmad Saleem

Roll No.:

18144156-052

Semester:

4th(Evening)

Department:

Information Technology(IT)

Submitted To:

M. Tahir Subtan

Govt. Murray College Sialkot


Introduction:

Object-orientation is what’s referred to as a programming paradigm. It’s not a language


itself but a set of concepts that is supported by many languages. If you aren’t familiar
with the concepts of object-orientation, you may take a look at The Story of
Object-Oriented Programming. If everything we do in these languages is object-oriented,
it means, we are oriented or focused around objects. Now in an object-oriented
language, this one large program will instead be split apart into self contained objects,
almost like having several mini-programs, each object representing a different part of the
application. And each object contains its own data and its own logic, and they
communicate between themselves. These objects aren’t random. They represent the
way you talk and think about the problem you are trying to solve in your real life. They
represent things like employees, images, bank accounts, spaceships, asteroids, video
segment, audio files, or whatever exists in your program
System context and interactions
Understanding the relationships between the software that is being designed and its
external environment is essential for deciding how to provide the required system
functionality and how to structure the system to communicate with its environment.
Understanding of the context also lets you establish the boundaries of the system.
Setting the system boundaries helps you decide what features are implemented in the
system being designed and what features are in other associated systems.
Context and interaction models
A system context model is a structural model that demonstrates the other systems in
the environment of the system being developed.
An interaction model is a dynamic model that shows how the system interacts with its
environment as it is used.

Architectural design
Once interactions between the system and its environment have been understood, you
use this information for designing the system architecture.
You identify the major components that make up the system and their interactions, and
then may organize the components using an architectural pattern such as a layered or
client-server model.
The weather station is composed of independent subsystems that communicate by
broadcasting messages on a common infrastructure.
Object class identification
• Identifying object classes is often a difficult part of object oriented design.
• There is no 'magic formula' for object identification. It relies on the skill,
experience
and domain knowledge of system designers.
• Object identification is an iterative process. You are unlikely to get it right first
time.

Approaches to identification
• Use a grammatical approach based on a natural language description of the
system (used in Hood OOD method).
• Base the identification on tangible things in the application domain.
• Use a behavioural approach and identify objects based on what participates in
what behaviour.
• Use a scenario-based analysis. The objects, attributes and methods in each
scenario are identified.
Interface specification
• Object interfaces have to be specified so that the objects and other components
can be designed in parallel.
• Designers should avoid designing the interface representation but should hide
this in the object itself.
• Objects may have several interfaces which are viewpoints on the methods
provided.
• The UML uses class diagrams for interface specification but Java may also be
used.
Design patterns
• A design pattern is a way of reusing abstract knowledge about a problem and its
solution.
• A pattern is a description of the problem and the essence of its solution.
• It should be sufficiently abstract to be reused in different settings.
• Pattern descriptions usually make use of object-oriented characteristics such as
inheritance and polymorphism.
Creational patterns
This module explores creational patterns, which represent patterns that are often used
in place of direct instantiation with constructors. Creational patterns make the creation
process more adaptable and dynamic. In particular, they can provide a great deal of
flexibility about which objects are created, how those objects are created, and how they
are initialized.
In this module, you will learn:
• How creational patterns help programmers
• Five well-known creational patterns
• The elements of the Factory Method pattern
• How to incorporate the Factory Method pattern into your course project

Structural Design Patterns


This module explores structural patterns, patterns that use composition to merge
objects and classes into larger structures. A good toolbox of structural patterns allows
you to solve many thorny problems you are likely to encounter.
They show you how to glue different pieces of a system together in a flexible and
extensible fashion. Structural patterns help you guarantee that when one of the parts
changes, the entire structure does not need to change.
They also show you how to recast pieces that do not fit (but that you need to use) into
pieces that do fit.
In this module, you will learn:
• How programmers use structural patterns
• The characteristics of some commonly used structural patterns
• When and when not to use the Flyweight pattern
• How the Flyweight pattern can help with your course project

Behavioral Design Patterns


This module explores different behavioral design patterns, patterns that describe the
way objects and classes interact and divide responsibilities among themselves.
A behavioral pattern abstracts an action you want to take from the object or class that
takes the action. By changing the object or class, you can change the algorithm used,
the objects affected, or the behavior, while still retaining the same basic interface
for client classes.
A good toolbox of behavioral patterns allows you to solve many challenging problems
you are likely to encounter when designing object-oriented systems. These include
enumerating lists, responding to changes of state in an object, serializing and
deserializing objects without penetrating data encapsulation.
In this module, you will learn:
• How programmers use behavioral design patterns
• About the most commonly used design patterns
• When to use the Observer and Mediator patterns
• How to use the Mediator pattern to manage the different traffic lights
Implementation issues
Focus here is not on programming, although this is obviously important, but on other
implementation issues that are often not covered in programming texts:
• Reuse Most modern software is constructed by reusing existing components or
systems. When you are developing software, you should make as much use as
possible of existing code.
• Configuration management During the development process, you have to keep
track of the many different versions of each software component in a
configuration management system.
• Host-target development Production software does not usually execute on the
same computer as the software development environment. Rather, you develop
it on one computer (the host system) and execute it on a separate computer (the
target system).

You might also like