This assignment is to be performed individually. Informal discussions with classmates are acceptable; however, all submitted work is to be your individual work.

Assignments are to be submitted in the ELEC 372 assignment drop box, located outside Goodwin 235, by Friday April 6 at 1:00 PM. A solution will be posted shortly after the assignments are collected, so we will not be able to accept late assignments. Note that printers often become backed up shortly before assignment submission deadlines - please take this into account in your planning.

Note: the answers to the questions in this assignment DO NOT require any code to be written. The answers are based on identifying and describing large components in your design, and do not involve a detailed code-level design. A "high-level" architectural design is produced during the first iteration of design drawn from the requirement specifications and should not contain any code-level details.

 

Assignment # 4

Software Architecture

 

  1. The Mary Shaw paper "Some Patterns for Software Architecture" describes a number of software architectural styles identified from industry applications: http://www.cs.cmu.edu/afs/cs/project/vit/www/paper_abstracts/PLoP95.html
    This paper provides an alternative source to the readings assigned from Bass/Clements/Kazman.
    1. In the table below, give an example of a type of application that would be best designed using the given architectural style. (You may draw from the applications presented in class.) For each case, consider the quality attributes of running time, verifiability, and reusability (i.e., replacing existing components, portability, adding new components) and provide brief comments on how those qualities are affected by the architectural style.

Architectural Style

Your Example

Comments on Reusability

Comments on Running Time

Comments on Verifiability

Layered

Data Centred

Event Driven

  1. Suppose you have three components, A, B, C, that you are trying to compose into a system as shown in figure 2 (below). One of the commonest problems when composing components is the fact that often they do not agree on how the data should be represented. Suppose you have the following characteristics for your system:
    1. component A is written in-house and you have the source for component A
    2. you don't have the source for components B and C
    3. the format of the output from A follows a company wide standard
    4. the output from B and C are not in the company standard format
    5. the input to C is in the company standard format
    6. component A may be replaced in the future by a third-party component
    7. all three components work independently
    8. the final output from the system has to be in the company standard format
    9. the company standard format may change in the future
The Mary Shaw paper, "Architectural Issues in Software Reuse: It's not just the Functionality, It's the Packaging"

http://www.cs.cmu.edu/afs/cs/project/vit/www/paper_abstracts/Packaging.html

describes several techniques for resolving data mismatches between components. Fill in the following table showing what choices you would make to get the components of this system working together (There is no one correct answer.)

Data Flow

Adaptation recommended by you (if one required)

Reason for this choice

Input to C

Output from C

Input to A

Output from A

Input to B

Output from B

 

  1. (Courtesy of Maj.Greg Phillips, RMC) In response to complaints about a lack of intelligence analysis capability, the Department of National Defence initiates a multi-billion dollar project called RABID CALF: the Really Astoundingly Big Intelligence Data Collection and AnaLysis Facility. By means of a highly structured requirements elicitation and validation process (performed by a bored clerk on a cocktail napkin over lunch) the following set of critical information system requirements are identified:

After you make the mistake of beating her at golf one afternoon, your boss tasks you with designing a high-level architecture for RABID CALF's information system.

  1. Identify an appropriate architectural style to use as the core architecture for the system. Justify your choice. If there are identifiable subsystems with other architectural styles, explain what these are. (This explanation should be around a half page in length.)
  2. Produce a high level architectural diagram for the RABID CALF information system. It must include all components necessary to carry out the functions indicated in the requirements. Clearly label each component and connector in such a way that it is clear what role the component or connector is playing. See figure 1 for an explanation of the symbols to be used in your diagram.