As outlined in the Assessment Task 1 document, both assessments (Assessment Task 1 and Assessment Task 2) comprise parts of one project. Assessment Task 1 focused on updating an old program to load and validate data from three files with new formats, and designing and implementing several unit tests.
Assessment Task 2 will use the original version of the old program and old file formats. This will ensure equity as everyone is starting Assessment Task 2 using the same code and files.
Assessment Task 2 will focus on:
implementing the recursive Greedy algorithm (from Practical 6) to create a new crozzle based on data from three files,
ensuring that this new crozzle is valid,
designing and implementing unit tests for the recursive Greedy algorithm
reporting on the unit tests, and
designing Azure and AWS cloud solutions.
Creating a new valid crozzle is where you write nearly all of your new code for Assessment Task 2. Your code needs to determine which letter sequences from a file, that when connected in some arrangement, produces a high or maximum score, and adheres to all constraints and configurations.
You will also write code for unit tests. Creating one new crozzle must be based on:
implementing the recursive Greedy algorithm from Practical 6
a crozzle text file
a configuration text file
a sequences text file
letter sequence constraints
Text File Formats
The formats of the crozzle text file, configuration text file, and the text file of letter sequences is the same as that for the original old program that you started with for Assessment Task 1. See Formats of Input Files.docx for details.
However, as you are creating a new crozzle from an empty grid, ROW and COLUMN items will not be provided in crozzle text files for Assessment Task 2.
Your software solution for Task 2 is an extension of the old program. It requires functionality to:
1. Access and read files that are hosted on Azure. These files are crozzle text files, configuration text files, and text files of letter sequences.
Your code for accessing and reading such files can be based on the WebClient code as demonstrated during class.
2. Obtain URLs from the user as you will not be able to use an OpenFileDialog to browser for and select a file on the Azure web site.
To obtain a URL from the user via the GUI, you must include some controls such as a ComboBox and a “GO” button as depicted in Figure 1. But you must not hardcode the URLs.
Create a valid crozzle based on letter sequences, constraints and configurations.
In general, there might be thousands or millions of crozzles that can be created from a list of letter sequences, grid size, other configuration values and constraints.
Ideally the implementation of the recursive Greedy algorithm should find one of these crozzles with the maximum score, but practically this might be impossible in cases with large grids and a large number of letter sequences.
As your algorithm might not meet this ideal goal, your program must attempt to obtain a large score within a 400 second time period. That is, after 400 seconds of runtime, your program must:
stop looking for other crozzles
display the highest scoring crozzle that your program found
display the score of that crozzle
Unit Test Designs
You are to design unit tests for your recursive Greedy method.
Unit Test Implementations
You are to implement each unit test design.
Test Results Report
You must produce a Word document of professional quality to show the results of program testing. Similarly to Assessment Task 1, this document must include the following:
a title page
a contents page
an introduction page
a document body that contains numbered sections, one section for each Test Scenario. Each section will include:
a justification for each test case,
a justification for each test case that failed
a justification for each test case that was not implemented
what you learnt from this scenario
a completed Test Scenario form including values for Test Method name, Actual Data, Test Results, and any Test Comments
an ordered list of data or filenames used by Test Cases (as described in
Assessment Task 1)
Azure and AWS Deployment Report
You are to write a comprehensive report, including diagrams, on how to deploy your solution to an:
Azure Scale Set
AWS Scale Set
where each VM runs a Web Service to compute a crozzle based on the recursive Greedy algorithm.
The client invoking this Web Service provides the name of the crozzle file, a starting sequence and its location and orientation.
This Web Service returns the score, starting sequence and its location and orientation.
The client uses the returned score to determine whether a better scoring crozzle has been found. If this score is larger than the previous best score, the client can then store this score, starting sequence and its location and orientation as the better scoring crozzle.
The client only needs the score, starting sequence and its location and orientation because it can regenerate this crozzle, if needed, based on this starting sequence and its location and orientation.