Register
Submit a solution
The challenge is finished.

Challenge Overview

Project Overview

Welcome to the “Digital Trainer AR App Challenge”. 

 

Digital Trainer AR (Augmented Reality) App is an app built by Unity3D + C#. It helps Medical professionals to get certified operating complex medical equipment. The app utilizes the AR ( Augmented Reality ) system to provide the immersion that leads to a more engaging and effective training experiences.

 

Read the challenge specification carefully and watch the forums for any questions or feedback concerning this challenge. Let us know if you have any questions in the challenge forum!

Challenge Phase & Timeline

This challenge includes a checkpoint phase, we will pick 5 checkpoint winners, each will be awarded $50. Also you will get feedback on your checkpoint submissions, it will help you win in the final submission.

 

Checkpoint phase deadline: Aug 14th, 2020 09:00 AM EDT - Aug 19th, 2020 09:00 AM EDT

Final submission deadline: Aug 24th, 2020 09:00 AM EDT

Checkpoint feedback & winner announcement: Aug 20th, 2020 09:00 AM.

Technology Stack

  • Unity3D: 2019.1.2f1

  • C#

  • Microsoft Visual Studio Community 2019

Requirements for this challenge


Analyze the given source project of the Digital Trainer AR app and write an Architecture document. It should include the following sections

 

1. Overview

The high-level description of the current app, it should include

  • The UI technology

  • How are the UIs organized, which are they, and how are the UIs transited?

  • How many Unity Scenes are included, which are they, how these scenes are transited?

  • How many prefabs are there, and what are these prefabs for?

  • How is AR implemented?

  • How does the app connect to the server, what data are sent and fetched from the server?

  • Which 3D models are used? What are the formats of these? How is the performance?

  • A summary of the best practice analysis of the existing code

 

2. Class Diagram

For each class, you should

  • Write a description to describe the duty of it

  • Write descriptions for the important members.

  • Build the class diagram.

 

If there are some dependencies among the classes, it should reflect in the class diagram. 

3. Sequence Diagram

For any important workflow, you should build a sequence diagram to illustrate the sequence. You also need to write a description to elaborate on the sequence.

4. Unused/Test files analysis.

There are some files/components/Unity scenes just for testing, which are not part of the main app, you should find all of them out and list them.

5. Best practice analysis and New Architecture proposal

You should analyze the Pros and Cons of the existing architecture of the Unity3D application, especially for the following items

(1) Is the existing architecture scalable enough? 

(2) Is the existing deployment approach easy enough?

(3) Is the maintainability flexible enough?

(4) What about the error loggings? Are they verbose enough? All the edge cases are handled and logged?

(5) Declare and isolate dependencies explicitly.

(6) There is no requirement for Performance testing. However, you can look through the code and find areas where code can be optimized for better performance. If there are any obvious performance hot spots, point them out, and propose a way of improvement.

(7) Need to check the code pattern and propose a new pattern.

(8) Check for if the usages of all the delegates and events are proper, if some are not proper, point them out.

(9) Check whether Object-Oriented programming is followed in all layers of code consistently if some are not following, point them out and propose the way of refactoring.

(10) Are the UI components and inner components decoupled and pluggable, it means we can turn on/off any components freely. If not, point out which components are not configurable and coupled with which other components. Then propose a way to refactor them to make them decoupled enough. 

(11) In the new architecture proposal, try to figure out which components are reusable, you can list them down and exemplify them in the class diagram.

(12) Check for new features available in new versions of Unity 2019, that may be applicable for the app. Also, find the best version of Stable release of Unity.

 

For each item, you need to write detailed reasons and reference the existing code to support your opinion of Pros or Cons. For the cons you found, please provide the way of improvement, and write a proposal for the new architecture.

 

This is the best practice guide of Unity3D for your reference. https://docs.unity3d.com/Manual/BestPracticeGuides.html

 

Also check if the code meets the Twelve Factors, if it is not, write down which factor it does not meet and how to improve it.

 

For more details of the Twelve Factors, check this link https://12factor.net/

 

In the next challenge, we will refactor the code based on the new architecture proposal. 

Notes

master branch. You can grant yourself access by the Topcoder X link provided in the forum.

  • For any diagram, please include the source files in your submission, so that we can edit them easily.

  • You are free to use any open source/free tool to draw the diagrams.

  • Feel free to ask any questions in the forum.

  • The review will be performed by the PM/copilot and client subjectively, there will be no appeal or appeal response phase.

 



Final Submission Guidelines

Submit a zip archive, including

  • The architecture document in Markdown or Docx format.

  • The source file of diagrams.

  • Any other materials (sample code/project etc) that you thought is help on exemplify your proposal.

ELIGIBLE EVENTS:

2021 Topcoder(R) Open

Review style

Final Review

Community Review Board

Approval

User Sign-Off

ID: 30137084