SOFT3202 EXAM During the ‘Exam Pre-Work’ you have created a repository on https://github.sydney.edu.au under the repository name “SCD2_2021_Exam” with the listed collaborators: • jbur2821 • mmcg5982 • bsch0132 • ttho6664 A snapshot of this repository was taken at the end of week 13 and will be used as a reference when marking your exam work. Your task in the timed exam portion of this work is to implement your pretend client’s desired extension to your pre-work application, and to write a report describing this extension. SUBMISSION Your code will be submitted through https://github.sydney.edu.au as in previous work in this unit. Your report will be submitted to the Exam Report assignment link in the main SOFT3202/COMP9202 Canvas Page. Note this unit does NOT use a separate exam Canvas Page, the normal in-semester page should be used. You must have your report uploaded before the close of the exam window. Your last git commit to your main/master branch within the exam window will be considered your code submission. EXTENSION Your required extension will be targeted to the APIs you were assigned to use, and will be different for different students. At the beginning of the exam window, you will be sent the extension requirements via an email sent to your @uni.sydney.edu.au email address the same way your API allocation was sent. Your extension code should be submitted as the latest commit (i.e. HEAD) to your SCD2_2021_Exam repository’s main/master branch, with the prior commit history also assessable. Your goals during this extension are as follows, and in the given order of priority: • The existing application, and the extension feature(s), must compile and run successfully • You must implement the extension using simple Test-Driven Development practices – that is, you must modify or add to your test suite for the additional features first, commit that modified test suite so it can be seen in your commit history, then progressively modify your main code to pass your modified or added tests. • You must implement the extension in a way that supports the MEM (Maintainability, Extensibility, Modularity) design goals discussed during the semester • You must implement the extension in a way that requires the least modification of the existing code Note that you are only able to work on your extension in this exam window. You cannot work on adding the original feature set, whatever was implemented by the end of Week 13 is fixed. REPORT Your report must cover the following headings (explicitly these headings, with these contents, in this order, useful subheadings are encouraged): • Cover page details: o List your targeted APIs (note any swapped APIs) o Indicate your required extension o Indicate your claimed implemented feature set (Pass, Credit, Distinction) • Code Modifications made: o List each source code file modified, added, or removed by your extension work o For each of these files, discuss what you changed and why. This could be a simple one-line answer or multiple detailed paragraphs depending on the scale of the change and what caused it. o Include before and after UML snippets where appropriate. A full UML diagram of your application is not required, focus on the packages and relationships that indicate your changes. • Feature Modifications made: o Describe the visible changes to your application from the perspective of a user running it, from the perspective of features which have changed/added/been removed, and any changes to the method the user accesses them. • Base code discussion o Describe the way your base code influenced your implementation of your extension. In particular highlight which aspects of your base code made your implementation easier or more difficult than it could have been. You should ensure you reference design patterns in this discussion, whether ones you used, or ones you did not. • Resulting code discussion o Describe the way your code has ended up after implementing your extension. In particular highlight what positive or negative impacts your extension has had on the maintainability, extensibility, and modularity of your code. • Process discussion o Describe your development process for your extension. • [Optional] Alloy specification o Select a small portion of your application that has some complex interactions between components including valid paths and invalid paths, where you have used defensive coding techniques to protect the invalid paths from execution. Your extension work must have modified this in some way. Model this portion of your application in Alloy such that the Alloy Analyser can indicate whether your defensive techniques have protected each invalid path. MARKING The marking for this exam is broken up into stages. Each stage has additional requirements to meet and to have that resulting mark be possible. Note that this mark is holistic for both the code and the report for the early stages: 24/60 (40% Hurdle) In order to receive this mark and pass the exam hurdle (regardless of the results of the progressive assessments) your pre-work and exam work must meet the following requirements: • Both your pre-work and your exam work code must compile and run successfully in the marking environment. o Your code need not be 100% bug free or perfect, but any crashes should be rare o You may not include unapproved dependencies o You must provide and document a mechanism for your marker to use their Input and Output API accounts/authorisation keys • Your pre-work must implement the Pass feature set specified for your targeted APIs • Your exam work must implement the required new feature(s) • Your pre-work code and exam work code must be free of major, obvious design flaws. Examples of these (which are not a complete list) would be: o ‘God classes’ or ‘god methods’ that know too much or do too much. Break your implementation down into components. o Spaghetti code, where functionality or data that should be kept together is split over many methods or classes o Major breaches in encapsulation – public attributes, liberal use of instanceof, etc • Your report must contain the required headings, and be generally coherent Note: These are the minimum requirements to pass this exam and unit. It is recommended you do not move on to the more advanced features/requirements until you are confident you have met these. If you do not meet the above criteria your maximum mark for the exam will be 23/60, and your maximum result for the unit will be FA. 30/60 (50% Pass) In order to receive this mark your pre-work and exam work must meet the following requirements: • You must meet the 40% threshold requirements • You must have correctly followed the simple Test-Driven Development practices during both your pre-work and exam work, with initial commits containing failing tests that later commits pass. • Your report must correctly indicate the changes you have made to your pre-work during the exam extension If you correctly deliver the above (both the 40% and 50% requirements) then your exam mark will be at least 30/60, with a maximum of 38 (~64%). Subsequent marking criteria will increase the ceiling on your mark, with the quality of your code and report contributing to raise your mark between 50% and the given ceiling. To increase your maximum mark to 44/60 (~74%) and allow a Credit result for the exam, your pre-work must implement the Credit feature set specified for your targeted APIs (the database caching) To increase your maximum mark to 50/60 (~84%) and allow a Distinction result for the exam, your pre-work must implement the Distinction feature set specified for your targeted APIs (concurrency) To increase your maximum mark to 60/60 (100%) and allow a High Distinction result for the exam, you must include the optional Alloy specification section in your exam report, which must correctly specify the behaviour you have chosen to model and be free from major errors. Marks between 50% and your qualified ceiling will be obtained through your code demonstrating the MEM goals, style, documentation, and other non-core requirements listed in the pre-work specification, and the clarity and insight demonstrated in your report, with equal weight between the two.
欢迎咨询51作业君