Podcast
Questions and Answers
What type of view in the 4 + 1 view model shows the key abstractions in the system as objects or object classes?
What type of view in the 4 + 1 view model shows the key abstractions in the system as objects or object classes?
Which architectural pattern is characterized by allowing only one instance of a class?
Which architectural pattern is characterized by allowing only one instance of a class?
Which view of the 4 + 1 model illustrates the hardware system and the distribution of software components?
Which view of the 4 + 1 model illustrates the hardware system and the distribution of software components?
What is the focus of structural design patterns?
What is the focus of structural design patterns?
Signup and view all the answers
In software engineering, what do design patterns primarily facilitate?
In software engineering, what do design patterns primarily facilitate?
Signup and view all the answers
What is the primary output of the architectural design process?
What is the primary output of the architectural design process?
Signup and view all the answers
Which aspect does architectural design primarily link?
Which aspect does architectural design primarily link?
Signup and view all the answers
What distinguishes architecture in the large from architecture in the small?
What distinguishes architecture in the large from architecture in the small?
Signup and view all the answers
What is one advantage of having an explicit software architecture?
What is one advantage of having an explicit software architecture?
Signup and view all the answers
What is a common criticism of simple block diagrams used in architectural representations?
What is a common criticism of simple block diagrams used in architectural representations?
Signup and view all the answers
What is an important use of architectural models during the design process?
What is an important use of architectural models during the design process?
Signup and view all the answers
Which characteristic of architectural design increases the cost of changes?
Which characteristic of architectural design increases the cost of changes?
Signup and view all the answers
What role does architectural design play in system analysis?
What role does architectural design play in system analysis?
Signup and view all the answers
What is the primary aim of producing a complete system model in architectural design?
What is the primary aim of producing a complete system model in architectural design?
Signup and view all the answers
Which aspect of architectural design is not typically influenced by the architectural design decisions?
Which aspect of architectural design is not typically influenced by the architectural design decisions?
Signup and view all the answers
What should be included in the architecture to enhance availability?
What should be included in the architecture to enhance availability?
Signup and view all the answers
Which of the following architectural styles is typically recommended for enhancing security?
Which of the following architectural styles is typically recommended for enhancing security?
Signup and view all the answers
Which approach aids in documenting a system's architecture effectively?
Which approach aids in documenting a system's architecture effectively?
Signup and view all the answers
What is a characteristic of architectural patterns or styles?
What is a characteristic of architectural patterns or styles?
Signup and view all the answers
How can maintainability be improved in a system architecture?
How can maintainability be improved in a system architecture?
Signup and view all the answers
When structuring a system, which question is essential in the architectural design process?
When structuring a system, which question is essential in the architectural design process?
Signup and view all the answers
Study Notes
Software Engineering - Architectural Design
- The design process for identifying sub-systems, the framework for sub-system control and communication is architectural design
- The output of this design process describes the software architecture
- Architectural design is an early stage of system design
- It links specification and design processes, often done in parallel with specification activities
- Identifying major system components and their communications is part of architectural design
- Changes in architectural design are not incremental; the cost of changing later is high, even in agile projects
Topics Covered in Architectural Design
- Architectural design decisions
- Architectural views
- Architectural styles/patterns
- Application architecture
Architecture of a Packing Robot Control System
- A diagram depicts a packing robot system
- Components include vision system, object identification system, arm controller, gripper controller, packaging selection system, and conveyor controller.
Architectural Abstraction
- Architecture in the small focuses on individual program architecture
- It concerns how an individual program is decomposed into components
- Architecture in the large focuses on complex enterprise systems, including other systems, programs, and program components
- These systems are often distributed over multiple computers owned by different companies.
Advantages of Explicit Architecture
- Stakeholder communication: Architecture can be a focal point for discussions among stakeholders
- System analysis: Helps analyze if the system meets its non-functional requirements
- Large-scale reuse: Architecture can be reused in various systems, leading to product-line architectures
Architectural Representations
- Simple block diagrams showing entities and relationships are frequently used to document software architecture
- These diagrams lack semantics, don't show all relationships, and don't always depict all entity properties
Use of Architectural Models
- Facilitating discussion on system design
- High-level architectural views are helpful for communication and project planning
- They avoid clutter with details
- System stakeholders can understand the overall system without getting bogged down in the minutiae
- Useful for documenting designs
Architectural Design Decisions
- Design is a creative process, methods change with the type of system
- Some common decisions impact non-functional characteristics
Further Architectural Design Decisions
- Generic application architecture?
- Distribution strategy?
- Architectural design styles?
- Structural approach for the system?
- Decomposition into modules?
- Control strategy to employ?
- Architecture evaluation method?
- Documentation strategy?
Architecture Reuse
- Systems in the same domain often have similar architectures reflecting domain concepts
- Application product lines are usually based on a core architecture with variants to meet specific customer needs
- Architectural patterns capture the essence of an architecture that can be instantiated in different ways
Architecture and System Characteristics
- Performance: Localize critical operations, minimize comms; use large components
- Security: Layered architecture, inner layers for critical assets
- Safety: Safety-critical features in a small number of sub-systems
- Availability: Redundant components and fault tolerance
- Maintainability: Fine-grained, replaceable components
Architectural Views
- Which views/perspectives are useful in designing and documenting a system?
- Suitable notations for describing architectural models?
- Each model shows one perspective of the system
- The model could show how the system is broken down into modules, interaction of runtime processes, different distribution approaches, etc
4+1 View Model of Software Architecture (Krutchén)
- Logical view: system as objects (requirements)
- Process view: interactions at run-time
- Development view: software decomposition for development
- Physical view: hardware and distribution
- User view complements the other four views
Architectural Patterns
- Patterns allow for knowledge representation, sharing, and reuse
- They're formalized descriptions of tried-and-true design practices across several environments
- Useful when/not useful information should be in the description
- Represented via tabular and graphical descriptions
Design Patterns (Categorization)
- Creational: Singleton, Factory, Builder, Prototype, Abstract Factory
- Structural: Adapter, Decorator, Facade, Composite, Proxy, Bridge
- Behavioral: Strategy, Template Method, Observer, Command, State, Visitor, Chain of Responsibility
UML: Basic Class
- Conceptual UML diagrams are shown
- Example includes the
Car
class with attributes (wheel count, running) and methods (startEngine, setSpeed)
UML: Directed Association
- Conceptual and example UML diagrams for showing object relationships are shown (Person, Car)
UML: Class Extension/Inheritance
- UML diagrams explain how a class extends or inherits from another (e.g.,
Fancy Car
extendingCar
)
UML: Interface Implementation
- UML explanation of a class implementing an interface (example:
Car
implementingICar
)
UML Aggregations
- UML diagrams for aggregation relationships (e.g.,
Book
in aLibrary
)
UML Composition
- UML diagrams for composition relationships (e.g.,
Wings
in anAeroplane
)
Creational Design Patterns (Introduction)
Singleton Pattern
- Singleton instance creation ensuring only one object exists
- Client application interacts to use the instance.
Singleton Pattern - Use Case
- Shows a leader board system where instances of the
Leaderboard
are shared across games
Prototype Pattern
- Cloning of objects is a focus of this pattern
Prototype Pattern - Use Case
- Shows how to clone records, especially when needed for reuse
Factory Pattern
- Use of factory classes to create objects
Factory Pattern - Use Case
- Shows chair creation using a
ChairFactory
Builder Pattern
- This pattern allows the creation of complex objects step-by-step.
- Director class creates the builder and instructs it.
Builder Pattern - Use Case
- A use case shows creation of houses using directors (e.g., house type) and builders to ensure construction elements are set properly
Studying That Suits You
Use AI to generate personalized quizzes and flashcards to suit your learning preferences.
Related Documents
Description
This quiz covers the key concepts of architectural design in software engineering, including the design process, architectural views, and styles. It also explores the architecture of a packing robot control system, focusing on system components and their interactions. Test your understanding of these foundational topics in software architecture.