CSCI 4440 — Software Design and Documentation Midterm Exam (document version 1.1) — DUE November 19, 2020 • The take-home midterm exam is to be completed individually and is due by 11:59PM ET on the due date shown above • As an individual assignment, please do not share your work with others; the work on this assignment is to be your work and only your work • Note that in order to pass this course, you must receive a passing grade on this exam • (v1.1) Your grade will be out of 50 points Overview The goal of this exam is to test your written communication and critical thinking skills. Your answers should reflect your own understanding of the course material. As an “open book and open notes” exam, you should certainly make use of the posted course materials. Beyond this, use of any of the textbooks or other resources must be properly cited both within your answers and at the end of your exam (i.e., as a List of References). You must use at least four distinct published books, industry magazines, and/or reputable Web articles; you cannot use Wikipedia as a reference. (v1.1) Use MLA or any well-known format for your references; please be consistent. One suggested resource is available here: https://tinyurl.com/y5t3frqv (Head First Object- Oriented Anaylsis and Design by McLaughlin et al.) Grammar, spelling, and correctly citing references make up a significant part of your grade on this exam. You are therefore required to have a draft of your midterm exam reviewed by the Center for Global Communication and Design (https://commd.rpi.edu/). (v1.1) Comm+D is able to have one visit from each of you. To ensure you have a fruitful visit, you should have at least a few parts of Question 1 and a draft of Question 2 completed beforehand. Sign up for either a live session or upload a PDF to receive written feedback within 24 hours. And to receive credit, be sure to include “CSCI 4440 SD&D” when you sign up. Finally, plagiarism will result in a zero on this exam and therefore an F in this course. What to submit Please submit a single PDF that includes your name and RCS ID (e.g., goldsd3). Start each question on a new page and please include the text of the question or part before each of your answers. DUE November 19, 2020 1. (30 POINTS) Select an existing open source application or framework, then identify two essential non-trivial features that you would like to add. You can make these up or develop these from pre-existing feature requests (e.g., the open source project’s “wish list”). Be sure you select features that are interesting and complex enough to show your understand- ing of object-oriented analysis and design. In particular, you should show your understanding of abstraction, low coupling, high cohesion, encapsulation, generalization (a.k.a. inheritance), and polymorphism. The required deliverables/artifacts are as follows: (a) In a few paragraphs, describe the open source application or framework that you have selected. Include a brief overview of the project that describes its key features, as well as what distinguishes it from other similar projects. Be sure to include URL(s) for the pre-existing open source project. (b) Next, list the stakeholders and their specific interests in the project. (c) In a few paragraphs, describe your proposed features, including why stakeholders would find such features interesting and useful. Also include at least three potential risks. (d) Provide at least six fully dressed use cases (see Mini-Assignment 1) that capture the behavioral requirements for your new features. If you cannot come up with six use cases, ask yourself whether your new features are “interesting” enough (or develop use cases for pre-existing features within the given project). (e) In addition to the use cases, provide a table of requirements that includes the five columns referred to in Mini-Assignment 2. Focus on requirements beyond what is already docu- mented in your use cases. (f) Based on artifacts (a)-(e) above, perform a detailed object-oriented analysis and construct at least two class diagrams. Be sure your focus is purely on the problem domain (i.e., do not include design or implementation details yet). (g) Once artifact (f) is complete, translate this into a comprehensive object-oriented design by producing at least three class diagrams. Your class diagrams should include aspects of the original application design such that the new classes are presented in context with the pre-existing system. To make this clear in your diagrams, use the «pre-existing» stereotype for any classes that already essentially exist. (h) In a few paragraphs, explain your diagrams and specific decisions related to abstraction, low coupling, high cohesion, encapsulation, generalization, and polymorphism. Also de- scribe at least three design patterns that you made use of for artifact (g). Be sure your UML diagrams are correct in relation to the lecture slides and notes. 2 2. (20 POINTS) Write a comprehensive essay of at least 1000 words that summarizes the state of software development today. More specifically, highlight the successes (i.e., what we as a society have gained) and also the failures (i.e., why software is problematic). Although this is an open-ended question, be sure to consider why software continues to be so buggy, what negative impacts software defects cause, and how certain populations have been demonstrably harmed by software systems. Further, answer the question as to whether the software development process we have discussed in this course can help us avoid such negative results. 3
欢迎咨询51作业君