Architectural Considerations and Design Patterns Flashcards
All systems have an architecture even if you do not design one. Explain this
statement.
Every system has an architecture. Whether the architecture is appropriate or not is a different issue altogether. You have taken deliberate actions to plan and design or have you happened into it unknowingly.
nb//You may also have big ball of mud – an unperceivable architecture – still an architecture –
Almost every architectural design can be used to satisfy most of a system’s functional requirements, why?
regardless of the architectural design used, the functional requirements can be satisfied As there are many architectural solutions that can fulfil functional requirements
What are the main factors that influence architectural design?
AKA : Architectural Drivers
. Design purpose (Why are you using the architectural design)
· Quality attributes (most important, nonfunctional requirements)
· Primary functionality
· Architectural concerns
· Constraints
Explain what is meant by the architecture of a software
The architecture of a system describes its major components, their relationships (structures), and how they interact with each other to meet the requirements of the system
What are the three main categories of architectural structures?
modules - (raw code)
component connector
allocation
Explain the purpose of each architectural structures with examples
Module View:
Allows you to express the way in which the modules/classes/packages of the system are organized and primarily reflect the dependency relationships between them. They allow us to think about the modularity, modifiability and maintainability as well as performance characteristics of the system.
Component and Connector Structures allow us to reason about the run time properties of the system. It allows us to think about and reason about the actual components that will exist to provide services at run time, the interfaces or connections between them.
Allocation Structure allows us to reason about the allocation of resources such people, time, money or the artifacts in relation to hardware. Work breakdown Structure used to allocate team members to modules in the system. Or deployment structure used to map components/artifacts hardware interfaces and execution environments hardware
The layered architectural pattern is what kind of structure
Module Structure
The Client-Server Architecture design is what type of structure?
Component Structure
What are design patterns?
A software design pattern is a reusable solution to a reoccurring
design problem.
What is the difference between a design pattern and an algorithm?
The purpose of an algorithm is to solve a specific problem
(sorting, searching, etc.) in a computationally efficient way as
measured in terms of time and space complexity. As opposed to the purpose of a design pattern is to organize code in a
developmentally efficient way as measured in terms of
flexibility, maintainability, reusability, etc.
Why is an algorithm NOT a design pattern?
• Algorithms are not design patterns because they have different
objectives.
What are the properties of a design pattern?
§ Design (and more generally engineering) is about balancing
conflicting forces or constraints.
§ Design patterns provide general solutions at a medium level of
abstraction.
§ Patterns aren’t dogma.
What is the Rule of Three in design patterns?
The general rule-of-thumb is a software
design can’t be considered a pattern until
it has been applied in a real-world solution at least three times (the so-called “Rule of Three”)
What are some benefits of design patterns?
• Design patterns facilitate reuse.
• Design patterns make design easier but not easy.
• Design patterns capture expertise and facilitate its dissemination.
• Design patterns define a shared vocabulary for discussing design.
• Design patterns move software development closer to a well established engineering discipline.
• Design patterns demonstrate concepts and principles of good
design.
• Knowing popular design patterns makes it easier to learn class
libraries that use design patterns.
What makes a design pattern unique ?
§ Design patterns aren’t distinguished by their static structure
alone.
§ What makes a design pattern unique is its intent.
The intent of a pattern is the problem solved or the reason for
using it.