We need a software to defrag hard drives. This should be similar to e.g. the Defrag solution that is included in Windows. People should be able to select a drive and to start the defrag process and they should see some kind of status indicator (e.g. a percentage bar or even better a map of the clusters) so that they can see what happens.
The process
===========
The first GUI screen can be pretty simple: Just a list of partitions as you said with a % value of how much they are fragmented right now. A user can select one of the partitions and click on a "go"-Button.
Afterwards the progress should be displayed with a % value and a graphic that shows the sectors and the activity. I attached 3 examples from other programs so you can see what I mean. The user should be able to pause or stop the process any time.
After the process is finished, the user should see a report that shows him some statistics. The last 100 reports should be stored in a file and should be displayable via a button in the main menu.
Stability
=========
It is of course very very important that the software is secure and bug free (i.e. doesn't kill a hard drive in any case). For example, it shouldn't lead to problems if a file is written at the hard drive during the progress,etc. - Instead the defragmentation progress could be paused for some seconds if a write action is detected (in case that this is necessary).
Background
==========
The software should offer a way to start automatically with Windows and run as an icon in the tray where it defrags harddrives based on a schedule-setting that can be defined in the program.
The software should also offer an "automatic" mode: If the PC wasn't defragmented for 5 days and if the user wasn't active for >3 minutes, the software will start the defragmentation and show this in the tray icon. It will automatically pause if the user continues to work the the PC. - The number of days and the number of minutes must be configurable in an option dialog.
Both functionalities could be solved by running the software as a Windows service but we are free to other solutions as well. Under Vista it's OK that the user needs admin rights to install the software but it must be usable as a normal user (e.g. when running in the background / tray). Hence, a service might be the best solution.
There are some requirements
===========================
-The Software must be usable under Windows XP and Vista.
-It needs to be written in C# (.NET)
-It should be written clearly with a good class structure and a separation between the logic and design so that we can change the form design easily
For delivery:
-We will get the source code that we can use as a base to build a commercial solution.
-On delivery we will receive everything that we need to compile the software (e.g. all necessary 3rd-party libraries, etc.). For example, we might receive a ready-to-go ZIP file containing a Visual Studio project that we can compile out of the box.