exam with corret answers
1. What is the definition of a System's Stakeholder? - CORRECT ANSWER-A stakeholder is anyone who has an
interest in seeing the successful delivery of the system.
According to Responsibility Driven Design, what two questions should the designer ask when evaluating the trying to
identify a class to implement some feature or service identified in the requirements? - CORRECT ANSWER-What class
is responsible for providing (doing) the service?
What class is responsible for knowing some information the system manipulates?
Briefly describe the characteristics of applications the three-tier architecture should be applied to. - CORRECT
ANSWER-The three-tier architecture describes how system designs should be partitioned along three types of services
that are usually required by a web-application, or any application that provides both a user interface and uses a
database to maintain persistent information. An important characteristic is that a presentation tier components interact
with application tier services over a network connection.
Briefly describe the Four Structural Qualities of well-designed architectures? - CORRECT ANSWER-1. Cohesive /
Loosely Coupled Components: The architecture should be feature components whose functional responsibilities are
allocated on the principles of information hiding and separation of concerns i.e. encapsulated, cohesive, and loose
coupled designs.
2. Encapsulation w/ Interfaces: Each component should have an interface that encapsulates changeable aspects of the
implementation. Interfaces should allow multiple teams to implement their components independently of each other.
3. Based on Architectural Patterns: The architecture should be based on architectural and design patterns. There
should be a minimum of wheel reinvention when solid, well understood solutions are available.
4. Maintain the Architectural Design's Integrity: The system should do the same things in the same way throughout.
Consistently use the same patterns and control-strategies.
Briefly describe the generic steps of a filter's processing loop. - CORRECT ANSWER-Each filter has a separate thread
that executes a simple processing loop:
1. Read a new data item from its input pipe. The filter process will block if the filter's input pipe is empty (contains no
data) and will remain blocked until an upstream filter places data in its output pipe.
2. Process the input item producing an output item,
3. Write the output item to the filter's output pipe.
Define "Integrity" in a system's design. - CORRECT ANSWER-Put another way, integrity means 'doing the same things
the same way". There are usually 1-2 overarching architectural design patterns that should be adhered to throughout
the system's design. If the pattern is ignored or violated by some aspect of the system's implementation this is a
violation of the architecture's integrity.
For example, if a web application's architecture uses the three-tier architecture, all the components having access to the
database should be located in the 'service tier'. If a developer embeds a database access in the presentation tier (GUI),
it is a violation of the architecture and of the integrity of the system's design. Some other examples on Slide 37.
Describe at a high level the responsibilities and relationships between the Enterpris e Architect and the Application
Architect? - CORRECT ANSWER-The enterprise architect is concerned with the design of enterprise-wide IT
infrastructure i.e. systems or services. These may be communication systems (networks) or databases that are used by
, all of the enterprise's applications. The enterprise architect is also concerned with mandating the development practices
and tools that are used to build the enterprise's application.
Describe how a system's decomposition into services is driven by the system's features / requirements. - CORRECT
ANSWER-The decomposition of the system's features / requirements into services. Each service is 'responsible' for the
implementation of at least one, and likely several of the system's requirements. These responsibilities are met by the
services (methods in implementation) each service makes available to other system services and to clients of the
system (i.e. users).
Describe how an architect's prior experience that can influence the decisions they make when designing the
architecture of a new system. Hint: Similarity - CORRECT ANSWER-The most obvious will be the experiences the
architect had with a particular technology in a previous project / architecture. If the project was successful, the architect
may wish to utilize the same design in a new project, especially if the new project is similar to the previous successful
project.
Describe how client - server component design can increase reusability in the system's design. Hint: Consider multiple
components responsible for implementing the same service. - CORRECT ANSWER-If we include the use-of and
implementation of a service in a single component we will have embedded the service's implementation in the same
component requiring the service. But what if the service is needed by a second or third component in the design? Do we
duplicate the service in each of the component requiring the service? Duplicating code is always a poor decision as it
increases the size of the code base and makes maintaining (bug fixes, etc.) the service prone to error.
When we decompose a component and spit the client from the service (server), we can reuse the service in other
situations i.e. we make the service available to other clients in the system's design. This produces a system that is
easier to maintain and opens the possibility of reusing the service in other systems.
Describe how each of the following implements a relationship between components.
Client - Server, Shared Information Repository, Asynchronous Messaging.
Hint: How is information shared between components? - CORRECT ANSWER-Client-server implements its relationship
between components using a synchronous message passing. The client requires a reference to the server and invokes
a method on the server. This method is 'synchronous' because between the time the client requests the service and the
service delivers a response, the two components are synchronized.
Asynchronous Messaging allows two components to exchange messages without any coupling. One component has
the role of information producer and the other component information consumer. Producer and Consumer are not
coupled because the producer does not know which component will consume the message it produces.
Shared Information Repositories are services that allow components to save information that can be later retrieved by
other components. Generally, these repositories are persistent, but not necessarily in all cases. There are several
models for storing and retrieving information. A Relational Database stores rows in tables that can be identified and
retrieved using unique ID (names) assigned to each row.
Describe how the Batch Processing strategy is used to delay data processing until off-peak hours. - CORRECT
ANSWER-During the system's busy hour, work (data) can be collected into a batch e.g. a file or database repository.
Processing of the batched data can be scheduled during off-peak hours to make better overall use of the enterprise
compute resources (either on-site or in the cloud). This approach can be contrasted with a Pipes & Filters design where
the arriving data is processed in real-time (as it arrives) and not accumulated in a repository.
Describe how two processes share information via pipes in Unix-based operating systems. Your answer should include
the concept of streams. You will need to research this question. - CORRECT ANSWER-In Unix, each process is given
three streams: An input stream (stdin) it can read from. An output stream it can write to (stdout). An error stream it uses
to write error messages and other non-standard communications.
Two processes pass information across a pipe which is a communications channel provided by the operating system. If
ProcessA is providing information to ProcessB, A will write the information to its stdout stream and B will read the
information from its stdin stream. The pipe is placed between A and B which passes the information written by A to B.
Describe the difference between stateful and stateless services. - CORRECT ANSWER-A stateful service maintains a
persistent connection between the service and each of its individual client. Individual clients (users) start a new session
with a unique instance of the service. The service instances is not shared with other clients and so can maintain
session-specific values (state) that are retained between service requests. SSH is stateful because the SSH client is
connected to a shell process across a persistent connection. Each client command is processed by the same shell
process, and the process is not shared with any other client.
Describe the example of each from the slides. - CORRECT ANSWER-A stateless service does not maintain a persistent
connection with its clients between client request/response exchanges. Because individual clients share a single
instance of the service class, a stateless service cannot maintain client-specific state information. HTTP is defined as a
stateless protocol i.e. the connection between client and server does not persist between client requests. So web
services which rely on HTTP cannot be assured of accessing the same service instance.