SE - Unit - 3 Notes
SE - Unit - 3 Notes
1. Things
2. Relationships
3. Diagrams
1. Structural things
2. Behavioral things
3. Grouping things
4. Annotational things
Structural Things
• Structural things are the nouns of the UML models.
• These are static parts of the model, representing elements that are either conceptual or
physical.
• There are seven kinds of Structural things.
1. Class
2. Interface
3. Collaboration
4. Use case
5. Active class
6. Component
7. Node
Structural Things
Class:
• A class is a description of a set of objects
that shares the common attributes,
operations, relationships, and semantics.
A class implements one or more
interfaces.
• Graphically, a class is represented as a
rectangle, usually including its name,
attributes and operations, as shown
below.
• Class name
• Attributes
• Operations
Structural Things
Object:
• An individual that describes the behavior and the functions of a system. The
notation of the object is similar to that of the class; the only difference is that the
object name is always underlined and its notation is given below
• Operations
Structural Things
Interface:
• An interface is a collection of operations that specify a service of a class or
component. An interface describes the externally visible behavior of that element.
• Graphically the interface is rendered as a circle together with its name.
Interface name
Structural Things
Collaboration:
• Collaboration defines an interaction and is a society of roles and other elements
that work together to provide some cooperative behavior that’s bigger than the
sum of all the elements.
• Graphically, collaboration is rendered as an ellipse with dashed lines, usually
including only its name as shown be
Structural Things
Use Case:
• Use case is a description of a set of sequence of actions performed by a system for
a specific goal for the system.
• Graphically, Use Case is rendered as an ellipse with dashed lines, usually
including only its name as shown below.
Structural Things
Active Class:
• An active class is a class whose objects own one or more processes or threads and
therefore can initiate control activity.
• Graphically, an active class is rendered just like a class, but with heavy lines
usually including its name, attributes and operations as shown below.
Structural Things
Component:
• Component is a physical and replaceable part of a system that conforms to and
provides the realization of a set of interfaces.
• Graphically, a component is rendered as a rectangle with tabs, usually including
only its name, as shown below.
Structural Things
Node:
• A Node is a physical element that exists at run time and represents a
computational resource, generally having at least some memory and often,
processing capability.
• Graphically, a node is rendered as a cube, usually including only its name, as
shown below.
Behavioral Things
• Behavioral things are the dynamic parts of UML models.
• These are the verbs of a model, representing behavior over time and space.
1.Interaction:
• An interaction is a behavior that consists of a set of messages exchanged among a
set of objects(elements) within a particular context to accomplish a specific task.
• Graphically, a message is rendered as a direct line, almost always including the
name if its operation, as shown below.
Behavioral Things
2. State Machine:
• A state machine is a behavior that specifies the sequence of states of an object in
its life cycle.
• It defines the sequence of states an object goes through in response to events.
• Graphically, a state is rendered as a rounded rectangle usually including its name
and its sub states, if any, as shown below.
Grouping Things
• Grouping things are the organizational parts of the UML models. These are the
boxes into which a model can be decomposed.
• There is one primary kind of grouping thing with “package”.
Package:
• A package is a general-purpose mechanism for organizing elements into groups.
• Package is the only one grouping thing available for gathering structural and
behavioral things.
Annotational Things
• Annotational things are the explanatory parts of the UML models.
• Annotational things can be defined as a mechanism to capture remarks,
descriptions, and comments of UML model elements.
Note:
• A note is simply a symbol for rendering constraints and comments attached to an
element or a collection of elements.
• Graphically a note is represented as a rectangle with dog-eared corner together,
with a textual or graphical comment, as shown below.
Relationships
• Relationship is another most important building block of UML. It shows how
elements are associated with each other and this association describes the
functionality of an application. There are four kinds of relationships in the UML:
1. Dependency
2. Association
3. Generalization
4. Realization
Dependency
• Dependency is a relationship between two things in which change in one element
also affects the other one.
Association
• Association is basically a set of links that connects elements of an UML model. It
also describes how many objects are taking part in that relationship.
Generalization
• Generalization can be defined as a relationship which connects a specialized
element with a generalized element. It basically describes inheritance relationship
in the world of objects.
Realization
• Realization can be defined as a relationship in which two elements are
connected. One element describes some responsibility which is not
implemented and the other one implements them. This relationship exists in
case of interfaces.
Diagrams
• All the elements, relationships are used to make a complete UML diagram
and the diagram represents a system.
• The visual effect of the UML diagram is the most important part of the
entire process.
• Each UML diagram is designed to let developers and customers view a
software system from a different perspective and in varying degrees of
abstraction.
• UML diagrams are the ultimate output of the entire system.
• A diagram is the graphical presentation of a set of elements ,most often
rendered as a connected graph of vertices(things) arcs (relationships).
Diagrams
• UML includes the following nine Behavioral Diagrams:
diagrams 5. Use case diagram
Structural Diagrams: 6. Sequence diagram
4. Deployment diagram
Class Diagram
• The class diagram depicts a static view of an application.
• It represents the types of objects residing in the system and the relationships
between them.
• A class consists of its objects, and also it may inherit from other classes.
• A class diagram is used to visualize, describe, document various different
aspects of the system, and also construct executable software code.
• It shows the attributes, classes, functions, and relationships to give an
overview of the software system.
Class Diagram
Design Engineering
Outline
Design Engineering
• Data Flow Diagrams
• Design concepts
• DFD uses 4 basic symbols to represent the flow of the diagram. They are
• Process
• Data Store
• External Entity
• Each data store should have at least one data flow in and one data flow
out.
• Logical DFD - This type of DFD concentrates on the system process, and
flow of data in the system. For example in a Banking software system, how
data is moved between different entities.
• Physical DFD - This type of DFD shows how the data flow is actually
implemented in the system. It is more specific and close to the
implementation.
Pros and Cons of DFD
Advantages of DFDs:
• DFDs provide a clear and visual representation of how data flows through a
system.
• They help in identifying data sources, destinations, and processes.
• DFDs aid in the communication of system requirements and design to
stakeholders.
Disadvantages of DFDs:
• DFDs can become complex for large and intricate systems.
• They do not provide a detailed internal view of processes.
• DFDs may not capture all aspects of modern software systems, such as object-
oriented concepts.
Design Engineering
• It covers the set of principles, concepts, and practices that lead to the
development of a high quality system or product.
• Goal of design engineering is to produce a model or representation that
depict:
• Firmness: A program should not have any bugs that inhibit its function.
• Commodity: A program should be suitable for the purposes for which it
was intended.
• Delight: The experience of using the program should be a pleasurable
one.
• The design model provides details that are necessary to implement the
system.
Design process and Design quality
• Encompasses the set of principles, concepts and practices that lead to the
development of high quality system or product.
• Design creates a representation or model of the software.
• Design model provides details about S/W architecture, interfaces and
components that are necessary to implement the system.
• Quality is established during Design.
• Design should exhibit firmness, commodity and design.
• Design sits at the kernel of S/W Engineering.
• Design sets the stage for construction.
Fig: Translating the requirements model into the design model
Software Quality Guidelines and Attributes
• McGlaughlin suggests three characteristics that serve as a guide for the
evaluation of a good design:
• The design must implement all of the explicit requirements contained in the
requirements model, and it must accommodate all of the implicit
requirements desired by stakeholders.
• The design must be a readable, understandable guide for those who
generate code and for those who test and subsequently support the
software.
• The design should provide a complete picture of the software, addressing
the data, functional, and behavioral domains from an implementation
perspective.
Quality Guidelines
In order to evaluate the quality of a design representation, consider the following
guidelines:
1. A design should exhibit an architecture that
(1) has been created using recognizable architectural styles or patterns,
(2) is composed of components that exhibit good design characteristics and
(3) can be implemented in an evolutionary fashion, thereby facilitating
implementation and testing.
2. A design should be modular; that is, the software should be logically partitioned
into elements or subsystems.
3. A design should contain distinct representations of data, architecture, interfaces,
and components.
Quality Guidelines
4. A design should lead to data structures that are appropriate for the classes to
be implemented and are drawn from recognizable data patterns.
5. A design should lead to components that exhibit independent functional
characteristics.
6. A design should lead to interfaces that reduce the complexity of connections
between components and with the external environment.
7. A design should be derived using a repeatable method that is driven by
information obtained during software requirements analysis.
8. A design should be represented using a notation that effectively communicates
its meaning.
Quality Attributes
The attributes of design name as 'FURPS' are as follows:
• Functionality is assessed by evaluating the feature set and capabilities of
the program, the generality of the functions that are delivered, and the
security of the overall system.
• Usability is assessed by considering human factors, overall aesthetics,
consistency, and documentation.
• Reliability is evaluated by measuring the frequency and severity of failure,
the accuracy of output results, the mean-time-to-failure (MTTF), the ability
to recover from failure, and the predictability of the program.
Quality Attributes
• Performance is measured by considering processing speed, response time,
resource consumption, throughput and efficiency.
• Supportability:
• It combines the ability to extend the program, adaptability,
serviceability.
• Testability, compatibility and configurability are the terms using which a
system can be easily installed and found the problem easily.
• Supportability also consists of more attributes such as compatibility,
extensibility, fault tolerance, modularity, reusability, robustness, security,
portability, scalability.
Design Concepts
A set of fundamental software design concepts has evolved over the
history of software engineering. Each helps you answer the following
questions:
• What criteria can be used to partition software into individual
components?
• How function or data is structure detail separated from a conceptual
representation of the software?
• What uniform criteria define the technical quality of a software
design?
Design Concepts
Abstraction
• Abstraction allows designers to focus on solving a problem without being concerned
about irrelevant lower level details.
• When we consider a modular solution to any problem, many levels of abstraction can
be posed.
• At the highest level of abstraction, a solution is stated in board terms using the
language of the problem environment.
• At the lower levels of abstraction, a more procedural orientation is taken.
• There are two types of abstraction available,
• Procedural abstraction a sequence of instructions that have a specific and limited
function.
• Data abstraction is a named collection of data that describes a data object.
Design Concepts
Architecture
• The overall structure of the software and the ways in which the structure provides
conceptual integrity for a system.
• Consists of components, connectors, and the relationship between them.
• Some of the Architecture models are described below,
• Structural models - architecture as organized collection of components
• Framework models - attempt to identify repeatable architectural patterns
• Dynamic models - indicate how program structure changes as a function of
external events
• Process models - focus on the design of the business or technical process that
system must accommodate
• Functional models - used to represent system functional hierarchy.
Design Concepts
Patterns
• A design pattern describes a design structure that solves a particular design
problem within a specific context and amid “forces” that may have an impact
on the manner in which the pattern is applied and used.
• The intent of each design pattern is to provide a description that enables a
designer to determine
• whether the pattern is applicable to the current work,
• whether the pattern can be reused (hence, saving design time), and
• whether the pattern can serve as a guide for developing a similar, but
functionally or structurally different pattern.
Design Concepts
Modularity
A software is separately divided into name and addressable components.
Sometime they are called as modules which integrate to satisfy the problem
requirements.
This leads to a "divide and conquer" conclusion-it's easier to solve a complex
problem when you break it into manageable pieces.
Modularity is the single attribute of a software that permits a program to be
managed easily.
The effort (cost) to develop an individual software module does decrease as the
total number of modules increases.
Design Concepts
These characteristics lead to a • Figure: Modularity &
total cost or effort curve shown Software cost information
in the figure. There is a hiding
number, M, of modules that
would result in minimum
development cost, but we do
not have the necessary
sophistication to predict M
with assurance.
Design Concepts
Information hiding
• The principle of information hiding suggests that modules be
“characterized by design decisions that hides from all others”.
• In other words, modules should be specified and designed so that
information contained within a module is inaccessible to other modules that
have no need for such information.
Design Concepts
Functional Independence
The functional independence is the concept of separation and related to the
concept of modularity, abstraction and information hiding.
The functional independence is accessed using two criteria i.e Cohesion and
coupling.
• Cohesion: Cohesion is an extension of the information hiding concept.
A cohesive module performs a single task and it requires a small
interaction with the other components in other parts of the program.
• Coupling: Coupling is an indication of interconnection between
modules in a structure of software.
Design Concepts
Refinement
• Refinement is actually a process of elaboration from high level abstraction to the
lower level abstraction.
• In each step (of the refinement), one or several instructions of the given program are
decomposed into more detailed instructions.
• Abstraction and refinement are complementary concepts.
• Abstraction enables a designer to specify procedure and data and yet suppress low-
level details.
• Refinement helps the designer to reveal low-level details as design progresses.
Design Concepts
Refactoring
• The data design element produced a model of data that represent a high
level of abstraction.
• The structure of data is the most important part of the software design.
The Design Model
Architectural design elements
• The architecture design elements provides us overall view of the system.
• The architectural design element is generally represented as a set of
interconnected subsystem that are derived from analysis packages in the
requirement model.
The architecture model is derived from following sources:
• The information about the application domain to built the software.
• Requirement model elements like data flow diagram or analysis classes,
relationship and collaboration between them.
• The architectural style and pattern as per availability.
The Design Model
Interface design elements
• The interface design elements for software represents the information flow
within it and out of the system.
• They communicate between the components defined as part of architecture.
Following are the important elements of the interface design:
• The user interface
• The external interface to the other systems, networks etc.
• The internal interface between various components.
The Design Model
Component level diagram elements • In a context of object-oriented software
• The component level design for software is engineering, a component shown in a
similar to the set of detailed specification UML diagram.
of each room in a house. • The UML diagram is used to represent the
• The component level design for the processing logic.
software completely describes the internal
details of the each software component.
• The processing of data structure occurs in
a component and an interface which allows
all the component operations.
The Design Model
Deployment level diagram elements
• The deployment level design element
shows the software functionality and
subsystem that allocated in the physical
computing environment which support the
software.
• Following figure shows three computing
environment as shown. These are the
personal computer, the CPI server and the
Control panel.
Chapter - 3
Creating an Architectural
Design
What Is Architecture?
Control:
• How is control managed within the architecture?
• Does a distinct control hierarchy exist, and if so, what is the
role of components within this control hierarchy?
• How do components transfer control within the system?
• How is control shared among components?
• What is the control topology?
• Is control synchronized or do components operate
asynchronously?
Architectural Patterns
Data:
• How are data communicated between components?
• Is the flow of data continuous, or are data objects passed to
the system sporadically?
• What is the mode of data transfer?
• Do data components exist, and if so, what is their role?
• How do functional components interact with data
components?
• Are data components passive or active?
• How do data and control interact within the system?
Architectural design