Software architecture Flashcards
There are three Structural views that represent a coherent set of architectural elements, they are:
a. Layered, Deployment, and Structural views, all other views are a derivation of these three
b. Modular, Component-and-connect, and Allocation structural views, all other views are a derivation of these three
c. Block, Component-and-connect, and Class structural views, all other views are a derivation of these three
d. Domain, Functional, and Technical structural views, all other views are a derivation of these three
b. Modular, Component-and-connect, and Allocation structural views, all other views are a derivation of these three
The four major architecture elements, that concern any Software Architecture design process, are:
a. Architecture domains, Structural tactics , Quality attributes scenarios, and Use cases
b. Architecture views, Structures (patterns), Design principles, and Architecture domains
c. Architecture views, Layered design, Architecture domains, and Architecture sequential
d. Architecture characteristics (attributes), Structures (styles), Design principles, and Architecture decisions
d. Architecture characteristics (attributes), Structures (styles), Design principles, and Architecture decisions
SDLC is a predictive process, whereas Agile is an adaptive methodology, which means that SDLC may:
a. Use a software development process such as Waterfall model, Incremental model, or V-Shaped model
b. Use only a software development process such as Waterfall model, or V-Shaped model
c. Use only a software development process such as Scrum, XP, Lean, or Kanban
d. Use only a software development process such as Iterative, Waterfall, or Test Driven Development TDD
a. Use a software development process such as Waterfall model, Incremental model, or V-Shaped model
The business context in Software Architecture design deals mainly with cost and market, it helps in:
a. Feasibility study, internal skills analysis, technical options, and development process options
b. Feasibility study, risk analysis, evaluate architectural options, cost estimate and internal planning
c. Competitive technologies, process analysis, evaluate design decisions, trade-off analysis
d. Performance benchmarks, cost, and delivery, interoperability integration, and backward compatibility
b. Feasibility study, risk analysis, evaluate architectural options, cost estimate and internal planning
The architecture development method defines levels of view for each stakeholder role, such as:
a. Developer, Operator, Design support, and Operation support views to communicate to Stakeholders
b. Contractor, Financier, Regulatory, and Strategic views to communicate to Stakeholders
c. Business, Domain, Solution design, and Solution construction views to communicate to Stakeholders
d. Tactical, Vendor, Consultant, and Users views to communicate to Stakeholders
c. Business, Domain, Solution design, and Solution construction views to communicate to Stakeholders
The benefits of use cases for software development are many, the most notable ones are:
a. Help to define the scope, indicator of a project’s size, validate the requirements, and communicate with stakeholders
b. Help to forecast budget, identify development team, validate the design decisions, and communicate with teams
c. Help to define style, indicator of skills needed, validate the budget, and communicate with vendors
d. Help to define the deadlines, indicator of a project’s complexity, validate the market, and communicate with suppliers
a. Help to define the scope, indicator of a project’s size, validate the requirements, and communicate with stakeholders
The elements that describe the expression of the Quality Attribute Scenario are:
a. Background, Actors, Goals, Response value, Mitigating, and Cause of error
b. Environment, Precondition, Test process, Response mode, Source of error, and Cause of error
c. Background, System structure, Response mode, Source of Stimulus, and Stimulus impact
d. Environment, Artifact, Response, Response measure, Source of Stimulus, and Stimulus
d. Environment, Artifact, Response, Response measure, Source of Stimulus, and Stimulus
The Interoperability is about the degree to which two or more systems can usefully exchange meaningful
information, the two important aspects of interoperability are:
a. The consumer discovery of the service, and the handling of the response by the service
b. The consumer response to the service, and the handshaking protocol across services
c. The consumer discovery of the message, and the handling of the response to the message
d. The consumer discovery of the heartbeat, and the handling mechanism of the service to the heartbeat
a. The consumer discovery of the service, and the handling of the response by the service
Performance is a leading driver for system and software architecture, testing performance would focus on:
a. Testability features, Data flow integrity, and Poor extensibility when system is inflexible for functionality expansion
b. Integrity issues, Data flow security, and Poor traceability when system is difficult to test and document
c. Speed issues, Data flow bottlenecking, and Poor scalability when system can adjust to high load stress
d. Useability issues, Data flow inconsistence, Poor process and user interface when system is difficult to use
c. Speed issues, Data flow bottlenecking, and Poor scalability when system can adjust to high load stress
System Security is a high priority for Architects, and a costly attribute to test, the major concerns in cloud computing are:
a. Confidentiality, Compliance, Privacy, Auditability, and Availability when hosting on a public cloud
b. Integrity, Authentication, Performance, Extensibility, and Availability when hosting on a public cloud
c. Interoperability, Scalability, Privacy, Modifiability, and Extensibility when hosting on a public cloud
d. Accessibility, Authentication, Performance, Extensibility, and Modifiability when hosting on a public cloud
a. Confidentiality, Compliance, Privacy, Auditability, and Availability when hosting on a public cloud
According ISO-9241-11 measuring software usability as a quality attribute involves 3 areas of concern, they are:
a. Performance of the solution, Testability of system functions, and Extensibility of the system being developed
b. Efficiency of the solution, Effectiveness in achieving system goals, and Satisfaction of the system being developed
c. Performance of the solution, Availability of system functions, and Deployability of the system being developed
d. Efficiency of the solution, Maintainability of the system, and Reusability of the system functions
b. Efficiency of the solution, Effectiveness in achieving system goals, and Satisfaction of the system being developed
We use modeling techniques to analyze Quality Attributes. The Queuing model for performance, use these parameters:
a. The arrival rate of users, queuing capacity, scheduling algorithm, system topology and broker bandwidth
b. The arrival rate of events, queuing discipline, scheduling algorithm, network topology and network bandwidth
c. The arrival rate of agents, queuing capacity, scheduling frequency, internal communication bus
d. The arrival rate of events, queuing size, scheduling arrivals, network latency and network interface
b. The arrival rate of events, queuing discipline, scheduling algorithm, network topology and network bandwidth
Architecture fitness function are any mechanism that provides an objective integrity assessment of QAs, such as:
a. Simulation, Emulation, checklists, and analysis to verify architecture fitness to specific quality attribute
b. Modularity, Cohesion, Code size, and code complexity functions such as Cyclomatic Complexity
c. Scenarios, Use Cases, User Stories, and code complexity functions such as Cyclomatic Complexity
d. Metrics, monitors, unit testing libraries, chaos engineering, depending on the way they are used
d. Metrics, monitors, unit testing libraries, chaos engineering, depending on the way they are used
A case study we presented on Qualitative Study of Architectural Design Issues in DevOps, revealed that the main
characteristics of DevOps driven architectures are:
a. Cohesion, extensibility, modifiability, reliability, and security over other quality attributes
b. Coupled modularity, prioritizing availability, performability, and modifiability over other quality attributes
c. Loosely coupled, prioritizing deployability, testability, supportability, and modifiability over other quality attributes
d. Cohesion, availability, performability, reliability, and security over other quality attributes
c. Loosely coupled, prioritizing deployability, testability, supportability, and modifiability over other quality attributes
Microservices emerged from DevOps practices of companies to improve product quality and deliver software faster by:
a. Offering faster deployment CI/CD, reduce software development costs and time, while improving product quality
b. Offering faster performance, help reduce software decoupling and improve security, while improving product quality
c. Offering faster stakeholders approval, and help improve software reliability on the cloud and improve product quality
d. Offering effective testability, help increase software coupling and improve security, while improving product quality
a. Offering faster deployment CI/CD, reduce software development costs and time, while improving product quality
In Architects Roles and Collaborations, we keep options open with Fixed and Variable solution Intent, to ensure
architecture agility process. The fixed solution intent include:
a. Certain modifiability specifications, Architecture standards, and detailed capabilities defining the solution
b. Certain performance specifications, Compliance standards, and Core capabilities defining the solution
c. The elements that enable teams to explore the economic trade-offs of requirements and design alternatives
d. The elements that enable teams to explore architecture styles and design decision tactics
b. Certain performance specifications, Compliance standards, and Core capabilities defining the solution
In Layered Architecture, Architecture sinkhole anti-pattern is an undesirable behavior of the system that shows when:
a. Presentation layer passes a request to business and rules layers in a sluggish slow manner to persistent layer
b. Presentation layer passes a request to business and rules layers blocking any request to the persistent layer
c. Presentation layer passes a request to business and rules layers which sink the request in a loophole indefinitely
d. Presentation layer passes a request to business and rules layers that do nothing but pass request to persistent layer
d. Presentation layer passes a request to business and rules layers that do nothing but pass request to persistent layer
If a payment processing is the domain service representing the core system, where each payment method would be
separate plug-in components specific to the payment domain. Best suited architecture style for this system is:
a. Microservices style to allow for fast payment distributed processing
b. Pipelined style to allow for scalability and better fault tolerance
c. Microkernel style to provide for simplicity, evolution and less cost
d. Service-based style to deliver best service elasticity and simplicity
c. Microkernel style to provide for simplicity, evolution and less cost
In service-based architecture style database coupling can present a problem to database table schema changes:
a. This can be solved by logically partitioning the database and present the partitions through federated shared libraries.
b. This can be solved by breaking apart user interface into user interface domains
c. This can be solved by breaking apart a single monolithic database into separate databases
d. This can be solved by physically partitioning the database and present the partitions through a shared library
a. This can be solved by logically partitioning the database and present the partitions through federated shared libraries.
In Microkernel style Plug-in components are standalone, independent components that contain specialized processing, and additional features, mainly Plug-ins provide:
a. UI capabilities that can be extended and customized per user need and functionality
b. Extensibility, adaptability, and isolation of application features and custom processing logic from the core system
c. Broker mediation functionality to ensure asynchronous communication with fast processing advantage
d. Computing scalability, testability, and additional fault tolerance capability especially for remote users
b. Extensibility, adaptability, and isolation of application features and custom processing logic from the core system
Synchronous system design is less challenging than Asynchronous, it is distinguished by:
a. Promoting decoupling and easier design for distributed computing systems like grid computing
b. Being faster for handshaking, but harder to test and extend to more functionalities
c. Allowing two different services to differ in response and operational architecture, based on fire-and-forget.
d. The caller service waits for the response from the callee, in real-time handshaking, under clock discipline
d. The caller service waits for the response from the callee, in real-time handshaking, under clock discipline
Microservices style is a distributed architecture, promotes the following architectural features:
a. Modularity, distributed decoupling, granularity, bounded context, and data isolation
b. High performance computing due to highly efficient network calls and synchronous capabilities
c. Extremely small granularity to control modular decoupling and extensibility for complex designs
d. Ability to share persistent data for cloud computing to ensure testability and high security control
a. Modularity, distributed decoupling, granularity, bounded context, and data isolation
The event-driven architecture style is distinguished by:
a. Coupled event processing components that asynchronously receive and process events
b. A highly adaptable but can only be used for small and less complex systems or applications
c. A distributed asynchronous architecture used to produce highly scalable and high-performance applications
d. Having a good control over the workflow associated with the initiating event and error handling
c. A distributed asynchronous architecture used to produce highly scalable and high-performance applications
The pub-sub style is an extensible real-time distributed style, it decouples the publisher from the subscriber by:
a. Using a sidecar component that can handle all the operational concerns between modules
b. Making adding synchronously subscribers to a topic, so that a publisher can publish to such topic
c. Using a third component (the broker) to filter all incoming messages and distribute them correctly to subscribers
d. Making sure that each subscriber event is delivered to all publishers of that event (topic)
c. Using a third component (the broker) to filter all incoming messages and distribute them correctly to subscribers