SlideShare a Scribd company logo
Object-Oriented Software Engineering
Chapter 5
Object Oriented Design
Object-Oriented Systems Development Bahrami © Irwin/ McGraw-Hill
System design is the
transformation of the
analysis model into a system design model.
An Overview of 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, such as
 the hardware/software platform on which the system will run,
 the persistent data management strategy,
 the global control flow,
 the access control policy, and
 the handling of boundary conditions.
 The result of system design is a model that includes
 a clear description of each of these strategies,
 a subsystem decomposition, and
 a UML deployment diagram representing the hardware/software
mapping of the system
Object-Oriented Systems Development Bahrami © Irwin/ McGraw-Hill
Activities of system Design
Object-Oriented Systems Development Bahrami © Irwin/ McGraw-Hill
Activities of system Design
In particular, system design includes:
 the definition of design goals
 the decomposition of the system into subsystems
 the selection of off-the-shelf and legacy components
 the mapping of subsystem to hardware
 the selection of a persistent data management infrastructure
 the selection of an access control policy
 the selection of a global control flow mechanism
 the handling of boundary conditions
Object-Oriented Systems Development Bahrami © Irwin/ McGraw-Hill
Activities of system Design
System design results in the following products:
 list of design goals,
 describing the qualities of the system that developers should
optimize
 software architecture,
 describing the subsystem decomposition in terms of subsystem
responsibilities,
 dependencies among subsystems, subsystem mapping to hardware,
 major policy decisions such as control flow,
 access control, and
 data storage
The design goals are derived from the nonfunctional requirements
Object-Oriented Systems Development Bahrami © Irwin/ McGraw-Hill
Activities of System Design
Hardware/software mapping:
 What is the hardware configuration of the system?
 Which node is responsible for which functionality?
 How is communication between nodes realized?
 Which services are realized using existing software components?
 How are these components encapsulated?
Addressing hardware/software mapping issues often leads to
 the definition of additional subsystems dedicated to moving data from
one node to another,
 dealing with concurrency, and reliability issues.
Object-Oriented Systems Development Bahrami © Irwin/ McGraw-Hill
Activities of System Design
 Data management:
 Which data need to be persistent?
 Where should persistent data be stored?
 How are they accessed?
Persistent data represents a bottleneck in the system on many different
fronts: Most functionality in system is concerned with creating or
manipulating persistent data.
 For this reason, access to the data should be fast and reliable.
 If retrieving data is slow, the whole system will be slow.
 If data corruption is likely, complete system failure is likely. .
Object-Oriented Systems Development Bahrami © Irwin/ McGraw-Hill
Activities of System Design
Access control:
Access control and security are system-wide issues. The access control policy
used to specify who can and cannot access certain data should be the same
across all subsystems.
 Who can access which data?
 Can access control change dynamically?
 How is access control specified and realized?
Control flow:
 How does the system sequence operations? Is the system event driven?
 Can it handle more than one user interaction at a time?
The choice of control flow has an impact on the interfaces of subsystems. If
an event-driven control flow is selected,
 subsystems will provide event handlers.
If threads are selected, subsystems need to
 guarantee mutual exclusion in critical sections..
Object-Oriented Systems Development Bahrami © Irwin/ McGraw-Hill
Activities of System Design
Boundary conditions:
 How is the system initialized?
 How is it shut down?
 How are exceptional cases detected and handled?
System initialization and shutdown often represent the larger part of the
complexity of a system, especially in a distributed environment.
Initialization, shutdown, and exception handling have an impact on the
interface of all subsystems
Object-Oriented Systems Development Bahrami © Irwin/ McGraw-Hill
System Design Concepts
1. The concept of subsystem and its relationship to classes
 Subsystems and classes helps to reduce the complexity of the solution
domain.
 The system is decomposed into simpler parts, called subsystems, which are
made of a number of solution domain classes
 Several programming languages (e.g., Java and Modula-2) provide
constructs for modeling subsystems (packages in Java, modules in
Modula-2).

 Developers need to carefully document the subsystem
decomposition as subsystems are usually realized by different teams.
Object-Oriented Systems Development Bahrami © Irwin/ McGraw-Hill
System Design Concepts
Sub System Decomposition
Object-Oriented Systems Development Bahrami © Irwin/ McGraw-Hill
Subsystems are shown as UML packages.
Dashed arrows indicate dependencies between subsystems
System Decomposition for accident management system
System Design Concepts
2. Services and subsystem interfaces
 A subsystem is characterized by the services it provides to other
subsystems.
 A service is a set of related operations that share a common
purpose.
 A subsystem providing a notification service
 The set of operations of a subsystem that are available to other
subsystems form the subsystem interface.
 The subsystem interface, also referred to as the application
programmer interface (API), includes
 the name of the operations,
 their parameters,
 their types, and
 their return values.
Object-Oriented Systems Development Bahrami © Irwin/ McGraw-Hill
System Design Concepts
3. The two properties of subsystems are :
– coupling coherence
 Coupling measures the dependencies between two subsystems
 Coherence measures the dependencies among classes within a
subsystem.
Ideal subsystem decomposition should
minimize coupling and maximize coherence.
Object-Oriented Systems Development Bahrami © Irwin/ McGraw-Hill
System Design Concepts
3.1 Coupling
 Coupling is the strength of dependencies between two
subsystems.
 If two subsystems are loosely coupled,
 they are relatively independent, and
 thus, modifications to one of the subsystems will have little impact on
the other.
 If two subsystems are strongly coupled,
 they are relatively dependent, and
 modifications to one subsystem is likely to have impact on the other.
 A desirable property of a subsystem decomposition is that
subsystems are as loosely coupled as possible.
 This minimizes the impact that errors or future changes have on the
correct operation of the system
Object-Oriented Systems Development Bahrami © Irwin/ McGraw-Hill
System Design Concepts
3.2 Coherence
 Coherence is the strength of dependencies within a subsystem.
 If a subsystem contains a number of related objects, and perform
similar tasks,
 its coherence is high.
 If a subsystem contains a number of unrelated objects,
 its coherence is low.
 Subsystem decomposition leads to subsystems with high coherence.
 Analysis identifies application objects, their relationships, and
attributes and operations.
 System design identifies subsystems and most important solution
objects.
 Object design refines and detail both sets of objects and identify any
remaining solution objects needed to complete the system.
Object-Oriented Systems Development Bahrami © Irwin/ McGraw-Hill
System Design Concepts
The coherence of the RationaleSubsystem and the PlanningSubsystem is
higher than the coherence of the original DecisionSubsystem
Object-Oriented Systems Development Bahrami © Irwin/ McGraw-Hill
System Design Concepts
4. Layering and partitioning
The two techniques for relating subsystems to each other
 Layering allows a system to be organized as a hierarchy of subsystems,
each providing higher level services to the subsystem above it by using
lower level services from the subsystems below it.
 Partitioning organizes subsystems as peers that mutually provide
different services to each other
 The goal of system design is to manage complexity by dividing the
system into smaller, manageable pieces. This can be done by a divide-
and-conquer approach
 Each layer can only depend on lower level layers and has no knowledge of
the layers above it.
 In a closed architecture, each layer can only depend on the layers
immediately below it.
 In an open architecture, a layer can also access layers at deeper levels
Object-Oriented Systems Development Bahrami © Irwin/ McGraw-Hill
System Design Concepts
 A subset from a layered decomposition that includes at least one
subsystem from each layer is called a vertical slice.
 For example, the subsystems A, B, and E constitute a vertical slice,
whereas the subsystems D and G do not.
Object-Oriented Systems Development Bahrami © Irwin/ McGraw-Hill
System Design Concepts
5. Software architecture
 A software architecture includes the system decomposition, the
global control flow, error-handling policies and inter subsystem
communication protocols
1. Repository architecture
 subsystems access and modify data from a single data structure
called the central repository.
 Subsystems are relatively independent and interact only through
the central data structure.
 Control flow can be dictated either by the central repository
 The repository architecture is typical for database management
systems, such as a payroll system or a bank system
Object-Oriented Systems Development Bahrami © Irwin/ McGraw-Hill
System Design Concepts
Object-Oriented Systems Development Bahrami © Irwin/ McGraw-Hill
An instance of the repository architecture (UML Class diagram).
A modern compiler incrementally generates
a parse tree and a symbol table
that can be later used by debuggers and syntax editors.
System Design Concepts
Object-Oriented Systems Development Bahrami © Irwin/ McGraw-Hill
Pros and cons of Repository architectures:
1. Repository architectures are well suited for applications with
constantly changing complex data processing tasks.
2. Once a central repository is well defined, we can easily add
new services in the form of additional subsystems.
3. The main disadvantage of repository systems is that the
central repository can quickly become a bottleneck, both from
a performance aspect and a modifiability aspect
System Design Concepts
Object-Oriented Systems Development Bahrami © Irwin/ McGraw-Hill
Client/server architecture
 a subsystem, the server, provides services to instances of other
subsystems called the clients, which are responsible for
interacting with the user.
 The request for a service is usually done via a remote procedure
call mechanism or a common object broker (e.g., CORBA or Java
RMI).
 Control flow in the clients and the servers is independent except
for synchronization to manage requests or to receive results.
Client/server architecture (UML class diagram).
System Design Concepts
Object-Oriented Systems Development Bahrami © Irwin/ McGraw-Hill
 Clients request services from one or more servers.
 The server has no knowledge of the client.
 The client/server architecture is a generalization of the repository
architecture.
 An information system with a central database is an example of a
client/server architecture.
 The clients are responsible for receiving inputs from the user,
performing range checks, and initiating database transactions once
all necessary data are collected.
 The server is then responsible for performing the transaction and
guaranteeing the integrity of the data
UML Deployment diagrams
Object-Oriented Systems Development Bahrami © Irwin/ McGraw-Hill
6. UML deployment diagrams are used to depict the relationship
among run-time components and hardware nodes.
 Components are self-contained entities that provide services to
other components or actors.
 A Web server, for example, is a component that provides
services to Web browsers.
 A Web browser such as Netscape is a component that provides
services to a user.
 A distributed system can be composed of many interacting run-
time components
UML Deployment diagrams
Object-Oriented Systems Development Bahrami © Irwin/ McGraw-Hill
 In UML deployment diagrams,
 nodes are represented by boxes containing component
icons.
 Dependencies between components are represented by
dashed arrows
An example of deployment diagram illustrating two Web
browsers accessing a Web
UML Deployment diagrams
Object-Oriented Systems Development Bahrami © Irwin/ McGraw-Hill
 A UML deployment diagram representing the allocation of
components to different nodes and the dependencies among
components.
 Web browsers on PCs and Macs can access a WebServer that
provides information from a Database server.
 The Web server in turns accesses data from a database server
 We can see from the dependency graph that the Web browsers do
not access directly the database at any time.
 The deployment diagram in Figure focuses on the allocation of
components to nodes and provides a high-level view of each
component.
 Components can be refined to include information about the
interfaces they provide and the classes they contain.
Documenting system design
Object-Oriented Systems Development Bahrami © Irwin/ McGraw-Hill
 System design is documented in the System Design Document
(SDD).
 It describes
 design goals set by the project,
 the subsystem decomposition (with UML class diagrams),
 the hardware/software mapping (with UML deployment
diagrams),
 the data management,
 the access control,
 the control flow mechanisms, and
 The boundary conditions.
 The SDD is used to define interfaces between teams of
developers and as reference when architecture-level decisions
need to be revisited.
Documenting system design
Object-Oriented Systems Development Bahrami © Irwin/ McGraw-Hill
Object design
Object-Oriented Systems Development Bahrami © Irwin/ McGraw-Hill
Object design includes:
 service specification,
 during which we precisely describe each class interface
 component selection,
 during which we identify additional off-the-shelf
components and solution objects
 object model restructuring,
 during which we transform the object design model to
improve its understandability and extensibility
 object model optimization,
 during which we transform the object design model to
address performance criteria such as response time or
memory utilization
An overview of Object design
Object-Oriented Systems Development Bahrami © Irwin/ McGraw-Hill
During object design,
 we refine the analysis and system design models
 identify new objects, and
 close the gap between the application objects identified
during requirements and off-the-shelf components
selected during system design
As a result, the object design model can be partitioned into sets
of classes such that they can be implemented by individual
developers.
An overview of Object design
Object-Oriented Systems Development Bahrami © Irwin/ McGraw-Hill
Object design concepts
Object-Oriented Systems Development Bahrami © Irwin/ McGraw-Hill
The principal object design concepts are:
1. application objects versus solution objects
2. types, signatures, and visibility
3. preconditions, postconditions, and invariants
Application objects versus solution objects
 Class diagrams can be used to model both the application domain
and the solution domain.
 Application objects, also called domain objects, represent concepts
of the domain that the system manipulates.
 Solution objects represent support components that do not have a
counterpart in the application domain, such as persistent data
stores, user interface objects, or middleware.
Object-Oriented Systems Development Bahrami © Irwin/ McGraw-Hill
Object design concepts
Object-Oriented Systems Development Bahrami © Irwin/ McGraw-Hill
Types, signatures, and visibility
 The type of an attribute specifies the range of values the attribute
can take and the operations that can be applied to the attribute
 The type of the return value is called the signature of the operation
 The visibility of an attribute or an operation specifies whether it can
be used by other classes
 Private. A private attribute can be accessed only by the class in
which it is defined.
 Protected. A protected attribute can be accessed by the class
in which it is defined and on any descendant of the class.
 Public. A public attribute or operation can be accessed by any
class.
Object design concept
Object-Oriented Systems Development Bahrami © Irwin/ McGraw-Hill
Contracts: Invariants, preconditions, and postconditions
 Contracts are constraints on a class that the caller must meet before
using the class as well as constraints that are ensured by the callee
when used.
 Contracts include three types of constraints:
 An invariant is a predicate that is always true for all instances of a
class.
 A precondition is a predicate that must be true before an operation
is invoked. Preconditions are associated with a specific operation.
Preconditions are used to specify constraints that a caller must meet
before calling an operation.
 A postcondition is a predicate that must be true after an operation is
invoked. Postconditions are associated with a specific operation.
Postconditions are used to specify constraints that the object must
ensure after the invocation of the operation
Object design concept
Object-Oriented Systems Development Bahrami © Irwin/ McGraw-Hill
Examples of invariants, preconditions, and postconditions in OCL
(UML class diagram).
Realizing Associations
Object-Oriented Systems Development Bahrami © Irwin/ McGraw-Hill
 Associations denote collections of bidirectional links between two or
more objects.
 Object-oriented programming languages provide references, in which one
object stores a handle to another object.
 References are unidirectional and take place between two objects
Unidirectional one-to-one associations.
 The simplest association is a one-to-one association
Realization of a unidirectional one-to-one association
Arrow denotes the transformation of the object model
Realizing Associations
Object-Oriented Systems Development Bahrami © Irwin/ McGraw-Hill
Bidirectional one-to-one associations
Realizing Associations
Object-Oriented Systems Development Bahrami © Irwin/ McGraw-Hill
Realization of a bidirectional, one-to-many association
Documenting object design
Object-Oriented Systems Development Bahrami © Irwin/ McGraw-Hill
 Object design is documented in the Object Design Document
(ODD).
 It describes
 object design trade-offs made by developers,
 guidelines they followed for subsystem interfaces,
 The decomposition of subsystems into packages and classes
and
 the class interfaces.
 The ODD is
 used to exchange interface information among teams and as
a reference during testing.
 The audience for the ODD includes
 system architects, (i.e., the developers who participate in the
system design)
 developers who implement each subsystem, and testers
Documenting object design
Object-Oriented Systems Development Bahrami © Irwin/ McGraw-Hill
 The ODD
 enables developers to understand the subsystem sufficiently
well that they can use it.
 a good interface specification which enables other developers
to implement classes concurrently.
 An interface specification should satisfy the following criteria
[Liskov,1986]:
 Restrictiveness.
 A specification should be precise enough that it excludes
unwanted implementations.
 Preconditions and postconditions specifying border cases is
one way to achieve restrictive specifications.
 Generality.
 A specification, however, should not restrict its
implementation.
Documenting object design
Object-Oriented Systems Development Bahrami © Irwin/ McGraw-Hill
 Clarity.
 A specification should be easily and unambiguously
understandable by developers.
 it is useless if it is difficult to understand.
 Certain behaviors are more easily described in natural
language, whereas boundary cases can be described with
constraints and exceptions.

More Related Content

What's hot

Designing and documenting software architecture unit 5
Designing and documenting software architecture unit 5Designing and documenting software architecture unit 5
Designing and documenting software architecture unit 5Sudarshan Dhondaley
 
Design Concept software engineering
Design Concept software engineeringDesign Concept software engineering
Design Concept software engineering
Darshit Metaliya
 
Socio Technical Systems in Software Engineering SE2
Socio Technical Systems in Software Engineering SE2Socio Technical Systems in Software Engineering SE2
Socio Technical Systems in Software Engineering SE2koolkampus
 
Layered architecture style
Layered architecture styleLayered architecture style
Layered architecture style
Begench Suhanov
 
Software engg. pressman_ch-10
Software engg. pressman_ch-10Software engg. pressman_ch-10
Software engg. pressman_ch-10Dhairya Joshi
 
Lecture 6 se
Lecture 6 seLecture 6 se
Lecture 6 se
Tribhuvan University
 
10 architectural design (1)
10 architectural design (1)10 architectural design (1)
10 architectural design (1)Ayesha Bhatti
 
Importance of software architecture 1
Importance of software architecture 1Importance of software architecture 1
Importance of software architecture 1
Dr Reeja S R
 
Fundamentals of Software Engineering
Fundamentals of Software Engineering Fundamentals of Software Engineering
Fundamentals of Software Engineering
Madhar Khan Pathan
 
SWE-401 - 7. Software Design Strategies
SWE-401 - 7. Software Design StrategiesSWE-401 - 7. Software Design Strategies
SWE-401 - 7. Software Design Strategies
ghayour abbas
 
4 agile modeldevelopement-danielleroux
4 agile modeldevelopement-danielleroux4 agile modeldevelopement-danielleroux
4 agile modeldevelopement-daniellerouxIBM
 
Architectural Styles and Case Studies, Software architecture ,unit–2
Architectural Styles and Case Studies, Software architecture ,unit–2Architectural Styles and Case Studies, Software architecture ,unit–2
Architectural Styles and Case Studies, Software architecture ,unit–2
Sudarshan Dhondaley
 
Se lec5
Se lec5Se lec5
Se lec5
Huda Alameen
 
Implementation issues software engineering
Implementation issues software engineeringImplementation issues software engineering
Implementation issues software engineering
rishi ram khanal
 
Design final
Design finalDesign final
Design final
Indu Sharma Bhardwaj
 
Software architecture
Software architectureSoftware architecture
Software architecture
nazn
 
Architectural Design Report G4
Architectural Design Report G4Architectural Design Report G4
Architectural Design Report G4Prizzl
 
Architectural styles 2
Architectural styles   2Architectural styles   2
Architectural styles 2
Dr Reeja S R
 

What's hot (20)

Designing and documenting software architecture unit 5
Designing and documenting software architecture unit 5Designing and documenting software architecture unit 5
Designing and documenting software architecture unit 5
 
Design Concept software engineering
Design Concept software engineeringDesign Concept software engineering
Design Concept software engineering
 
Socio Technical Systems in Software Engineering SE2
Socio Technical Systems in Software Engineering SE2Socio Technical Systems in Software Engineering SE2
Socio Technical Systems in Software Engineering SE2
 
Layered architecture style
Layered architecture styleLayered architecture style
Layered architecture style
 
Ch09
Ch09Ch09
Ch09
 
Software engg. pressman_ch-10
Software engg. pressman_ch-10Software engg. pressman_ch-10
Software engg. pressman_ch-10
 
Lecture 6 se
Lecture 6 seLecture 6 se
Lecture 6 se
 
Design techniques
Design techniquesDesign techniques
Design techniques
 
10 architectural design (1)
10 architectural design (1)10 architectural design (1)
10 architectural design (1)
 
Importance of software architecture 1
Importance of software architecture 1Importance of software architecture 1
Importance of software architecture 1
 
Fundamentals of Software Engineering
Fundamentals of Software Engineering Fundamentals of Software Engineering
Fundamentals of Software Engineering
 
SWE-401 - 7. Software Design Strategies
SWE-401 - 7. Software Design StrategiesSWE-401 - 7. Software Design Strategies
SWE-401 - 7. Software Design Strategies
 
4 agile modeldevelopement-danielleroux
4 agile modeldevelopement-danielleroux4 agile modeldevelopement-danielleroux
4 agile modeldevelopement-danielleroux
 
Architectural Styles and Case Studies, Software architecture ,unit–2
Architectural Styles and Case Studies, Software architecture ,unit–2Architectural Styles and Case Studies, Software architecture ,unit–2
Architectural Styles and Case Studies, Software architecture ,unit–2
 
Se lec5
Se lec5Se lec5
Se lec5
 
Implementation issues software engineering
Implementation issues software engineeringImplementation issues software engineering
Implementation issues software engineering
 
Design final
Design finalDesign final
Design final
 
Software architecture
Software architectureSoftware architecture
Software architecture
 
Architectural Design Report G4
Architectural Design Report G4Architectural Design Report G4
Architectural Design Report G4
 
Architectural styles 2
Architectural styles   2Architectural styles   2
Architectural styles 2
 

Viewers also liked

Thank You...
Thank You...Thank You...
Thank You...xucarmen1
 
3. 2 req elicitation activities
3. 2  req elicitation activities3. 2  req elicitation activities
3. 2 req elicitation activitiesAshenafi Workie
 
Cv2015 atsushi teshima
Cv2015 atsushi teshimaCv2015 atsushi teshima
Cv2015 atsushi teshima
ATSUSHI TESHIMA
 
Cv2016 TESHIMA ATSUSHI
Cv2016 TESHIMA ATSUSHICv2016 TESHIMA ATSUSHI
Cv2016 TESHIMA ATSUSHI
ATSUSHI TESHIMA
 

Viewers also liked (16)

Recognitions_Career
Recognitions_CareerRecognitions_Career
Recognitions_Career
 
6. oose testing
6. oose testing6. oose testing
6. oose testing
 
Thank You...
Thank You...Thank You...
Thank You...
 
Ooad 2
Ooad 2Ooad 2
Ooad 2
 
3. 2 req elicitation activities
3. 2  req elicitation activities3. 2  req elicitation activities
3. 2 req elicitation activities
 
Ooad
OoadOoad
Ooad
 
2.1 usecase diagram
2.1 usecase diagram2.1 usecase diagram
2.1 usecase diagram
 
Uml examples
Uml examplesUml examples
Uml examples
 
Cv2015 atsushi teshima
Cv2015 atsushi teshimaCv2015 atsushi teshima
Cv2015 atsushi teshima
 
3. 1 req elicitation
3. 1 req elicitation3. 1 req elicitation
3. 1 req elicitation
 
1. oose
1. oose1. oose
1. oose
 
Uml tutorial
Uml tutorialUml tutorial
Uml tutorial
 
4. oose analysis
4. oose analysis4. oose analysis
4. oose analysis
 
2 uml
2 uml2 uml
2 uml
 
Recognitions_Career
Recognitions_CareerRecognitions_Career
Recognitions_Career
 
Cv2016 TESHIMA ATSUSHI
Cv2016 TESHIMA ATSUSHICv2016 TESHIMA ATSUSHI
Cv2016 TESHIMA ATSUSHI
 

Similar to 5. oose design new copy

Software architecture
Software architectureSoftware architecture
Software architecture
Sweta Kumari Barnwal
 
Sda 2
Sda   2Sda   2
07 software design
07   software design07   software design
07 software designkebsterz
 
07 software design
07   software design07   software design
07 software designkebsterz
 
Function oriented design
Function oriented designFunction oriented design
Function oriented design
Vidhun T
 
chapter-6-Software_Engineering_P1_MohamedElhawy_19135002.pptx
chapter-6-Software_Engineering_P1_MohamedElhawy_19135002.pptxchapter-6-Software_Engineering_P1_MohamedElhawy_19135002.pptx
chapter-6-Software_Engineering_P1_MohamedElhawy_19135002.pptx
MahmoudZidan53
 
Lecture 11
Lecture 11Lecture 11
Lecture 11Rana Ali
 
Architectural Design in Software Engineering SE10
Architectural Design in Software Engineering SE10Architectural Design in Software Engineering SE10
Architectural Design in Software Engineering SE10koolkampus
 
Unit-3.doc
Unit-3.docUnit-3.doc
Unit-3.doc
chitranshidheeraj6
 
Unit 1
Unit 1Unit 1
Software Design abtic.pptx
Software Design abtic.pptxSoftware Design abtic.pptx
Software Design abtic.pptx
ssuser8c0d24
 
Ch6.ppt
Ch6.pptCh6.ppt
Ch6.ppt
UrviKhatri3
 
CHAPTER FOUR buugii 2023.docx
CHAPTER FOUR buugii 2023.docxCHAPTER FOUR buugii 2023.docx
CHAPTER FOUR buugii 2023.docx
RUKIAHASSAN4
 
Fundamentals of Software Engineering
Fundamentals of Software Engineering Fundamentals of Software Engineering
Fundamentals of Software Engineering
Madhar Khan Pathan
 
Se lec6
Se lec6Se lec6
Se lec6
Huda Alameen
 
Architectural design
Architectural designArchitectural design
Architectural design
Huda Alameen
 
Software engineering Questions and Answers
Software engineering Questions and AnswersSoftware engineering Questions and Answers
Software engineering Questions and AnswersBala Ganesh
 

Similar to 5. oose design new copy (20)

Software architecture
Software architectureSoftware architecture
Software architecture
 
Sda 2
Sda   2Sda   2
Sda 2
 
07 software design
07   software design07   software design
07 software design
 
07 software design
07   software design07   software design
07 software design
 
Function oriented design
Function oriented designFunction oriented design
Function oriented design
 
chapter-6-Software_Engineering_P1_MohamedElhawy_19135002.pptx
chapter-6-Software_Engineering_P1_MohamedElhawy_19135002.pptxchapter-6-Software_Engineering_P1_MohamedElhawy_19135002.pptx
chapter-6-Software_Engineering_P1_MohamedElhawy_19135002.pptx
 
Lecture 11
Lecture 11Lecture 11
Lecture 11
 
Full Paper
Full PaperFull Paper
Full Paper
 
Architectural Design in Software Engineering SE10
Architectural Design in Software Engineering SE10Architectural Design in Software Engineering SE10
Architectural Design in Software Engineering SE10
 
Unit-3.doc
Unit-3.docUnit-3.doc
Unit-3.doc
 
Unit 1
Unit 1Unit 1
Unit 1
 
Software Design abtic.pptx
Software Design abtic.pptxSoftware Design abtic.pptx
Software Design abtic.pptx
 
Ch6.ppt
Ch6.pptCh6.ppt
Ch6.ppt
 
CHAPTER FOUR buugii 2023.docx
CHAPTER FOUR buugii 2023.docxCHAPTER FOUR buugii 2023.docx
CHAPTER FOUR buugii 2023.docx
 
Ddbms1
Ddbms1Ddbms1
Ddbms1
 
Fundamentals of Software Engineering
Fundamentals of Software Engineering Fundamentals of Software Engineering
Fundamentals of Software Engineering
 
Se lec6
Se lec6Se lec6
Se lec6
 
Architectural design
Architectural designArchitectural design
Architectural design
 
10.1.1.107.2618
10.1.1.107.261810.1.1.107.2618
10.1.1.107.2618
 
Software engineering Questions and Answers
Software engineering Questions and AnswersSoftware engineering Questions and Answers
Software engineering Questions and Answers
 

5. oose design new copy

  • 1. Object-Oriented Software Engineering Chapter 5 Object Oriented Design Object-Oriented Systems Development Bahrami © Irwin/ McGraw-Hill System design is the transformation of the analysis model into a system design model.
  • 2. An Overview of 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, such as  the hardware/software platform on which the system will run,  the persistent data management strategy,  the global control flow,  the access control policy, and  the handling of boundary conditions.  The result of system design is a model that includes  a clear description of each of these strategies,  a subsystem decomposition, and  a UML deployment diagram representing the hardware/software mapping of the system Object-Oriented Systems Development Bahrami © Irwin/ McGraw-Hill
  • 3. Activities of system Design Object-Oriented Systems Development Bahrami © Irwin/ McGraw-Hill
  • 4. Activities of system Design In particular, system design includes:  the definition of design goals  the decomposition of the system into subsystems  the selection of off-the-shelf and legacy components  the mapping of subsystem to hardware  the selection of a persistent data management infrastructure  the selection of an access control policy  the selection of a global control flow mechanism  the handling of boundary conditions Object-Oriented Systems Development Bahrami © Irwin/ McGraw-Hill
  • 5. Activities of system Design System design results in the following products:  list of design goals,  describing the qualities of the system that developers should optimize  software architecture,  describing the subsystem decomposition in terms of subsystem responsibilities,  dependencies among subsystems, subsystem mapping to hardware,  major policy decisions such as control flow,  access control, and  data storage The design goals are derived from the nonfunctional requirements Object-Oriented Systems Development Bahrami © Irwin/ McGraw-Hill
  • 6. Activities of System Design Hardware/software mapping:  What is the hardware configuration of the system?  Which node is responsible for which functionality?  How is communication between nodes realized?  Which services are realized using existing software components?  How are these components encapsulated? Addressing hardware/software mapping issues often leads to  the definition of additional subsystems dedicated to moving data from one node to another,  dealing with concurrency, and reliability issues. Object-Oriented Systems Development Bahrami © Irwin/ McGraw-Hill
  • 7. Activities of System Design  Data management:  Which data need to be persistent?  Where should persistent data be stored?  How are they accessed? Persistent data represents a bottleneck in the system on many different fronts: Most functionality in system is concerned with creating or manipulating persistent data.  For this reason, access to the data should be fast and reliable.  If retrieving data is slow, the whole system will be slow.  If data corruption is likely, complete system failure is likely. . Object-Oriented Systems Development Bahrami © Irwin/ McGraw-Hill
  • 8. Activities of System Design Access control: Access control and security are system-wide issues. The access control policy used to specify who can and cannot access certain data should be the same across all subsystems.  Who can access which data?  Can access control change dynamically?  How is access control specified and realized? Control flow:  How does the system sequence operations? Is the system event driven?  Can it handle more than one user interaction at a time? The choice of control flow has an impact on the interfaces of subsystems. If an event-driven control flow is selected,  subsystems will provide event handlers. If threads are selected, subsystems need to  guarantee mutual exclusion in critical sections.. Object-Oriented Systems Development Bahrami © Irwin/ McGraw-Hill
  • 9. Activities of System Design Boundary conditions:  How is the system initialized?  How is it shut down?  How are exceptional cases detected and handled? System initialization and shutdown often represent the larger part of the complexity of a system, especially in a distributed environment. Initialization, shutdown, and exception handling have an impact on the interface of all subsystems Object-Oriented Systems Development Bahrami © Irwin/ McGraw-Hill
  • 10. System Design Concepts 1. The concept of subsystem and its relationship to classes  Subsystems and classes helps to reduce the complexity of the solution domain.  The system is decomposed into simpler parts, called subsystems, which are made of a number of solution domain classes  Several programming languages (e.g., Java and Modula-2) provide constructs for modeling subsystems (packages in Java, modules in Modula-2).   Developers need to carefully document the subsystem decomposition as subsystems are usually realized by different teams. Object-Oriented Systems Development Bahrami © Irwin/ McGraw-Hill
  • 11. System Design Concepts Sub System Decomposition Object-Oriented Systems Development Bahrami © Irwin/ McGraw-Hill Subsystems are shown as UML packages. Dashed arrows indicate dependencies between subsystems System Decomposition for accident management system
  • 12. System Design Concepts 2. Services and subsystem interfaces  A subsystem is characterized by the services it provides to other subsystems.  A service is a set of related operations that share a common purpose.  A subsystem providing a notification service  The set of operations of a subsystem that are available to other subsystems form the subsystem interface.  The subsystem interface, also referred to as the application programmer interface (API), includes  the name of the operations,  their parameters,  their types, and  their return values. Object-Oriented Systems Development Bahrami © Irwin/ McGraw-Hill
  • 13. System Design Concepts 3. The two properties of subsystems are : – coupling coherence  Coupling measures the dependencies between two subsystems  Coherence measures the dependencies among classes within a subsystem. Ideal subsystem decomposition should minimize coupling and maximize coherence. Object-Oriented Systems Development Bahrami © Irwin/ McGraw-Hill
  • 14. System Design Concepts 3.1 Coupling  Coupling is the strength of dependencies between two subsystems.  If two subsystems are loosely coupled,  they are relatively independent, and  thus, modifications to one of the subsystems will have little impact on the other.  If two subsystems are strongly coupled,  they are relatively dependent, and  modifications to one subsystem is likely to have impact on the other.  A desirable property of a subsystem decomposition is that subsystems are as loosely coupled as possible.  This minimizes the impact that errors or future changes have on the correct operation of the system Object-Oriented Systems Development Bahrami © Irwin/ McGraw-Hill
  • 15. System Design Concepts 3.2 Coherence  Coherence is the strength of dependencies within a subsystem.  If a subsystem contains a number of related objects, and perform similar tasks,  its coherence is high.  If a subsystem contains a number of unrelated objects,  its coherence is low.  Subsystem decomposition leads to subsystems with high coherence.  Analysis identifies application objects, their relationships, and attributes and operations.  System design identifies subsystems and most important solution objects.  Object design refines and detail both sets of objects and identify any remaining solution objects needed to complete the system. Object-Oriented Systems Development Bahrami © Irwin/ McGraw-Hill
  • 16. System Design Concepts The coherence of the RationaleSubsystem and the PlanningSubsystem is higher than the coherence of the original DecisionSubsystem Object-Oriented Systems Development Bahrami © Irwin/ McGraw-Hill
  • 17. System Design Concepts 4. Layering and partitioning The two techniques for relating subsystems to each other  Layering allows a system to be organized as a hierarchy of subsystems, each providing higher level services to the subsystem above it by using lower level services from the subsystems below it.  Partitioning organizes subsystems as peers that mutually provide different services to each other  The goal of system design is to manage complexity by dividing the system into smaller, manageable pieces. This can be done by a divide- and-conquer approach  Each layer can only depend on lower level layers and has no knowledge of the layers above it.  In a closed architecture, each layer can only depend on the layers immediately below it.  In an open architecture, a layer can also access layers at deeper levels Object-Oriented Systems Development Bahrami © Irwin/ McGraw-Hill
  • 18. System Design Concepts  A subset from a layered decomposition that includes at least one subsystem from each layer is called a vertical slice.  For example, the subsystems A, B, and E constitute a vertical slice, whereas the subsystems D and G do not. Object-Oriented Systems Development Bahrami © Irwin/ McGraw-Hill
  • 19. System Design Concepts 5. Software architecture  A software architecture includes the system decomposition, the global control flow, error-handling policies and inter subsystem communication protocols 1. Repository architecture  subsystems access and modify data from a single data structure called the central repository.  Subsystems are relatively independent and interact only through the central data structure.  Control flow can be dictated either by the central repository  The repository architecture is typical for database management systems, such as a payroll system or a bank system Object-Oriented Systems Development Bahrami © Irwin/ McGraw-Hill
  • 20. System Design Concepts Object-Oriented Systems Development Bahrami © Irwin/ McGraw-Hill An instance of the repository architecture (UML Class diagram). A modern compiler incrementally generates a parse tree and a symbol table that can be later used by debuggers and syntax editors.
  • 21. System Design Concepts Object-Oriented Systems Development Bahrami © Irwin/ McGraw-Hill Pros and cons of Repository architectures: 1. Repository architectures are well suited for applications with constantly changing complex data processing tasks. 2. Once a central repository is well defined, we can easily add new services in the form of additional subsystems. 3. The main disadvantage of repository systems is that the central repository can quickly become a bottleneck, both from a performance aspect and a modifiability aspect
  • 22. System Design Concepts Object-Oriented Systems Development Bahrami © Irwin/ McGraw-Hill Client/server architecture  a subsystem, the server, provides services to instances of other subsystems called the clients, which are responsible for interacting with the user.  The request for a service is usually done via a remote procedure call mechanism or a common object broker (e.g., CORBA or Java RMI).  Control flow in the clients and the servers is independent except for synchronization to manage requests or to receive results. Client/server architecture (UML class diagram).
  • 23. System Design Concepts Object-Oriented Systems Development Bahrami © Irwin/ McGraw-Hill  Clients request services from one or more servers.  The server has no knowledge of the client.  The client/server architecture is a generalization of the repository architecture.  An information system with a central database is an example of a client/server architecture.  The clients are responsible for receiving inputs from the user, performing range checks, and initiating database transactions once all necessary data are collected.  The server is then responsible for performing the transaction and guaranteeing the integrity of the data
  • 24. UML Deployment diagrams Object-Oriented Systems Development Bahrami © Irwin/ McGraw-Hill 6. UML deployment diagrams are used to depict the relationship among run-time components and hardware nodes.  Components are self-contained entities that provide services to other components or actors.  A Web server, for example, is a component that provides services to Web browsers.  A Web browser such as Netscape is a component that provides services to a user.  A distributed system can be composed of many interacting run- time components
  • 25. UML Deployment diagrams Object-Oriented Systems Development Bahrami © Irwin/ McGraw-Hill  In UML deployment diagrams,  nodes are represented by boxes containing component icons.  Dependencies between components are represented by dashed arrows An example of deployment diagram illustrating two Web browsers accessing a Web
  • 26. UML Deployment diagrams Object-Oriented Systems Development Bahrami © Irwin/ McGraw-Hill  A UML deployment diagram representing the allocation of components to different nodes and the dependencies among components.  Web browsers on PCs and Macs can access a WebServer that provides information from a Database server.  The Web server in turns accesses data from a database server  We can see from the dependency graph that the Web browsers do not access directly the database at any time.  The deployment diagram in Figure focuses on the allocation of components to nodes and provides a high-level view of each component.  Components can be refined to include information about the interfaces they provide and the classes they contain.
  • 27. Documenting system design Object-Oriented Systems Development Bahrami © Irwin/ McGraw-Hill  System design is documented in the System Design Document (SDD).  It describes  design goals set by the project,  the subsystem decomposition (with UML class diagrams),  the hardware/software mapping (with UML deployment diagrams),  the data management,  the access control,  the control flow mechanisms, and  The boundary conditions.  The SDD is used to define interfaces between teams of developers and as reference when architecture-level decisions need to be revisited.
  • 28. Documenting system design Object-Oriented Systems Development Bahrami © Irwin/ McGraw-Hill
  • 29. Object design Object-Oriented Systems Development Bahrami © Irwin/ McGraw-Hill Object design includes:  service specification,  during which we precisely describe each class interface  component selection,  during which we identify additional off-the-shelf components and solution objects  object model restructuring,  during which we transform the object design model to improve its understandability and extensibility  object model optimization,  during which we transform the object design model to address performance criteria such as response time or memory utilization
  • 30. An overview of Object design Object-Oriented Systems Development Bahrami © Irwin/ McGraw-Hill During object design,  we refine the analysis and system design models  identify new objects, and  close the gap between the application objects identified during requirements and off-the-shelf components selected during system design As a result, the object design model can be partitioned into sets of classes such that they can be implemented by individual developers.
  • 31. An overview of Object design Object-Oriented Systems Development Bahrami © Irwin/ McGraw-Hill
  • 32. Object design concepts Object-Oriented Systems Development Bahrami © Irwin/ McGraw-Hill The principal object design concepts are: 1. application objects versus solution objects 2. types, signatures, and visibility 3. preconditions, postconditions, and invariants Application objects versus solution objects  Class diagrams can be used to model both the application domain and the solution domain.  Application objects, also called domain objects, represent concepts of the domain that the system manipulates.  Solution objects represent support components that do not have a counterpart in the application domain, such as persistent data stores, user interface objects, or middleware.
  • 33. Object-Oriented Systems Development Bahrami © Irwin/ McGraw-Hill
  • 34. Object design concepts Object-Oriented Systems Development Bahrami © Irwin/ McGraw-Hill Types, signatures, and visibility  The type of an attribute specifies the range of values the attribute can take and the operations that can be applied to the attribute  The type of the return value is called the signature of the operation  The visibility of an attribute or an operation specifies whether it can be used by other classes  Private. A private attribute can be accessed only by the class in which it is defined.  Protected. A protected attribute can be accessed by the class in which it is defined and on any descendant of the class.  Public. A public attribute or operation can be accessed by any class.
  • 35. Object design concept Object-Oriented Systems Development Bahrami © Irwin/ McGraw-Hill Contracts: Invariants, preconditions, and postconditions  Contracts are constraints on a class that the caller must meet before using the class as well as constraints that are ensured by the callee when used.  Contracts include three types of constraints:  An invariant is a predicate that is always true for all instances of a class.  A precondition is a predicate that must be true before an operation is invoked. Preconditions are associated with a specific operation. Preconditions are used to specify constraints that a caller must meet before calling an operation.  A postcondition is a predicate that must be true after an operation is invoked. Postconditions are associated with a specific operation. Postconditions are used to specify constraints that the object must ensure after the invocation of the operation
  • 36. Object design concept Object-Oriented Systems Development Bahrami © Irwin/ McGraw-Hill Examples of invariants, preconditions, and postconditions in OCL (UML class diagram).
  • 37. Realizing Associations Object-Oriented Systems Development Bahrami © Irwin/ McGraw-Hill  Associations denote collections of bidirectional links between two or more objects.  Object-oriented programming languages provide references, in which one object stores a handle to another object.  References are unidirectional and take place between two objects Unidirectional one-to-one associations.  The simplest association is a one-to-one association Realization of a unidirectional one-to-one association Arrow denotes the transformation of the object model
  • 38. Realizing Associations Object-Oriented Systems Development Bahrami © Irwin/ McGraw-Hill Bidirectional one-to-one associations
  • 39. Realizing Associations Object-Oriented Systems Development Bahrami © Irwin/ McGraw-Hill Realization of a bidirectional, one-to-many association
  • 40. Documenting object design Object-Oriented Systems Development Bahrami © Irwin/ McGraw-Hill  Object design is documented in the Object Design Document (ODD).  It describes  object design trade-offs made by developers,  guidelines they followed for subsystem interfaces,  The decomposition of subsystems into packages and classes and  the class interfaces.  The ODD is  used to exchange interface information among teams and as a reference during testing.  The audience for the ODD includes  system architects, (i.e., the developers who participate in the system design)  developers who implement each subsystem, and testers
  • 41. Documenting object design Object-Oriented Systems Development Bahrami © Irwin/ McGraw-Hill  The ODD  enables developers to understand the subsystem sufficiently well that they can use it.  a good interface specification which enables other developers to implement classes concurrently.  An interface specification should satisfy the following criteria [Liskov,1986]:  Restrictiveness.  A specification should be precise enough that it excludes unwanted implementations.  Preconditions and postconditions specifying border cases is one way to achieve restrictive specifications.  Generality.  A specification, however, should not restrict its implementation.
  • 42. Documenting object design Object-Oriented Systems Development Bahrami © Irwin/ McGraw-Hill  Clarity.  A specification should be easily and unambiguously understandable by developers.  it is useless if it is difficult to understand.  Certain behaviors are more easily described in natural language, whereas boundary cases can be described with constraints and exceptions.