Systems Analysis and Design & Object-Oriented Programming

Federal University of Paraíba – Campus IV (Rio Tinto)

This material refers to the courses Systems Analysis and Design and Object-Oriented Programming, taught in the Computer Science Teaching Degree and Information Systems programs at Campus IV of UFPB.

The course structure integrates theoretical foundations of Software Engineering with practical object-oriented development, emphasizing maintainability, architectural quality, and professional best practices.


Course Content Structure

1. Object-Oriented Programming Foundations

  • Visibility and Encapsulation
  • Class Relationships and Inheritance
  • Polymorphism
  • Exception Handling
  • Automated Software Testing

Objective: Strengthen structural foundations of object-oriented development, ensuring mastery of abstraction, encapsulation, extensibility, and robustness.


2. Software Architecture and Evolution

  • Modern Software Architecture
  • Software Evolution and Refactoring
  • Designing Software with Responsibility
  • Advanced GRASP Patterns

Objective: Develop the ability to design systems with low coupling, high cohesion, and well-distributed responsibilities across components.


3. Design Principles

  • S.O.L.I.D Principles
  • Modularity Best Practices
  • Separation of Responsibilities
  • Dependency Control

Objective: Apply core principles that promote sustainable, maintainable, and scalable software systems.


4. Design Patterns

Creational Patterns

  • Factory Method
  • Abstract Factory
  • Builder
  • Singleton

Structural Patterns

  • Adapter
  • Decorator
  • Facade
  • Composite

Behavioral Patterns

  • Strategy
  • Observer
  • Command
  • Template Method

Objective: Recognize recurring design problems and apply established solutions grounded in classical Software Engineering literature.


Teaching Methodology

  • Dialogical lectures supported by theoretical foundations;
  • Case study modeling and analysis;
  • Legacy code refactoring exercises;
  • Pattern-oriented implementation activities;
  • Use of automated testing as a validation tool for design decisions.

Competencies Developed

By the end of the courses, students are expected to:

  • Design object-oriented systems with clearly defined responsibilities;
  • Apply SOLID principles in real-world scenarios;
  • Refactor legacy code to improve structural quality;
  • Select and implement appropriate design patterns;
  • Develop software with focus on maintainability, scalability, and architectural integrity.

Course Reference