Definition and role of software architecture in system development lifecycle, Architectural structures (modules, components, connectors, deployment), Quality attributes (performance, availability, security, maintainab...
Definition and role of software architecture in system development lifecycle, Architectural structures (modules, components, connectors, deployment), Quality attributes (performance, availability, security, maintainability, scalability) and their trade-offs, Architecture Influence Cycles and decision making frameworks, Non-functional requirements elicitation and specification using scenarios and utility trees.
Classification of architectural styles (layered, client-server, pipe-filter, event-driven, service-oriented), Microservices architecture principles and decomposition strategies, Model-View-Controller (MVC) and variations (MVP, MVVM), Architectural patterns (Broker, Blackboard, Peer-to-Peer), RESTful principles and API design best practices for distributed systems.
Component principles (cohesion, coupling, interfaces, contracts), CORBA/CCS component model vs. modern container-based approaches, Service-Oriented Architecture (SOA) fundamentals, ESB patterns and anti-patterns, Microservices orchestration vs. choreography, Domain-Driven Design (DDD) bounded contexts and context mapping.
4+1 View Model (Logical, Process, Development, Physical, Scenarios), UML 2.x structure and behavior diagrams for architecture representation, Architecture Description Languages (ADLs), Tool-supported architectural modeling (Enterprise Architect, ArchiMate), Documenting architectural decisions using ADRs (Architecture Decision Records).
Architecture Tradeoff Analysis Method (ATAM), Software Architecture Analysis Method (SAAM), Scenario-based evaluation techniques, Risk-driven architecture evaluation, Refactoring legacy architectures, Evolutionary architecture principles (fitness functions, strangler pattern), Cloud-native architecture migration strategies.