0% found this document useful (0 votes)
10 views

week4_EnhancedSystemDecomposition_Part2

Enhanced System Decomposition

Uploaded by

a.hamoud6161
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
10 views

week4_EnhancedSystemDecomposition_Part2

Enhanced System Decomposition

Uploaded by

a.hamoud6161
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 22

Software Design

and Architecture
System Decomposition

Soha Makady
Example of Design Goals
• Reliability Good documentation
• Modifiability Well-defined interfaces
• Maintainability User-friendliness
• Understandability Reuse of components
• Adaptability Rapid development
• Reusability Minimum number of errors
• Efficiency Readability
• Portability Ease of learning
• Traceability of Ease of remembering
requirements Ease of use
• Fault tolerance Increased productivity
• Backward-compatibility Low-cost
• Cost-effectiveness Flexibility
• Robustness
• High-performance
Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 2
Stakeholders have different Design Goals

Low cost Functionality


Increased productivity User-friendliness
Backward compatibility Usability
Traceability of requirements Runtime Ease of learning
Rapid development Efficiency Fault tolerant
Flexibility Robustness
Reliability
Portability
Client Good documentation
End
(Customer) User
Minimum # of errors
Modifiability, Readability
Reusability, Adaptability
Well-defined interfaces Developer/
Maintainer
Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 3
Typical Design Trade-offs

• Functionality v. Usability
• Cost v. Robustness
• Efficiency v. Portability
• Rapid development v. Functionality

Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 4
System Design Concepts

• Subsystem decomposition
• Services and subsystem interfaces
• Coupling and Coherence

Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 5
Services and subsystem interfaces
• Subsystem
• Subsystems provide services to other
subsystems
• The objects and classes from the object model
are the “seeds” for the subsystems
• In UML subsystems are modeled as packages
• Service
• A set of related operations that share a common
purpose
• The origin (“seed”) for services are the use cases
from the functional model

Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 7
Services and subsystem interfaces
• During the early stages of system design, we do
not know the exact services provided by each
subsystem.
• In such cases, we use the dependency notation.

Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 8
Services and subsystem interfaces
• Subsystem services: During system design, we
define the subsystem in terms of the services it
provides.
• A subsystem consists of a collection of classes,
associations, operations, events and constraints
that are closely interrelated with each other
• Subsystem interface: During the object design,
we define the subsystem interface in terms of the
operations it provides.

Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 9
Services and subsystem interfaces
Provided and Required Interfaces in UML

Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 10
Services and subsystem interfaces
• Application programmer’s interface (API)
• The API is the specification of the subsystem
interface in a specific programming language
• APIs are defined during implementation
• The terms subsystem interface and API are often
confused with each other
• The term API should not be used during system
design and object design, but only during
implementation.

Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 11
Example: Notification subsystem

• Service provided by Notification Subsystem


• LookupChannel()
• SubscribeToChannel()
• SendNotice()
• UnscubscribeFromChannel()
• Subsystem Interface of Notification Subsystem
• Set of fully typed UML operations
• API of Notification Subsystem
• Implementation in Java

Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 12
Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 13
Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 14
Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 15
Subsystem Interface Object

• Good design: The subsystem interface object


describes all the services of the subsystem
interface

• Subsystem Interface Object


• The set of public operations provided by a subsystem

Subsystem Interface Objects can be realized with the


Façade pattern (=> lecture on design patterns).

Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 16
Coupling and Coherence of Subsystems

• Goal: Reduce system complexity while allowing


change
• Coherence measures dependency among classes
• High coherence: The classes in the subsystem perform
similar tasks and are related to each other via many
associations
• Low coherence: Lots of miscellaneous and auxiliary
classes, almost no associations
• Coupling measures dependency among
subsystems
• High coupling: Changes to one subsystem will have high
impact on the other subsystem
• Low coupling: A change in one subsystem does not affect
any other subsystem.

Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 18
Coupling and Coherence of Subsystems
Good Design
• Goal: Reduce system complexity while allowing
change
• Coherence measures dependency among classes
• High coherence: The classes in the subsystem perform
similar tasks and are related to each other via
associations
• Low coherence: Lots of miscellaneous and auxiliary
classes, no associations
• Coupling measures dependency among
subsystems
• High coupling: Changes to one subsystem will have high
impact on the other subsystem
• Low coupling: A change in one subsystem does not affect
any other subsystem

Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 19
Coupling and Coherence of Subsystems

Any issues?
Solution?

Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 20
Coupling and Coherence of Subsystems

Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 21
Coupling and Coherence of Subsystems

Any issues?
Solution?

Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 22
Coupling and Coherence of Subsystems

Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 23
Required Readings

• Chapter 6 from Bruegge’s OOSE textbook:


Bruegge, Bernd, and Allen H. Dutoit. "Object-oriented
software Engineering." ed: Prentice Hall , Third Edtiton

Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 24

You might also like