COMP 529 Fall 2007

Project 2 Description


Overview

For project 2, you will perform a case study of the architecture of an actual software system, and report on your findings. This project will be done individually.

Goals

The goals of project 2 are to:

Preparation

In the context of this project, a case study is a high-quality, narrative description of a software architecture, with an interpretive perspective on a specific aspect of the architecture. The best way to understand what this means is too look at a specific example.

The book Software Architecture in Practice provides 7 case studies for you to examine. In particular:

As you see, all of the above address a specific aspect (e.g., product line architecture) of a specific system (e.g., CelsiusTech). Your task for project 2 will be to produce something similar to one of the above. A mandatory requirement for the project is to read at least one of the above chapters. Reading more is strongly encouraged.

Organization

Completing this project will involve the following activities:
  1. Choosing a target system. The system should be large and architecturally interesting. Note that larger does not necessarily mean more work as you only need to focus on a given aspect of the system. The system does not need to be open-source but you must have access to it and be able to report on it freely. You can choose a system that you have contributed to if you did not design its architecture, and if the system is big enough. You are strongly encouraged to discuss your choice of system with the TA and instructor.
  2. Choosing a focus aspect. You should determine what specific aspect of the system you will describe. Again, it is important to note that the purpose of this project is not simply to reverse-engineer a system, but to analyze and discuss a specific aspect of the system. This aspect should be interesting to you and valuable to report on.
  3. Analyzing the target system. You will need to analyze the system, possibly using software tools, to understand how it works and collect material that will contribute to your case study.
  4. Write a report. The deliverable for this project is a single report. You should plan plenty of time to write and illustrate your report, as the quality expectations will be high.

Deliverable

The only deliverable for this project will be an 10-page case-study report. The report should be in 11pt font, letter-size paper, with 1in margins, and be in pdf format. You are free to choose any organization you wish for the structure of your report. The report should be in polished, grammatically-correct English, and be in the general style of technical writing for computer science. Your best examples of this are the case studies listed above, and the textbook.

The following is a list of points you may want to consider and report on as part of your case study. This list is a starting point: you can add to it, or omit some if you feel that they are not relevant to your case (except for points 1-3, which are mandatory):

  1. A brief summary of the application/architecture: what it does, why?
  2. A summary of the component model and the main components and interactions.
  3. A very brief summary of the technological aspects of the application/architecture (programming language(s), kLOCs, number of components, communication technology used (method call, RMI, socket, etc.), relevant standards).
  4. Strengths and relevant weaknesses of the architecture (e.g., it's easy to add a new command, but adding a new view is not supported and requires extreme hacking skills...).
  5. Component model violations: is there a component or a part in the application that violates some characteristics of the component model (e.g., in one case Component A uses socket communication with Component B instead of the standard communication scheme because...)?
  6. An architecture usually favors some qualities (testability, performance, extensibility) over other qualities. Identify those qualities. Identify violations of these qualities (e.g., the framework is designed for testability, but in this particular component, performance was more important as illustrated by ...).
  7. Evolution (e.g., did the architecture pass the test of time?; How did the architecture evolve?; What were the motivations?; Did the component model stay backward compatible?; What was the impact on the components (and potentially client programs)?; Was there any architectural drift?

Evaluation

In evaluating your project, we will assess the following: Warning: There is no intermediary deliverable for this project to allow you to organize it as you wish, and because it is likely to involve a number of iterations between steps 2 and 3. However, do not be deceived by the fact that "only" a ten-page report needs to be delivered. We will expect the report to reflect a significant amount of work. You should start as early as possible to benefit from the feedback of the instructor and TA, and to ensure the success of your project. Starting too late (e.g., a week or two before the deadline) is not likely to give you enough time to produce a report that would earn a passing grade.

Academic Integrity

McGill University values academic integrity. Therefore all students must understand the meaning and consequences of cheating, plagiarism and other academic offenses under the Code of Student Conduct and Disciplinary Procedures (see http://www.mcgill.ca/integrity for more information).

Resources

The project is an essential part of the course. It should be assumed that completing the project will require readings (e.g., manuals, web resources, etc.) that go beyond the class readings listed in the schedule. The Instructor and TAs will remain available throughout the term to answer questions and provide suggestions about the project. Some important topics related to the project will also be covered in class.