Sunteți pe pagina 1din 5

Preconditions

1. You should work on your local machine.


2. You may use Visual Studio 2010, 2012 or 2013.
3. You may use Casablanca C++ REST SDK.

Requirements
Objective
Create a WMI based system monitoring and alert notification application. Implement
using a service that could monitor multiple client machines.

Functional Specifications
Create a client application for collecting system data
1.
1. The client is a console application meant to be executed in a recurring
schedule (every 5 minutes) using windows task scheduler.
2. When the application is run, it collects the following data, sends the data to
the service and then terminates. If it is unable to perform the whole cycle
then it must log errors on the console and exit with an error code.

1. List of running processes each with process name, memory


consumed, CPU utilization
2. Total consumed and free system memory
3. Overall CPU utilization %

3. The application identifies itself to the service with a client-name and


password.
4. The service connection URL, client name and password are configured in
the client config file.
Create a cloud based high performance RESTful web service
1.
1. The service must be secured with login / password based security.
2. Each login is unique and identifies a specific client machine.
3. Each client is configured in the service config xml file something like this

<client login="xxx" pass="xxx" mail="asa@asda.com">


<alert type="memory" limit="50%" />
<alert type="cpu" limit="20%" />
<alert type="processes" limit="50" />
</client>
4. The service receives data collected by multiple clients and based upon the
"alert" configuration of each client sends mail notification.
5. The notification is sent to the client configured email address using SMTP.
Use a simple text mail format with some detail about the alert.
6. The service then dumps the received data to a log file per client.

Technical Specifications
The following list of technical specifications should be adhered to:
1.
1. The service
1. should be created using Casablanca C++ REST SDK.

2. should use an SMTP library to send mails using Gmail SMTP.


2. For the application
1. The application would be installed on 100s of machines in an
organization.
2. There is no user interface of the application.
3. Apply input validations and constraints wherever necessary to create a
stable service and application.
4. Even if you are not able to complete all the tasks, try to achieve a working
application.
5. Add missing requirements to the implementation, according to your
experience.

Deliverables
Demonstration Video
Record the video demonstration of the system using a screen-cast tool like Wink (or any
other tool) intermixed with the execution of all components. Do not upload the video
anywhere. Save it to your local machine and include it with the delivery package.

Database scripts
N/A

Readme document
Create a txt file with the following information
1.
1. Instructions to install and configure any pre-requisites and dependencies
to prepare the development environment
2. Instructions to create and initialize the databases (if any)

3. Instructions to configure and prepare the source code to build and run
properly
4. Any assumptions made and missing requirements that are not covered in
the specifications
5. Any issues faced and any constructive feedback you may wish to give
about improving the assignment

Design document
Create a design document containing the following (in not more than 5-7 pages)
1.
1. Explain the technologies and design patterns used and why
2. Explain how the components are broken down and implemented
technically
3. A few UML diagrams showing the components interaction and data/control
flow (component, activity, or sequence diagrams)

Source Code
You should deliver the implemented source code including any dependencies. For the
dependencies that could not be included due to size, the readme file should have proper
instructions on how to download and install them.

To be evaluated
1. The completeness of functional implementation as per specifications
2. The quality of output and implemented code
3. The quality of design and technologies used
4. Properly completed documentation and demonstration video
5. Extra validations and assumptions which are not described

Delivery / How to submit


Please read and follow this section carefully. Any delivery that does not follow
this section will score less or simply won't be evaluated.
Create and submit an archive named <your_name>_CppAssignment4.zip containing
the following
<your_name>_CppAssignment4.zip
<your_name>_CppAssignment4.zip \Readme.txt
<your_name>_CppAssignment4.zip \Design.doc
<your_name>_CppAssignment4.zip \Demo\ < this folder contains the screen video
recording
<your_name>_CppAssignment4.zip \Source\ < this folder contains the complete
source code
Check that the size of the archive is less than 30MB. If not, reduce the size of the demo
video by removing similar frames and remove the binary dependencies.

S-ar putea să vă placă și