S/W Design and Architecture

Final Project: Design Patterns Quiz App

Objectives

During this activity, students should be able to:

This activity helps students develop the following skills, values and attitudes: ability to analyze and synthesize, capacity for identifying and solving problems, and efficient use of computer systems.

Activity Description

This activity must be solved individually or in pairs.

Write a Ruby web application that allows testing the user about her/his knowledge on design patterns.

Requirements Checklist

  1. Application Code and Functionality
    1. The application must be developed using the Sinatra DSL using the Model–View–Controller (MVC) architectural pattern.
    2. The models must be implemented using the Sequel database toolkit for ORM (object-relational mapping) over SQLite3.
    3. The user interface must be intuitive and easy to use. You may use a web front-end framework (for example Bootstrap or W3.CSS) if you wish.
    4. The application must allow the user to select how many different questions (between one and ten) she/he wants to answer.
    5. The questions must be selected randomly from a bank of at least 40 multiple choice items. All questions must be related to design patterns or antipatterns, and must be taken from any of the following resources: [OLSEN], [GAMMA] or [SOURCEMAKING].
    6. Each question must appear all by itself in the web browser window.
    7. Once the user answers a question, the application must give the user the corresponding feedback, indicating if the answer was right or wrong, and displaying the correct answer if the user’s choice was wrong. After this, the user can proceed to see and answer the next question.
    8. Once all questions have been answered, the application must display the final score, and give the user the option to restart it.
  2. Documentation
    1. You must write the documentation for your application’s design and architecture. See the example in: greeter.tgz. The greeter/README.rdoc file contains all the indications on how to produce the documentation. This is how the final result should look: greeter/doc/index.html.
    2. Your README.rdoc must contain these sections:
      • General overview
      • How to install and run the application
      • 4+1 architectural view model
        • Logical view
        • Process view
        • Development view
        • Physical view
        • Scenarios
      • Patterns used
      • Acknowledgments (optional)
      • References
    3. Every class and public method developed must be adequately documented using the RDoc markup language.
    4. All the Ruby source files must include at the top the authors’ personal information (name and student id) within comments. For example:
      # Final Project: Design Patterns Quiz App
      # Date: 23-November-2017
      # Authors: A00456654 Thursday Rubinstein
      #          A01160611 Anthony Stark
      

Deliverables

Place in one tarball file called quizapp.tgz all the contents of your project.

Upload Instructions

To deliver the quizapp.tgz file, please provide the following information:

Request PIN

Only one team member needs to upload the file.

Due date is Thursday, November 23.

Evaluation

This activity will be evaluated using the following criteria:

50% Implementation of program requirements.
50% Documentation.
1 The program and/or documentation was plagiarized.