Podcast
Questions and Answers
What does software architecture primarily deal with?
What does software architecture primarily deal with?
- The specific lines of code in a software system.
- The database schema design.
- The graphical user interface design.
- The bigger structures of a software system and how multiple software processes cooperate. (correct)
Software architecture serves as a detailed implementation plan for a system.
Software architecture serves as a detailed implementation plan for a system.
False (B)
Which of the following is an example of a system quality that software architecture is a primary carrier of?
Which of the following is an example of a system quality that software architecture is a primary carrier of?
- Specific algorithm efficiency
- Performance, modifiability, and security (correct)
- Naming conventions of variables
- Choice of programming language
Name three system qualities that software architecture influences.
Name three system qualities that software architecture influences.
Which of the following is NOT considered a factor of software architecture?
Which of the following is NOT considered a factor of software architecture?
A ______ or specification is a factor of software architecture used for the construction of an object or system.
A ______ or specification is a factor of software architecture used for the construction of an object or system.
Quality attributes in software architecture include aspects like correctness, reliability, and readability.
Quality attributes in software architecture include aspects like correctness, reliability, and readability.
Which of the following best describes the role of the IT environment in software architecture?
Which of the following best describes the role of the IT environment in software architecture?
What does 'human dynamics' refer to within the factors of software architecture?
What does 'human dynamics' refer to within the factors of software architecture?
Business strategy is unrelated to the factors influencing software architecture.
Business strategy is unrelated to the factors influencing software architecture.
What is the purpose of a design plan in software design?
What is the purpose of a design plan in software design?
Name two objectives achieved by having a design plan in software development.
Name two objectives achieved by having a design plan in software development.
A software design plan acts solely as a code blueprint and is only useful during the coding phase.
A software design plan acts solely as a code blueprint and is only useful during the coding phase.
According to the diagram, what is a step that directly influences 'Software Architecture Design'?
According to the diagram, what is a step that directly influences 'Software Architecture Design'?
One goal of architecture is to expose the structure of the system, but hide its ______ details.
One goal of architecture is to expose the structure of the system, but hide its ______ details.
Which of the following is a goal of software architecture?
Which of the following is a goal of software architecture?
Name two goals of software architecture related to improving organizational or system aspects.
Name two goals of software architecture related to improving organizational or system aspects.
One limitation of software architecture is the abundance of standardized tools to represent architecture.
One limitation of software architecture is the abundance of standardized tools to represent architecture.
Which statement reflects a limitation of software architecture?
Which statement reflects a limitation of software architecture?
Effective communication among stakeholders is a common limitation in software architecture.
Effective communication among stakeholders is a common limitation in software architecture.
If a person has design expertise, methodological expertise, and technology expertise, what role may they be qualified to perform?
If a person has design expertise, methodological expertise, and technology expertise, what role may they be qualified to perform?
Name two areas of expertise a software architect should possess.
Name two areas of expertise a software architect should possess.
A software architect should be an expert in the system being developed and plan for software ______.
A software architect should be an expert in the system being developed and plan for software ______.
Which of the following best describes 'Conceptual Integrity' as a quality attribute?
Which of the following best describes 'Conceptual Integrity' as a quality attribute?
'Maintainability' refers to the consistency of the software design
'Maintainability' refers to the consistency of the software design
Define what is meant by 'reusability' in terms of common quality attributes of software.
Define what is meant by 'reusability' in terms of common quality attributes of software.
What does 'Interoperability' primarily measure?
What does 'Interoperability' primarily measure?
[Blank] defines how easy it is for system administrators to manage the applications.
[Blank] defines how easy it is for system administrators to manage the applications.
Define what 'reliability' means in the context of system quality attributes.
Define what 'reliability' means in the context of system quality attributes.
'Scalability' refers to the availability to prevent accidents.
'Scalability' refers to the availability to prevent accidents.
Why is 'Security' significant as a quality attribute?
Why is 'Security' significant as a quality attribute?
What does 'Availability' mean as a run-time quality attribute?
What does 'Availability' mean as a run-time quality attribute?
Explain the meaning of 'testability.'
Explain the meaning of 'testability.'
'Usability' describes if components of the system can be used in other applications.
'Usability' describes if components of the system can be used in other applications.
What does 'correctness' refer to as an architectural quality?
What does 'correctness' refer to as an architectural quality?
Describe the meaning of 'portability' as a non-runtime quality.
Describe the meaning of 'portability' as a non-runtime quality.
Modifiability determines if developed components can work together correctly.
Modifiability determines if developed components can work together correctly.
With respect to market competition, use of a system is known as ______.
With respect to market competition, use of a system is known as ______.
Which definition best fits ‘architectural style’?
Which definition best fits ‘architectural style’?
Architectural style does not allow the reuse of design.
Architectural style does not allow the reuse of design.
Why is the architectural style important with solving problems?
Why is the architectural style important with solving problems?
Flashcards
Software Architecture
Software Architecture
Refers to high-level structures of a software system & how processes cooperate.
Design as a Factor
Design as a Factor
A factor in software architecture referring to a plan or specification.
Quality Attributes
Quality Attributes
A factor, it includes correctness, reliability, learnability, robustness and maintainability.
IT Environment
IT Environment
Signup and view all the flashcards
Human Dynamics
Human Dynamics
Signup and view all the flashcards
Business Strategy
Business Strategy
Signup and view all the flashcards
Software Design Plan
Software Design Plan
Signup and view all the flashcards
Goals of Architecture
Goals of Architecture
Signup and view all the flashcards
Roles of Software Architect
Roles of Software Architect
Signup and view all the flashcards
Conceptual Integrity
Conceptual Integrity
Signup and view all the flashcards
Maintainability
Maintainability
Signup and view all the flashcards
Reusability
Reusability
Signup and view all the flashcards
Interoperability
Interoperability
Signup and view all the flashcards
Manageability
Manageability
Signup and view all the flashcards
Reliability
Reliability
Signup and view all the flashcards
Scalability
Scalability
Signup and view all the flashcards
Security
Security
Signup and view all the flashcards
Performance
Performance
Signup and view all the flashcards
Availability
Availability
Signup and view all the flashcards
Supportability
Supportability
Signup and view all the flashcards
Testability
Testability
Signup and view all the flashcards
Usability
Usability
Signup and view all the flashcards
Correctness
Correctness
Signup and view all the flashcards
Portability
Portability
Signup and view all the flashcards
Integrality
Integrality
Signup and view all the flashcards
Modifiability
Modifiability
Signup and view all the flashcards
Marketability
Marketability
Signup and view all the flashcards
Cost and Schedule
Cost and Schedule
Signup and view all the flashcards
Architectural Style
Architectural Style
Signup and view all the flashcards
Message Bus
Message Bus
Signup and view all the flashcards
Service Oriented Architecture
Service Oriented Architecture
Signup and view all the flashcards
Client/Server architecture
Client/Server architecture
Signup and view all the flashcards
N-tier architecture
N-tier architecture
Signup and view all the flashcards
Domain Driven design
Domain Driven design
Signup and view all the flashcards
Component Based design
Component Based design
Signup and view all the flashcards
Layered
Layered
Signup and view all the flashcards
Object oriented
Object oriented
Signup and view all the flashcards
Business architecture.
Business architecture.
Signup and view all the flashcards
Application (software) Architecture
Application (software) Architecture
Signup and view all the flashcards
Information Technology (IT) Architecture
Information Technology (IT) Architecture
Signup and view all the flashcards
Study Notes
Software Architecture
- Refers to the broader structures of a software system
- Concerns how multiple software processes work together to achieve tasks
- Serves as a blueprint
- Provides an abstraction for managing system complexity
- Establishes communication and coordination among components
- Functions as the main carrier of system qualities like performance, security, and modifiability
- Achieved through a unified architectural vision
Factors of Software Architecture
- Quality Attributes
- Design
- IT Environment
- Human Dynamics
- Business Strategy
Design
- A plan or specification for constructing an object or system
- Used for implementing an activity or process
- The result of a plan or specification, such as a product, prototype or process.
Quality Attributes
- Includes correctness, reliability, adequacy, learnability, robustness, maintainability, readability, extensibility, testability, efficiency, portability.
IT Environment
- Integrated collection of technology components
- Caters to the needs of its users and the owner of the resulting system
Human Dynamics
- A team-oriented activity
- Involves engineers, developers, business analysts, domain experts, data/infrastructure architects, project managers, etc.
Business Strategy
- Refers to the actions and decisions a company undertakes to achieve its business goals
- Aims to be competitive in its industry
Software Design
- Provides a design plan
- Describes the elements of a system, their fit, and interaction to fulfill the system's requirements
- Objectives include negotiating system requirements and setting expectations with customers, marketing and management personnel
- Serves as a blueprint during development
- Guides implementation tasks, including detailed design, coding, integration, and testing
Goals of Architecture
- Expose the structure of the system
- Hide its implementation details
- Realize use-cases and scenarios
- Address the requirements of various stakeholders
- Handle both functional and quality requirements
- Improve the organization's market position
- Improve the quality and functionality offered by the system
- Improve external confidence in either the organization or system
Limitations of Software Architecture
- Lack of standardized ways to represent architecture
- Lack of analysis methods to predict whether it will accomplish requirements
- Lack of awareness of its importance
- Lack of understanding of the roles of software architects
- Poor communication among stakeholders.
- Lack of understanding of the design process
- Lack of design experience and evaluation of design
Roles of Software Architect
- Design Expertise: Expert with software design and methodologies.
- Domain Expertise: Expert on the system.
- Technology Expertise: Expert on available technologies.
- Methodological Expertise: Expert on software development methodologies such as SDLC
Common Quality Attributes
- Conceptual Integrity
- Consistency and coherence of overall design, including components/modules
- Maintainability
- System's ability to undergo changes
- Reusability
- Capability for components/subsystems to be suitable for other applications
- Interoperability
- Ability of systems to exchange information with ones written and run by external parties
- Manageability
- Ease for system administrators to manage applications
- Reliability
- Ability to remain operational over time.
- Scalability
- Handle load increase without impacting system performance/size
- Security
- Prevent malicious and accidental actions
- Performance
- Responsiveness of executing actions within a given time
- Availability
- Proportion of time the system is functional and working
- Supportability
- Ability to provide helpful information for recognizing and fixing problems
- Testability
- Ease for creating test criteria for the system and its components
- Usability
- How well the application meets customer needs by being intuitive
- Correctness
- Accountability for satisfying system requirements
- Portability
- Functioning with different computing environments
- Integrality
- Ability to make separately developed components work correctly together.
- Modifiability
- Ease with which software accommodates changes
- Marketability
- The system's use with respect to market competition
- Cost and Schedule
- Costs with respect to time to market, lifespan, and utilization of existing systems
Architectural Style
- Called architectural pattern
- A set of principles for shaping an application
- An abstract framework for a family of systems
- Defines system in terms of structural organizations
- Provides a lexicon of components and connectors with rules
- Improves partitioning and allows design reuse by providing solutions to recurring issues
- Describes how to configure a collection of reusable components and connectors
Common Architectural Design
- Message Bus (Communication)
- Software system that can use multiple communication channels.
- Services-Oriented Architecture SOA (Communication)
- Applications use contracts and messages.
- Client/Server (Deployment)
- The system is divided into two applications, client and server.
- 3-tier or N-tier (Deployment)
- Separates functionality into segments on physically separate computers.
- Domain Driven Design (Domain)
- Business objects are based on entities within the business domain.
- Component Based (Structure)
- The application design is divided reusable components that expose communication interfaces.
- Layered (Structure)
- Divide application into stacked groups of concerns
- Object Oriented (Structure)
- Divide into objects each containing relevant data and behavior
Types of Architecture
- Business Architecture
- Defines business strategy, governance, organization, and processes.
- Focuses on the analysis and design of processes.
- Application (Software) Architecture
- Serves as a blueprint for individual app systems and interactions.
- Defines relationships to business processes.
- Information Architecture
- Defines logical and physical data assets.
- Information Technology (IT) Architecture
- Defines hardware and software building blocks.
Architecture Design Process
- Understand the Problem
- The most crucial step because affects the quality of the rest
- Identify Design Elements and their Relationship
- Build a baseline for the context of the system.
- Decompose to main components based on functions.
- Can be modeled using design structure matrix (DSM) for dependencies.
- Evaluate the Architecture Design
- Each attribute is estimated.
- Involves evaluating conformance to architectural quality attributes.
- Transform the Architecture Design
- Performed after evaluation.
- Change until quality attributes are satisfied.
- Choosing design solutions to improve quality while preserving domain.
Key Architecture Principles
- Build to Change Instead of Building to Last
- Reduce Risk and Model to Analyze
- Use Models and Visualizations as Communication and Collaboration Tool
- Use an Incremental and Iterative Approach
Key Design Principles
- Separation of Concerns
- Single Responsibility Principle
- Principle of Least Knowledge
- Minimize Large Design Upfront
- Do not Repeat the Functionality
- Prefer Composition over Inheritance while Reusing the Functionality
- Identify Components and Group them in Logical Layers
- Define the Communication Protocol between Layers
- Define Data Format for a Layer
- System Service Components should be Abstract
- Design Exceptions and Exception Handling Mechanism
- Naming Conventions
Studying That Suits You
Use AI to generate personalized quizzes and flashcards to suit your learning preferences.