Open Source Architecture Reports ================================ Due: Thursday, February 27, at 11:59pm. Email your report to the instructors. Introduction ------------ This is a group assignment. Do this assignment together with other 15-413 CMU students who are working on the same open source project. First, identify a portion of your open-source project--this could be the entire project, or the part you are enhancing, or something you are adding plus its context (include some existing code if at all possible). Second, document the architecture of that portion of the project. Broadly, your report should describe the *most important design decisions* in the project, and *why they were made*. It should answer the following questions: * What are the architecture drivers? Architecture drivers are requirements that the architecture is intended to help meet. Typically architecture drivers are qualitative in nature--they are not about functionality so much as attributes like performance, security, extensibility, reliability, etc. * Provide one or more diagrams showing the structure of the system. Your diagram(s) might show the run-time structure of processes, data structures, and other components, and how they interact (a "component and connector" diagram). Alternatively or in addition, they might show the major modules of code and how they communicate, or show how the code and/or run-time components are deployed onto hardware servers and devices. You might choose to show different things than other groups, depending on what is interesting and important in your system. Regardless, be careful to identify different types of things in your diagram using different notations (shape, color, etc.) and include a legend in your diagram explaining what the notations mean. See architecture slides 31-32 from class for examples of architectural diagrams with legends. * Discuss any important design decisions that are not structural in nature (i.e. are not easily shown in the diagram). System structure is almost always an architectural concern, but it is very often not the only architectural issue. As discussed in lecture, an architectural issue is a decision with important system-wide impacts, and/or one that impacts a critical architectural driver. * Explain how the structure of the system, and/or other design decisions made, contribute to satisfying the architectural drivers. This is the most important part of the report. Report Deliverable ------------------ All teams will produce a report, due Thursday, February 27, at 11:59pm. A subset of teams will be chosen after that time to give a presentation in a future week. The length of the report should be approximately 1 page + 1 extra page per person in the group (e.g. group size 2 = 3 pages, group size 3 = 4 pages). Diagrams may count for at most 1/2 of the required document length; e.g. a group of size 3 with 3 pages of architectural diagrams still needs to have at least 2 pages of text.