Professional Documents
Culture Documents
Object Oriented System Design
Object Oriented System Design
Translate the analysis model into the design model(Map the information
from the analysis model to the design representations - data design,
architectural design, interface design, procedural design).
During system design:
Developers define the design goals of the project and decompose the
system into smaller subsystems that can be realized by individual teams.
Developers also select strategies for building the system
The result of system design is a model that includes a subsystem
decomposition and a clear description of each of these strategies.
Where are we in the system development ?
The creation of software involves four basic activities:
o Establishing the requirements, creating a design, implementing the code,
testing the implementation
Software requirements specify the tasks that a program must accomplish
o what to do, not how to do it
It is difficult to establish detailed, unambiguous, and complete requirements
Careful attention to the requirements can save significant time and expense in the
overall project
Software design and implementation??? is the process of converting the system
specification into an executable system.
Software design
o Design a software structure that realizes the specification;
Implementation
o Translate this structure into an executable program;
Cont..
Object-oriented analysis, design and programming are related but distinct
Analysis:
oBased on analysis model but with implementation details; Focus on data structures and
requirements.
Implementation: Translate the object classes and relationships into a programming
language
oOOP is concerned with realising an OOD using an OO programming language such as
Java or C++
Cont..
A software design specifies how a program will accomplish its requirements
That is, a software design determines:
o how the solution can be broken down into manageable pieces
o what each piece will do
An object-oriented design determines which classes and objects are needed, and
specifies how they will interact
Low level design details include how individual methods will accomplish their
tasks
Implementation is the process of translating a design into source code
Novice programmers often think that writing code is the heart of software
development, but actually it should be the least creative step
Almost all important decisions are made during requirements and design stages
Implementation should focus on coding details, including style guidelines and
Input and Output
Design goals
A set of nonfunctional requirements
data/class design;
use case model
architectural design;
sequence diagrams
interface design;
Object model
component design
Design activities
Data
Architectural Abstract Interface Component Algorithm
structure
design specification design design design
design
Data
System Software Interface Component Algorithm
structure
architecture specification specification specification specification
specification
Modularity
Software Architecture
Information Hiding
manufacturer
model number
type
swing direction
inserts
lights
type
number
weight
opening mechanism
open
details of enter
algorithm
S1
S2
P1 P2
S5
P5
P4 P3
S3
S4
Software Architecture
to propagate
Hide details within a module
Ensure that no other module can tamper with these hidden details
Functional independence
Each module should address a specific sub function of requirements
and have a simple interface.
Functional independent modules are easier to develop, maintain,
and test;
Error propagation is reduced and reusable modules are possible;
Assessed using two qualitative criteria:
o cohesion;
o coupling.
Coupling and Cohesion
Goal: Reduction of complexity while change occurs
Cohesion measures the dependence among classes. the degree of
interaction within a module. A measure of functional strength
o High cohesion: The classes in the subsystem perform similar tasks and
associations
Coupling measures dependencies between subsystems. the degree of
interaction between modules’ A measure of relative interdependence
o High coupling: Changes to one subsystem will have high impact on the
subsystem
Subsystems should have as maximum cohesion and minimum coupling as
possible:May say, good subsystem decomposition should minimize
coupling and maximize cohesion.
System Design Activities
System Design
Boundary
Identify Design Goals Conditions
Additional NFRs Initialization
Trade-offs: Termination
Failure.
Subsystem Decomposition
Partition
relationship Layer 1
A:Subsystem
Primary Question:
What kind of service is provided by the subsystems (subsystem interface)?
Secondary Question:
Can the subsystems be hierarchically ordered (layers)?
What kind of model is good for describing layers and partitions?
Partitioning and layering are techniques to achieve low coupling.
A large system is usually decomposed into subsystems using both,
layers and partitions.
Cont..
♦ Criteria for subsystem selection: most of the interaction should be
within a subsystem and not across subsystem boundaries.
Self-contained
o It degrades maintainability
o It increases maintainability
o High reusability
Example: ARENA Subsystem decomposition
User Interface
Administers user
Manages advertisement Manages tournaments,
accounts
banners and sponsorships. applications, promotions.
Tournament
Advertisement User Management
For adding games,
styles, and expert
rating formulas
Component
Management User Directory
Tournament
Session
Statistics
Management Stores user profiles
Maintains state during Stores results of (contact &
matches. archived tournaments subscriptions)
Concurrency
Nonfunctional Requirements to be addressed: Performance, Response time,
latency, availability.
Two objects are inherently concurrent if they can receive events at the same
time without interacting
o Source for identification: Objects in a sequence diagram that can
o Deployment Diagram:
Illustrates the distribution of components at run-time.
Deployment diagrams use nodes and connections to depict the physical
resources in the system.
o Component Diagram:
Illustrates dependencies between components
o Used to model the top-level view of the system design in terms of
components and dependencies among the components.
o Show how the software components are wired together in the overall
application.
System Design Activities:
Data Management
(heterogeneous systems)
o Rollback and Transactions play an important aspect
Mapping Object Models
UML object models can be mapped to relational
databases
The mapping:
o Each class is mapped to its own table
o Each class attribute is mapped to a column in the table
o An instance of a class represents a row in the table
o One-to-many associations are implemented with a buried
foreign key
o Many-to-many associations are mapped to their own tables
Methods are not mapped
System Design Activities :
Access Control
In multi-user systems different actors usually have different access
rights to different functionality and data
How do we model these accesses?
o During analysis we model them by associating different use cases
o Tickets?
o By Port?
o By Name?
Authentication and Encryption
During system design we model them by examining the object model by
determining which objects are shared among actors.
Depending on the security requirements of the system, we also define how actors
are authenticated to the system and how selected data in the system should be
encrypted.
♦ Authentication
Process of verifying the association between the identity of a user (or calling
subsystem) and the system
o User name / password
o Smart Cards
♦ Encryption
Translating a message (plaintext) into an encrypted message (ciphertext).
A key is used to encrypt (sender) and decrypt (receiver) a message
System Design Activities: Boundary
Conditions
Most of the system design effort is concerned with steady-state
behavior.
However, the system design phase must also address the initiation
and finalization of the system. This is addressed by a set of new uses
cases called administration use cases
Initialization-
Describes how the system is brought from a non initialized state to
steady-state ("startup use cases”).
o How does the system start up?
Failure
Many possible causes: Bugs, errors, external problems (power
supply).
Good system design foresees fatal failures (“failure use cases”).
o How does the system behave when a node or communication link
initialization?
Thank you!
https://www.tutorialspoint.co
m/software_engineering/inde
x.htm