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

Introduction To Software Engineering

Uploaded by

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

Introduction To Software Engineering

Uploaded by

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

Introduction to

Software
Engineering
1
What is software?

• Computer programs and


documentation associated

2
What is
software?
Programs

Documentation Operating
Procedures

Software=Program+Documentation+Operating
Procedures Components of software
3
Documentation manuals are…
Formal Specification
Analysis
Context-Diagram
/Specification
Data Flow Diagrams

Flow Charts
Design
Entity-Relationship
Documentation Diagram
Manuals
Source Code Listings
Implementation Cross-Reference
Listing
Test Data
Testing Test Results

List of documentation manuals


4
Operating procedure manuals
are… System Overview
User Beginner’s Guide
Manuals Tutorial
Reference Guide

Operating
Procedures

Installation Guide
Operational
Manuals
S
y
s
t
e
m
5
Administration Guide
Software Products

• Software products may be developed for a


particular customer or may be developed for a general
market
• Software products may be
–Generic - developed to sold to a range of
be customers different
–Bespoke (custom) - developed for a single customer
according to their specification

6
Software products
Generic products
Stand-alone systems that are marketed and sold to any
customer who wishes to buy them.
Examples – PC software such as graphics programs,
project management tools; CAD software; software for
specific markets such as appointments systems for
dentists.
Customized products
Software that is commissioned by a specific customer to
meet their own needs.
Examples – embedded control systems, air traffic control
software, traffic monitoring systems.
7
Software Product
Software product is a product designated for
delivery to the user
Source Reports Documents
Codes

Manuals
Objects Plans
Codes Data

Test
Suites Test Prototypes
results

8
Product specification
Generic products
The specification of what the software should do
is owned by the software developer and
decisions on software change are made by the
developer.
Customized products
The specification of what the software should do
is owned by the customer for the software and
they make decisions on software changes that are
required.
9
What is software engineering?

Software engineering is an engineering discipline which


is concerned with all aspects of software production
Software engineers should
– adopt a systematic and organised approach to their
work
– use appropriate tools and techniques depending on
• the problem to be solved,
• the development constraints and
– use the resources available
10
What is software engineering?
At the first conference on software engineering in 1968, Fritz Bauer
defined software engineering as “The establishment and use of
sound engineering principles in order to obtain
economically developed software that is reliable and works
efficiently on real machines”.

Stephen Schach defined the same as “A discipline whose aim is the


production of quality software, software that is delivered on time,
within budget, and that satisfies its requirements”.

Both the definitions are popular and acceptable to


majority. However, due to increase in cost of maintaining software,
objective is now shifting to produce quality software that is
maintainable, delivered on time, within budget, and also satisfies its
requirements. 11
Frequently asked questions about
software engineering
Question Answer

What is software? Computer programs and associated documentation.


Software products may be developed for a particular
customer or may be developed for a general market.
What are the attributes of good Good software should deliver the required functionality
software? and performance to the user and should be
maintainable, dependable and usable.
What is software engineering? Software engineering is an engineering discipline that
is concerned with all aspects of software production.
What are the fundamental software Software specification, software development,
engineering activities? software validation and software evolution.
What is the difference between software Computer science focuses on theory and
engineering and computer science? fundamentals; software engineering is concerned with
the practicalities of developing and delivering useful
software.
What is the difference between software System engineering is concerned with all aspects of
engineering and system engineering? computer-based systems development including
hardware, software and process engineering. Software
engineering is part of this more general process.
12
Frequently asked questions about software
engineering
Question Answer
What are the key challenges facing Coping with increasing diversity, demands for reduced
software engineering? delivery times and developing trustworthy software.
What are the costs of software Roughly 60% of software costs are development costs,
engineering? 40% are testing costs. For custom software, evolution
costs often exceed development costs.
What are the best software engineering While all software projects have to be professionally
techniques and methods? managed and developed, different techniques are
appropriate for different types of system. For example,
games should always be developed using a series of
prototypes whereas safety critical control systems
require a complete and analyzable specification to be
developed. You can’t, therefore, say that one method is
better than another.

What differences has the web made to The web has led to the availability of software services
software engineering? and the possibility of developing highly distributed
service-based systems. Web-based systems
development has led to important advances in
programming languages and software reuse.

13
Essential attributes of good software
Product characteristic Description

Maintainability Software should be written in such a way so that it can evolve to


meet the changing needs of customers. This is a critical
attribute because software change is an inevitable requirement
of a changing business environment.
Dependability and Software dependability includes a range of characteristics
security including reliability, security and safety. Dependable software
should not cause physical or economic damage in the event of
system failure. Malicious users should not be able to access or
damage the system.

Efficiency Software should not make wasteful use of system resources


such as memory and processor cycles. Efficiency therefore
includes responsiveness, processing time, memory utilisation,
etc.
Acceptability Software must be acceptable to the type of users for which it is
designed. This means that it must be understandable, usable
and compatible with other systems that they use.

14
Software Application Domains
System software : A collection of programs written to
service other programs. Some system software (e.g.,
compilers, editors, and file management utilities)
 Application software : Stand-alone programs that solve
a specific business need. Application software is used to
control business functions in real time (e.g., point-of-sale
transaction processing, real-time manufacturing process
control).
Web applications : These Applications called
“WebApps,” this network-centric software category spans
a wide array of applications. In their simplest form,
WebApps can be little more than a set of linked hypertext
files that present information using text and limited
graphics. 15
Software Application Domains
Engineering/scientific software : It has been characterized by
“number crunching” algorithms. Applications range from
astronomy to volcanology, from automotive stress analysis to space
shuttle orbital dynamics, and from molecular biology to automated
manufacturing.
 
Embedded software : It resides within a product or system and is
used to implement and control features and functions for the end
user and for the system itself. Embedded software can perform
limited and esoteric functions (e.g., key pad control for a microwave
oven) or provide significant function and control capability (e.g.,
digital functions in an automobile such as fuel control, dashboard
displays, and braking systems).

16
Software Application Domains
Batch processing systems
These are business systems that are designed to process
data in large batches. They process large numbers of
individual inputs to create corresponding outputs.
Entertainment systems
These are systems that are primarily for personal use
and which are intended to entertain the user.
Systems for modeling and simulation
These are systems that are developed by scientists and
engineers to model physical processes or situations,
which include many, separate, interacting objects.
17
Software Application Domains
Product-line software : Designed to provide a specific
capability for use by many different customers. Product-line
software can focus on a limited and esoteric marketplace (e.g.,
inventory control products) or address mass consumer
markets (e.g., word processing, spreadsheets, computer
graphics, multimedia, entertainment, database management,
and personal and business financial applications).
Artificial intelligence software : These makes use of non
numerical algorithms to solve complex problems that are not
amenable to computation or straightforward analysis.
Applications within this area include robotics, expert systems,
pattern recognition (image and voice), artificial neural
networks, theorem proving, and game playing. 18

 
Software engineering fundamentals
Some fundamental principles apply to all types of software
system, irrespective of the development techniques used:
Systems should be developed using a managed and
understood development process. Of course, different
processes are used for different types of software.
Dependability and performance are important for all
types of system.
Understanding and managing the software specification
and requirements (what the software should do) are
important.
Where appropriate, you should reuse software that has
already been developed rather than write new software.
19
Software
./Software does Characteristics:
not wear out.
Software doesn’t wear out because the hard drive, USB drive,
computer memory, or other “container” it’s stored in (or on)
protects it from being damaged and degrade.
./ Software is developed or engineered not manufactured
./ Reusability of components (Maintenance is without spare
parts)
./ Software is flexible (Intangible)

20
Cont…
Well-Engineered Software
Well-engineered software is one that has the following
characteristics:
It is reliable
It has good user-interface
It has acceptable performance
It is of good quality
It is cost-effective

21
Software Development Life
Cycle
Software Development Life Cycle : Suggests a systematic
sequential approach to SW development that begins at the
system level and progresses through analysis, design,
coding, testing and support

22
Software Process
A generic framework
process framework for software engineering
encompasses five activities:
 Communication: Before any technical work can commence,
it is critically important to communicate and collaborate
with the customer. The intent is to understand stakeholders
objectives for the project and to gather requirements that
help define software features and functions.
 Planning: Defines the software engineering work by
describing the technical tasks to be conducted, the risks that
are likely, the resources that will be required, the work
products to be produced, and a work schedule. 23
Software Process
framework
Modeling: Creation of models to help developers and
customers understand the requires and software design
Construction: This activity combines code generation and
the testing that is required to uncover errors in the code.
Deployment: The software is delivered to the customer
who evaluates the delivered product and provides
feedback based on the evaluation.

24
Software Process
models
Waterfall/Linear Sequential model

Prototype model

Evaluation model

Spiral model

25
Waterfall model
Feasibility Study

Requirement Analysis
And Specification

Design and
Specification
Coding and
Module Testing
 Document Driven
Integration and
 The phases don't overlap System Testing

i.e. design can’t begin until Delivery

analysis is finished
Maintenance
26
Feasibility Study
 Main aim – determine whether developing the product is financially and
technically feasible
 Purpose is to produce a feasibility study document that evaluates the costs
and benefits of the proposed application
 Document should contain:

Definition of the problem
 Formulation of different solution strategies
 Alternative solutions and their expected benefits
 Cost/benefit analysis performed – determine which solution is the best
 Any solution – not feasible – due to high cost, resource
constraints etc
 Required resources, costs, delivery dates in each proposed
alternative solutions 27
Requirement Analysis and Specification
(What to solve)
Studied by the customer and developer .
 New project – much interaction is required between the
user and the developer
 Functional Requirements : what the product does
 Non- Functional Requirements : This may be classified
into the following categories: Reliability (availability, integrity
etc), accuracy, performance, operating constraints, human-
computer interface issues, portability issues etc
28
Design Specification (How to solve)
Description of architecture, module description
and relationships

High level /architectural design : Deals with


overall module structure and organization, rather
than the details of the modules

Detailed design : High level design is refined by


designing each module in detail

29
Coding and Testing
Individual modules are tested before being delivered
to the customers
Alpha Testing : Carried out by the test team inside the
organization
 Beta Testing : Performed by a selected group of
friendly customers
 Acceptance Testing : Performed by the customer to
determine whether or not to accept the deliver of the
system
30
Maintenance
Requires much more effort than development phase
 Development : Maintenance effort = 40:60 ratio
 Involves performing any one/more of the following activities:

Corrective Maintenance : Correcting errors – not discovered
during the product development phase

Perfective Maintenance : Improving the implementation and
enhancing the functionalities according to customer’s
requirements

Adaptive Maintenance : Porting the SW to a new environment
31
Strength and weakness
Strength of Waterfall model
It is document driven
 It is a good model to use when requirements are well understood and are quite
stable.
 Late changes to requirements or design are limited
 Implementing the product should be postponed until understanding the objectives
well.
Weakness of Waterfall model
 The model is inflexible for change as each phase results are frozen.
This model forces the software developer to completely fulfill the scope of each
phase before moving on.
Requirements must be well-reviewed early
32
Cont…

Model is
Linear : Not possible. Need feedback
Rigid : results of each phase are frozen before proceeding to the next
phase
Monolithic : All planning is oriented to a single delivery date

When to use Waterfall model


 It works well for products that are well understood.
 It works well for projects that are repeats of earlier work.
 It is suitable with which the development team have a lot of
experience.
33
Prototype model
Working prototype of the system should be built first before
the actual SW
Usually exhibiting limited functionalities, low reliability,
inefficient performance
In the case where requirements are not clear, Prototyping
may be the most suitable approach.
Such situations as the following require prototyping:
 
- Users do not have clearly defined procedures and
processes.
- Systems are complex and are not amenable to clear
analysis.
- Requirements are changing due to various reasons: 34
(markets, regulations, uncommitted management, etc.)
Cont…
Reasons for developing prototype:

 To illustrate the input data formats, messages, reports etc –


valuable mechanism to gain better understanding of the
customer’s needs

 Much easier for the customer to form opinion by


experimenting with a working model

 Helps to critically examine the technical issues associated


with the product development (efficiency of the sorting
algorithm, response time of a HW controller)
35
Building a Prototype Model
Begins with requirements gathering
Developer + customer meet and define overall objectives
Identify the known requirements + mark ones which
needs further discussion
Quick design occurs
Prototype evaluated -->requirements refined
Prototype serves as a mechanism for identifying
software requirements

36
Cont…
Requirements gathering

Quick design

Customer
Refine Requirements
suggestion Build prototype

Acceptance by user
Customer evaluation –
prototype

Design Iterative process

Implement, Test

Maintain 37
Prototype model
 Actual system developed using classical waterfall model
 In development effort, requirement analysis and specification
phase becomes redundant.
 Prototype code – thrown away
 However, experience gained - helps in developing actual
system
 Prototype construction – additional cost. But, overall cost
lower than developed using Waterfall model
 Experimenting with prototype - user requirements properly
defined, technical issues satisfactorily resolved
 Minimizing change requests & redesign costs after the system
is delivered to customer
38
Strengths and weakness
Strengths of the Prototyping Model
There is a much lower risk of confusion in terms of
miscommunication, misunderstanding user requirements or
system features.
New or unexpected user requirements can easily be
incorporated.
Prototyping development costs are offset by avoidance of the
usual high cost of rework and repair.
The prototype can be used as a formal specification because it
is tangible and well tried.

39
Cont…
 Weaknesses of the Prototyping Model
Lack of early planning may cause project management problems:
unknown schedules, budgets and deliverables.
This Model results in potentially longer development cycles.
Seeing functions in working mode early in the life cycle
stimulates users into requesting additional functions.
When to use the Prototyping Model?
When requirements are not known at the beginning of the project
When requirements are unstable and constantly changing
When users, for various reasons, do not have the capability of
expressing their requirements clearly.
When user requires proof of concept
40
Evolutionary model
 Also known as successive version model
 System – first broken into several modules or functional
units – incrementally developed and delivered
 Developers first develop core modules – i.e., basic
requirements are addressed, but many supplementary
features remain undelivered
 Initial product skeleton – refined into increasing levels of
capability by adding new functionalities in successive
versions
41
Cont…
 Each version is a functioning system capable of
performing some more useful work
 Core modules will be tested thoroughly
 Disadvantage : difficult to subdivide the problem
 Useful only for very large problems – where it is easier to
identify modules for incremental implementation
 Evolves over a period of time

42
Cont…

43
Spiral model
•Focuses on identifying and eliminating high risk problems by careful
process design (Requirement analysis and Design Phases)
• Consequently, minimum and manageable risks filtered into
development phase
Development cycle is divided into 4 task areas
Requirement analysis – (identifies the objectives of the portion of the

product, in terms of qualities to achieve, identifies alternatives – design, buy,


reuse )
Risk analysis – (alternatives are evaluated and potential areas are
identified and dealt with)
Prototype and detailed designing

Construction, testing and implementation


44
Cont…

1- Requirement Analysis
4 5 2 -Risk Analysis
3 -Prototype 1
1 2
4 - Software Requirement
Analysis
9
3 5 - Risk Analysis
6 6- Prototype 2
8 7-Detailed Design
7
8-Construction
9-Testing and Evaluation

45
Cont…
Expects lot of rework in reverting to an earlier
phase and incorporating client feedback
 Needs to perform risk analysis effectively

 To eliminate losses arising due to uncertain dev

models, resource requirement, time etc

46
Selection of a Process Model
Following criteria can be considered:

Business goals of the organization - Indicates the mindset of an organization

 Past history of developing projects in accordance with well defined plans


– Waterfall
 If it is used to work in an experimental and constant feedback mode –
Prototype
Expected size of the project
 Large size, customers expect all the features at the first delivery -
Waterfall
 Customers want to start unit testing – Evolutionary (Incremental)
 Size is doubtful – Prototype/Spiral (These models help to develop projects
47
with vague and uncertain project size)
Cont…
Customer needs and project requirements
 Customer needs and requirements – certain and approved –
waterfall
 Customer needs and requirements – uncertain and likely to
change in the future –Spiral / Prototype/ Incremental

Availability of funds and development staff


 Adequate resources at the start of the project – Waterfall /
Prototype
 Expecting additional funds and resources – Incremental / Spiral
Risks perceived in the project
 Risks and impacts are minimum – Waterfall / Incremental
model
48
 Risks and impacts are high – Spiral model
Comparison of Process Models
Strengths Weaknesses Types of projects
Waterfall 
Requirements frozen early 
For well understood

Simple 
Disallows changes problems

Easy to execute 
Cycle time too long 
Short duration project

May choose outdated 
Automation of
HW technology existing manual system

User feedback not allowed

Prototyping 
Front heavy process 
Systems with novice

Helps in requirements 
Possible higher cost users
refinement 
Disallows later changes 
When uncertainties in

Reduces risk requirements

Lead to a better 
When UI very
system
important

49
Advantages of Software Process
SW Process models have a twofold effect :
Provide guidance to software engineers on the order in
which the various technical activities should be carried
out within a project
Provide a framework for managing development and
maintenance- enable to estimate resources, define
intermediate milestones, monitor progress etc

50
Difficulties of Software Process
The software process is the way in which we produce
software.
Why is it difficult to improve software process ?

• Not enough time


• Lack of knowledge
• Wrong motivations
• Insufficient commitment

51
Software Metrics
A software metric is a measure of software characteristics
which are measurable or countable.
Software metrics are valuable for many reasons, including
measuring software performance, planning work items,
measuring productivity, and many other uses.
Software metrics can be classified into two types as follows:
1.Product Metrics
2.Process Metrics
52
Software Metrics
1. Product Metrics: These are the measures of various
characteristics of the software product. The two important
software characteristics are:
 Size and complexity of software.
 Quality and reliability of software.
These metrics can be computed for different stages of SDLC.
2. Process Metrics: These are the measures of various
characteristics of the software development process. For
example, the efficiency of fault detection. They are used to
measure the characteristics of methods, techniques, and tools
that are used for developing software. 53
 
Types of Software Metrics
Internal metrics: Internal metrics are the metrics used for
measuring properties that are viewed to be of greater importance
to a software developer. For example, Lines of Code (LOC)
measure.
External metrics: External metrics are the metrics used for
measuring properties that are viewed to be of greater importance
to the user, e.g., portability, reliability, functionality, usability,
etc.
Hybrid metrics: Hybrid metrics are the metrics that combine
product, process, and resource metrics. For example, cost per FP
where FP stands for Function Point Metric.
Project metrics: Project metrics are the metrics used by the
project manager to check the project's progress.  
54
Advantages of Software Metrics
 For analysis, comparison, and critical study of different
programming language concerning their characteristics.
 In comparing and evaluating the capabilities and productivity
of people involved in software development.
 In the preparation of software quality specifications.
 In the verification of compliance of software systems
requirements and specifications.
 In making inference about the effort to be put in the design
and development of the software systems.
 In getting an idea about the complexity of the code.
 In taking decisions regarding further division of a complex
module is to be done or not.
 In guiding resource manager for their proper utilization.
 In comparison and making design tradeoffs between software
development and maintenance cost and etc.
55
Disadvantages of Software Metrics
 The application of software metrics is not always easy, and in
some cases, it is difficult and costly.
 The verification and justification of software metrics are based
on historical/empirical data whose validity is difficult to
verify.
 These are useful for managing software products but not for
evaluating the performance of the technical staff.
 The definition and derivation of Software metrics are usually
based on assuming which are not standardized and may
depend upon tools available and working environment.
 Most of the predictive models rely on estimates of certain
variables which are often not known precisely.

56
Object Oriented Software
Engineering
57

Outline
Introduction
The object-oriented paradigm
Object-Oriented concept and principles
Characteristics of OO Approach
Identify elements of an object model
Introduction
We live in a world of objects.

58
Introduction(Cont…)
 Objects are any thing that exist in nature, in human-made, in
business, and in Products that we use.
 They Can be categorized, described , organized, combined,
manipulated and created.
 Consider, an example of a real world object : A is a member
(instance) of furniture , but B is a class which has many
objects.
A. chair B. furniture

59
Introduction(Cont…)

Why we use OO approach for software

development?
 Object-oriented Approach: is based on
object technology that leads to reuse, and
reuse leads to faster software development
and higher-quality programs.
60
Introduction(Cont…)
It Provides advantage at management and technical levels.
 Object technologies lead to reuse. Reuse leads to:
 Faster development
 Higher quality programs
 Easier to maintain(because its structure is inherently decoupled)
 Easier to adapt
 Easier to scale(Large system can be created by assembling
reusable subsystem )
61
The Object-Oriented Paradigm
 For many years
 OO was used to denote software development approach that

used OO programming languages (Java, C++, Smalltalk …)


 Today
 OO encompasses a complete view of SE
 The benefits of object-oriented technology are enhanced if it is
addressed early-on and throughout the software engineering
process.
 Software engineers and their managers must consider such items
as:-
 Object-oriented requirements analysis (OORA)
 Object-oriented design (OOD)
 Object-oriented domain analysis (OODA)
 Object-oriented database systems (OODBMS) and 62
The Object-Oriented Paradigm
The object-oriented paradigm is an approach to the solution of problems in
which all computations are performed in the context of objects. The objects are
instances of programming constructs, normally called classes, which are data
abstractions and which contain procedural abstractions that operate on the
objects.

63
Object-Orientation
Object Orientation is about viewing and modeling the
world/system as a set of interacting and interrelated objects.

Features of the OO approach:


1) the universe consists of interacting objects
2) describes and builds systems consisting of objects

64
Cont…
Object -Oriented process model

65
OBJECT
What is an object?
1) any abstraction that models a single thing
2) a representation of a specific entity in the real world
3) may be tangible (physical entity) or intangible
Examples: specific citizen, agency, job, location, order, etc.
Two aspects:
• attribute/information
1) has a unique identity
2) has a description of its structure
3) has a state representing its current condition
• Behavior/method:
1) what can an object do?
2) what can be done to it?

66
Object
properties and behavior.
Properties characterize the object, describing its current state.
Behavior is the way an object acts and reacts, possibly changing its
state.
The following are some other examples of objects:
■ In a payroll program, there would be objects representing each
individual employee.
■ In a university registration program, there would be objects
representing each student, each course and each faculty member.
■ In a factory automation system, there might be objects representing
each assembly line, each robot, each item being manufactured, and each
type of product.

67
Object-Oriented Concepts
What is an object?
 Consider, an example of a real world object

 A member (instance) of furniture

 Much larger class of objects


 Generic attributes can be associated with every
object in the class furniture .

68
Class
What is a class?
1) any uniquely identified abstraction of a set of logically
related instances that share similar characteristics
2) a class is a software module that represents and defines
a set of similar objects, its instances.
3) a definition or template that describes how to build an
accurate representation of a specific type of objects
Examples: agency, citizen, car, etc.

69
CLASS
Class is an OO concept that describe the content and behavior of
some real world entity.
 Generic attributes can be associated with every object in the
class(example: furniture).
Example:
 Among the many possible attributes of
furniture are:
 Cost, dimensions, weight, location, and color
Apply table, chair, sofa
Chair inherits all attributes of furniture
So, object chair can be reused the
attribute of furniture.
70
Cont…
 Every objects can be manipulated in a variety of ways
 Bought, sold, physically modified (saw, paint)
 Operation/Service/Method: Modify one or more
attributes.

71
Cont…
 The object chair encapsulates data
 The attributes values that define chair
 The operations (the actions that are applied to
change the attribute chair)
 object encapsulates [data, operation, other objects,
constants and other related information]
 Encapsulation means that all of this information
packaged under one name and can be reused as one
specification or program component.
 Object-Oriented= Objects + classification+ inheritance +
communication
72
Cont…
 Three characteristics of OO systems make them unique
 Encapsulation
 Inheritance
 Polymorphism
 Class encapsulate data and the operations that work on the data in a single
package.
 This provides a number of important benefits:
 The internal implementation details of data and
procedures are hidden from the outside
world(information hiding)
 This reduces the propagation of side effects when
changes occur
73
Cont…
 Data structures and the operations that
manipulate them are merged in a single named
entity- the class.
 This facilitates component reuse
 Interfaces among encapsulated objects are
simplified. An object that sends a message need
not be concerned with the detail of internal data
structures.
 Interfacing is simplified and the system coupling
tends to be reduced.
Encapsulation separates implementation from
users/clients.
74
Cont…
 Inheritance
 One of the key differentiators between conventional
and OO systems.
 A subclass Y inherits all of the attributes and operations
associated with its super-class, X
 All data structures and algorithms originally designed
and implemented for X are immediately available for Y
 No further work need be done

 Reuse has been accomplished directly

75
Cont…
 Whenever a new class is to be created, the
software engineer has a number of options:
The class can be designed and built from
scratch inheritance is not used.
The class hierarchy can be searched to
determine if a class in the hierarchy contains
most of the required attributes and operations.
The new class inherits from the higher class
and additions may then be added, as required

76
Cont…
The class hierarchy can be restructured so that the
required attributes and operations can be inherited by
the new class
Characteristics of an existing class can be overridden
and private version of attributes or operations are
implemented for the new class.
 Important to note that restructuring the hierarchy can be difficult, and for
this reason, overriding is sometimes used
 Overriding occurs when attributes and operations are inherited in the
normal manner but are then modified to the specific needs of the new
class
 When overriding is used “inheritance is not transitive”

77
Cont…
 Multiple inheritance
 Inherit some attributes and operations from one class
and others from another class.
 Complicates the class hierarchy and creates potential
problems in configuration control
 Sequences are more difficult to trace
 Changes to the definition of a class that resides high
in the hierarchy may have an unintended impact on
classes defined lower in the architecture.

78
Cont…
 Polymorphism
 A characteristics that greatly reduces the effort required to

extend an existing OO system


 A property of object oriented software by which an

abstract operation may be performed in different ways in


different classes.
 Requires that there be multiple methods of the same

name
 The choice of which one to execute depends on the

object that is in a variable


 Reduces the need for programmers to code many if-else

or switch statements
79
Cont…
Classes and Objects :
 A class is an OO concept that encapsulates the data and procedural
abstractions required to describe the content and behaviour of
some real world entity
 Data abstraction(attributes) enclosed by procedural abstraction
(operation, methods)
 A class has
 Generalized description
 Collection of Similar objects
 Super class and subclass

80
Attribute
 Attributes: describe the class or object in some way
 A domain is a set of specific values.
Example:
 [Automobile]  [Color] 
Most physical objects have features such as shape,
weight, color, and type of material.
People have features including date of birth, parents, name,
And eye color.

 Operations: Define the behaviour of an object and change the


object’s attributes in some way.
 Changes one or more attribute values that are contained within the
object
 Example: getColor extract the color stored in the color attributes.
8
1
Message
 Message: is the means by which objects interact.
 Stimulates some behaviour to occur in the receiving object
 The behaviour is accomplished when an operation is executed

8
2
Cont…
 Message: [destination, operation, parameters]
Where
 Destination defines the receiver object that is
stimulated by the message,
 Operation refers to the operation that is to receive the
message, and
 Parameters provides information that is required for
the operation to be successful.

8
3
Cont…
 message: [D, op10, {data}]
 message: (C, op08, {data})
 Then C finds op08, performs it, and sends an appropriate return
value to D. Operation op10 completes and sends return value to B.

8
4
Message
An object is requested to perform one of its operations by sending
it a message telling the object what to do.
The receiver [object] responds to the message by first choosing the
operation
that implements the message name, executing this operation, and
then returning control to the caller.
Messaging ties an object-oriented system together.
Messages provide insight into the behavior of individual objects
and the OO system as a whole.

8
5
Object Models
Object models represent objects and relationships between
objects.
Each box represents :-
- A type of object and name
- Attributes, and
- Methods of the object.
An arc between two objects represents a relationship
between the objects.
Arcs may be labelled in the centre with a name of the
association.
At each end a multiplicity may be given indicating how
many different associations of the same kind are allowed.
8
6
Cont…
The three major types of relationships are
 Inheritance
 Aggregation, and
 Association.
An inheritance relationship implies that the object at the bottom of
the arc is a special case of the object at the top of the arc.
 It has an ‘‘is-a’’ relationship.
An aggregation relationship implies that the object at the bottom of
the arc is a component of the object at the top of the arc.
 It has a ‘‘part-of’’ relationship.
An association relationship implies that some one of the objects is
associated with the other object.
 This relationship may be two-way, or it might only be one-way.
8
7
Cont…
Identifying Classes and Objects:
 Objects visible themselves in one of the ff. ways:
External entities (e.g.: other systems, devices, people)
that produce or consume information to be used by a
computer-based system.
Things (e.g., reports, displays, letters, signals) that are
part of the information domain for the problem.
Occurrences or events (e.g., a property transfer or the
completion of a series of robot movements) that occur
within the context of system operation.

8
8
Cont…
Roles (e.g., manager, engineer, salesperson) played by
people who interact with the system.
Organizational units (e.g., division, group, team) that are
relevant to an application.
Places (e.g., manufacturing floor) that establish the context
of the problem and the overall function of the system.
Structures (e.g., sensors, four-wheeled vehicles, or
computers) that define a class of objects or in the extreme,
related classes of objects.

8
9
Object Vs Class
An object is an abstraction of something of interest
to the program, normally something in the real
world such as a bank account.
A class is an abstraction of a set of objects; at the
same time it also acts as an abstract container for
the methods that operate on those objects. The
abstraction is improved if fewer methods are
public.

9
0
Basic Terms in SE
 A superclass is an abstraction of a set of
subclasses: you can declare a variable to be of a
certain class, and not care that instances of its
subclasses may be put in the variable.
 An interface is a similar but even better
abstraction since it has fewer details defined
(only abstract operations).
 A method is a procedural abstraction that hides
its implementation: you can call the method
without having to know the implementation.

9
1
Cont…
 An operation is an abstraction of a set of
methods. Better abstraction is achieved by
giving an operation fewer parameters.
❏ Attributes and associations are abstractions of
the underlying instance variables used to
implement them.
 Encapsulation. A class acts as a container to
hold its features (variables and methods) and
defines an interface that allows only some of
them to be seen from outside.
9
2
Cont…
Abstraction, modularity and encapsulation each
help provide information hiding.
This arises when software developers using some
feature of a programming language or system do
not need to know all the details; they only need to
know sufficient details to use the feature.
The result is that the developers have less
confusing detail to understand and will therefore
make fewer mistakes. Hence they can work
effectively with larger systems.
9
3
End of Chapter
One
Don’t forget to start your project

9
4

You might also like