SlideShare a Scribd company logo
Unit 1: Introduction
Introduction of Object Oriented system for engineer
Basics
SDLC (System Development Life Cycle)
a conceptual model used in project
management that describes the stages
involved in software system
development project
1. Problem Statement
2. Feasibility Study
3. Analysis
4. Design
5. Implementation
6. Validation and Verification
7. Operation, Support and Maintenance
Object Oriented System
◦ An Object-Oriented System is a way of designing and building software by thinking
about the real world.
◦ Instead of writing one big block of instructions, we break things down into small,
manageable pieces called objects — just like real-life things.
◦ We model the software system as a collection of interacting objects, where each object
represents a real or imaginary thing, with its own data and behavior.
◦ Object-Oriented Systems (OOS) are built around following basic elements:
◦ Objects
◦ Classes
◦ Attributes
◦ Methods
Object Oriented System
Objects
◦ Something that is like a real-world thing that has:
◦ Properties (something it has)
◦ Behaviors (something it does)
◦ Example:
A car.
Properties: color, brand, model, speed
Behaviors: start(), stop(), accelerate()
◦ In programming, when we say object, we mean a self-contained unit that holds data and
actions — just like a car does in real life.
Age: 35
methods (methods)
Attributes (values)
Set_salary (20)
Object: employee1
method:
Set_salary
employer
Get_age
friend
Salary: 10
Object Oriented System
Classes
◦ Something that defines the structure and behavior of objects
◦ A class can be thought of as a blueprint or a template for creating something
◦ Example: Imagine you're building a house. Before construction, you need a blueprint that defines:
◦ How many rooms it will have.
◦ Where the doors and windows go.
◦ What color the walls will be.
The blueprint isn’t the actual house—it’s just a plan.
◦ In programming, A class defines what an object will look like (its properties and actions).
Just like A Car class may define that every car has a color, brand, and can drive().
◦ A class does not occupy memory until an object is created from it.
Name
Number
CLASS: Furniture
methods: Example
ChangeNumber
Objects:
Desk
123445
ChairA
32143
ChairB
45687
Object Oriented System
Attributes
◦ Definition: Attributes represent the data or state of an object. They are variables that belong
to an object and describe its characteristics.
◦ Purpose: Store information about the object (e.g., name, age, color, size).
◦ Example: A Car object might have attributes like color, model, and speed. A Person object might have name,
age, and height.
Methods
◦ Definition: Methods define the actions or behaviors an object can perform. They are
functions associated with an object.
◦ Purpose: Modify attributes, interact with other objects, or perform computations.
◦ Example: A Car might have methods like accelerate(), brake(), or honk(). A Person might have
walk(), talk(), or eat().
Object Oriented System
Element Definition Purpose Example
Class
A blueprint/template for creating objects.
Defines structure and behavior.
Encapsulates data (attributes) and behavior
(methods).
class Car:
def __init__(self, brand):
self.brand = brand
Object An instance of a class (created from the
class blueprint).
Represents a specific entity with data and
actions.
my_car = Car("Tesla")
Attribute A variable that holds data/state of an
object (defined in a class).
Stores object-specific characteristics. my_car.brand (e.g., "Tesla")
Method
A function defined in a class that performs
actions or modifies object state. Defines object behavior.
class Car:
def honk(self):
print("Beep!")
my_car.honk()
Traditional Vs OO Software Engineering
1. Problem Statement
2. Feasibility Study
3. Analysis
4. Design
5. Implementation
6. Validation and Verification
7. Operation, Support and Maintenance
1. Problem Statement
2. Feasibility Study
3. OO Analysis
4. OO Design
5. OO Implementation
6. Validation and Verification
7. Operation, Support and Maintenance
Traditional Vs OO Software Engineering
Characteristics of OOS
Object-Oriented Systems (OOS) exhibit several key characteristics that make it a
popular development paradigm
◦ Modularity
◦ Encapsulation
◦ Inheritance
◦ Polymorphism
◦ Abstraction
◦ Reusability
◦ Maintainability
◦ Extensibility
Characteristics of OOS
Modularity
◦ OOS breaks down complex systems into smaller, manageable units called objects.
◦ This modularization enhances code organization and readability.
◦ Changes can be made to individual objects without affecting the entire system.
Encapsulation
◦ Data hiding
◦ Protects the internal state of an object from external access
◦ It helps prevent unauthorized access to sensitive data.
Characteristics of OOS
Inheritance
◦ Allows subclasses to inherit properties and methods from super-
classes, reducing code duplication.
◦ Creates a hierarchical relationship between classes, promoting a
clear understanding of the system.
◦ New features can be added by creating subclasses without
modifying existing code.
Characteristics of OOS
Inheritance
Characteristics of OOS
Inheritance
class Person {
String name;
String age;
void birthday () {
age = age + 1;
}
}
class Employee
extends Person {
double salary;
void pay () { ...}
}
Every Employee has a name, age, and birthday method as well as a salary and a pay
method.
Characteristics of OOS
Inheritance
Characteristics of OOS
Polymorphism
◦ Means that the same method will behave differently when it is
applied to the objects of different classes
◦ Objects can adopt more than one form, depending on their context
◦ Allows subclasses to provide their own implementations of methods
inherited from the superclass
◦ Determines the actual method to be called at runtime based on the
object's type and parameters passed.
Characteristics of OOS
Abstraction
◦ Hides unnecessary details and provides a simplified view of an
object
◦ Defines the public interface of an object, specifying what it can do
but hides the internal workings of an object
Reusability
◦ Encourages the reuse of existing code components, leading to
faster development and reduced errors
Characteristics of OOS
Maintainability
◦ Encapsulation and modularity make it easier to modify and
maintain code.
◦ The hierarchical structure of OOS simplifies the understanding and
management of large systems.
Extensibility
◦ Allows new features to be added without affecting existing code.
◦ Enables systems to adapt to changing requirements.
Need of Object Oriented System
• Object-Oriented (OO) systems are essential in modern software
development due to their ability to model real-world entities efficiently,
improve code reusability, maintainability, and scalability.
• Below are the key reasons why OO systems are necessary:
Need of Object Oriented System
• 1. Modularity & Organized Code
• Breaks complex problems into smaller, manageable objects (modules).
• Each object represents a real-world entity with attributes (data) and methods
(functions).
2. Reusability (Inheritance & Composition)
• Inheritance allows new classes to reuse properties of existing ones.
• Composition enables building complex objects by combining simpler ones.
3. Encapsulation (Data Hiding & Security)
• Restricts direct access to an object’s internal state.
• Provides controlled access via getters & setters.
Need of Object Oriented System
4. Polymorphism (Flexibility in Behavior)
• Allows objects of different classes to be treated as objects of a common superclass.
5. Maintainability & Scalability
• Changes in one part of the system (an object) have minimal impact on others.
• New features can be added without rewriting existing code.
6. Better Problem-Solving Approach
• Models real-world scenarios naturally (e.g., Student, Course, Teacher in a school system).
• Easier to understand and debug compared to procedural programming.
7. Supports Team Collaboration
• Different teams can work on different objects/classes simultaneously.
• Well-defined interfaces reduce conflicts.
Need of Object Oriented System
8. Industry Standard for Modern Development
• Used in Java, Python, C++, C#, etc.
• Essential for OOP design patterns (Singleton, Factory, Observer, etc.).
• Foundation for frameworks like Spring (Java), Django (Python), and .NET (C#).
• Object-Oriented Systems provide a structured, efficient, and scalable way to develop
software by mimicking real-world interactions.
• They enhance code reuse, security, flexibility, and teamwork, making them indispensable in
modern programming.
◦ A complex system is a system composed of many interacting components
whose collective behavior is difficult to predict simply by analyzing individual
parts.
◦ Complex systems are often referred to as “wholes that are more than the sum
of their parts,”
◦ consist of a large number of elements that in themselves can be simple
◦ These systems exhibit emergent properties—behaviors or patterns that arise
from interactions but are not obvious when looking at single elements.
Complex Systems
Key Characteristics of Complex Systems include:
◦ Nonlinearity – Small changes can lead to disproportionately large effects
◦ Emergence – System-wide behaviors arise from interactions
◦ Adaptation – Components evolve or adjust in response to changes
◦ Feedback Loops – Positive (amplifying) or negative (stabilizing) feedback
influences system dynamics.
◦ Self-Organization – Order emerges without central control
◦ Networks & Interdependence – Components are interconnected in ways that
make isolation difficult.
Complex Systems
◦ Complex systems often exhibit certain structural and dynamic
attributes that help us understand their organization, behavior, and
evolution. Below, we break down five key attributes:
◦ Hierarchical/Hierarchic Structure
◦ Components/Separation of Concerns
◦ Primitive Components/Relative Primitives
◦ Arrangement/Common Patterns
◦ Evolution/Stable Intermediate Form
Complex Systems
Complex Systems
1. Hierarchical/Hierarchic Structure
• Complex systems are often organized in nested layers, where higher levels emerge from interactions at
lower levels.
•Key Aspects:
• Levels of Abstraction: Each layer operates under its own rules but depends on lower layers (e.g., cells → tissues
→ organs → organisms).
• Modularity: Subsystems can function semi-independently (e.g., departments in a company).
• Control & Coordination: Higher levels impose constraints (e.g., government laws regulating individual
behavior).
• Example:
Technology Stack: Hardware → OS → Software → User Applications.
Biological Systems: Atoms → Molecules → Cells → Organs → Organisms.s
Complex Systems
2. Components/Separation of Concerns
• A complex system is composed of modular components, each with a specialized function.
• Key Aspects:
• Decoupling: Components interact through well-defined interfaces, reducing dependencies.
• Specialization: Each part handles a specific task (e.g., kidneys filter blood; routers direct
internet traffic).
• Robustness: Failure in one component doesn’t necessarily collapse the whole system.
• Example:
Software Engineering: Frontend (UI) vs. Backend (logic) vs. Database (storage).
Ecosystems: Producers (plants), Consumers (animals), Decomposers (fungi).
Complex Systems
3. Primitive Components/Relative Primitives
• Complex systems are built from fundamental building blocks that combine to create higher-
order complexity.
• Key Aspects:
• Atomicity: The simplest meaningful unit in a system (e.g., a neuron in a brain, a transaction in a
blockchain).
• Composability: Primitives can be combined in different ways (e.g., LEGO bricks, DNA base pairs).
• Relativity: What’s "primitive" depends on the level of analysis (e.g., cells are primitive to organs but
complex compared to molecules).
• Example:
Language: Letters → Words → Sentences → Paragraphs.
Economics: Individual transactions → Markets → Economies.
Complex Systems
4. Arrangement/Common Patterns
• Complex systems often follow recurring structural or behavioral patterns.
• Key Aspects:
• Network Structures: Scale-free, small-world, or modular networks (e.g., social networks, neural
networks).
• Feedback Loops: Reinforcing (growth) or balancing (stabilization) cycles.
• Recursive Symmetry: Self-similarity across scales (e.g., fractals, tree branches).
• Example:
Power Law Distribution: A few hubs dominate (e.g., internet traffic, wealth distribution).
Turing Patterns: Repeating structures in biology (e.g., zebra stripes, leopard spots).
Complex Systems
5. Evolution/Stable Intermediate Forms
• Complex systems often evolve through stages of increasing complexity, with stable intermediate
forms.
• Key Aspects:
• Gradual Adaptation: Small, incremental changes accumulate (e.g., software updates, biological evolution).
• Punctuated Equilibrium: Long periods of stability interrupted by rapid shifts (e.g., technological
revolutions, mass extinctions).
• Viability at Each Stage: Intermediate forms must be functional (e.g., proto-cells before full cells, MVP
products before scaling).
• Example:
Technology: Vacuum tubes → Transistors → Microchips → AI.
Life: Chemical soups → Self-replicating molecules → Cells → Multicellular life.
Complex Systems
• These five attributes help explain how complex systems:
• Organize (hierarchy, separation of concerns),
• Build complexity (primitives, patterns),
• Evolve (stable intermediate forms).
• Understanding these principles allows better design, prediction, and management of
systems ranging from software to ecosystems.
Rarely would a builder think about adding a new sub-basement to an
existing 100-story building
Doing that would be very costly and would undoubtedly invite failure
Amazingly, users of software systems rarely think twice about asking for
equivalent changes
Besides, they argue, it is only a simple matter of programming
Software Complexity
Software Complexity
“The complexity of software is an essential property, not an
accidental one.” - Frederick Brooks
Four elements:
◦the complexity of the problem domain,
◦the difficulty of managing the development process,
◦ the flexibility possible through software, and
◦ the problems of characterizing the behavior of discrete
systems
Software Complexity
• Software complexity refers to the difficulty of understanding,
maintaining, and modifying a software system due to its
structure, interdependencies, and behavior.
• High complexity leads to bugs, technical debt, and increased
development costs.
Software Complexity
Types of Software Complexity
A. Structural Complexity
◦ Cyclomatic Complexity: Measures the number of independent paths in code.
◦ Coupling: Coupling refers to how much one part of a system depends on another.
◦ Cohesion: Cohesion refers to how closely the operations in a single module or class are related to each other.
◦ Deep Nesting: Excessive if-else/for loops make logic hard to follow.
B. Behavioral Complexity
◦ Non-determinism: Race conditions, async behavior, and unpredictable states.
◦ Side Effects: Functions modifying external state unintentionally.
◦ Emergent Bugs: Issues arising from unexpected interactions between components.
C. Cognitive Complexity
◦ Readability: Poor naming, lack of documentation, and unclear abstractions.
◦ Mental Models: How much a developer must "hold in their head" to make changes.
Software Complexity
Measuring Software Complexity
• Quantitative Metrics
• Cyclomatic Complexity (McCabe) → Measures branching logic.
• Halstead Volume → Calculates complexity based on operators & operands.
• Lines of Code (LoC) → Not always meaningful, but extreme growth signals issues.
• Dependency Graphs → Visualizes coupling between modules.
• Qualitative Indicators
• "WTF/Minute" Rate → How often developers says “What the f*?!”** while reading or reviewing a piece of
code
• Bug Frequency → More bugs in a module often mean higher complexity.
• Onboarding Time → How long it takes new developers to understand the system.
Software Complexity
Managing & Reducing Complexity
A. Design Principles
• KISS (Keep It Simple, Stupid) → Avoid over-engineering.
• SOLID Principles → Especially Single Responsibility & Dependency Inversion.
• DRY (Don’t Repeat Yourself) → But avoid false abstractions.
• Law of Demeter → Reduce unnecessary dependencies ("only talk to friends").
B. Architectural Strategies
• Modularization → Break into independent, reusable components.
• Layered Architecture → Separation of concerns (UI, Business Logic, Data).
• Event-Driven Design → Decouple components using events/messages.
Software Complexity
Managing & Reducing Complexity
C. Code-Level Tactics
• Refactor Mercilessly – Remove dead code, split large functions.
• Write Tests – Ensures changes don’t break existing behavior.
• Use Static Analysis Tools – ESLint, SonarQube, CodeClimate.
• Document Key Decisions – ADRs (Architecture Decision Records).
Software Complexity
Software complexity is inevitable but manageable. The key is:
• Measuring it (metrics, developer feedback).
• Containing it (modular design, clear boundaries).
• Reducing it (refactoring, deleting useless code).
Software Complexity
Review
What is a complex system? Explain attributes of a complex system.
Software systems are always complex. Justify with example.
Explain the need of object oriented systems. What are the attributes of a complex system?
Compare object oriented and traditional software development life cycle.
Thank You.

More Related Content

PDF
SE18_Lec 06_Object Oriented Analysis and Design
PDF
SE_Lec 06_Object Oriented Analysis and Design
PDF
ppt_ooad.pdf
PPTX
Ooad unit – 1 introduction
PDF
Object Modelling Technique " ooad "
PPTX
OOSD1-unit1_1_16_09.pptx
PPT
PPT
Unit 1( modelling concepts & class modeling)
SE18_Lec 06_Object Oriented Analysis and Design
SE_Lec 06_Object Oriented Analysis and Design
ppt_ooad.pdf
Ooad unit – 1 introduction
Object Modelling Technique " ooad "
OOSD1-unit1_1_16_09.pptx
Unit 1( modelling concepts & class modeling)

Similar to Introduction of Object Oriented system for engineer (20)

PPT
AI_Module_2_Engineering_Computer_Science.ppt
PPTX
Software_Engineering_Presentation (1).pptx
PPT
Oomd unit1
PDF
Handout on Object orienetd Analysis and Design
PPTX
ooadunitiintroduction-150730050129-lva1-app6892.pptx
PPTX
DOC-20210303-WA0017..pptx,coding stuff in c
PPTX
What is Object Orientation?
PPTX
Object Oriented Analysis and Design - OOAD
PPTX
INTRODUCTION TO SYSTEM ANALYSIS AND DESIGN.pptx
PPT
Opps approch of software development
PPTX
INTRODUCTION AND BASIC CONCEPT OF OOAD.pptx
PPT
8 oo approach&uml-23_feb
DOCX
Ooad notes
PDF
Cs 2352 object oriented analysis and design
PDF
PPTX
Unit - I Intro. to OOP Concepts and Control Structure -OOP and CG (2024 Patte...
PPT
Software System Engineering - Chapter 5
PPTX
20CB304 - SE - UNIT V - Digital Notes.pptx
PDF
Object-Oriented Programming in Java (Module 1)
PPT
M01_OO_Intro.ppt
AI_Module_2_Engineering_Computer_Science.ppt
Software_Engineering_Presentation (1).pptx
Oomd unit1
Handout on Object orienetd Analysis and Design
ooadunitiintroduction-150730050129-lva1-app6892.pptx
DOC-20210303-WA0017..pptx,coding stuff in c
What is Object Orientation?
Object Oriented Analysis and Design - OOAD
INTRODUCTION TO SYSTEM ANALYSIS AND DESIGN.pptx
Opps approch of software development
INTRODUCTION AND BASIC CONCEPT OF OOAD.pptx
8 oo approach&uml-23_feb
Ooad notes
Cs 2352 object oriented analysis and design
Unit - I Intro. to OOP Concepts and Control Structure -OOP and CG (2024 Patte...
Software System Engineering - Chapter 5
20CB304 - SE - UNIT V - Digital Notes.pptx
Object-Oriented Programming in Java (Module 1)
M01_OO_Intro.ppt
Ad

Recently uploaded (20)

PPTX
MET 305 2019 SCHEME MODULE 2 COMPLETE.pptx
PDF
SM_6th-Sem__Cse_Internet-of-Things.pdf IOT
PPT
Project quality management in manufacturing
PDF
Operating System & Kernel Study Guide-1 - converted.pdf
PPTX
FINAL REVIEW FOR COPD DIANOSIS FOR PULMONARY DISEASE.pptx
PDF
Unit I ESSENTIAL OF DIGITAL MARKETING.pdf
PPTX
OOP with Java - Java Introduction (Basics)
PDF
Model Code of Practice - Construction Work - 21102022 .pdf
PDF
Automation-in-Manufacturing-Chapter-Introduction.pdf
PDF
TFEC-4-2020-Design-Guide-for-Timber-Roof-Trusses.pdf
PDF
R24 SURVEYING LAB MANUAL for civil enggi
PPT
Introduction, IoT Design Methodology, Case Study on IoT System for Weather Mo...
PDF
The CXO Playbook 2025 – Future-Ready Strategies for C-Suite Leaders Cerebrai...
PPTX
Foundation to blockchain - A guide to Blockchain Tech
PDF
composite construction of structures.pdf
PDF
July 2025 - Top 10 Read Articles in International Journal of Software Enginee...
PPTX
Lecture Notes Electrical Wiring System Components
PPTX
Current and future trends in Computer Vision.pptx
PPTX
Internet of Things (IOT) - A guide to understanding
PDF
Mohammad Mahdi Farshadian CV - Prospective PhD Student 2026
MET 305 2019 SCHEME MODULE 2 COMPLETE.pptx
SM_6th-Sem__Cse_Internet-of-Things.pdf IOT
Project quality management in manufacturing
Operating System & Kernel Study Guide-1 - converted.pdf
FINAL REVIEW FOR COPD DIANOSIS FOR PULMONARY DISEASE.pptx
Unit I ESSENTIAL OF DIGITAL MARKETING.pdf
OOP with Java - Java Introduction (Basics)
Model Code of Practice - Construction Work - 21102022 .pdf
Automation-in-Manufacturing-Chapter-Introduction.pdf
TFEC-4-2020-Design-Guide-for-Timber-Roof-Trusses.pdf
R24 SURVEYING LAB MANUAL for civil enggi
Introduction, IoT Design Methodology, Case Study on IoT System for Weather Mo...
The CXO Playbook 2025 – Future-Ready Strategies for C-Suite Leaders Cerebrai...
Foundation to blockchain - A guide to Blockchain Tech
composite construction of structures.pdf
July 2025 - Top 10 Read Articles in International Journal of Software Enginee...
Lecture Notes Electrical Wiring System Components
Current and future trends in Computer Vision.pptx
Internet of Things (IOT) - A guide to understanding
Mohammad Mahdi Farshadian CV - Prospective PhD Student 2026
Ad

Introduction of Object Oriented system for engineer

  • 3. Basics SDLC (System Development Life Cycle) a conceptual model used in project management that describes the stages involved in software system development project 1. Problem Statement 2. Feasibility Study 3. Analysis 4. Design 5. Implementation 6. Validation and Verification 7. Operation, Support and Maintenance
  • 4. Object Oriented System ◦ An Object-Oriented System is a way of designing and building software by thinking about the real world. ◦ Instead of writing one big block of instructions, we break things down into small, manageable pieces called objects — just like real-life things. ◦ We model the software system as a collection of interacting objects, where each object represents a real or imaginary thing, with its own data and behavior. ◦ Object-Oriented Systems (OOS) are built around following basic elements: ◦ Objects ◦ Classes ◦ Attributes ◦ Methods
  • 5. Object Oriented System Objects ◦ Something that is like a real-world thing that has: ◦ Properties (something it has) ◦ Behaviors (something it does) ◦ Example: A car. Properties: color, brand, model, speed Behaviors: start(), stop(), accelerate() ◦ In programming, when we say object, we mean a self-contained unit that holds data and actions — just like a car does in real life.
  • 6. Age: 35 methods (methods) Attributes (values) Set_salary (20) Object: employee1 method: Set_salary employer Get_age friend Salary: 10
  • 7. Object Oriented System Classes ◦ Something that defines the structure and behavior of objects ◦ A class can be thought of as a blueprint or a template for creating something ◦ Example: Imagine you're building a house. Before construction, you need a blueprint that defines: ◦ How many rooms it will have. ◦ Where the doors and windows go. ◦ What color the walls will be. The blueprint isn’t the actual house—it’s just a plan. ◦ In programming, A class defines what an object will look like (its properties and actions). Just like A Car class may define that every car has a color, brand, and can drive(). ◦ A class does not occupy memory until an object is created from it.
  • 9. Object Oriented System Attributes ◦ Definition: Attributes represent the data or state of an object. They are variables that belong to an object and describe its characteristics. ◦ Purpose: Store information about the object (e.g., name, age, color, size). ◦ Example: A Car object might have attributes like color, model, and speed. A Person object might have name, age, and height. Methods ◦ Definition: Methods define the actions or behaviors an object can perform. They are functions associated with an object. ◦ Purpose: Modify attributes, interact with other objects, or perform computations. ◦ Example: A Car might have methods like accelerate(), brake(), or honk(). A Person might have walk(), talk(), or eat().
  • 10. Object Oriented System Element Definition Purpose Example Class A blueprint/template for creating objects. Defines structure and behavior. Encapsulates data (attributes) and behavior (methods). class Car: def __init__(self, brand): self.brand = brand Object An instance of a class (created from the class blueprint). Represents a specific entity with data and actions. my_car = Car("Tesla") Attribute A variable that holds data/state of an object (defined in a class). Stores object-specific characteristics. my_car.brand (e.g., "Tesla") Method A function defined in a class that performs actions or modifies object state. Defines object behavior. class Car: def honk(self): print("Beep!") my_car.honk()
  • 11. Traditional Vs OO Software Engineering 1. Problem Statement 2. Feasibility Study 3. Analysis 4. Design 5. Implementation 6. Validation and Verification 7. Operation, Support and Maintenance 1. Problem Statement 2. Feasibility Study 3. OO Analysis 4. OO Design 5. OO Implementation 6. Validation and Verification 7. Operation, Support and Maintenance
  • 12. Traditional Vs OO Software Engineering
  • 13. Characteristics of OOS Object-Oriented Systems (OOS) exhibit several key characteristics that make it a popular development paradigm ◦ Modularity ◦ Encapsulation ◦ Inheritance ◦ Polymorphism ◦ Abstraction ◦ Reusability ◦ Maintainability ◦ Extensibility
  • 14. Characteristics of OOS Modularity ◦ OOS breaks down complex systems into smaller, manageable units called objects. ◦ This modularization enhances code organization and readability. ◦ Changes can be made to individual objects without affecting the entire system. Encapsulation ◦ Data hiding ◦ Protects the internal state of an object from external access ◦ It helps prevent unauthorized access to sensitive data.
  • 15. Characteristics of OOS Inheritance ◦ Allows subclasses to inherit properties and methods from super- classes, reducing code duplication. ◦ Creates a hierarchical relationship between classes, promoting a clear understanding of the system. ◦ New features can be added by creating subclasses without modifying existing code.
  • 18. class Person { String name; String age; void birthday () { age = age + 1; } } class Employee extends Person { double salary; void pay () { ...} } Every Employee has a name, age, and birthday method as well as a salary and a pay method. Characteristics of OOS Inheritance
  • 19. Characteristics of OOS Polymorphism ◦ Means that the same method will behave differently when it is applied to the objects of different classes ◦ Objects can adopt more than one form, depending on their context ◦ Allows subclasses to provide their own implementations of methods inherited from the superclass ◦ Determines the actual method to be called at runtime based on the object's type and parameters passed.
  • 20. Characteristics of OOS Abstraction ◦ Hides unnecessary details and provides a simplified view of an object ◦ Defines the public interface of an object, specifying what it can do but hides the internal workings of an object Reusability ◦ Encourages the reuse of existing code components, leading to faster development and reduced errors
  • 21. Characteristics of OOS Maintainability ◦ Encapsulation and modularity make it easier to modify and maintain code. ◦ The hierarchical structure of OOS simplifies the understanding and management of large systems. Extensibility ◦ Allows new features to be added without affecting existing code. ◦ Enables systems to adapt to changing requirements.
  • 22. Need of Object Oriented System • Object-Oriented (OO) systems are essential in modern software development due to their ability to model real-world entities efficiently, improve code reusability, maintainability, and scalability. • Below are the key reasons why OO systems are necessary:
  • 23. Need of Object Oriented System • 1. Modularity & Organized Code • Breaks complex problems into smaller, manageable objects (modules). • Each object represents a real-world entity with attributes (data) and methods (functions). 2. Reusability (Inheritance & Composition) • Inheritance allows new classes to reuse properties of existing ones. • Composition enables building complex objects by combining simpler ones. 3. Encapsulation (Data Hiding & Security) • Restricts direct access to an object’s internal state. • Provides controlled access via getters & setters.
  • 24. Need of Object Oriented System 4. Polymorphism (Flexibility in Behavior) • Allows objects of different classes to be treated as objects of a common superclass. 5. Maintainability & Scalability • Changes in one part of the system (an object) have minimal impact on others. • New features can be added without rewriting existing code. 6. Better Problem-Solving Approach • Models real-world scenarios naturally (e.g., Student, Course, Teacher in a school system). • Easier to understand and debug compared to procedural programming. 7. Supports Team Collaboration • Different teams can work on different objects/classes simultaneously. • Well-defined interfaces reduce conflicts.
  • 25. Need of Object Oriented System 8. Industry Standard for Modern Development • Used in Java, Python, C++, C#, etc. • Essential for OOP design patterns (Singleton, Factory, Observer, etc.). • Foundation for frameworks like Spring (Java), Django (Python), and .NET (C#). • Object-Oriented Systems provide a structured, efficient, and scalable way to develop software by mimicking real-world interactions. • They enhance code reuse, security, flexibility, and teamwork, making them indispensable in modern programming.
  • 26. ◦ A complex system is a system composed of many interacting components whose collective behavior is difficult to predict simply by analyzing individual parts. ◦ Complex systems are often referred to as “wholes that are more than the sum of their parts,” ◦ consist of a large number of elements that in themselves can be simple ◦ These systems exhibit emergent properties—behaviors or patterns that arise from interactions but are not obvious when looking at single elements. Complex Systems
  • 27. Key Characteristics of Complex Systems include: ◦ Nonlinearity – Small changes can lead to disproportionately large effects ◦ Emergence – System-wide behaviors arise from interactions ◦ Adaptation – Components evolve or adjust in response to changes ◦ Feedback Loops – Positive (amplifying) or negative (stabilizing) feedback influences system dynamics. ◦ Self-Organization – Order emerges without central control ◦ Networks & Interdependence – Components are interconnected in ways that make isolation difficult. Complex Systems
  • 28. ◦ Complex systems often exhibit certain structural and dynamic attributes that help us understand their organization, behavior, and evolution. Below, we break down five key attributes: ◦ Hierarchical/Hierarchic Structure ◦ Components/Separation of Concerns ◦ Primitive Components/Relative Primitives ◦ Arrangement/Common Patterns ◦ Evolution/Stable Intermediate Form Complex Systems
  • 29. Complex Systems 1. Hierarchical/Hierarchic Structure • Complex systems are often organized in nested layers, where higher levels emerge from interactions at lower levels. •Key Aspects: • Levels of Abstraction: Each layer operates under its own rules but depends on lower layers (e.g., cells → tissues → organs → organisms). • Modularity: Subsystems can function semi-independently (e.g., departments in a company). • Control & Coordination: Higher levels impose constraints (e.g., government laws regulating individual behavior). • Example: Technology Stack: Hardware → OS → Software → User Applications. Biological Systems: Atoms → Molecules → Cells → Organs → Organisms.s
  • 30. Complex Systems 2. Components/Separation of Concerns • A complex system is composed of modular components, each with a specialized function. • Key Aspects: • Decoupling: Components interact through well-defined interfaces, reducing dependencies. • Specialization: Each part handles a specific task (e.g., kidneys filter blood; routers direct internet traffic). • Robustness: Failure in one component doesn’t necessarily collapse the whole system. • Example: Software Engineering: Frontend (UI) vs. Backend (logic) vs. Database (storage). Ecosystems: Producers (plants), Consumers (animals), Decomposers (fungi).
  • 31. Complex Systems 3. Primitive Components/Relative Primitives • Complex systems are built from fundamental building blocks that combine to create higher- order complexity. • Key Aspects: • Atomicity: The simplest meaningful unit in a system (e.g., a neuron in a brain, a transaction in a blockchain). • Composability: Primitives can be combined in different ways (e.g., LEGO bricks, DNA base pairs). • Relativity: What’s "primitive" depends on the level of analysis (e.g., cells are primitive to organs but complex compared to molecules). • Example: Language: Letters → Words → Sentences → Paragraphs. Economics: Individual transactions → Markets → Economies.
  • 32. Complex Systems 4. Arrangement/Common Patterns • Complex systems often follow recurring structural or behavioral patterns. • Key Aspects: • Network Structures: Scale-free, small-world, or modular networks (e.g., social networks, neural networks). • Feedback Loops: Reinforcing (growth) or balancing (stabilization) cycles. • Recursive Symmetry: Self-similarity across scales (e.g., fractals, tree branches). • Example: Power Law Distribution: A few hubs dominate (e.g., internet traffic, wealth distribution). Turing Patterns: Repeating structures in biology (e.g., zebra stripes, leopard spots).
  • 33. Complex Systems 5. Evolution/Stable Intermediate Forms • Complex systems often evolve through stages of increasing complexity, with stable intermediate forms. • Key Aspects: • Gradual Adaptation: Small, incremental changes accumulate (e.g., software updates, biological evolution). • Punctuated Equilibrium: Long periods of stability interrupted by rapid shifts (e.g., technological revolutions, mass extinctions). • Viability at Each Stage: Intermediate forms must be functional (e.g., proto-cells before full cells, MVP products before scaling). • Example: Technology: Vacuum tubes → Transistors → Microchips → AI. Life: Chemical soups → Self-replicating molecules → Cells → Multicellular life.
  • 34. Complex Systems • These five attributes help explain how complex systems: • Organize (hierarchy, separation of concerns), • Build complexity (primitives, patterns), • Evolve (stable intermediate forms). • Understanding these principles allows better design, prediction, and management of systems ranging from software to ecosystems.
  • 35. Rarely would a builder think about adding a new sub-basement to an existing 100-story building Doing that would be very costly and would undoubtedly invite failure Amazingly, users of software systems rarely think twice about asking for equivalent changes Besides, they argue, it is only a simple matter of programming Software Complexity
  • 36. Software Complexity “The complexity of software is an essential property, not an accidental one.” - Frederick Brooks Four elements: ◦the complexity of the problem domain, ◦the difficulty of managing the development process, ◦ the flexibility possible through software, and ◦ the problems of characterizing the behavior of discrete systems
  • 37. Software Complexity • Software complexity refers to the difficulty of understanding, maintaining, and modifying a software system due to its structure, interdependencies, and behavior. • High complexity leads to bugs, technical debt, and increased development costs.
  • 38. Software Complexity Types of Software Complexity A. Structural Complexity ◦ Cyclomatic Complexity: Measures the number of independent paths in code. ◦ Coupling: Coupling refers to how much one part of a system depends on another. ◦ Cohesion: Cohesion refers to how closely the operations in a single module or class are related to each other. ◦ Deep Nesting: Excessive if-else/for loops make logic hard to follow. B. Behavioral Complexity ◦ Non-determinism: Race conditions, async behavior, and unpredictable states. ◦ Side Effects: Functions modifying external state unintentionally. ◦ Emergent Bugs: Issues arising from unexpected interactions between components. C. Cognitive Complexity ◦ Readability: Poor naming, lack of documentation, and unclear abstractions. ◦ Mental Models: How much a developer must "hold in their head" to make changes.
  • 39. Software Complexity Measuring Software Complexity • Quantitative Metrics • Cyclomatic Complexity (McCabe) → Measures branching logic. • Halstead Volume → Calculates complexity based on operators & operands. • Lines of Code (LoC) → Not always meaningful, but extreme growth signals issues. • Dependency Graphs → Visualizes coupling between modules. • Qualitative Indicators • "WTF/Minute" Rate → How often developers says “What the f*?!”** while reading or reviewing a piece of code • Bug Frequency → More bugs in a module often mean higher complexity. • Onboarding Time → How long it takes new developers to understand the system.
  • 40. Software Complexity Managing & Reducing Complexity A. Design Principles • KISS (Keep It Simple, Stupid) → Avoid over-engineering. • SOLID Principles → Especially Single Responsibility & Dependency Inversion. • DRY (Don’t Repeat Yourself) → But avoid false abstractions. • Law of Demeter → Reduce unnecessary dependencies ("only talk to friends"). B. Architectural Strategies • Modularization → Break into independent, reusable components. • Layered Architecture → Separation of concerns (UI, Business Logic, Data). • Event-Driven Design → Decouple components using events/messages.
  • 41. Software Complexity Managing & Reducing Complexity C. Code-Level Tactics • Refactor Mercilessly – Remove dead code, split large functions. • Write Tests – Ensures changes don’t break existing behavior. • Use Static Analysis Tools – ESLint, SonarQube, CodeClimate. • Document Key Decisions – ADRs (Architecture Decision Records).
  • 42. Software Complexity Software complexity is inevitable but manageable. The key is: • Measuring it (metrics, developer feedback). • Containing it (modular design, clear boundaries). • Reducing it (refactoring, deleting useless code).
  • 44. Review What is a complex system? Explain attributes of a complex system. Software systems are always complex. Justify with example. Explain the need of object oriented systems. What are the attributes of a complex system? Compare object oriented and traditional software development life cycle.