Final exam

due Fri May 6 at midnight, by email

Instructions

This is a take-home exam. You may use whatever materials you like, including the source code that we have written and any notes/links provided. If you use quotes or ideas from any source other than your own mind, you must cite the source and use quotation marks appropriately.

You may not do this exam in groups. Your responses must be entirely your own. If I notice suspicious similarity between the answers of two or more students, or if your answers are copied from another source, your grade will suffer.

All of your answers should be concrete and pertain specifically to the project we implemented this semester. I expect about a page of explanation per question. Submit your answers by email to .

Questions

  1. Earlier in the course, we discussed coupling and cohesion, and we tried to factor out the password verification rules from the user registration handler. In what way did this change improve coupling and/or cohesion? How could we further improve the coupling or cohesion of the classes that make up our web app?

  2. Another software engineering topic we discussed in some depth is testing. We made unit tests for password hashing and validation. For each other type of testing below, describe how you could implement it for your web project. Would you need to refactor your code? Use particular new tools?

    • Integration testing
    • System testing
    • Interface testing
  3. We explored hosting our web app on a Heroku. Compare the advantages and disadvantages of two other hosting options in terms of convenience, price, extensibility, or other criteria you decide. The other hosts could both be PaaS (like Heroku), or you could choose one PaaS and one IaaS provider.