Architecture and Design Midterm

Réussis tes devoirs et examens dès maintenant avec Quizwiz!

What is the meaning of 'event handler' in event-driven designs?

Event-driven systems utilize handlers that are executed when the occurrence of a specific event is detected. Handlers are methods, functions, or other code segments. Each event type is associated with its own event-handler.

What does solid line with empty bubble arrow mean?

Extends/ inherits/ kind of

What information should the architecture communicate about its component's interactions?

- The methods a component provides to its clients. - The information component needed by the component to execute the method (parameters / arguments). - The information expected by the client after the method's execution completes. - Any side-effects generated by the component during the execution of the method. - Restriction on the execution of the method's execution e.g. constraints on the maximum duration of the method's execution.

What are the six properties of an event described in the slides?

1. An Event represents the occurrence of something of interest to our system. 2. Each Event has a distinct 'time of occurrence' and other unique properties. 3. Events are delivered to our systems via network or hardware connection. 4. An Event may have timing requirements i.e. a deadline. 5. Events are spontaneous i.e. It cannot be predicted when they occur. 6. Events are asynchronous i.e. the event generator does expect a response (as compared to synchronous protocols e.g. HTTP).

Knowledge of basic UML is a prerequisite of this course. If you feel you lack this knowledge, a set of slides covering UML has been provided. To test this knowledge please identify each of the five associations in the following UML class diagram. look up diagram on hw4

1. Association (uses) 2. Composition / Part of 3. Extends / Inheritance / Kind of 4. Implements (Interface) Note the use of a stereotype to denote the interface. 5. Dependency (depends-upon or has-knowledge-of). A weak form of Association.

How does web services (which are stateless because of HTTP) implement state for each of its individual clients (i.e. users that access a web service)?

HTTP servers implement the Session (HTTP Session). The session is a key-value data structure that is maintained by the HTTP server. The server creates a new Session instance and associates the instance with a unique SessionID. The ID is returned to the client and the client is expected to provide its SessionID in each request it makes to the service. Using the ID, the server can lookup a client's session and store client-specific values such as shopping carts, etc.

What is Miller's Law? In the context of Miller's Law, what is the purpose of decomposing a system into sub-systems / services / components?

Miller's Law describes how the average person can only maintain 7±2 ideas, tasks, objectives, etc. in short-term memory. Component decomposition describes how the designer decomposes (divides) complex problems, systems, etc. into smaller, less complex units. If properly decomposed (i.e. cohesively and loosely coupled), the each of these simpler services or components can be independently designed and constructed reducing the conceptual load on the individuals.

What are the benefits that Quality Attribute Scenarios have over Non-Functional Requirements?

Non-functional requirements are simple statements that describe some aspect of the system's design. Quality Attribute Scenarios are specific in that they: 1. Describe specific conditions (stimulus) that effect the system's execution. 2. Describe specific features of the system's design that address the issue or mitigate the effects of a failure. 3. Describe metrics that measure the effectiveness of the proposed solution to allow comparison of several proposed solutions.

Name and describe the six quality attributes discussed in class (slides) and in the text.

1. Availability: The ability of the system to remain available in spite of abnormal processing conditions including system failures, incorrect inputs, and others. 2. Modifiability: The ability of the system to accommodate changes or extensions to the system's requirements or environment the system executes within. 3. Performance: The ability of the system to meet expected execution requirements such as response time and transactions executed per minute. 4. Security: The ability of the system to prevent or detect unauthorized access to services or data maintained by the system. 5. Testability: The ease in which defects (bugs) in the system's components can be identified. 6. Usability: The ease in which the system's users are able to productively use the system.

Which of the hierarchical views (System, Service, or Component) best describes the follow aspects of the system's design? 1. The decomposition of the system's overall functionality into categories of related functionality. 2. Identifying processors and other hardware that make up the system's design. 3. The classes and relationships between classes that make up the system's design. 4. Most useful when communicating the system's design to a non-technical member of the team. 5. Most useful when communicating the system's design to the developers for implementation.

1. Service 2. System 3. Component 4. System 5. Component

What is the difference between intelligent or dumb controller classes?

A controller's intelligence is an indicator of the amount of responsibility the class implements. An intelligent class directly implements its responsibilities in its code / logic. A dumb controller implements few of its responsibilities. But this does not mean that dumb controllers do not assume their responsibilities. Rather a dumb controller delegates the implementation of those responsibilities to its delegate service classes.

What are two important features of a Pipes and Filter design?

Any two of the following will do... 1. The design of the filter is based on its transformation of input into output data. Its design should not depend on the implementation of its upstream or downstream filters. 2. Filters should be simple and cohesive. Each filter should do "one thing" in the design. 3. Filters should be designed for reuse, both within the system and perhaps in different systems. 4. Filters should be replaceable. A filter's implementation can be substituted with a different design/implementation so long as the data it accepts and produces, and its processing algorithm remains constant across all implementations.

What does a solid line with line arrow (>) mean?

Association (this uses this)

Does Concentrated Intelligence promote or undermine code reuse? Explain your answer.

Concentrated Intelligence implies that the class (usually a controller) is implementing most of the services it needs to fulfil its responsibilities. When these services are required in multiple classes, implementing the same service in each class diminishes code reuse. Instead dumb controllers delegate to service classes and so create services that can be used by multiple controllers.

Does an Entity or Controller make a better example of a conceptual class? Explain why.

Controllers are good examples of conceptual classes as they are added to implement the application workflows implied by use cases. Delegate Classes are another good example of conceptual classes. The delegates are invented to implement some service that is needed to fulfil a feature in the requirements (usually for a controller). For example, the OrderCheckout workflow (controller) needs to calculate the taxes owed for the customer's purchases. TaxCalculator would be a delegate class that implements the tax calculations needed by the OrderCheckout Controller to complete the order processing.

How do we keep our controller classes dumb?

Controllers should know what to do (and in what order) but not how to do. Dumb controllers should implement the logic of a workflow, but delegate the implementation of workflow steps to delegate (service) classes.

What does a dotted line with empty bubble arrow mean?

Dependency, depends on or has knowledge of. Weak form of association. Note dotted line means connected to interface

Describe how the Batch Processing strategy is used to delay data processing until off-peak hours.

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.

How does a component make its publicly accessible services know to its clients?

Each component should present its "interface'. Interfaces is the definition of the methods (name, arguments, return type) that the component is responsible for implementing.

Briefly describe the generic steps of a filter's processing loop.

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.

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 how a system's decomposition into services is driven by the system's features / requirements.

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 at a high level the responsibilities and relationships between the Enterprise Architect and the Application Architect?

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 an architect's prior experience that can influence the decisions they make when designing the architecture of a new system. Hint: Similarity

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.

Briefly describe the characteristics of applications the three-tier architecture should be applied to.

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.

When is a White-Box view of the system designed?

The white box view of the system is created when individual components are designed and implemented during the design and construction phases of the project's execution.

Describe why the decomposition of a system into components should be driven by cohesion. Note: Cohesion was not covered in the lecture. If you do not remember from 3354 (Software Engineering), you should research.

When we decompose a system's design into components, each component should maintain an individual set of focused responsibilities which is the definition of high cohesion. If we find that a component in the evolving design is not focused, too large, etc., we should further decompose this component into two or more components based on the responsibilities assigned to the original component.

How can this decomposition be used to determine that we have full coverage of the requirements in the system's design?

When we examine the system's design we should see that each of the requirements has been assigned to at least one service for implementation. Any requirements not covered by a service will be missing from the ultimate design and implementation of the system.

Provide an example of a problem domain and a stakeholder in that domain. Try not to use a domain described in class.

not provided

Briefly describe the Four Structural Qualities of well-designed architectures?

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.

What are the seven responsibilities the architect (role) has throughout the software development lifecycle?

1. Contributes to building the project's business case. 2. Contributes to capturing the system's requirements. 3. Designs the system's architecture. 4. Evaluates alternative architecture designs and selects the design that best meets the system's unique quality attributes. 5. Communicates the architecture (design) to management and to the development team. 6. Contributes to implementing the system. 7. Monitors development for conformance to the architecture design.

What are five types of Controller Responsibilities commonly assumed by a controller class?

1. Creating new instances or updating entity objects. 2. Creating new instances or updating view (boundary) objects. 3. Implementing and coordinating use case scenario workflows i.e. interactions between user and application as the system guides the user towards their goal. 4. Validation of information exchanged between the user and the application. 5. Implementing business rules identified from the system requirements.

Describe the four goals of the design workflow.

1. Extend the analysis models to implement the system features and responsibilities as services in design models. 2. Decompose the broadly defined analysis classes into cohesive, loosely coupled design classes ready for implementation. 3. Identify opportunities to apply architectural and design patterns, and other means of standardizing and improving the design. 4. Estimate time and manpower resources needed to execute the design and establish a firm delivery date.

Each of the following is a requirement for an e-commerce site (for example amazon.com). Identify each requirement as being functional or non-functional 1. The customer must register and sign in before they can checkout. 2. The site will provide 99.999 percent uptime. 3. The site will present the user with a personalized home page containing items they examined on past sessions. 4. The site will organize the customer's browsing experience according to product categories. 5. The site will respond to all requests within three seconds on average.

1. Functional 2. Non-functional 3. Functional 4. Functional 5. Non-functional

What are the seven practices that produce quality architectures?

1. The architecture should be the product of a single architect or a small team with an identified leader. Move the team towards the system's design goals. 2. Provide the architect the system's non-functional requirements and a prioritized list of quality attributes i.e. security > performance > modifiability etc. 3. Communicate the architecture to the stakeholders and ensure the stakeholders understand how their concerns are being addressed. 4. Evaluate the architecture's ability to meet functional and quality requirements early in the project lifecycle. 5. Maintain the architecture's documentation. 6. Identify resource bottlenecks early in the project. Performance Bottlenecks i.e. Database performance is usually an issue. Project Resource Bottlenecks i.e. the size of the development team vs. the number of features and delivery schedule. 7. The architecture should lend itself to incremental development. Incremental (iterative) software development processes are important to modern software development and the chosen architecture design must facilitate its incremental development over time.

What are the three aspects of a system's behavior that can be used to quantify its performance?

1. The number of items / requests the system can process over some fixed time e.g. the client requests per minute that a system can maintain. 2. The time the system requires to respond to an event e.g. the average time the system needs to produce a response to a client's request. AKA Latency. 3. The quantity of work completed over some fixed time e.g. the number of insurance claims processed per day.

Match each of these stimuli to one of the six quality-attributes it best matches. 1. Minimizing the potential for user entry errors. 2. Change in system configuration or adding additional features to the system design. 3. Denying unauthorized access to system services. 4. System crash or failure in response to invalid inputs. 5. Determining the correctness of a completed project iteration. 6. The arrival rate of work / events to be processed.

1. Usability 2. Modifiability 3. Security 4. Availability 5. Testability 6. Performance

What four 'things' influence the design of an architecture as describe in the book in Chapter 1?

1. system stakeholders. 2. development organization. 3. the architect's background and experiences. 4. the organization's technical environment i.e. enterprise-wide standards concerning technology and process.

Describe what is meant by a 'conceptual class'?

A 'conceptual class' is a class that is not specifically mentioned in the requirements or use cases, but are added to the design to fulfill a responsibility implied by the requirements or use cases.

Describe why, or why not, a pipes and filter design will be suitable for the implementation of a HTTP web service.

A P&F design is not suitable for a web service. This is because HTTP is a client-server protocol. The client makes a request to a service, the request is processed by the server which generates response (result) that is returned to the requesting client. All of this occurs in a single thread meaning that the client execution is blocked while the server processes the request, and the client's execution resumes once the server's response is received. This is true even when the client and server execute on different machines and communicate over a network connection e.g. HTTP. A P&F design divides the processing into discrete filters each of which execute independently of the others in the system. There is no connection with the first processing step triggered by a client's request and the last filter in the workflow. There is no (natural) means of connecting the last processing stop to the client's original request so the result cannot be returned to the client as a server response.

Describe what is meant by the statement: Components of a software architecture should provide a black-box view of the services they implement.

A black-view of a component means that external components cannot see inside the target component i.e. external components cannot see the implementation of the services provided by the target component.

What is the major difference between a workflow design that uses Client-Server vs. Pipes and Filters in terms of how information is processed?

A design that uses client-server typically executes in a single thread (of execution) where the client makes a service request (method) to the server object. The service encapsulates many processing steps and decisions that makes up the workflow implemented by the method. The workflow is executed to respond to the client's request and produces a value that is returned to the client. Examine the sequence diagram presented in the section slides to illustrate what is meant by single thread. A design that uses pipes & filters (dataflow) will include several independent processing stages (filters) each of which independently implements a processing step in the workflow. Rather than encapsulate the workflow into a single module (function / method), the workflow's is spread across multiple filters which cooperate with other filters to fulfill the needed workflow. Each filter executes in an individual process / thread. Filters are connected to each other by communication "pipes" that pass messages from one filter to the next. In a P&F design, messages pass from one filter to the next in a one-way processing flow, and there is no request-response protocol.

Describe why an architecture design based on pipes and filters will likely have better cohesion and less coupling than a design based on the client-server architecture.

A pipes and filters architecture works best with a problem whose solution can be divided into separate, independent processing steps (filters). The design of each filter should be focused on a single data processing operation of the information it receives and information it generates. This is the definition of Cohesion in a software design. To enhance its reusability, the filter's design should not share state with (be coupled with) other filters in the system. This second point is the definition of loose coupling. Often each filter is implemented as a separate process, possibly on separate machines, where sharing of state is difficult and the only form of coupling possible is the messages exchanged between producer and consumer.

Why might a scenario present several responses?

A scenario will typically present several responses each of which address the stimulus in a differ manner. The solution each scenario presents may emphasize one quality attribute but reduce another attribute. Again, it is the decision of the Customer / SME to decide on a solution that emphases the important qualities while maybe having a negative impact on less important attributes depending their application's needs.

1. What is the definition of a System's Stakeholder?

A stakeholder is anyone who has an interest in seeing the successful delivery of the system.

Describe the difference between stateful and stateless services.

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.

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.

Why do we want our controller classes to be dumb?

An intelligent controller is a controller that implements many of its responsibilities. This indicates a large and complex class that lacks cohesion and so is difficult to understand, modify, reuse, etc.

Provide a description of Component (Class) Cohesion.

Cohesion is a property we can assign to a component that describes how closely related the features implemented by the component. A cohesive component is 'focused in its intent'. A component that implements unrelated features (i.e. customer and product management) has less cohesion than the two components that would result if the same set of features were decomposed into separate components. A component with high cohesion is 'better' i.e. the component is easier to reuse, understand, modify, etc.

For these four quality attributes: Availability, Performance, Usability, & Testability, describe two response measurements (metrics) that can be used to quantify and compare alternatives designs.

Availability: The time needed to recover from a system fault and / or cost of implementing the solution e.g. manual recovery will take longer to recover (but will cost less to implement) than an automated failover. Performance: Any of the three aspects described in Question 10. Usability: Some answers: The amount of time the user needs to complete a task repeated many times during their workday. The number of entry errors a user makes when performing the task. The amount of training needed before a new user becomes proficient with the interface. Testability: Some answers: The number of regressions (broken components / classes) identified during the construction phase. The number of errors uncovered during integration testing or after released into production

Describe why the client-server control strategy should be applied to a wider range of design problems than pipes and filters designs.

Because interactive systems require a request - response interaction (synchronous protocol) between a client and server components. For example, the HTTP client-server protocol between a browser or phone app and services endpoints (web service applications). More generally, Object-Oriented design and languages are based on two objects assuming the role of client and server when the client object invokes a method on the server object. The pipes and filter strategy rely on the asynchronous (one-way) exchange of messages between message producers and consumers. It is impossible (or an ugly hack) to implement a client-server protocol in a P&F design.

What is the difference between designs that use Pipes and Filters vs. Batch Processing in term of how information is processed?

Both P&F and Batch designs share a common theme of processing stages, interconnected by communication channels, that process data provided by upstream processes and provide processed data to downstream processes. However, there are these differences: 1. In a P&F design, the filters (information processors) are likely implemented as individual active processes that process incoming data (messages) in real-time. Messages are processed as they arrive (in real-time) and data flows continuously though the network of pipes and filters. 2. In a batch design, the information processors are processes scheduled to run specific times (not real-time). Each process is executed against a set of input data that has been accumulated over time in a repository (files, databases, message queue, etc.). Each process reads and processes all the information from its input repository, writing each result to its output repository. Each processing cycle consumes (processes) the entire contents of the input repository before exiting. Each process runs individually (not concurrently as in P&F).

Describe the three Responsibility Driven Design class roles found in most software designs? Hint: Identified as a Design Pattern in the slides.

Boundary Classes represent the 'boundary' between the system and the external world. This can include creating a "presentation" of the model classes e.g. a screen with a form or report that the user interacts with as the user interacts with the system to obtain their goals. This can also include service interfaces designed to provides services to external clients e.g. a web services interface. Entity Classes are 'things' in the problem domain. These classes are CRUD by controllers and in most cases are persisted. Entities are easy to identify and are extracted from the requirements or use cases e.g. Customer, Product, etc. Also called Domain or Model classes. Controller Classes implement / manage a workflow in the design from start to finish. E.g. a class that implements a use case scenario. Each workflow has a number of steps and decisions that are made as the workflow is executed. These steps and rules are encoded in the controller class design. Typically, there is a 1-1 between workflows and individual controller classes.

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?

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.

What does solid line with filled in bubble arrow mean?

Composition (this is a part of this)

Describe how client - server component design can increase reusability in the system's design. Hint: Consider multiple components responsible for implementing the same service.

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.

What does dotted line with empty bubble arrow mean?

Implements (interface), it uses stereotype to denote interface

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.

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.

Provide an example of a scenario / solution that presents a tradeoff between two quality attributes i.e. emphasizing an attribute important to the customer / problem domain but reducing the effectiveness of another less important attribute.

Increasing the security of the system may complicate accessing the system reducing its usability. Reducing the number of checks the system performs on data entered by the user may reduce its reliability as invalid data can be entered. Increasing the number of checks may decrease usability. It is often the case that performance is in contention with some the other five. This is because maximizing performance often requires comprises to other aspects of the design. For example, isolating and/or encrypting sensitive data requires additional processing to access the data that reduces the number of transaction that can be processed per time unit. Increasing modifiability or availability often involves introducing additional layers of abstraction or indirection in the design which because of additional processing also decreasing performance. Introducing a database server cluster increases DBMS Performance (and Availability) but also increases cost.

What is the significance of blocking in a filter's design?

It is the blocking of the filter's execution on reading an empty input pipe that coordinates the overall activities of the network of filters.

Name and describe the two types of responsibilities suggested by Responsibility-Driven Design and in the slides? Which type of responsibility is assigned to Entity Classes? Which type of responsibility is assigned to Controller Classes?

Knowing and Doing Responsibilities Knowing Responsibilities: A knowing responsibility describes a situation where the system is responsible for organizing and/or maintaining information. This usually implies, but not always, that the system needs to persistently maintain the information. Knowing responsibilities are assigned to Entity classes. Doing Responsibilities: A doing responsibility describes a situation where the system is responsible for taking some action or producing some result. Doing responsibilities are usually assigned to Controller or Service classes.

Describe the meaning / purpose of Stimulus, Response, and Response Measure components of a Quality Attribute Scenario.

See Slide 6 or the Section "Quality Attribute Scenarios". A. Stimulus describes the event that triggers the scenario. The event is generally a design or runtime problem that the system must somehow deal with. In other words, a fault that the system will keep from becoming a failure. B. Response is a feature of the system designed to address the Stimulus. That is, an action taken by the system to address event / fault. C. Response Measure are metrics designed to measure the effectiveness of the Response. Having a metric allows the comparison of several responses and a tradeoff decision to be made by the customer as to which option / response best fits their specific needs. These needs are expressed as the system's quality attributes. i.e. Performance vs Cost of implementation.

Give three examples of how an organization's previous investments or experiences can affect decisions concerning the design of a new product, service, or other development efforts.

Some that come to mind are: 1. The organization will have an investment in specific hardware, operating system, or services. For example, they may have invested in Linux or Windows. They may have invested in Oracle or MS SQL Server DBMS. 2. The organization will be staffed with developers and other support personnel that are trained with specific technologies. For example, a staff that is experienced with Java, C++, or .NET languages and tools. 3. The staff's expertise may extend to specific frameworks within a technology. For example, the use of JEE or Spring frameworks (these are Java-based frameworks used to assemble and deploy systems). 4. The organization may have invested in an internally developed framework which they want to reuse in new development. 5. The organization may wish to leverage an existing system, hoping to extend the existing system to meet future needs.

What is the name given to the specific stakeholder(s) that is the primary source of system features and requirements?

The Subject Matter Expert (SME).

How are the designs produced by the application architect constrained by the enterprise architecture?

The application architect is concerned with the design and delivery of applications that will execute within the enterprise's IT infrastructure. The application architect gathers requirements and design an architecture for a single, specific application. The application architect works with the tools and policies dictated by the enterprise architects. The application architect's designs must use approved technologies such as technology stacks (Linux/Java vs Windows/.net), vendors (Oracle, MS, etc.), designs, infrastructure services provided by the enterprise, entities, and enterprise-specific business rules.

Explain these statements in a few paragraphs: - The architecture presents a broad and shallow view of the system. - The architecture should present the what, but not the how of the system's design.

The architecture provides a broad and shallow view of the system's design. The architecture covers all aspects (is broad) of the systems design i.e. a design that facilitates all of the services required by the requirements. However, the architecture can only provide a description this lacks detail (is shallow). A detailed design of the features identified in the architecture is prepared by the individual developers assigned responsibility for the implementation of these features i.e. narrow and deep. The architecture should present the what, and not the how of the system's design. The architecture described what the system does though the components and interfaces presented in the architectural design. But how the interfaces are implemented is described by the individual designs of the components implementing the interfaces by the developers.

Describe the two categories (clusters) of recommendations provided by the book in Section 1 for designing an architecture.

The categories are Process and Structural recommendations. Process refers to the activities and 'process' an organization follows when developing the architecture for a new system or application. This is similar to the SDLC processes we studied in Software Engineering. Structural refers to recommendations on how to design and ultimately construct the architecture. Structure refers to the system's design, which patterns are used, and other software engineering best practices e.g. encapsulation and loose coupling.

Name each tier and describe the types of responsibilities each tier implements.

These tiers are: Presentation: Components that implement GUI / user interface services i.e. services that present information to the user. Components in the Presentation Tier utilize the services provided by the Application Tier. These services are accessed via a network connection between presentation and application e.g. a phone app connecting via the internet to services running on an web application server. Application (Business): Components that implement application / business logic including data validation, workflows, report generation, controllers, and others. Typically, services in this tier a made available to the public by hosting on a HTTP web services container. Sometimes called the Business tier. Data: Components that provides the services needed by the Application tier to persist (save and retrieve) application data to/from a database server. This tier also provides services that act as proxies to external services used by the system e.g, credit card or shippers.

What are the four phases of the Unified Process SDLC (Software Development Lifecycle)? During which of these phases is the system's architecture decided?

UP SDLC describes a development process to be followed by the development team to build a system from a project's start to end. A process is defined with a number of activities that are performed by the development team during the project. UP divides these activities into four phases: Inception: The overall goals (scope) of the project are established. An initial schedule and budget are created. Risks to success are identified. The decision of whether to proceed with the project is make. Elaboration: Define the project's budget and schedule. Define a majority of the system's requirements. Design / decide upon the system's architecture. Construction: Essentially design and build the system according to the requirements. Unified Process describes an iterative process where manageable chunks of related features are analyzed, designed, constructed, and tested in 3-4 week iterations. The system is incrementally built over a number of iterations until finished. Transition: Final (integration or acceptance) testing is performed and defects are resolved. The completed system is delivered or put into production. The system's architecture is decided upon early in the project lifecycle. In UP terms, the architecture should be completed by the end of the elaboration phase.

Describe the meaning of a deadline associated with event handling.

Under real-time conditions, the execution of an event's handler must occur within some period of time (deadline) for the handler to be effective. If the execution of the handler extends past its deadline, the effectiveness of the handler is diminished or even fails. For example, if the event is the notification of an over-pressure of a vessel in a refinery, the event must be handled (a valve opened) within seconds or there is the risk of an explosion.

What is the name of the mechanism we use to describe the individual service endpoints provided by a component to its clients? How does this mechanism describe the component's service? How does this mechanism promote decoupling between client and server? Hint: The mechanism is typically used to decouple the definition of a service from the service's implementation.

We use an 'interface' to describe the services a component provides to its clients. The interface defines the service endpoints (aka methods) that a component / class makes available to its clients. By describing only the interface, clients can be designed without coupling to the specific class that implements the interface. This reduces coupling in the system's design because the interfaces enforces a black-box view of the component. The client is only aware of the methods provided by the component and the service's implementation is not visible so can't be a factor in the client's implementation.

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?

What class is responsible for providing (doing) the service? What class is responsible for knowing some information the system manipulates?

What should a developer do when they identify a responsibility that does not seem to belong to any of the classes currently found in their design?

When a responsibility is identified that cannot be logically assigned to an existing class it signifies that a new class should be created and assigned the responsibility.


Ensembles d'études connexes

2016 BEHAVIORAL OBSERVATION AND SCREENING

View Set

Behavioral Health Lecture 5- Personality Disorders and Substance Abuse .

View Set

ap bio topic 2: the cell questions

View Set

AP Gov. Unit 1 Multiple Choice Questions

View Set