CSC/ECE 517 Spring 2022 - S2201: Improving User Experience for SQLFE

From Expertiza_Wiki
Revision as of 17:11, 6 April 2022 by Sthakur5 (talk | contribs)
Jump to navigation Jump to search

About SQLFE

SQL File Evaluation (SQLFE) is an open-source tool that helps in the flexible scoring of multiple SQL queries in multiple submitted files from assignments, lab tests, or other work. It was developed by Prof. Paul Wagner at University Of Wisconsin Eau Claire. This tool has features to support the automated grading of the SQL assignments. It allows partial grading of the question to fairly grade the students and also allows students to provide comments, and multiple solutions to the same problem.

Technologies Used

The technologies used include Maven, Junit, Java, MySQL ,Oracledb. Java is a high level object oriented programming language that is mainly used for back-end server-side development. Java is used in this project to write the underlying program used to assist professors in grading SQL student submissions. Maven is a build automation tool used for building and managing Java based projects. With Maven, the user can have different build profiles to set up different configurations of the Java project used for testing, development, and deployment configurations. Maven has POM files that are basically XML files that contain information related to the project and configuration like dependencies, source directory, plugin, and goals. Junit is a unit testing framework. Similar to Rspec for Ruby, Junit allows the user to automate unit testing to ensure that the classes work well for a system using Java. Oracledb, like any database, is a collection of structured data. This is different from MySQL, which was previously used to store the data on this particular project. However, both database platforms essentially serve the same purpose. In comparison, Oracledb supports parallel and distributed databases and also better indexing than MySQL. Though, MySQL is said to be more configurable, the commercially used Oracledb is the selected relational database management system for this particular project.

Tasks

The project tasks range over several smaller tasks with a cumulative effort directed towards improving the user experience and setting up better processes.

Task 1

Improve the formatting of the query and feedback output in each individual evaluation output file.

Current Implementation

The evaluation files that are generated have a randomly formatted output which is hard to read and is not user-friendly.

           Unformatted AAA_grade_summary.out file. There is no indentation and unwanted commas are present to the end.

Proposed Output

For a cleaner experience, we are going to remove the commas at the end of the lines. Also, we are going to change the alignment of the lines such that they all are indented in the correct manner.

                               File is formatted properly. Additionally, undesired characters have been removed.

Similar changes will be done for each student's output file.

Task 2

Add the JUnit test case coverage for the general SQLFE package. We are aiming to add unit tests for Assignment, FrontEnd, SubmissionCollection, and TestResult classes.

Once the design feature is further pushed to development, this page will be updated with specific code regarding the JUnit test cases desired for this feature. Until then, the following are outlined below:

Assignment.java

Task 3

Currently, the project does not have any integrated build tool. We need to manually download the jars, build the project and run the jar. Instead, we want to automate the build process using the maven build tool.

Proposed Solution

We need to migrate the project to maven. We will be adding a pom.xml file correspondingly. We are going to add three kinds of profiles:

  • Development - This profile will be used when a developer is developing or making changes to the application.
  • Testing - This profile triggers all the unit test cases that have been written and gives a consolidated output for the same.
  • Production - This profile goes hand in hand with the automated builds on Travis CI. The configuration specified here is used when building the application using the CI build.


                                Different profiles in maven.                                                              Maven build life cycle.

Since the project is not used as a dependency anywhere else we don't plan to set up a deployment to the maven central repository.

Test Plan

The tasks involve minimal code changes and require adding build/deployment functionality. For the code changes(Copy any system.err output to a file in the /evaluations folder instead of going to the console/GUI window.) we plan to add the following Junit test:

  • Create the wrong DAO object and check if a file with the relevant message is created correspondingly.

The rest of the tasks involve Manual testing where we will be manually triggering the builds etc. to check if the purpose of the task is met.

Team

Jackson Hardy(jmhardy3)
Rachit Sharma(rsharm26)
Saksham Thakur(sthakur5)
Shubhender Singh(ssingh54)
Mentor: Dr. Paul Wagner