A1.1
Mon
Sep 21
2009
Team
A1.2
Mon
Sep 21
2009
References
A1.3
Mon
Sep 21
2009
Architectural Diagram
A1.4
Mon
Sep 28
2009
Conceptual Architecture Report
A2.1
Mon
Oct 05
2009
Landscape
A2.2
Mon
Oct 12
2009
Clustered Landscape
A2.3
Mon
Oct 19
2009
Concrete Architecture Report
Part 1
Mon
Oct 26
2009
Proposal
Part 2
Mon
Nov 30
2009
Final Report
Find out the abstract (conceptual) architecture of GIT. .
Email a list of team members (size about 3 people) to cs746@swag.uwaterloo.ca. Each group gets a swag account for doing the assignments and project.
Email a list of references (articles, books and URLs) on GIT architecture to cs746@swag.uwaterloo.ca.
Submit a diagram of the top-level architecture of GIT and a one-page description of its high-level subsystems with their interactions. Bring a hardcopy to class and email a PDF version to cs746@swag.uwaterloo.ca.
Submit your conceptual architecture report of GIT. Limit your paper to at most 10 pages. Bring a hardcopy to class and email a PDF version to cs746@swag.uwaterloo.ca For guidance, see Description of Conceptual Architecture.
Produce the concrete architecture of GIT. Links to the tools to be used:
Using the ASX Pipeline, produce a software landscape of GIT. You do not need to group files into subsystems. Store the landscape, in TA format, somewhere on your course account and email the location to cs746@swag.uwaterloo.ca. Do not email the TA file.
Group the top-level entities of your landscape from A2.1 into subsystems (and those subsystems into subsystems if necessary). Place the new landscape, the TA and the contain.rsf file, somewhere on the course account and email the location to cs746@swag.uwaterloo.ca. Do not email the files.
Submit your concrete architecture of GIT. 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. 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 GIT 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 cs746@swag.uwaterloo.ca.
Following are some suggested topics for the course project. You are encouraged to propose new interesting topics relevant to this course.
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.
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.
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.
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.
Description
Produce a landscape of a large piece of software. Examples:
Requirements
Landscape that was not done in previous years.
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 15 Sept 2009 -- RCH