软件维护代写 | COMP 3350 Software Maintenance Assignment
Download the source code for the legacy software system from UMLearn. Then, complete
the following activities. Provide brief written responses for each one (no more than 1 or 2
paragraphs for each). Number your responses to match the corresponding activities.
Submit your response in a PDF document by the end of the day on the assignment due date
shown on UMLearn.
Please note that all activities except the first must be done independently. All written work
must be your own thoughts, in your own words. Before you submit your assignment, you
must agree to an Honesty Declaration affirming that you have done your own work.
1. Build the system from the posted source. You may do this on your own, or together with
other members of your project team. Note that you must participate in this activity, not
simply watch as others do it. As your response for this activity, indicate “I participated in
building the system”, and list the names of everyone else who also worked on this task.
2. Describe the process of building the system. Were there any difficulties (compatibility,
dependencies, etc.)? Did you have to modify anything, or find additional libraries?
3. Explore the system to get a feel for what it does. As your response for this activity, describe
briefly the purpose of the system, and include a screenshot.
4. Explore the source code for the software. Is there a discernable architecture? Draw an
architectural diagram (or as close as possible) to show the high-level system architecture.
5. Choose two distinctly different maintenance tasks for the system: one new feature, and one
fix or enhancement to existing code. You will not actually change the code. Describe, in
high-level terms, these tasks. Label them “a” and “b”.
6. For each task, determine the dependencies relevant to the task. Start with the code where
the modification will present itself, and drill down into the source code to find the most
likely lowest-level component where the change will need to be made. Identify the path of
dependencies by class name. For each, give a brief (one-sentence) justification that explains
why this is a relevant dependency. If you use any tools to help identify dependencies,
describe them. Label each sequence of dependencies with the same “a” and “b” used above.
7. For your fix or enhancement, try to locate a seam as close as possible to the lowest-level
component from the previous activity. For your new feature, choose one component that
will be a dependency of your new code. What kind of tests would you need to implement
for that component? What internal or external dependencies need to be broken in order to
write these tests? Are there any refactorings that could or should be performed? Describe
them briefly. Again, label your answers using “a” and “b”.
8. Discuss briefly the maintainability of this source code. Are there any aspects of the project
(architecture, design, code, etc.) that make it particularly easy or difficult to modify?