0% found this document useful (0 votes)
15 views99 pages

Comp 468 Lecture Slide Chapter 01 (Introduction To Software Engineering)

Uploaded by

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

Comp 468 Lecture Slide Chapter 01 (Introduction To Software Engineering)

Uploaded by

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

Chapter-1

Software Engineering Fundamentals

Prepared by: Marta G.


Objectives
 What is software?
◦ Software types
◦ Nature of software.
 What is software engineering?
◦ Stakeholders in Software engineering
◦ software quality
▪ Software development process models
▪ Software process
▪ Software Development Life Cycle and process models
▪ Process assessment model
▪ Software process metrics
▪ Object oriented system development methodology
What is software?

 Software is collection of computer programs, procedures,


rules, and associated documentations and data pertaining to
the operation of computer system(IEEE).
Types of software
Software can be classified based on various criteria, including:
• Purpose: Software can be classified as system software (e.g.
operating systems, device drivers) or application software (e.g.
word processors, games).
• Platform: Software can be classified as native software (designed
for a specific operating system) or cross-platform software
(designed to run on multiple operating systems).
• Deployment: Software can be classified as installed software
(installed on the user’s device) or cloud-based software (hosted on
remote servers and accessed via the internet).
• License: Software can be classified as proprietary software (owned
by a single entity) or open-source software (available for free with
the source code accessible to the public).
Cont…
• Development Model: Software can be classified as traditional
software (developed using a waterfall model) or agile software
(developed using an iterative and adaptive approach).
• Size: Software can be classified as small-scale software
(designed for a single user or small group) or enterprise
software (designed for large organizations).
• User Interface: Software can be classified as graphical user
interface (GUI) software or command-line interface (CLI)
software.
• These classifications are important for understanding the
characteristics and limitations of different types of software, and
for selecting the best software for a particular need.
Cont…
 Custom (Bespoke): For a specific customer
◦ Example: web sites, air traffic system, etc
 Generic: Often called COTS (Commercial Off The Shelf) or
Shrink-wrapped.
◦ Sold on open market
◦ Example: word processors, spread sheets, compilers, etc
 Embedded: Built into hardware
◦ Hard to change
 Real time software: Must react immediately
◦ Safety is often a concern
◦ E.g. control and monitoring systems
◦ Almost all embedded systems have hard real-time constraint.
Cont…

 Data processing software: Used to run businesses


◦ Accuracy and security of data are key concerns
◦ Functions: recording sales, managing accounts, printing bills
 AI software: Software like expert systems, decision support systems,
pattern recognition software, artificial neural networks, etc.
 Business software: Examples are software for inventory
management, accounts, banking, hospitals, schools, stock markets,
etc.
 Utilities Software: Examples are anti-virus software, voice
recognition software, compression programs, etc.
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
 Untrained people can hack something together
◦ Quality problems are hard to notice
Cont…
 Software is easy to modify
◦ People make changes without fully understanding it.
 Software does not ‘wear out’
◦ It deteriorates by having its design changed:
❑ Changes often tend to introduce new defects

 Conclusions
◦ Demand for software is high and rising
◦ Much software has poor design and is getting worse
◦ We are in a perpetual ‘software crisis’
◦ We have to learn to ‘engineer’ software
What is Software Engineering?
 Software engineering is an engineering activity. It is not
algorithmic. It requires experimentation, the reuse of pattern
solutions, and the incremental evolution of the system
toward a solution that is acceptable to the client.
 It is the process of solving customers’ problems by the
systematic development and evolution of large, high-quality
software systems within cost, time and other constraints
Cont…
 Solving customers’ problems
◦ This is the goal of every software engineering
◦ Engineers search for an appropriate solution, often by trial and error,
evaluating alternatives empirically, with limited resources and
incomplete knowledge.
◦ Sometimes the solution is to buy, not build
◦ Adding unnecessary features does not help to solve the problem
◦ Software engineers must communicate effectively to identify and understand
the problem
◦ Includes five steps: formulate the problem, analyze the problem, search for
solutions, decide on the appropriate solution and specify the solution
Cont…
 Systematic development and evolution
◦ An engineering process involves applying well understood
techniques in an organized and disciplined way
◦ Many well-accepted practices have been formally
standardized
 E.g. by the IEEE or ISO
◦ Most development work is evolution
Cont…

 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
Cont…

 Cost, time and other constraints


 The factors that limit your development process.
 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
❑ Just like mechanical engineers design mechanical systems and
electrical engineers design electrical systems software engineers
design software systems.
❑ However, software differs in important ways from the artifacts

produced by other engineering discipline.


SE Is also …
 A modeling activity
 A problem-solving activity
 A knowledge acquisition activity.
 A rationale-driven activity.
Stakeholders in Software Engineering
▪ Stakeholders are people or groups affected by a software
development project.
◦ Users
 Those who use the software
◦ Customers
 Those who pay for the software
◦ Software developers
◦ Development Managers

 All four roles can be fulfilled by the same person


Example - ATM stakeholders
 Bank customers
 Representatives of other banks
 Bank managers
 Counter staff
 Database administrators
 Security managers
 Marketing department
 Hardware and software maintenance engineers
 Banking regulators
Software quality
 The international standard on software product quality suggests that
software quality comprises the following main attributes:
◦ Usability: The capability to be understood, learned, and used
◦ Efficiency: It doesn’t waste resources such as CPU time and memory
◦ Reliability: It does what it is required to do without failing
◦ Functionality: The capability to provide functions which meet stated
and implied needs when the software is used.
◦ Maintainability: It can be easily changed
◦ Reusability: Its parts can be used in other projects, so reprogramming
is not needed
Software Quality and the Stakeholders
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
Internal Quality Criteria

 Internal quality refers to Characterize aspects of


the design and source code 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
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?
Class assignment?
Discuss prior Software engineering failures?
What are the different types of Software Engineer Roles?
• Front-End Engineer
• Back-End Engineer
• Full Stack Engineer
• Software Engineer in Test (QA Engineer)
• Software Development Engineer in Test (SDET)
• DevOps Engineer
• Security Engineer
• Data Engineer
• Cloud Architect
Software development methodology
▪ A software development methodology is a serious of processes
like system analysis, modeling, design, implementation, testing
and maintenance.
▪ These leads to the development of an application.
▪ There are two orthogonal views of software development
▪ Traditional technique: Focusses on data and functions
▪ Object Oriented methodologies: Focuses on objects that combines data
and functionality
Software Development Life Cycle
 Software Process [ software development life cycle (SDLC)] is
structured set of activities required to develop a software system.
 It is a step by step approach to develop and deliver a
quality software on time and within budget to the target users.
 Fundamental activities are:
◦ Requirements collection: establish customer’s needs, what is the need of
customers?
◦ Analysis: model and specify the requirements ("what")
◦ Design: model and specify a solution ("how")
◦ Implementation: construct a solution (produce the working code)
◦ Testing: validate the solution against the requirements
◦ Maintenance: repair defects and adapt the solution to new
requirements
 NB: These activities do not always follow strictly one after another
they often overlap and interact.
Cont..
 Software requirements
Software requirements define the functionality of the system
◦ Answer the question "what?", not "how?“
◦ Define constraints and the major inputs of the system
 Two kinds of requirements
◦ Functional requirements: business processes, actors and use-cases
◦ Non-functional requirements: performance, scalability, etc.
Requirement Analysis
 Requirements analysis starts from a vision about the
system
◦ Requirements come from different sources with different
techniques
◦ Customers don’t know what they need
◦ Requirements come roughly and are specified and extended
iteratively
 The outcome is the Software Requirements Specification
(SRS) which is a formal requirements document.
Designing process
 Software design is a technical description about how
the system will implement the requirements.
 The system architecture describes:
◦ How the system will be decomposed into subsystems
(modules)
◦ Responsibilities of each module
◦ Interaction between modules
◦ Platforms and technologies
SDD
 The Software Design Document (SDD) is a formal
description of the architecture and design of the system.
 It contains: Architecture design → Modules and their
interaction (diagram)
 For each module
◦ Process design (diagrams)
◦ Data design (E/R diagram)
◦ Interfaces design and high level class diagram
Codding

 During software construction phase developers create the


working program.
 Sometimes called implementation phase
It includes:
◦ Internal method design
◦ Writing code
Testing
 Testing checks whether the developed software conforms to
the user requirements.
 System testing is usually done by QA engineers
 Unit testing is done by developers
◦ Writing unit tests (sometimes)
◦ Unit testing
◦ Integration testing
Maintenance
 Maintenance is an activity of enabling a system to work normally
after it has been failed.
Software Development Process Models
 Software development projects are large and complex
phased approach
 Software process model is an abstract representation of a
process (each process model represents a process from
particular perspective)
◦ Examples of process perspectives are
 Workflow perspective - sequence of activities
 Data-flow perspective - information flow
 Role/action perspective - who does what
Cont…
 Code-and-Fix process model
 Waterfall process model
 Incremental development process model
 Iterative process model
 Spiral process model
 Agile process model
 Prototype process model
 Evolutionary development process model
 Formal Transformation process model
 Reuse-based development process model
 V-Model (Reading Assignment)
 Time Boxing (Reading Assignment)
 Extreme programming (Reading Assignment)
Code-and-Fix process model
 This model starts with an informal general product idea
and just develops code until a product is ”ready” (or
money or time runs out).
 Work is in random order

 Advantages
◦ No administrative overhead
◦ Signs of progress (code) early
◦ Low expertise, anyone can use it!
◦ Useful for small projects.
Cont…

Disadvantage
 Dangerous!
◦ No visibility/control
◦ No resource planning
◦ No deadlines
◦ Mistakes hard to detect/correct
◦ Impossible for large projects
 communication breakdown
Waterfall process model
 It is a sequential approach, where each fundamental
activity of a process is represented as a separate phase and arranged
in linear order.
 The following phase should not start until the previous phase has
finished: no feedback
 It is a plan-driven process
 Waterfall development model phases:
Requirement gathering→ Analysis → Design → Implementation →
Testing → Maintenance
 But in practice, phases overlap and may return to a previous phase.
Diagrammatic representation
Cont…
When to use waterfall model
 In principle, waterfall model should only be applied
when requirements are well understood and
unlikely to change radically during development
 Application is not complicated and big
• Environment is stable
• Technology and tools used are not dynamic and is
stable
• Resources are available and trained
Advantage
 Easy to use, understand and implement.
 Widely used and known (in theory!)
 Fits other engineering process models: civil,
mechanical etc.
 Reinforces good habits: define-before- design,
design-before-code
 Each stage has well defined deliverable or milestone.
 Suited for smaller projects where requirements are
well defined
Disadvantage

 You cannot go back a step; if the design phase has gone wrong,
things can get very complicated in the implementation phase.
 Requires that requirements are well-specified and unchanging.
 Clients valuable feedback cannot be included with ongoing
development phase
 Error can be fixed only during the phase
 It is not desirable for complex project where requirement
changes frequently
Incremental process model
 It is based on the idea of developing an initial implementation,
exposing this to user feedback, and evolving it through several
versions until an acceptable system has been developed.
 Incremental software development is better than a waterfall approach
for most business, e-commerce, and personal systems.
 it is not a separate model. It is essentially a series of waterfall
cycles.
 The requirements are divided into broken down into multiple
standalone modules of software development cycle..
 The SDLC life cycle process is repeated and each subsequent release of the system
adds more functionality until all requirements are met/all designed functionality
has been implemented.
Cont…
When to use incremental approach?
• Requirements of the system are clearly understood
• When high-risk features and goals are involved
• There’s high demand for the product, so you need fast
market entry
• When software engineering team are not very well skilled
or trained
• Such methodology is more in use for web application and
product based companies
Cont…
Iterative development process model

 Breaks the process of developing a large application into


smaller parts. Each part, called “iteration”
 Design modifications are made and new functional
capabilities are added.
 In each iteration, a slice of system features is delivered,
passing through the requirements till the deployment.
 We build a product which meets the initial scope and
release it quickly for valuable customer feedback.
 An early version with limited features is important to get
customer feedback.
Diagram
Cont…
When to use Iterative model?
1. When requirements are defined clearly and easy to
understand.
2. When the software application is large.
3. When there is a requirement of changes in future.
Cont…

Advantages
◦ Testing and debugging during smaller iteration is easy.
◦ It allows feedback to proceeding stages.
◦ Risks are identified and resolved during iteration
Disadvantages
◦ Requirement changes can cause over budget.
◦ Design can be changed again and again because of imperfect
requirements.
◦ Not suitable for smaller projects
◦ Project completion date not confirmed because of changing
requirements
Incremental Model Vs Iterative Model
 Incremental is where you build a complete feature of
the software component, but at the end of each phrase or
section.
◦ You have nothing to review or feedback on.
 while in iterative, it builds small portions of all the
features.
When you move from one version to another, you decide
(based on feedback) what you need in the new version
as a better choice and what you need to discard.
Incremental

Iterative
Spiral process model
 It is a combination of waterfall model and iterative model.
 It is a risk-driven software development process model.
 where the process is represented as spiral rather than a
sequence of activities
 The software is developed in a series of incremental releases.
 Thus, the first loop might be concerned with system
feasibility, the next loop might be concerned with the
requirements definition, the next loop with system design,
and so on.
Cont…
Con…
Cont…
When to use spiral model?
• when project is large
• When releases are required to be frequent
• When creation of a prototype is applicable
• When risk and costs evaluation is important
• Spiral methodology is useful for medium to high-risk
projects
• When requirements are unclear and complex
• When changes may require at any time
• When long term project commitment is not feasible due to
changes in economic priorities
Advantage of spiral model
 Risk reduction
 Functionality can be added
 Software produced early

Disadvantage of spiral model

 Risk analysis requires highly specific expertise


 Highly dependent on risk analysis (RA has to be done right)
 Complex and costly to implement
 Why Spiral Model is called Meta Model?
Agile process model
 Agility is flexibility, it is a state of dynamic, adapted to
the specific circumstances.
 The agile methods refers to a group of software
development models based on the incremental and
iterative approach, in which the increments are small
and typically, new releases of the system are created and
made available to customers every few weeks.
Advantages

 It involve customers in the development process to


propose requirements changes.
 They minimize documentation by using informal
communications rather than formal meetings with
written documents.
 It is best suited for application where the
requirements change rapidly during the
development process.
Disadvantage

 Difficult to scale up to very large projects where


documentation is essential.
 A highly skilled team is needed.
 If team members aren’t committed, the project will either
never complete or fail
Cont…
 Agile is a broad umbrella term that encompasses
frameworks and practices. Mostly used are :
• Scrum
• Kanban
• Extreme Programming (XP)
• Feature-Driven Development (FDD)
• Dynamic Systems Development Method (DSDM)
• Adaptive Software Development (ASD)
• Rapid Application Development (RAD)
• Crystal
• Scaled Agile Framework (SAFe)
Agile …..Scrum

 Scrum is a framework that helps agile teams to work


together.
 Using it, the team members can deliver and sustain the
complex product.
 Scum is a work done through the framework and
continuously shipping values to customers.
 Sprints are a short, time-boxed period for Scrum team
that works to complete a set amount of work.
Cont…
 The sprint is a set of the
period where all the work to
be done. (1 to 3weeks)
 Product Backlog is
simply a list of all things
that needs to be done within
the project.(by product
owners)
 Sprint backlog is a list of
work items your team plans
to complete during a project
sprint.
Scrum roles
 A Scrum team consists of three roles: the Scrum Master,
the product owner, and the development team.
 While there is only one Scrum Master and one product
owner, there are generally several development team
members (can be computer engineers, designers, writers,
data analysts).
What are their responsibility?
Five ceremonies
 Sprint planning
 Daily scrum
 Sprint review
 Sprint retrospective
 Backlog refinement
Reading assignment
 V-Model (Reading Assignment)
 Time Boxing (Reading Assignment)
 Extreme programming (Reading Assignment)
Incremental Vs Iterative Vs Agile

 Each increment in the incremental approach builds a


complete feature of the software component, while in
iterative, it builds small portions of all the features.
 An agile approach combines both the iterative and
incremental approaches by building a small portion
of each feature, one by one, and gradually
accomplishing features at each increment to increase
the overall system completeness.
Spiral vs Agile
Spiral
 Good for high risky or large projects where the requirements are ambiguous.
 The risks might be due to cost, schedule, performance, user interfaces, etc.
 Risk analysis requires highly specific expertise, and project’s success is
highly dependent on the risk analysis phase.
 It doesn’t work well for very small projects.
Agile
 It suits small-medium size project, with rapid changes in the requirements as
customer can be involved during many SDLC phases.
 Very limited planning is required to get started with the project.
 It helps the company in saving time and money (as result of customer
physical interaction in each phase).
 The daily meetings make it possible to measure productivity.
Prototype process model
 A prototype is a toy implementation of the system.
 This model is used when the customers do not know the exact
project requirements beforehand.
 In this model, a prototype of the end product is first
developed, tested, and refined as per customer feedback
repeatedly till a final acceptable prototype is achieved which
forms the basis for developing the final product.
Types of prototype models

There are a few types of prototype models that can be


implemented by development teams based on their needs:
• Rapid throwaway
• This method involves exploring ideas by quickly developing a
prototype based on preliminary requirements that is then revised
through customer feedback.
• Each prototype may be completely discarded and may not be a part of
the final product.
• Evolutionary
• This approach uses a continuous, working prototype that is refined
after each iteration of customer feedback.
• Each prototype is not started from scratch, this method saves time
and effort.
Cont…
• Incremental
• This technique breaks the concept for the final product into
smaller pieces, and prototypes are created for each one.
• In the end, these prototypes are merged into the final
product.
• Extreme
• This prototype model is used specifically for web
development.
• All web prototypes are built in an HTML format with a
services layer and are then integrated into the final product.
Cont…
Advantage
 Very useful when requirements aren’t clear,
 The interactions with customers and experimenting an initial
version of the software results in high satisfaction and
clearance of what to be implemented.
Disadvantage
 Good tools are needed for quick development in order to
complete a prototype.
 The costs for training the development team on prototyping
may be high.
 Tools may be expensive
Read more about advantages and disadvantages of
prototyping process model
Formal Transformation process model
 Formal transformation is a particular kind of
mathematically-based technique for the specification,
development and verification of hardware and software
systems.
 It is similar to the waterfall model but it’s specification is
converted to a mathematical module and based on
functions which are defined using mathematical
notations.
Cont…

 Drawbacks
◦ Need for specialised skills and training to apply the technique
◦ Difficult to formally specify some aspects of the system such as the
user interface.
 Advantage
◦ The resulting software will have high quality
 Applicability
◦ Critical systems especially those where a safety or security case
must be made before the system is put into operation
Reuse-based development process model

 Also known as reuse-oriented development (ROD)


 Reuse-oriented development is based on systematic reuse
where systems are integrated from existing components.
 Based on systematic reuse where systems are integrated
from existing components or COTS systems.
 Sometimes, these components are systems in their own
right (COTS or commercial off-the-shelf systems) that may
provide specific functionality such as word processing or
a spreadsheet.
Cont…

The reuse model has 4 fundamental steps which are


followed:
1. To identify components of old system that are most
suitable for reuse.
2. To understand all system components.
3. To modify old system components to achieve new
requirements.
4. To integrate all of modified parts into new system.
Cont…
Advantages
• It can reduce total cost of software development.
• The risk factor is very low.
• It can save lots of time and effort.
• It is very efficient in nature.
Disadvantages
• Reuse-oriented model is not always worked as a practice in its true
form.
• Compromises in requirements may lead to a system that does not
fulfill requirement of user.
• Sometimes using old system component, that is not compatible with
new version of component, this may lead to an impact on system
evolution.
Software development tools (CASE)

 Computer-aided software engineering (CASE) is software to support


software development and evolution processes
 Used to simplify various stages of Software Development Life Cycle such
as Analysis tools, Design tools, Project management tools, Database
Management tools, Documentation tools are to name a few.
 CASE examples
◦ Graphical editors for system model development
◦ Data dictionary to manage design entities
◦ GUI builder for user interface construction
◦ Debuggers to support program fault finding
◦ Automated translators to generate new versions of a program
Cont…

 Tools may be combined within a framework called an Interactive


Development Environment or IDE.
 This provides a common set of facilities that tools can use so that it
is easier for tools to communicate and operate in an integrated way.
 The ECLIPSE IDE is widely used and has been designed to

incorporate many different types of software tools.


Components of CASE Tools
CASE tools can be broadly divided into the following parts
based on their use at a particular SDLC stage:
Central Repository
◦ It serve as a source of common, integrated and
consistent information.
◦ It is a central place of storage where product
specifications, requirement documents, related reports and
diagrams, other useful information regarding management
is stored.
◦ Central repository also serves as data dictionary.
Cont…
• Upper Case Tools: Upper CASE
tools are used in planning, analysis
and design stages of SDLC.
• Lower Case Tools: Lower CASE
tools are used in implementation,
testing and maintenance.
• Integrated Case Tools: Integrated
CASE tools are helpful in all the
stages of SDLC, from
Requirement gathering to Testing
and documentation.
Case tools type
 Diagram tools
 Process Modeling Tools
 Project Management Tools
 Documentation Tools
 Analysis Tools
 Design Tools
 Configuration Management Tools
 Change Control Tools
 Programming Tools
 Prototyping Tools
 Web Development Tools
 Quality Assurance Tools
 Maintenance Tools
??Identify at least 2 best opensource tools for each of the above
case tool types ??
Object Oriented system development methodology

 It is a new system development approach, encouraging


and facilitating re-use of software components.
 Object Orientation: view or model the world or the
system as a set of interacting or interrelated objects
 In OO system, software is a collection of discrete objects
that encapsulate their data as well as the functionality
to model real-world objects
Cont…

 In an OO system, everything is an object and each object is


responsible for itself
◦ For example, instead of saying, "system compute the payroll of
this employee", you tell the employee object "compute your
payroll"
 This has a powerful effect on the way we approach software
develop
 Object oriented analysis and design uses visual modeling to
improve communication among all stakeholders and produce
high-quality products.
Cont…

 Anobject is a representation of a real-world entity


such as a customer, a product, an employee, etc.
Basics of OO concepts
 Inheritance
 Encapsulation (aka Information hiding)
 Abstraction
 Polymorphism
Inheritance
 It is a mechanism for sharing and reusing code between
classes
◦ A child class inherits the properties of a parent class
◦ The parent class is referred to as a super class or base class
◦ The child class is referred to as a subclass or derived class
◦ The child adapts the operations by adding new operations or by
redefining existing operations
Abstraction

 To simplify reality and focus only on their data and


processes relevant to the application being built
 In object-oriented design, complexity is handled using
abstraction.
 Abstraction is the removal of the irrelevant and the
amplification of the essentials.
Object
 A thing from the real world Eg: car, book bank account …
 A thing that you want to store and process data about
 Another name is called an entity
Encapsulation
▪ It is also called an information hiding concept.
▪ The data and operations are linked to a single unit.
▪ Encapsulation not only bundles essential information of an object
together but also restricts access to the data and methods from the
outside world.
 Early systems were error-prone and difficult to modify b/c of the
widespread of global data
 Important data structures can be accessed by several objects
 Without information hiding, any change to the data structure is likely
to require changes to all the objects
 However, with information hiding, If the data structure changes, the only
object affected is the one containing the data structure
Polymorphism
 Many ways of doing the same task
 Ability to dynamically choose the method for an
operation at run-time
 Operations could be defined and implemented in the
superclass
◦ But re-implemented methods are in unique sub-classes
Summary
Abstraction
 To simplify reality and focus only on the data and processes
relevant to the application being built
Encapsulation
 Data and the programs that manipulate those data are bound
together and their complexity is hidden
Inheritance
 A class can derive methods and properties from another clss,
resulting in a hierarchy of classes
Polymorphism
 Different subclasses of the same superclass, can implement
their shared interface in different ways
Thank you for your attention!

You might also like