0% found this document useful (0 votes)
115 views3 pages

Advanced Software Analysis and Design

This document outlines the goals and exercises for a software analysis and design lab focusing on design patterns. The goals are to understand how to structure applications using architectural styles, when specific design patterns are useful, and how to refactor designs to include patterns. The exercises involve identifying appropriate patterns for distributed system integration, ensuring component uniqueness, notification of data changes, and simplifying interfaces. Additionally, students must design a component model for a web-based query system using an appropriate architectural style, and apply the factory method pattern to entity creation in an editor using UML diagrams.

Uploaded by

Pinto Pinto
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
Download as pdf or txt
0% found this document useful (0 votes)
115 views3 pages

Advanced Software Analysis and Design

This document outlines the goals and exercises for a software analysis and design lab focusing on design patterns. The goals are to understand how to structure applications using architectural styles, when specific design patterns are useful, and how to refactor designs to include patterns. The exercises involve identifying appropriate patterns for distributed system integration, ensuring component uniqueness, notification of data changes, and simplifying interfaces. Additionally, students must design a component model for a web-based query system using an appropriate architectural style, and apply the factory method pattern to entity creation in an editor using UML diagrams.

Uploaded by

Pinto Pinto
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
Download as pdf or txt
Download as pdf or txt
You are on page 1/ 3

CIS 544/744 Advanced Software Analysis and Design

Laboratory 9
Design Patterns

Fall 2017
LAB 9. Design Patterns

9.1 Goals
After watching the lectures and performing the exercises given below, the student should be able to:
1. Understand how to structure various applications using different architectural styles.
2. Understand where specific design patterns might be of use in an application.
3. Refactor an existing design to incoporate specific design patterns

9.2 Exercises

9.2.1 General Knowledge


For each of the following application problem descriptions, determine which pattern from Fox chapters
16 19 would best apply. Be sure to justify you answer.
a) We are developing a distributed system in Java that requires the integration of an existing Lisp
planner named Prodigy. We want to be able to call Prodigy directly from Java applications using
Java serialized objects as parameters.

b) In the system described in a) above, there are several components that must be unique within
the system. These components include the Data Repository and system Configuration Manager. If
more than once instance of these components is created, system data integrity could be lost.

c) In this system, we would like to give various components the ability to be notified when certain
data changes within the Data Repository. However, to reduce network overhead, we do not want
the components checking for these changes. Instead, there needs to be an approach where the
component can register to be notified when specific changes occur.

d) The system itself will be composed over several components that provide a wide variety of
services. Other interface components will be required to interact with these various components
to get services. However, we would like to simplify the design of these interface components by
providing an easier way for the interface components to find and interact with the various system
components. In essence, we would like the interface components to only have to deal with one
relatively simple interface to access all the various components of the system.

9.2.2 Architectural Styles


You are building a web-based system that consists for several application components. Each of these
components works by receiving a particular type of query, computing the results of the query using a
central data repository, and returning the results. Clients access these application components via a web-
browser. The web browser actually connects to a load balancing component that directs the request to
the appropriate application component on a specific server (there are several identical servers running in
parallel). Determine and justify the appropriate architectural style for this system and design a
component model consisting of the four basic types of components (Application, Browser, Load Balancer,
and Repository) and their appropriate interfaces.

2
9.2.3 Design Pattern Application
We are designing an editor that must manipulate a variety of entities. Due to the way the editor
manipulates these entities, it is critical that each entity be created with an identifier that is unique from
every other entity in the current editor project. Each entity also has unique characteristics that it must
possess as well. There are three types of entities: agents, roles, and goals. Use the Factory Method
Pattern to perform intermediate design of the entity creation part of the editor; include all entity and
factory classes and interfaces. Your design should include a class model and a sequence model. The
sequence model should show an example of all three concrete types of entities being created. You should
analyze your design in terms of the 5 design principles we have been using in this course.

9.3 Completion
You should turn in:
1. Answers to each item in Section 9.2.1 (one paragraph each).
2. Your justification and component model for the system described in Section 9.2.3.
3. Your class and sequence model for Section 9.2.3.

You might also like