SE-unit 4
SE-unit 4
Moses
Assistant Professor -CSE
SOFTWARE ENGINEERING
Objectives:
a. To identify and reveal as many errors as possible in the tested
software.
b. To bring the tested software, after correction of the identified
errors and retesting, to an acceptable level of quality.
c. To perform the required tests efficiently and effectively, within the
limits budgetary and scheduling limitation.
d. To compile a record of software errors for use in error prevention
(by corrective and preventive actions)
Generic Characteristics
• To perform effective testing, you should conduct effective technical
reviews. By doing this, many errors will be eliminated before
testing commences.
• Testing begins at the component level and works “outward” toward
the integration of the entire computer-based system.
• Different testing techniques are appropriate for different software
engineering approaches and at different points in time.
• Testing is conducted by the developer of the software and (for large
projects) an independent test group.
• Testing and debugging are different activities, but debugging must
be accommodated in any testing strategy.
Testing Strategies:
• A strategy for software testing provides a road map that describes
the steps to be conducted as part of testing.
• when these steps are planned and then undertaken, and how
much effort, time, and resources will be required.
• testing strategy must incorporate test planning, test case design,
test execution, and resultant data collection and evaluation.
• A strategy for software testing is developed by the project
manager, software engineers, and testing specialists.
• Software is tested to uncover errors that were made inadvertently
as it was designed and constructed.
• As errors are uncovered, they must be diagnosed and corrected
using a process that is called debugging
Test Execution Phase is carried out by the testers in which testing of the software build is
done based on test plans and test cases prepared. The process consists of test script
execution, test script maintenance and bug reporting. If bugs are reported then it is
reverted back to development team for correction and retesting will be performed.
Test Execution Activities
• Execute tests as per plan
• Document test results, and log defects for failed cases
• Map defects to test cases in RTM
• Retest the Defect fixes
• Track the defects to closure
Deliverables of Test Execution
• Completed RTM with the execution status
• Test cases updated with results
• Defect reports
Verification
Verification is the process of checking that a software achieves its
goal without any bugs. It is the process to ensure whether the
product that is developed is right or not. It verifies whether the
developed product fulfills the requirements that we have.
Verification is Static Testing.
Activities involved in verification:
• Inspections
• Reviews
• Walkthroughs
• Desk-checking
Validation
Validation is the process of checking whether the software
product is up to the mark or in other words product has high
level requirements. It is the process of checking the validation of
product i.e. it checks what we are developing is the right
product. it is validation of actual and expected product.
Validation is the Dynamic Testing.
Activities involved in validation:
• Black box testing
• White box testing
• Unit testing
• Integration testing
iv) System testing, where the software and other system elements
are tested as a whole. Software, once validated, must be combined
with other system elements (e.g., hardware, people, databases).
System testing verifies that all elements mesh properly and that
overall system function/performance is achieved.
• Unit Testing
• Integration Testing
• Validation Testing
• System Testing
Unit Testing
Integration Testing
• Integration testing is a systematic technique for constructing the
software architecture while at the same time conducting tests to
uncover errors associated with interfacing.
• The objective is to take unit-tested components and build a
program structure that has been dictated by design.
• The entire program is tested as a whole. A set of errors is
encountered. Correction is difficult because isolation of causes is
complicated by the vast expanse of the entire program.
• The program is constructed and tested in small increments, where
errors are easier to isolate and correct; interfaces are more likely to
be tested completely; and a systematic test approach may be
applied.
Integration Testing
Non-Increm
Incremental ental
Testing Testing
Big-Bang
Top-Dow Bottom-
Sandwich Regression Smoke
n Up
Top-down integration
• Top-down integration testing is an incremental approach to
construction of the software architecture.
• Modules are integrated by moving downward through the
control hierarchy, beginning with the main control module
(main program).
• Modules subordinate to the main control module are
incorporated into the structure in either a
• depth-first or
• breadth-first manner.
Depth-first integration integrates all components on a major control path of the program
structure. For example, selecting the left-hand path, components M1, M2 , M5 would be
integrated first. Next, M8 or M6 would be integrated. Then, the central and right-hand control
paths are built.
Sandwich
• Sandwich Testing is the combination of bottom-up approach and
top-down approach, so it uses the advantage of both bottom up
approach and top down approach.
• Initially it uses the stubs and drivers where stubs simulate the
behaviour of missing component. It is also known as the Hybrid
Integration Testing.
Regression Testing
• Each time a new module is added as part of integration testing, the
software changes. New data flow paths are established, new I/O
may occur, and new control logic is invoked. These changes may
cause problems with functions that previously worked flawlessly.
In the context of an integration test strategy, regression testing is
the re execution of some subset of tests that have already been
conducted to ensure that changes have not propagated unintended
side effects.
Smoke Testing
• Smoke testing is an integration testing approach that is
commonly used when product software is developed.
• The smoke test should exercise the entire system from end to
end.
The smoke-testing approach encompasses the following activities:
1. Software components that have been translated into code are
integrated into a build that are required to implement one or
more product functions
2. A series of tests is designed to expose errors that will keep the
build from properly performing its function. The intent should
be to uncover “showstopper” errors.
3.The build is integrated with other builds, and the entire product
is smoke tested daily. The integration approach may be top
down or bottom up.
Smoke testing provides a number of benefits when it is applied on
complex, time critical software projects:
Disadvantages:
• Testing can commence only after completion of coding.
• Testing may not uncover interface errors.
• Modules critical to the system may not receive the extra testing.
Validation Testing
• Software validation is achieved through a series of tests that
demonstrate conformity with requirements.
• A test plan outlines the classes of tests to be conducted.
• A test procedure defines specific test cases that are designed to
ensure that all functional requirements are satisfied.
• all behavioral characteristics are achieved,
• all content is accurate and properly presented,
• all performance requirements are attained,
• documentation is correct, and usability and other requirements
are met
SYSTEM TESTING
• System testing is a series of different tests whose primary purpose
is to fully exercise the computer-based system.
• Software is incorporated with other system elements (e.g.,
hardware, people, information), and a series of system integration
and validation tests are conducted.
• After integration with other elements and tested this type of testing
called system testing.
• A classic system-testing problem is “finger pointing.” This occurs
when an error is uncovered, and the developers of different system
elements blame each other for the problem.
SYSTEM TESTING
• Recovery Testing
• Security Testing
• Stress Testing
• Performance Testing
Recovery Testing:
• Recovery testing is a system test that forces the software to fail in a
variety of ways and verifies that recovery is properly
performed.
• If recovery is automatic (performed by the system itself),
reinitialization, checkpointing mechanisms, data recovery, and
restart are evaluated for correctness.
Performance Testing
• Performance testing is designed to test the run-time performance
of software within the context of an integrated system.
Ex. Real time embedded System.
Performance tests are often coupled with stress testing and usually
require both hardware and software instrumentation.
Automated debugging:
Debugging Strategies:
• Debugging objective— to find and correct the cause of a
software error or defect. Three debugging strategies have
been proposed:
(1) brute force - It systematically checks all guesses until the correct
one is found.
(2) backtracking - It is an algorithmic-technique for solving
problems recursively by trying to build a solution incrementally, one
piece at a time.
(3) cause elimination - It is manifested by induction or deduction
and introduces the concept of binary partitioning.
Quality Guidelines:
In order to evaluate the quality of a design representation (or) to
achieve goals, the software team must establish technical criteria
for good design. Consider the following guidelines:
1. A design should exhibit an architecture that
(a) has been created using recognizable architectural styles or
patterns,
(b) is composed of components that exhibit good design
characteristics
(c) 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.
Quality Attributes
FURPS—Functionality, Usability, Reliability, Performance, and
Supportability.
The FURPS quality attributes represent a target for all software design:
• 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.
DESIGN CONCEPTS
Fundamental Software Design Concepts provide the software designer with a
foundation from which more sophisticated design methods can be applied
1. Abstraction
2. Architecture
3. Patterns
4. Modularity
5. Information Hiding
6. Functional Independence
7. Refinement
8. Aspects
9. Refactoring
10. Design Classes
CSE AND IT @MLRITM
MLRITM SE – Unit IV
1. Abstraction:
• At the highest level of abstraction, a solution is stated in broad
terms using the language of the problem environment.
• At lower levels of abstraction, a more detailed description of the
solution is provided and the solution is stated in a manner that can
be directly implemented.
I. A Procedural Abstraction
• A Procedural Abstraction refers to a sequence of instructions
that have a specific and limited function
• The name of a procedural abstraction implies these functions, but
specific details are suppressed.
Ex. open for a door. Open implies a long sequence of procedural
steps (e.g., walk to the door, reach out and grasp knob, turn knob and
pull door, step away from moving door, etc).
CSE AND IT @MLRITM
MLRITM SE – Unit II
II Data Abstraction
• A Data Abstraction is a named collection of data that describes a
data object.
• The data abstraction for door would encompass a set of attributes
that describe the door (e.g., door type, swing direction, weight,
dimensions, opening mechanism).
2. Architecture
• Software architecture is the structure or organization of program
components (modules).
• The manner in which these components interact, and the structure
of data that are used by the components.
3. Patterns:
Design pattern describes a design structure that solves a particular
design problem within a specific context.
• The intent of each design pattern is to provide a description that
enables a designer to determine
(1) whether the pattern is applicable to the current work,
(2) whether the pattern can be reused (hence, saving design time),
and
(3) whether the pattern can serve as a guide for developing a similar,
but functionally or structurally different pattern.
4 Modularity:
Software is divided into separately named and addressable
components, sometimes called modules, that are integrated to satisfy
problem requirements.
5 Information Hiding:
6. Functional Independence:
▪ Functional independence is a key to good design, and design is the
key to software quality.
7. Refinement :
• Refinement is actually a process of elaboration.
• A statement of function (or description of information) that is
defined at a high level of abstraction i.e no information about the
internal workings of the function or the internal structure of them
information.
• In refinement elaborate on the original statement, providing more
and more detail as each successive refinement (elaboration)
occurs. Stepwise refinement is a top-down design strategy
8. Aspects :
An aspect is a representation of a crosscutting concern
Consider two requirements, A and B. Requirement A crosscuts
requirement B. ie., B cannot be satisfied without taking A into
account.
• Process Dimension:
It indicate the evaluation of the design model as design tasks are
executed as part of the software process.
• Abstraction Dimension:
It indicate the level of details as each element of analysis model is
transformed into design equivalent and then refined iteratively
SOFTWARE ENGINEERING
PART II
Creating an Architectural Design
Software Architecture
Data Design
Architectural Styles and Patterns
Architectural Design
Conceptual model of UML
Basic Structural Modeling.
Class diagrams.
Sequence Diagrams.
Collaboration Diagrams.
Use Case Diagrams.
Component Diagrams.
CSE AND IT @MLRITM
MLRITM SE – Unit IV
SOFTWARE ARCHITECTURE
The software architecture of a program or computing system is the
structure of the system, which comprise software components, the
externally visible properties of those components, and the relationships
among them.
Importance of software architecture:
(1) Architecture enables Analyze the effectiveness of the design in
meeting its stated requirements
(2) Consider architectural alternatives at a stage when making design
changes
(3) Reduce the risks associated with the construction of the software.
(4) Communicate between stakeholders
(5) highlights early design decisions
A design is an instance of an architecture similar to an object being an
instance of a class
CSE AND IT @MLRITM
MLRITM SE – Unit IV
DATA DESIGN
The data design action translates data objects defined as part of the
analysis model into
1. Database architecture at the application level.
2. Data structures at the Component level.
Data design at Architectural level / Database architecture at the
application level:
• A data warehouse is a separate data environment that encompasses
all data used by a business.
• Data warehouse is a large, independent database that has access to
the data that are stored in databases that serve the set of applications
required by a business
• The data mining techniques, also called knowledge discovery in
databases (KDD) navigate through databases to extract appropriate
business level information.
CSE AND IT @MLRITM
MLRITM SE – Unit IV
DATA DESIGN
Data design at component level / Data structures at the
Component level:
Data design at the component level focuses on the representation of
data structures that are directly accessed by one or more software
components
Set of principles followed for data specification:
• Data objects should be identified, alternative data organizations
should be considered, and the impact of data modeling on software
design should be evaluated.
• An abstract data type is defined for use in subsequent software
design.
• A data dictionary should be established and used to define both
data and program design.
DATA DESIGN
• A process of stepwise refinement may be used for the design of
data.
• The representation of data structure should be known only to those
modules that must make direct use of the data contained within the
structure. The concept of information hiding.
• A library of useful data structures and the operations that may be
applied to them should be developed. Data structures can be
designed for reusability.
• A software design and programming language should support the
specification and realization of abstract data types.
ARCHITECTURAL STYLES
ARCHITECTURAL STYLES
Data Centered Architectures:
ARCHITECTURAL STYLES
Data-flow Architectures:
Data-flow Architectures:
ARCHITECTURAL STYLES
Call and return architectures:
Object-Oriented Architectures:
ARCHITECTURAL STYLES
Layered Architectures:
Layered Architectures:
PATTERNS
It collaborates with address problems.
Architectural pattern domains:
Access control:
There are many situations in which access to data, features, and
functionality delivered by an application is limited to specifically
defined end users.
Concurrency :
Many applications must handle multiple tasks in a manner that
simulates parallelism
Distribution.
The distribution problem addresses the manner in which systems or
components within systems communicate with one another in a
distributed environment.
CSE AND IT @MLRITM
MLRITM SE – Unit IV
PATTERNS
The most common architectural pattern established to address the
distribution problem is the Broker pattern.
Persistence:
Persistent data are stored in a database or file and may be read or
modified by other processes at a later time.
In general, two architectural patterns are used to achieve persistence
ARCHITECTURAL DESIGN
ARCHITECTURAL DESIGN
A software architect uses an architectural context diagram (ACD) to
model the manner in which software interacts with entities external to
its boundaries.
Systems that interoperate with the target system (the system for which
an architectural design is to be developed) are represented as
Superordinate systems—those systems that use the target system as
part of some higher-level processing scheme.
Subordinate systems—those systems that are used by the target system
and provide data or processing that are necessary to complete target
system functionality.
Peer-level systems—those systems that interact on a peer-to-peer basis
i.e., information is either produced or consumed by the peers and the
target system.
ARCHITECTURAL DESIGN
Actors—entities (people, devices) that interact with the target system
by producing or consuming information that is necessary for requisite
processing.
Each of these external entities communicates with the target system
through an interface (the small shaded rectangles). Safe Home Security
Archetypes
Archetype
Structural Things
Structural things are the nouns of UML models.
These are the mostly static parts of a model, representing elements that
are either conceptual or physical
Collectively, the structural things are called classifiers.
Classes
A class is a description of a set of objects that share the same attributes,
operations, relationships, and semantics.
A class implements one or more interfaces. Graphically, a class is
rendered as a rectangle, usually including its name, attributes, and
operations.
Interface:
Collaboration
Use Case:
• A use case is a description of sequences of actions that a system
performs that yield observable results of value to a particular actor.
• A use case is used to structure the behavioral things in a model.
• A use case is realized by a collaboration.
• Graphically, a use case is rendered as an ellipse with solid lines,
usually including only its name
Active Class:
An active class is a class whose objects own one or more processes or
threads and therefore can initiate control activity.
An active class is just like a class except that its objects represent
elements whose behavior is concurrent with other elements
Graphically, an active class is rendered as a class with double lines on
the left and right; it usually includes its name, attributes, and
operations
Components:
A component is a modular part of the system design that hides its
implementation behind a set of external interfaces.
Within a system, components sharing the same interfaces can be
substituted while preserving the same logical behavior.
The implementation of a component can be expressed by wiring
together parts and connectors
Graphically, a component is rendered like a class with a special
icon in the upper right corner
Artifacts:
An artifact is a physical and replaceable part of a system that
contains physical information.
An artifact typically represents the physical packaging of source or
run-time information
Graphically, an artifact is rendered as a rectangle with the keyword
«artifact»
Nodes:
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.
A set of components may reside on a node and may also migrate from
node to node.
Graphically, a node is rendered as a cube, usually including only its
name.
Behavioral Things:
Behavioral things are the dynamic parts of UML models.
These are the verbs of a model, representing behavior over time and
space.
There are three primary kinds of behavioral things
Interaction
State Machines
Activity CSE AND IT @MLRITM
MLRITM SE – Unit IV
Interaction:
• It is a behavior that comprises a set of messages exchanged
among a set of objects or roles within a particular context to
accomplish a specific purpose.
• The behavior of a society of objects or of an individual operation
may be specified with an interaction.
• An interaction involves a number of other elements, including
messages, actions, and connectors .
• Graphically, a message is rendered as a directed line, almost
always including the name of its operation
Message
State Machine:
• It is a behavior that specifies the sequences of states an object or
an interaction goes through during its lifetime in response to
events, together with its responses to those events.
• The behavior of an individual class or a collaboration of classes
may be specified with a state machine.
• A state machine involves a number of other elements, including
states, transitions (the flow from state to state), events (things that
trigger a transition), and activities (the response to a transition).
• Graphically, a state is rendered as a rounded rectangle, usually
including its name and its substates
States
Activity:
an activity is a behavior that specifies the sequence of steps a
computational process performs.
In an interaction, the focus is on the set of objects that interact
In a state machine, the focus is on the life cycle of one object at a
time.
In an activity, the focus is on the flows among steps without
regard to which object performs each step.
A step of an activity is called an action. Graphically, an action is
rendered as a rounded rectangle with a name indicating its
purpose.
Grouping Things
• Grouping things are the organizational parts of UML models.
• There is one primary kind of grouping thing, namely, packages.
Package:
• A package is a general-purpose mechanism for organizing the
design itself.
• Structural things, behavioral things, and even other grouping things
may be placed in a package.
• Graphically, a package is rendered as a tabbed folder, usually
including only its name and, sometimes, its contents
Packages
CSE AND IT @MLRITM
MLRITM SE – Unit IV
Annotational Things:
Annotational things are the explanatory parts of UML models.
These are the comments you may apply to describe, illuminate, and
remark about any element in a model.
There is one primary kind of annotational things, called a 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 rendered as a rectangle with a dog-eared corner,
together with a textual or graphical comment.
Notes
Dependencies
Association
• An association is a structural relationship among classes that
describes a set of links.
• A link being a connection among objects that are instances of the
classes.
• Aggregation is a special kind of association, representing a
structural relationship between a whole and its parts.
• Graphically, an association is rendered as a solid line, possibly
directed, occasionally including a label, and often containing
other adornments, such as multiplicity and end names.
Associations
Generalizations:
• A generalization is a specialization/generalization relationship in
which the specialized element (the child) builds on the specification
of the generalized element (the parent).
• The child shares the structure and the behavior of the parent.
• Graphically, a generalization relationship is rendered as a solid line
with a hollow arrowhead pointing to the parent.
Realizations:
A realization is a semantic relationship between classifiers, wherein
one classifier specifies a contract that another classifier guarantees to
carry out.
I. Class diagram
• A class diagram shows a set of classes, interfaces, and
collaborations and their relationships.
• Class diagrams address the static design view of a system.
• Class diagrams that include active classes address the static
process view of a system.
• Class diagram represents the object orientation of a system.
Hence, it is generally used for development purpose.
• The class diagram below models a customer order from a retail
catalog. The central class is the Order. Associated with it are the
Customer making the purchase and the Payment. A Payment is
one of three kinds: Cash, Check, or Credit. The order contains
OrderDetails (line items), each with its associated Item.
I. Object diagram
An object diagram shows a set of objects and their relationships.
Object diagrams represent static snapshots of instances of the things found in class
diagrams.
These diagrams address the static design view or static process view of a system as do
class diagrams, but from the perspective of real or prototypical cases.
The usage of object diagrams is similar to class diagrams but they are used to build
prototype of a system from a practical perspective.
Component Diagram:
A component diagram is shows an encapsulated class and its interfaces,
ports, and internal structure consisting of nested components and
connectors.
Component diagrams address the static design implementation view of a
system.
During the design phase, software artifacts (classes, interfaces, etc.) of a
system are arranged in different groups depending upon their relationship.
Now, these groups are known as components.
Deployment Diagram:
• A deployment diagram shows the configuration of run-time
processing nodes and the components that live on them.
• Deployment diagrams address the static deployment view of an
architecture. A node typically hosts one or more artifacts.
• Deployment diagrams are used for visualizing the deployment view
of a system. This is generally used by the deployment team
• The main purpose of the deployment diagram is to represent how
software is installed on the hardware component. It depicts in what
manner a software interacts with hardware to perform its execution.
Graphical Notation:
The basic components of Use Case diagrams are the Actor, the Use Case, and the Association.
Actor:
An Actor, as mentioned, is a user of the system, and is depicted using a stick figure. The role of
the user is written beneath the icon.
Use Case:
A Use Case is functionality provided by the system, typically described as verb + object (e.g.
Register Car, Delete User). Use Cases are depicted with an ellipse. The name of the use case is
written within the ellipse.
Association:
Associations are used to link Actors with Use Cases, and indicate that an Actor participates in
the Use Case in some form. Associations are depicted by a line connecting the Actor and the Use
Case.
Interaction Diagram
• Both sequence diagrams and collaboration diagrams are kinds of
interaction diagrams. An interaction diagram shows an interaction,
consisting of a set of objects or roles, including the messages that
may be dispatched among them.
• Interaction diagrams address the dynamic view of a system.
• A sequence diagram is an interaction diagram that emphasizes the
time-ordering of messages.
• A communication diagram is an interaction diagram that emphasizes
the structural organization of the objects or roles that send and
receive messages.
• Sequence diagrams and communication diagrams represent similar
basic concepts, but each diagram emphasizes a different view of the
concepts.
Notation:
In a Sequence diagram, classes and actors are listed as columns, with vertical lifelines
indicating the lifetime of the object over time.
Object:
Objects are instances of classes, and are arranged horizontally. The pictorial representation
for an Object is a class (a rectangle) with the name prefixed by the object name (optional)
and a semi-colon.
Actor:
Actors can also communicate with objects, so they too can be listed as a column. An Actor
is modeled using the ubiquitous symbol, the stick figure.
Lifeline:
The Lifeline identifies the existence of the object over time. The notation for a Lifeline is a
vertical dotted line extending from an object.
Activation:
Activations, modeled as rectangular boxes on the lifeline, indicate when the object is
performing an action.
Message:
Messages, modeled as horizontal arrows between Activations, indicate the communications
between objects.
State Diagram
• A state diagram shows a state machine, consisting of states,
transitions, events, and activities.
• A state diagrams shows the dynamic view of an object.
• They are especially important in modeling the behavior of an
interface, class, or collaboration and emphasize the event-ordered
behavior of an object, which is especially useful in modeling
reactive systems.
• Any real-time system is expected to be reacted by some kind of
internal/external events. These events are responsible for state
change of the system.
• A statechart diagram shows the possible states of the object and the
transitions that cause a change in state.
Activity Diagram:
• An activity diagram shows the structure of a process or other
computation as the flow of control and data from step to step within
the computation.
• Activity diagrams address the dynamic view of a system.
• These are especially important in modeling the function of a system
and emphasize the flow of control among objects.
• Activity diagrams are used to visualize the flow of controls in a
system. This is prepared to have an idea of how the system will
work when executed.
• Activity diagram is a variation of the state diagram where the
"states" represent operations, and the transitions represent the
activities that happen when the operation is complete
Activity States
Activity states mark an action by an object. The notations for these states are rounded
rectangles, the same notation as found in State chart diagrams.
Transition:
When an Activity State is completed, processing moves to another Activity State. Transitions
are used to mark this movement. Transitions are modeled using arrows.
Swim lane:
Swim lanes divide activities according to objects by arranging objects in column format and
placing activities by that object within that column.
Initial State:
The Initial State marks the entry point and the initial Activity State. The notation for the Initial
State is the same as in State chart diagrams, a solid circle. There can only be one Initial State
on a diagram.
Final State:
Final States mark the end of the modeled workflow. There can be multiple Final States on a
diagram, and these states are modeled using a solid circle surrounded by another circle.
Synchronization Bar:
Activities often can be done in parallel. To split processing ("fork"), or to resume processing
when multiple activities have been completed ("join"), Synchronization Bars are used. These
are modeled as solid rectangles, with multiple transitions going in and/or out.
Adornments:
• Most elements in the UML have a unique and direct graphical
notation that provides a visual representation of the most important
aspects of the element.
• The notation for a class is intentionally designed to be easy to draw,
because classes are the most common element found in modeling
object-oriented systems.
• The class notation also exposes the most important aspects of a
class, namely its name, attributes, and operations.
Examples: The basic notation of association is line, but this could be adorned with
additional details, such as the role names and multiplicity of each end
Common Divisions:
In modeling, object-oriented systems get divided in multiple ways. For
example, class vs. object, interface vs. implementation An object uses
the same symbol as its class with its name underlined.
Extensibility Mechanisms:
Extensibility mechanisms allow extending the language in controlled
ways. They include Sterotypes, Tagged Values and Constraints.
Stereotypes
Tagged Values
Constraints
Stereotypes
Stereotypes are used to create new building blocks from existing blocks
New building blocks are domain-specific
Stereotypes are used to extend the vocabulary of a system
Graphically represented as a name enclosed by guillemets (« »)
Tagged Values
Tagged values are used to add to the information of the element
(not of its instances)
Stereotypes help to create new building blocks, whereas tagged
values help to create new attributes
These are commonly used to specify information relevant to code
generation, configuration management and so on
Constraints
Constraints are used to create rules for the model
Rules that impact the behavior of the model, and specify conditions
that must be met
Can apply to any element in the model, i.e., attributes of a class,
relationship
Graphically represented as a string enclosed by braces {....} and placed
near the associated elements or connected to that elements by
dependency relationships