Software Engineering Lecture 4: System Models
Software Engineering
Dr. Sayed AbdelGaber
Professor
Faculty of Computers and Information
Helwan University
Dr. Sayed AbdelGaber
Software Engineering Lecture 4: System Models
➢ Objects are entities in a software system which
represent instances of real-world and system
entities.
➢ Object classes are templates for objects. They may
be used to create objects.
➢ Object classes may inherit attributes and services
from other object classes.
Dr. Sayed AbdelGaber
Software Engineering Lecture 4: System Models
➢ Conceptually, objects communicate by message passing.
➢ Messages
✓ The name of the service requested by the calling object;
✓ Copies of the information required to execute the service and the name
of a holder for the result of the service.
➢ In practice, messages are often implemented by procedure
calls
✓ Name = procedure name;
✓ Information = parameter list.
Dr. Sayed AbdelGaber
Software Engineering Lecture 4: System Models
➢ A diagramming technique that documents the static,
structural aspects of an object-oriented system:
✓ Types of object classes to be stored in the system and the properties
associated with each object class.
✓ Relationships (associations) among these object classes.
✓ Behavior associated with each class.
➢ Core diagram as they represent ‘building blocks of any object-
oriented system’.
[Source: Bennet et al., 2001]
➢ Describes the ‘abstract not the concrete’:
✓ Object instances modeled in Object Diagram.
Dr. Sayed AbdelGaber
Software Engineering Lecture 4: System Models
➢ Document classes that constitute a system or subsystem.
➢ Show individual features of each class.
➢ Used throughout development process:
From: specification classes (requirements) in problem domain.
To: implementation model of proposed system.
➢ Describe associations, generalization, aggregation relationships
between classes.
[Source: Bennet et al., 2001]
Dr. Sayed AbdelGaber
Software Engineering Lecture 4: System Models
➢ Entity:
✓ Model information requirements and associated relationships.
✓ Could be a person role, tangible object, event, etc.
✓ Will form database structure → persistent.
➢ Boundary:
✓ Model interactions between a system and it’s actors.
✓ Represents classes for user interface.
➢ Control:
✓ Controls other objects.
✓ Represents classes for processing.
➢ Can package and identify class types:
✓ Package diagrams
✓ Stereotypes
Dr. Sayed AbdelGaber
Software Engineering Lecture 4: System Models
➢ Classes are denoted by rectangles divided into 3 parts:
✓ Name → unique text description
✓ Attributes → name + data type
✓ Behavior → operation signatures
➢ Can add further meaning using stereotypes, visibility, and by
grouping related operations.
➢ Notice no relationship properties:
✓ Represented as associations.
✓ Associations are a separate element of a class.
Dr. Sayed AbdelGaber
Software Engineering Lecture 4: System Models
<<stereotype>>
Name
Name of class
+Attribute1 : type1
Attributes #Attribute2 : type1
-Attribute3 : type2
+operation1()
Behaviour +operation2(arg1:type1)
+operation3(): type 2
Dr. Sayed AbdelGaber
Software Engineering Lecture 4: System Models
➢ Phrase surrounded by guillemets: <<name>>.
➢ Used to convey additional semantics or classify diagram
elements:
✓ Extension mechanism.
✓ Reduce ambiguity.
✓ Describe purpose.
➢ Standard stereotypes:
✓ <<include>>, <<extend>>, <<interface>>, <<abstract>>, ...
➢ Often used stereotypes:
✓ <<entity>>,<<subsystem>>, <<persistent>>, <<constructor>>, ...
➢ New stereotypes can be defined by analyst/designer.
Dr. Sayed AbdelGaber
Software Engineering Lecture 4: System Models
➢ Primitive types:
✓ Atomic.
✓ Enumerated.
✓ Examples: String, int, character, Boolean ...
➢ Class types:
✓ From implementation environment:
✓ JAVA classes for Date, Integer, ...
✓ From class model itself:
✓ Address, Name, ...
➢ Power Designer supports generic primitive types with
Design language.
Dr. Sayed AbdelGaber
Software Engineering Lecture 4: System Models
➢ Constructor:
✓ Creates new instance of a class.
✓ Can have multiple constructors → different arguments.
➢ Query:
✓ Accesses the state of an object (can not modify).
✓ Example: GET operation.
➢ Update:
✓ Modifies state of object.
✓ Example: SET operation.
➢ Scope:
✓ Applies to a class (extent), not an instance.
✓ Example: Aggregation of some attribute value:
▪ Average commission rate for all sales people.
Dr. Sayed AbdelGaber
Software Engineering Lecture 4: System Models
➢ Defines the availability or accessibility of an attribute or
operation to other classes.
➢ Close relationship with data hiding and encapsulation.
➢ Typically:
✓ attributes have private visibility.
✓ operations have public visibility.
➢ Public operations thought of as interface for class.
See next
slide
Dr. Sayed AbdelGaber
Software Engineering Lecture 4: System Models
➢ Public:
✓ Denoted by +
✓ Other classes may directly examine or change the feature.
➢ Protected:
✓ Denoted by #
✓ Only classes of a public or protected subclass (descendants) can
directly examine or change the feature.
➢ Private:
✓ Denoted by –
✓ Only class itself (but not of inheriting classes) can directly examine
or change the feature.
Dr. Sayed AbdelGaber
Software Engineering Lecture 4: System Models
<<entity>> Stereotype to identify
Person class type
- name: String
Attributes with
- birthDate: Date
private visibility → Primitive types
- gender: String
hidden
Stereotype to group <<constructor>>
operations. + Person(...)
+ getName() : String Return type
Operations with public
+ setName(...)
visibility →
...
encapsulated
+calculateAge(): int Behavior specific to
each object
Dr. Sayed AbdelGaber
Software Engineering Lecture 4: System Models
➢ Represents relationship between object classes.
✓ Relationship properties not modeled in class diagram.
➢ Denoted by solid line.
➢ Can be annotated with additional components:
✓ Multiplicity, name, role names, navigability, qualifiers.
➢ Different types:
✓ Composition vs. aggregation.
✓ Associative classes.
✓ Note not generalization.
➢ Associations discussed in detail
Dr. Sayed AbdelGaber
Software Engineering Lecture 4: System Models
<<entity>> <<entity>>
Person Address
1..* works at 1..*
- name: String - streetNumber: String
employee organization
- birthDate: Date - street: String
- gender: String - suburb: String
- city: String
<<constructor>>
- region: String
+ Person(...)
0..* lives at 1
+ getName() : String
+ setName(...) resident dwelling <<constructor>>
... + Address(...)
+ findCohabitants():... + setStreetNumber(...)
...
Dr. Sayed AbdelGaber
Software Engineering Lecture 4: System Models
➢ Follow these iterative activities to produce initial,
high-level class diagrams:
[Source: Bennet et al., 2001]
1. Find classes and associations
2. Identify attributes and operations
✓ allocate to classes
3. Identify generalization structures
➢ Very similar to recommended approach to ERD
construction.
Dr. Sayed AbdelGaber
Software Engineering Lecture 4: System Models
Staff
Customer
Itinerary
Sector
Dr. Sayed AbdelGaber
Software Engineering Lecture 4: System Models
Abstract
Role names
Navigability Association
Aggregation name
Dr. Sayed AbdelGaber
Software Engineering Lecture 4: System Models
Dr. Sayed AbdelGaber