CS746: Fall 2010 - Assignments and Project

Target Software to Analyze is:   Quake 3 (First person shooter game)


Overview

Assignment A1: Conceptual Architecture

A1.1

Mon

Sep 20

2010

Team

A1.2

Mon

Sep 20

2010

References

A1.3

Mon

Sep 20

2010

Architectural Diagram

A1.4

Mon

Sep 27

2010

Conceptual Architecture Report

Assignment A2: Concrete Architecture

A2.1

Mon

Oct 04

2010

Landscape

A2.2

Mon

Oct 13

2010

Clustered Landscape

A2.3

Mon

Oct 18

2010

Concrete Architecture Report

Course Project

Part 1

Mon

Oct 25

2010

Proposal

Part 2

Mon

Last day of classes

Dec 6

2010

Final Report


Assignment A1: Conceptual Architecture

Find out the conceptual (abstract) architecture of the Target Software.

Assignment A1.1

Email a list of team members (size about 3 people) to  instructor.

Assignment A1.2

Email a list of references (articles, books and URLs) on the Target Software architecture to instructor.

Assignment A1.3

Submit a diagram of the top-level architecture of the Target Software and a one-page description of its high-level subsystems with their interactions. Email a PDF version to instructor.

Assignment A1.4

Submit your conceptual architecture report of the Target Software. Limit your paper to at most 10 pages. Bring a hardcopy to class and email a PDF version to instructor For guidance, see Description of Conceptual Architecture.


Assignment A2: Concrete Architecture

Produce the concrete architecture of the Target Software.

Assignment A2.1

Using LSEDIT produce a software landscape of the Target Software, using TA extracted from the Target System. You do not need to group files into subsystems. Mail a screen shot of the landscape to the instructor.  Do not email the TA file.

Assignment A2.2

Group the top-level entities of your landscape from A2.1 into subsystems (and those subsystems into subsystems if necessary) by modifing the TA. Mail a screen shot of the new landscape along with the modified TA to the instructor.

Assignment A2.3

Submit your concrete architecture of  the Target Software. Give a clear description of each subsystem or module within you top-level subsystem. Explain the differences from the conceptual architecture. Describe the architecture of one of the top-level subsystems. If feasible, please choose the subsystem to be distinct from subsystems chosen by other groups. Ideally, the set of groups together will cover all the main top-level Target Software subsystems. Use LSEdit to produce diagrams of the concrete architecture.

Your report should be organized approximately like your report for Assignment A1.4. Limit your paper to at most 10 pages. Bring a hardcopy to class and email a PDF version to instructor.


Course Project

Carry out a project and write it up in the format requried by WICSA.  Turn in a hardcopy and mail a PDF copy to the instructor.  Note that 10 pages is the maximum for WICSA.  See http://www.wicsa.net/   See also WICSA’s “topics of interest”.  Projects are due the last day of class.

           

Some Suggested Topics

 

Following are some suggested topics for the course project. You are encouraged to propose new interesting topics relevant to this course.

1. Architecture Refactoring: Future

Description

Refactor the architecture of a large software system to support a new feature. Take one of the systems that were studied in previous years, or choose a new program. Specify a new feature, extract its architecture, identify architecture refactorings to accommodate the feature and analyze impacts and risks. Identify possible tool support (and possibly implement) for this process.

You can also identify an architectural problem and come up with a refactoring to solve the problem.

Requirements

You must choose a software system larger than 100 KLOC. Example systems: Linux, Mozilla, PostgreSQL, MySQL, Emacs, Gnumeric etc. Your project submission should discuss tools actually used, and tools that would have been ideal to use.

2. Architecture Refactoring: Historical

Description

Analyze the historical sequence of refactorings of the architecture of a large software system. Take one of the systems that were studied in previous years, or choose a new program. Extract the architectures over a historical sequence of versions, discover architectural changes, identify the causes for changes and the kind of architectural refactorings have been performed. Identify possible tool support (and possibly implement) for this process.

Requirements

You must choose a software system larger than 100 KLOC. Extract at least 5 versions. Example systems: Linux, Mozilla, PostgreSQL, MySQL, Emacs, Gnumeric etc. Your project submission should discuss tools actually used, and tools that would have been ideal to use.

3. Architectural Repair

Description

Studies on the architecture of many systems in previous years showed how different the concrete architecture was from their conceptual architecture. Take one of these systems, identify how their concrete and conceptual architectures differ, and repair both the conceptual and concrete architectures. Identify possible automated tool support (and possibly implement such support) for this process.

Requirements

Example systems: Linux, Mozilla, PostgreSQL, MySQL, Emacs, Gnumeric etc.

4. New Tools

Description

Build new tools or integrate existing tools into the toolkit used in this course. Examples:

Requirements

Before implementing anything new, study existing tools that accomplish similar tasks and identify the weaknesses that your tool will overcome. Validate usefulness of the tool by using it in the study of a system.

5. New Landscapes

Description

Produce a landscape of a large piece of software. Examples:

Requirements

Landscape that was not done in previous years.

6. Architecture of a Family of Systems

Description

Extract the architecture of a family of systems. Identify the commonalities and variablities of features in the systems family. Decompose the architecture based on the features. The configuration of the architectural components may be extracted from the pre-processor directives (#ifdef), makefiles or other artifacts.


Last update 8 Oct  2010  -- RCH