Introduction to the Software Development Life Cycle (SDLC) and the Unified Process. The role of Analysis vs. Design. Unified Modeling Language (UML) 2.0. Functional Modeling: Use Case Diagrams and Scenarios. Structura...
Introduction to the Software Development Life Cycle (SDLC) and the Unified Process. The role of Analysis vs. Design. Unified Modeling Language (UML) 2.0. Functional Modeling: Use Case Diagrams and Scenarios. Structural Modeling: Class Diagrams, Object Diagrams, and Component Diagrams. Behavioral Modeling: Sequence Diagrams, Activity Diagrams, and State Machine Diagrams.
Fundamental design concepts: Abstraction, Encapsulation, Modularity, Hierarchy. Metrics for Design Quality: Coupling and Cohesion. General Responsibility Assignment Software Patterns (GRASP): Creator, Information Expert, Low Coupling, High Cohesion, and Controller patterns.
The SOLID Principles of Object-Oriented Design: Single Responsibility Principle (SRP), Open/Closed Principle (OCP), Liskov Substitution Principle (LSP), Interface Segregation Principle (ISP), and Dependency Inversion Principle (DIP). Law of Demeter. Dependency Injection and Inversion of Control (IoC).
Introduction to Design Patterns. Creational Patterns: Singleton (Thread-safe implementation), Factory Method, Abstract Factory, and Builder. Structural Patterns: Adapter (Class vs. Object adapters), Composite (Tree structures), Decorator (Dynamic responsibilities), Facade, and Proxy.
Behavioral Patterns: Observer (Publish-Subscribe), Strategy (Algorithm encapsulation), Command, Iterator, and State Pattern. Introduction to Code Smells and Refactoring techniques. Anti-patterns. Mapping Design to Code.