QQ: 942371102
Summary
In this assignment, you will demonstrate your ability to understand and subsequently communicate the architecture of an existing software project.
1. First, you need to choose a suitable open source software project. The project must have non-trivial functionality and architecture.
2. You will write a report which describes the architecture of your selected software project.
1 Introduction
The digital world relies heavily on open source software, as seen by the recent log4j vulnerability.1 Fortunately, open source developers often maintain high quality documentation for the users of their projects. Unfortunately however, many open source projects do not maintain the same high quality documentation for the architecture of their software projects. This can cause difficulty for developers who want to contribute to the project, but first need to understand it.
In this project, you have the chance to right this wrong. Your task is to find an open source software project with a sufficiently complex architecture and document it. You may optionally choose to share this documentation with the project developers. You are encouraged to do this, as the perspective of a newcomer to a project is often invaluable to the seasoned developers.
Before looking for projects, read some of the architecture documentation written by students at TU Delft: https://delftswa.gitbooks.io/desosa2016/content and https://delftswa.github.io. It would also be advantageous to read through one of the architecture descriptions in either volume of The Architecture of Open Source Applications: http://aosabook.org.
2 Finding a Project
3 Report Structure
Title Name of the software project.
Abstract Summarise the key points of your document.
Introduction Describe the software project, explaining its key functionality and target users.
ASRs Describe the project’s architecturally significant requirements
Context Provide an overview of the software system’s context and its external dependencies.
Architecture Describe the software’s architecture in detail.
Critique Evaluate the software’s architecture, describing its advantages and disadvantages
Conclusion Highlight the key points or lessons learnt about the software’s architecture.