SRS
Цель – создание клиента, позволяющего выкладывать файлы в распределенное хранилище и скачивать их оттуда.
То есть на основе которого возможно создание децентрализованной пиринговой сети, каждый участник которой
выступает как в роли сервера так и в роли пользователя. Таким образом обмен информацией с помощью него не
будет зависеть от работоспособности и наличия в сети серверов, в отличие от многих других существующих
пиринговых систем.
Поиск файлов:
– поиск должен осуществляться аналогично быстро в сравнении с другими паринговыми системами;
– поиск должен производится по полному имени, маске, расширению, ключевым словам, типу файлов (audio,
video, картинки и прочее);
– поиск должен запрашивать у пользователя ограничения по размеру искомого файла;
– ограничения по размеру файла (сверху) должны быть не менее 9 Гб;
– в случае отказа должна быть 100%-ая уверенность в том, что искомый файл действительно не присутствует в сети;
– клиент должен подсчитывать рейтинг других пользователей сети, идентификацинные номера которых он
хранит у себя в таблицах. Если клиент не отвечает на запросы или часто выходит и сети то его рейтинг должен
понижаться и при появлении новых кандидатур замене естественно пожлежат участники с наименьшим рейтингом.
Таким образом в итоге клиент должен составить таблицу наиболее надежных участников, обеспечивая этим надежность
и быстроту поиска.
Скачивание и выкладывание файлов:
– процесс выкладывания небольших файлов в хранилище не должен занимать много времени ;
– клие должен быть способным продолжить скачивание, после перерыва (например отключении из сети и тп), при желании пользователя;
Возможно, в последствии добавление дополнительных функций типа чата, направленного обмена информацией (с
определенным пользователем сети) и прочего.
Аппаратное\программное обеспечение:
– в основном опеределяется разработкой проекта на Java – то есть наличие у пользователя java-машины необходимо;
– клиент должен быть поддерживаемым всеми популярными операционными системами.
Графический интерфейс
– графический интрефейс должен обеспечивать прямой доступ ко всем функциональностям системы, показывать
визуально прогресс закачек и выкладывания в общий доступ, выводить статистику и информацию о скростях закачек, количестве
выложенных в хранилище файлов и прочих динамических величин;
– кроме того он должен быть простым для освоения, и оснащенным полной и удобной документацией по использованию.
Tests:
OLD: | Ожидаемый результат: | Результат тестирования: |
1. При наличии n узлов расшарить файл, скачать его | файл скачается | пройден |
2. Скачать этот файл с другого узла | тоже что 1 | пройден |
3 Скачать этот файл предварительно отключив к узлов | если число подключенных узлов – хранителей полосок достаточно для сборки файла, то он скачается | не реализован специально, вроде работает |
4. Скачать этот файл предварительно отключив к узлов среди которых должен быть источник | тоже что 3 | не реализован специально, вроде работает |
5. расшарить файл, отключить все узлы, снова включить, и попробовать скачать его | тоже что 1 | пройден |
6. расшарить файл, затем изменить содержимое источника, снова расшарить, скачать | в сети будет два разных файла | пройден |
7. тоже что и 6, но:
– пусть указаны n+k узлов, a[1]..а[n+k]
– подключаем к сети a[1]..a[n]
– расшариваем файл
– отключаем a[1]..a[n-k]
– подключаем a[n+1]..a[n+k]
– расшариваем файл с измененным содержимым
– подключаем a[1]..a[n-k]
| скачаем оба файла | пройден |
NEW:
test klient's work on one computer: | Ожидаемый результат: | Результат тестирования: |
1. подключить клиенты на одном компьетере с одинаковыми ТСР портами, одинаковыми UDP портами, и тем и другим одновременно;
| клиент не подключается к сети и просит пользователя ввести другие значения портов, в отдельном диалоге | пройден |
2. подключить клиенты с разными портами и впроцессе работы поменять значения портов на одинаковые и переподключиться; | при смне тср порта клиент должен предложить прорестартить систему, при смене тср – пока что не понятно | провален |
3. подключить к сети два (или более) клиента с одного компьтера и :
– расшарить на одном из них файл, найти и скачать его с с узла на другом компьютере, с узла на этом же компьютере
– расшарить с обоих клиентов одинаковые файлы, файлы с одним именем, один и тот же файл | клиенты работают корректно как два независимых узла сети | пройден |
4. провести вышеперчисленные тесты если один из клиентов подключен к к клиенту находящемся на том же компьютере | тоже что и 3. | пройден |
IN THE FUTURE: | | |
1. расшарить файл, исказить содержимое хранилища, попробовать скачать. | Файл скачается | не реализовано |
2. расшарить файл, исказить содержимое n-k+1 хранилищ, попробовать скачать. | Клиент сообщит, что файл непоправимо испорчен | не реализовано |
3. попробовать расшарить файл уже расшаренный с другого узла, найти его и скачать | файл скачается (просто полосок в хранилище будет больше) | пройден |
4. расшарить разные файлы с одним и тем же именем с одного узла и с разных узлов, попробовать их найти и скачать | Оба файла сохранятся в сети(id считается по содержимому) | пройден |
5. расшарить достаточно большой файл, начать закачку, приостановить, продолжить до конца. | Файл скачается | провален |
6. попробовать скачивать два файла одновременно, повторить тест, но при этом приостановить скачивание одного файла, докачать второй и возобновить скачивание первого
| файлы должны скачиваться одновременно, после прерывания скачивание должно возобновляться | скачивание двух файлов – пройден, приостановка – провален |
7. провести все перечисленные тесты на Unix – системах (на пример на Linux =)) | то же что и в Windows | не проведен |
8. расшарить файл больше 2 ГБ | файл расшарится\скачается | не реализовано |
План работ:
1. Тестирование и отладка новой системы поиска, и всех зависящих от нее функциональностей ( Distributer ).//8 чч
2. Создание методов для корректного завершения работы клиента ( сохранение закачек, хранителя линок в файлы ).//32 чч
3. Разработка и реализация системы отката файлов из хранилища ( например, посредством оповещения о валидности и удаления по
таймауту ).//разработка – 8чч, реализация – 32чч в зависимости от результатов разработки
4. Отладка и корректирование работы класса, отвечающего за отправку\прием пакетов для ускорения процесса скачивания ( оповещения о потере пакетов, их переотправке без остановки работы класса для ожидания утерянного пакета ).// 48чч
5. Создание методов, отвечающих за реакцию клиента на смену некоторых конфигурационных параметров (ТСР и UDP портов) в процессе работы приложения, то есть оправданный, корректный перезапуск приложения или соответствующих потоков или, возможно, изменении настроек без перезапуска.// 32чч.
6. Корректирование соответствующих методов для работы с файлами размером больше 2 Гб.// 32чч.
7. Тестирование клиента по вышеприведенным тестам, исправление найденных ошибок.// 8чч.
8. Документирование проекта.// 40чч.
9. Разработка Help с инструкциями о подключении клиента к сети, использований функциональностей, возможных предупреждениях об ошибках, необходимости рестарта клиента; документации с подробным сравнением с существующими Р2Р-сетями. // 8чч – разработка, 16чч – написание текста.
10. Работа над графическим интерфейсом.// 16чч.
11. Разработка сайта проекта.// 32чч.
Всего: 304чч