Architecture refers to how software components — subroutines, classes, functions, and so on — are organised and how they interact with one another. This course will look at how these architectures are represented in UML and other visual tools. We will discuss the most common architectures, their characteristics, and tradeoffs. We will discuss how architectures are evaluated, what constitutes a good architecture, and how an architecture can be improved. We'll also discuss how architecture affects the software development process.
You will be able to:
- Compare and contrast the components, connections, protocols, topologies, constraints, tradeoffs, and variations of various architectural styles used in the design of applications and systems after completing this course (e.g., main programme and subroutine, object-oriented, interpreters, pipes and filters, database centric, event-based).
- Explain the characteristics of layered and n-tier architectures.
- Draw UML ipackage, component, and deployment diagrams to express a system's architectural structure.
- Using UML activity diagrams, describe the behaviour of a system.
- Create a layered architecture for a multi-application system.
1. UML Architecture Diagrams
- Architecture Overview and Process
- Kruchten's 4 + 1 Model View
- UML Component Diagram
- UML Package Diagram
- UML Deployment Diagram
- UML Activity Diagram
2. Architectural Styles
- Abstract Data Types and Object-Oriented
- Main Program and Subroutine
- Layered Systems
- Client Server n-Tier
- Pipes and Filters
- Event Based
- Process Control
3. Architecture in Practice
- Quality Attributes1
- Analyzing and Evaluating an Architecture
- Relationship to Organizational Structure
- Product Lines and Product Families