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.