T B H P N

Project #3 - Remote Repository Prototypes

Spring 2018

Version 1.3, Due Date: Tuesday April 10th

Purpose:

A Code Repository is a Server responsible for managing source code resources, e.g., files and documents. A fully developed Repository will support file persistance, managment of versions, and the acquisition and publication of source and document files. This project focuses on providing the communication channels and Graphical User Interfaces used to implement a Remote Repository, to be developed in Project #4.

In this project we will develop:

Requirements:

Your Remote Repository Prototype Project:
  1. (1) Shall use Visual Studio 2017 and the standard C++ libraries, as provided in the ECS computer labs. You may also use C#, the .Net Windows Presentation Foundation framework, and C++\CLI for the graphical part of each Client.
  2. (4) Shall provide an asynchronous message-passing communication channel, used for all communication between Clients and the Remote Repository Server. The channel will use HTTP style messages for sending requests, receiving replies, and transferring files between Clients and Server. Opening a new window displaying text of a Repository file will satisfy this requirement.
  3. (10) Shall provide a Client graphical user interface that supports tabs for the views:
    • Connecting to Servers
    • check-in
    • check-out
    • browsing specified package descriptions
    • viewing full file text
    • viewing file metadata
    To satisfy this requirement you need to design one or more messages for each tab, and add server and client processing for each message. It is not required to implement all the functionality of each tab. For example, for the check-in tab you could simply send a check-in message to the server, display the request and a response message in the server, and send back a "received check-in message" which gets displayed in the GUI, perhaps in a status bar at the bottom.
  4. (10) Shall include an automated unit test suite that demonstrates you meet all the requirements of this project2. This set of tests shall run without user intervention when your application starts.

  1. That means that you are not allowed to use any of the C language I/0, e.g., printf, scanf, etc, nor the C memory management, e.g., calloc, malloc, or free.
  2. This is in addition to the construction tests you include as part of every package you submit.

What you need to know:

In order to successfully meet these requirements you will need to know:
  1. Details of the C++ language: http://CppReference.com.
  2. All those things you learned while developing code for Projects #1, and #2.