0% found this document useful (0 votes)
60 views38 pages

1 - Software

This chapter introduces object-oriented software engineering and key concepts. It discusses what software engineering is, including systematic development and evolution of large, high-quality systems within constraints. It defines object orientation as organizing computations in the context of objects which are instances of classes containing data and procedural abstractions. Key concepts in object orientation are discussed like identity, classes, inheritance, polymorphism, abstraction, modularity, and encapsulation. Challenges in object-oriented programming are also covered.

Uploaded by

Werkena Megersa
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPT, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
60 views38 pages

1 - Software

This chapter introduces object-oriented software engineering and key concepts. It discusses what software engineering is, including systematic development and evolution of large, high-quality systems within constraints. It defines object orientation as organizing computations in the context of objects which are instances of classes containing data and procedural abstractions. Key concepts in object orientation are discussed like identity, classes, inheritance, polymorphism, abstraction, modularity, and encapsulation. Challenges in object-oriented programming are also covered.

Uploaded by

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

Object-Oriented Software Engineering

Chapter One: Introduction


1.1 What is Software Engineering?...

The process of solving customers’ problems


by the systematic development and evolution
of large, high-quality software systems
within cost, time and other constraints

Other definitions:
• IEEE: (1) the application of a systematic, disciplined,
quantifiable approach to the development, operation,
maintenance of software; that is, the application of
engineering to software. (2) The study of approaches as
in (1).
• The Canadian Standards Association: The systematic
activities involved in the design, implementation and
testing of software to optimize its production and
support.

Chapter 1: Object Oriented Software


Engineering
What is Software Engineering?…

Solving customers’ problems


• This is the goal of software
engineering
• Sometimes the solution is to buy, not
build
• Adding unnecessary features does not
help solve the problem
• Software engineers must communicate
effectively to identify and understand
the problem

Chapter 1: Object Oriented Software


Engineering
What is Software Engineering?…

Systematic development and evolution


• An engineering process involves
applying well understood techniques in
a organized and disciplined way
• Many well-accepted practices have been
formally standardized
— e.g. by the IEEE or ISO
• Most development work is evolution

Chapter 1: Object Oriented Software


Engineering
What is Software Engineering?…

Large, high quality software systems


• Software engineering techniques are
needed because large systems cannot be
completely understood by one person
• Teamwork and co-ordination are required
• Key challenge: Dividing up the work and
ensuring that the parts of the system
work properly together
• The end-product must be of sufficient
quality

Chapter 1: Object Oriented Software


Engineering
What is Software Engineering?

Cost, time and other constraints


• Finite resources
• The benefit must outweigh the cost
• Others are competing to do the job
cheaper and faster
• Inaccurate estimates of cost and time
have caused many project failures

Chapter 1: Object Oriented Software


Engineering
1.2 What is Object Orientation?
Procedural paradigm:
• Software is organized around the notion of
procedures
• Procedural abstraction
— Works as long as the data is simple
• Adding data abstractions
— Groups together the pieces of data that
describe some entity
— Helps reduce the system’s complexity.
- Such as Records and structures

Object oriented paradigm:


• Organizing procedural abstractions in the
context of data abstractions

Chapter 1: Object Oriented Software


Engineering
Object Oriented paradigm

An approach to the solution of problems in


which all computations are performed in the
context of objects.

• The objects are instances of classes,


which:
— are data abstractions
— contain procedural abstractions that
operate on the objects

• A running program can be seen as a


collection of objects collaborating to
perform a given task

Chapter 1: Object Oriented Software


Engineering
A View of the Two paradigms

See in Umple

Chapter 1: Object Oriented Software


Engineering
Classes and Objects

Object
• A chunk of structured data in a
running software system

• Has properties
— Represent its state

• Has behaviour
— How it acts and reacts
— May simulate the behaviour of an
object in the real world

Chapter 1: Object Oriented Software


Engineering
Objects

Chapter 1: Object Oriented Software


Engineering
Classes

A class:
• A unit of abstraction in an object
oriented (OO) program

• Represents similar objects


— Its instances

• A kind of software module


— Describes its instances’ structure
(properties)
— Contains methods to implement their
behaviour
Chapter 1: Object Oriented Software
Engineering
Is Something a Class or an Instance?
• Something should be a class if it could have
instances
• Something should be an instance if it is clearly a
single member of the set defined by a class
Film
• Class; instances are individual films.
Reel of Film:
• Class; instances are physical reels
Film reel with serial number SW19876
• Instance of ReelOfFilm
Science Fiction
• Instance of the class Genre.
Science Fiction Film
• Class; instances include ‘Star Wars’
Showing of ‘Star Wars’ in the Phoenix Cinema at 7 p.m.:
• Instance of ShowingOfFilm

Chapter 1: Object Oriented Software


Engineering
Naming classes

• Use capital letters


— E.g. BankAccount not bankAccount

• Use singular nouns

• Use the right level of generality


— E.g. Municipality, not City

• Make sure the name has only one


meaning
— E.g. ‘bus’ has several meanings

Chapter 1: Object Oriented Software


Engineering
Concepts that Define Object Orientation
The following are necessary for a system or language to
be OO
• Identity
— Each object is distinct from each other object, and
can be referred to
— Two objects are distinct even if they have the same
data
• Classes
— The code is organized using classes, each of which
describes a set of objects
• Inheritance
— The mechanism where features in a hierarchy inherit
from superclasses to subclasses
• Polymorphism
— The mechanism by which several methods can have the
same name and implement the same abstract operation.

Chapter 1: Object Oriented Software


Engineering
Other Key Concepts
Abstraction
• Object -> something in the world
• Class -> objects
• Superclass -> subclasses
• Operation -> methods
• Attributes and associations -> instance
variables
Modularity
• Code can be constructed entirely of classes
Encapsulation
• Details can be hidden in classes
• This gives rise to information hiding:
— Programmers do not need to know all the
details of a class

Chapter 1: Object Oriented Software


Engineering
Difficulties and Risks in Object-Oriented
Programming
Language evolution and deprecated
features:
• Programming languages is evolving, so
some features are ‘deprecated’ at every
release
Efficiency can be a concern in some
object oriented systems
• Example, Java can be less efficient
than other languages
— VM-based
— Dynamic binding

Chapter 1: Object Oriented Software


Engineering
Reading assignment

Review basics of java to get a good


insight on basic concepts of object
orientation techniques including:
• Inheritance and Abstraction
• Polymorphism
• Encapsulation
• List
• Threads

Chapter 1: Object Oriented Software


Engineering
1.3 The Nature of Software...

Software is intangible
• Hard to understand development effort
Software is easy to reproduce
• Cost is in its development
— in other engineering products,
manufacturing is the costly stage
The industry is labor-intensive
• Hard to automate

Chapter 1: Object Oriented Software


Engineering
The Nature of Software ...

Untrained people can hack something


together
• Quality problems are hard to notice
Software is easy to modify
• People make changes without fully
understanding it
Software does not ‘wear out’
• It deteriorates by having its design
changed:
— erroneously, or
— in ways that were not anticipated,
thus making it complex

Chapter 1: Object Oriented Software


Engineering
The Nature of Software

Conclusions
• Much software has poor design and is
getting worse
• Demand for software is high and rising
• We are in a perpetual ‘software
crisis’
• We have to learn to ‘engineer’
software

Chapter 1: Object Oriented Software


Engineering
Types of Software...

Custom
• For a specific customer
Generic
• Sold on open market
• Often called
— COTS (Commercial Off The Shelf)
— Shrink-wrapped
Embedded
• Built into hardware
• Hard to change

Chapter 1: Object Oriented Software


Engineering
Types of Software

Differences among custom, generic and


embedded software

Custom Generic Embedded


Number of copies in use low medium high

Total processing power low high medium


devoted to running this type
of software

Worldwide annual high medium low


development effort

Chapter 1: Object Oriented Software


Engineering
Types of Software

Real time software


• E.g. control and monitoring systems
• Must react immediately
• Safety often a concern
Data processing software
• Used to run businesses
• Accuracy and security of data are key

Some software has both aspects

Chapter 1: Object Oriented Software


Engineering
1.4 Stakeholders in Software Engineering
and quality…
1. Users
• Those who use the software
2. Customers
• Those who pay for the software
3. Software developers
4. Development Managers

All four roles can be fulfilled by the


same person

Chapter 1: Object Oriented Software


Engineering
Software Quality...
Usability
• Users can learn it and fast and get their job
done easily
Efficiency
• It doesn’t waste resources such as CPU time and
memory
Reliability
• It does what it is required to do without
failing
Maintainability
• It can be easily changed
Reusability
• Its parts can be used in other projects, so
reprogramming is not needed

Chapter 1: Object Oriented Software


Engineering
Software Quality and the Stakeholders
Customer: User:
solves problems at easy to learn;
an acceptable cost in efficient to use;
terms of money paid and helps get work done
resources used

QUALITY
SOFTWARE

Developer: Development manager:


easy to design; sells more and
easy to maintain; pleases customers
easy to reuse its parts while costing less
to develop and maintain

Chapter 1: Object Oriented Software


Engineering
Software Quality: Conflicts and Objectives
The different qualities can conflict
• Increasing efficiency can reduce
maintainability or reusability
• Increasing usability can reduce efficiency
Setting objectives for quality is a key
engineering activity
• You then design to meet the objectives
• Avoids ‘over-engineering’ which wastes
money
Optimizing is also sometimes necessary
• E.g. obtain the highest possible
reliability using a fixed budget

Chapter 1: Object Oriented Software


Engineering
Internal Quality Criteria

These:
• Characterize aspects of the design of
the software
• Have an effect on the external quality
attributes
• E.g.
— The amount of commenting of the
code
— The complexity of the code

Chapter 1: Object Oriented Software


Engineering
Short Term Vs. Long Term Quality

Short term:
• Does the software meet the customer’s
immediate needs?
• Is it sufficiently efficient for the
volume of data we have today?
Long term:
• Maintainability
• Customer’s future needs
• Scalability: Can the software handle
larger volumes of data?

Chapter 1: Object Oriented Software


Engineering
1.5 Software Engineering Projects

Most projects are evolutionary or maintenance


projects, involving work on legacy systems
• Corrective projects: fixing defects
• Adaptive projects: changing the system in
response to changes in
— Operating system
— Database
— Rules and regulations
• Enhancement projects: adding new features
for users
• Reengineering or perfective projects:
changing the system internally so it is
more maintainable

Chapter 1: Object Oriented Software


Engineering
Software Engineering Projects
1. ‘Green field’ projects
• New development
• The minority of projects
2. Projects that involve building on a
framework or a set of existing components.
• A framework is an application that is
missing some important details.
— E.g. Specific rules of this organization.
• Such projects:
— Involve plugging together components that
are:
- Already developed.
- Provide significant functionality.
— Benefit from reusing reliable software.

Chapter 1: Object Oriented Software


Engineering
Activities Common to Software Projects...

Requirements and specification


• Includes
— Domain analysis
— Defining the problem
— Requirements gathering
- Obtaining input from as many sources as
possible
— Requirements analysis
- Organizing the information
— Requirements specification
- Writing detailed instructions about how
the software should behave

Chapter 1: Object Oriented Software


Engineering
Activities Common to Software Projects...
Design
• Deciding how the requirements should be
implemented, using the available technology
• Includes:
— Systems engineering: Deciding what
should be in hardware and what in
software
— Software architecture: Dividing the
system into subsystems and deciding how
the subsystems will interact
— Detailed design of the internals of a
subsystem
— User interface design
— Design of databases

Chapter 1: Object Oriented Software


Engineering
Activities Common to Software Projects

Modeling
• Creating representations of the domain
or the software
— Use case modeling
— Structural modeling
— Dynamic and behavioural modeling
Programming
Quality assurance
• Reviews and inspections
• Testing
Deployment
Managing the process

Chapter 1: Object Oriented Software


Engineering
1.6 Software Engineering and the
Engineering Profession
The term Software Engineering was coined in 1968
• People began to realize that the principles of
engineering should be applied to software
development

Engineering is a licensed profession


• In order to protect the public
• Engineers design artifacts following well
accepted practices which involve the application
of science, mathematics and economics
• Ethical practice is also a key tenet of the
profession

In many countries, much software engineering does


not require an engineering licence, but is still
engineering

Chapter 1: Object Oriented Software


Engineering
Software Engineering and the Engineering
Profession
Ethics in Software Engineering:

Software engineers shall


• Act consistently with public interest
• Act in the best interests of their clients
• Develop and maintain with the highest
standards possible
• Maintain integrity and independence
• Promote an ethical approach in management
• Advance the integrity and reputation of the
profession
• Be fair and supportive to colleagues
• Participate in lifelong learning

Chapter 1: Object Oriented Software


Engineering
1.7 Difficulties and Risks in Software
Engineering
• Complexity and large numbers of
details
• Uncertainty about technology
• Uncertainty about requirements
• Uncertainty about software engineering
skills
• Constant change
• Deterioration of software design
• Political risks

Chapter 1: Object Oriented Software


Engineering

You might also like