Starting from:

$30

CSC301-Building Modern Software Solved


2.    Mobile application: “How do we build a mobile application that can easily be developed, tested, maintained, and distributed?” is the question leading this path. You can make an assumption about whether your application needs to run on Android, iOS, or both. But you must clarify that assumption in your report.

Next Steps
Your customer has chosen you as their trusted advisor and asked you to recommend a solution for their needs. You can start your research from the roadmaps we have seen during the lecture. Consider three main technologies to use for each part. For example, for the backend of your web application, you can look at Node, Python, or Go, or any other language you find interesting. For the frontend of your application, you can look at Vue, React, Angular, or any other language/framework. You will then need to compare the options you have chosen.

Considerations can include (but should not be limited to):

1.    Ease of development for you (e.g., you know Python but Go may be new to you)

2.    Maturity of the language/technology and the libraries available for integrations/UI

3.    The domains covered by the technology/language (e.g., Python also supports ML projects while Javascript can do both frontend and backend).

4.    Popularity of the language/technology. You can look at HackerRank 2020 Report, Stackoverflow 2019 Survey, or JetBrains Developer Ecosystem report.

5.    Performance, scale and speed of the solutions built with these technologies. 6. Any other criteria you think is important and needs to be considered

Your tech stack needs to include solutions for the following:

1.    Frontend technology

2.    Backend (web or mobile)

a. Needs to include Testing Infrastructure (e.g., PyUnit for Python unit testing). You don’t need to have comprehensive tests. One test is enough.

3.    Continuous Integration & Continuous Delivery (CI/CD)

4.    Database (we will talk about databases in one of future lectures in more depth)

Your setup needs to support:

1.    One development environment and a production environment.

2.    Automated deployment on merge at least to the development environment.

a.    You can use any of the CI/CD tools.  

b.    Your deployment needs to include running test(s)

Deployment
You are expected to make your applications available for your TA to see, test and grade (mobile and web). You will need to “deploy” your applications. We will use the word deploy loosely here meaning that you need to have your web application available via a url and find a way to share your mobile app with the TA (e.g., apks, expo, developer account sharing, video recording, etc).  
Web/Mobile 
Application 
Report  
__ /400  
40% 
100 points per comparison 
Deployed Application 
__ /400  
40% 
100 points per criteria 
Testing Availability 
__ /200  
20% 

Evaluation Criteria for Report (Web / Mobile)
You will be comparing three main technologies for each of your four web application components or each of your four mobile application components. Each of you comparison will be evaluated according to the evaluation criteria outlined below:  
 
All standard functionalities are present (i.e the application meets requirements)  

The workflows (e.g. going from feature or view to the next) can be executed 
Missing one or two standard functionalities 

Moving between features (e.g. workflow) isn’t fully functional but one can access each feature independently 
Missing three or four standard functionalities 

Little to no cohesion between features or application requires resetting between features 
Missing majority of standard functionalities  

No cohesion between features - it is impossible to move from one feature to another 
 
NO SOFTWARE 

PRODUCT 

EXISTS OR A 

CRITERIA IS 

COMPLETELY MISSING 
2 - The application’s UI is present and usable visual defects 

UI is 
visually/aesthetically pleasing 

UI is highly usable and incorporates design principles 
A UI was built 

UI is mostly cohesive and clear  
A UI was built for most features 

UI requires some testing or constant reference to documentation to use or understand 
Very few features contain a UI 

UI is very nonintuitive and without documentation testing would be 

difficult  
No UI was complete but some UI code 

exists 
3 - Testing infrastructure implemented 

Testing infrastructure set up  with one test case 
Test infrastructure is fully set up but is not functional (i.e. the test 
Test infrastructure is only partially completed 
No testing infrastructure but 
 
Testing infrastructure is comprehensive (beyond just unit tests)/ 

comprehensive/fully and easily extensible going beyond unit tests 
that can be run 

successfully 

Testing infrastructure can be adapted to develop further testing when 

expanding application functionality 

does not run 
successfully) 

Testing infrastructure cannot be adapted (or must be modified extensively) to develop more tests  
 
some code for testing exists 
Continuous Integration and Continuous Development setup 
Deployment goes all the way to production with every push to master running all infrastructure successfully with high-quality tests 
CI/CD is setup and runs everything successfully with every push 
CI/CD is set up  
CI/CD is fully set up but is not functional  
Team has evidence of unsuccessful but attempted CI/CD 

Evaluation Criteria for Testing Availability (Web & Mobile)

Product is available to a tester without setting it up on a 

developer machine 

Product deployment is easily repeatable  
Product deployment was completed manually with interventions at most or all stages of deployment (e.g adjusting multiple parameters, manual branch adjustments, directly accessing deployment environment) 
Product is deployed but cannot be accessed and requires team to present their work 
Team has evidence of attempted but unsuccessful deployment 
 
NO SOFTWARE 
PRODUCT 

EXISTS OR A 

CRITERIA IS 

COMPLETELY MISSING 

Instructions for testing are provided 

Above expectations 

in quality or creativity of instructions (e.g., highly detailed, video demonstrations, 

GIFs, etc.) 
Clear instructions are provided on how to use the application from the 

tester’s perspective  

Clear steps provided for using each feature that has been built  

Instructions can be executed as provided 
Instructions are provided for using the application, but some assumptions had to be made, or some ambiguity in 

instructions present 

Some of the instructions cannot be executed as provided 
Instructions are very unclear or 

ambiguous, and requires the tester to make many assumptions to use the application 

Some missing steps 

Provided instructions are insufficient for using the application from the tester’s perspective  

Steps not provided for using each feature that has been built, or 

many missing steps 

None of the instructions can be executed as provided 
 

More products