The primary objectives of this course are to understand the role of a software architecture in the development of application systems, to understand the role of a software architect, examine and compare various architecture view types and styles, develop the ability to read and understand the models that are used to document a software architecture, and to understand the nature of and the advantages and disadvantages for various architectural choices.
Introduction to Software Architecture: Fundamentals, Requirements, Design, Implementation, Analysis and Testing, Evolution and Maintenance, Processes.
Basic Concepts: Terminology, Models, Processes, Stakeholders.
Software Architecture Design: Design Process, Architectural Conception, Styles and Architectures Patterns, Architectural Conception in unprecedented design, Design Processes.
Connectors: Connectors Foundations, Roles, Types and their Variation Dimensions, Examples (Event-Based, Grid-Based, Client-Server-based, P2P-based Data Distribution Connectors), Connector Framework.
Modeling: Modeling Concepts, Ambiguity, Accuracy and precision, Complex Modeling, Evaluating Modeling Techniques, Specific Modeling Techniques.
Visualization: Visualization Concepts, Evaluating Visualizations, Common issues in Visualization, Visualization Techniques and its Evaluation.
Analysis: Analysis Goals, Scope of Analysis, Architectural Concern being Analyzed, Level of Formality of Architectural Models, Type of Analysis, Level of Automation, System Stakeholders, Analysis Techniques.
Implementation: Mapping Problem, Frameworks and its evaluation, Middleware, Component models and Application frameworks, Concurrency, Architecture-to-Implementation Consistency. Frameworks for the Pipe-and-filter and C2 architectural Style.
Deployment and Mobility: Challenges, Software Architecture and Deployment: Concepts, Activities and Tool Support, Software Architecture and Mobility: Concepts, Paradigms and Challenges in migrating code