Содержание

advertisement
Содержание
Введение ............................................................................................................................... 7
Раздел 1 ................................................................................................................................. 7
1.1. Системы хранения и предоставления файловых ресурсов ................................... 7
1.1.1 Файловый контент и файловые операции ......................................................... 7
1.1.2 Контент-системы файлового хранения .............................................................. 9
1.1.3 Групповая работа в контент-системе ............................................................... 10
1.1.4 Взаимодействие между пользователями контент-системы ........................... 11
1.1.5 Целевая контент-система С3............................................................................. 12
1.2 Задачи работы ........................................................................................................... 14
1.3 Обзор существующих решений .............................................................................. 14
1.3.1 Существующие контент-системы .................................................................... 14
1.3.2 Box ....................................................................................................................... 20
1.3.3 Dropbox................................................................................................................ 21
1.3.4 Google Disk. ........................................................................................................ 22
1.3.5 OneDrive .............................................................................................................. 23
1.3.6 Выводы ................................................................................................................ 24
1.4 Требования к работе с файлами .............................................................................. 24
1.5 Архитектура целевой контент-системы ................................................................. 25
Раздел 2 .............................................................................................................................. 29
2.1 Разработка файлового менеджера ........................................................................ 29
2.1.1 Алгоритмы взаимодействия системы с пользователем ................................. 29
2.1.2 Загрузка файла в систему .................................................................................. 30
2.1.3 Создание новой папки ....................................................................................... 32
2.1.4 Удаление файла из системы .............................................................................. 34
2.1.5 Перемещение файла из папки в папку ............................................................. 36
2.1.6 Переименование файла...................................................................................... 37
2.1.7 Редактирование метаданных файла ................................................................. 38
2.2 Документирование ................................................................................................... 42
2.2.1 Документация разработчика ............................................................................. 42
2.2.2 Эксплуатационная документация .................................................................... 43
2.3 Тестовые материалы ................................................................................................ 44
Заключение......................................................................................................................... 45
Ссылочные документы ..................................................................................................... 45
Приложение 1. ................................................................................................................... 46
Приложение 2 .................................................................................................................... 48
Глоссарий ........................................................................................................................... 50
Введение
Решение задач хранения, управления и доступа к файлам – важная часть
любого организованного процесса совместной работы. Используемые для этого
контент-системы должны иметь полнофункциональные средства для обеспечения
выполнения всех необходимых операций с файлами. С архитектурной точки зрения
целесообразно реализовывать эти возможности в рамках отдельного модуля –
файлового менеджера.
В ходе работы был поставлен набор задач, выполнен обзор существующих
контент-систем файлового хранения, проведен их анализ, выявлены преимущества и
недостатки, исследованы реализации подсистем управления файлами. Кроме того,
были изучены особенности целевой контент системы с точки зрения специфичных
для неё особенностей управления файлами.
На этой основе был выработан ряд функциональных и нефункциональных
требований к разрабатываемому файловому менеджеру. Опираясь на эти
требования, был разработаны диаграммы деятельности, описывающие с помощью
языка UML алгоритмы выполнения основных файловых операций.
Затем была выполнена программная реализация на мультипарадигмальном
языке программирования Scala, произведено документирование разработанных
компонентов. Были сформулированы принципы организации тестирования, на их
основе выполнено модульное и интеграционное тестирование разработанных
компонент, устранены выявленные недостатки, проведено повторное тестирование.
Раздел 1
1.1. Системы хранения и предоставления файловых ресурсов
1.1.1 Файловый контент и файловые операции
В современном обществе ценность данных непрерывно возрастает. В
настоящее время работа с данными, организованной в виде файлового контента,
является одним из важнейших аспектов деятельности любой организации,
7
независимо от сферы деятельности и размера. По разным оценкам, на сегодня 7080% хранимых данных представлено в файловом виде.
Файл – это именованная область на носителе. Особенностью файла является
то, что он является персистентным, то есть существующим длительное время,
объектом. Это отличает, его, к примеру, от процесса, который по своей сути
является временно существующим. Особым видом файла является каталог,
хранящий в себе список других файлов.
Для организации структурированного хранения большого числа файлов
используются файловые системы, являющиеся промежуточным звеном между
операционной системой и носителем. Файловая система не обязательно напрямую
связана с физическим носителем информации - существуют и виртуальные
файловые системы.
Работа
с
файлами
реализуется
средствами
операционных
систем.
Операционная система предоставляет приложениям набор функций и структур для
работы с файлами. Операционная система UNIX, к примеру, представляет
следующий перечень основных файловых операций:
1. Создание файла, не содержащего данных
2. Удаление файла и освобождение занятого им дискового пространства
3. Открытие файла перед использованием
4. Закрытие файла
5. Задание позиции в файле
6. Чтение данных из файла с текущей позиции
7. Запись данных в файл с текущей позиции
8. Получение сведений об атрибутах файла
9. Установка атрибутов файла
10. Переименование (перемещение) файла
Эти операции реализуются через механизм системных вызовов.
На заре компьютерной эры файл представлял собой стопку перфокарт, затем
для хранения файлов стали использоваться другие носители информации:
8
магнитные диски, ленты и прочие накопители. Всё возрастающие требования к
скорости доступа и надежности хранения файлов привели к необходимости
внедрения удаленных, «облачных», хранилищ файлов. При наличии сетевого
соединения доступ к ним возможен из любой точки и мира и с любого устройства,
мобильного или стационарного.
В таких системах в виде файлов хранятся текстовые документы, презентации,
таблицы, фотографии, фильмы, книги, аудиозаписи. Возможность оперативного
доступа и управления ими является необходимым условием для выполнения бизнеспроцессов. Всё это невозможно без использования систем управления контентом.
1.1.2 Контент-системы файлового хранения
Системы
управления
контентом
(CMS,
Content
Management
System)
представляют собой программное обеспечение для структурированного хранения,
предоставления и групповой работы c файлами.
Основные функции любой контент-системы: предоставление инструментов
для управления контентом, организация совместной работы с ним, обеспечение
навигации и поиска, разграничение прав пользователей.
В настоящее время существует множество разновидностей контент-систем,
направленных на решение самых разных задач работы с файлами: платформы для
управления
содержимым
веб-сайтов,
многофункциональные
системы,
предназначенные для корпоративного использования и управления электронным
документооборотом, файловые хранилища, предназначенные использования в
качестве личного архива, системы, предназначенные организации для совместной
работы небольших групп пользователей и некоторые другие.
Зачастую в контент-системах для хранения файлов используется виртуальная
файловая система (Virtual File System, VFS). Применение виртуальной файловой
системы позволяет абстрагироваться от особенностей конкретной реализации
файловой системы и обеспечить единообразной интерфейс для доступа к хранимым
данным.
9
В данной работе будут рассматриваться контент-системы, предназначенные
для обеспечения работы с файловым контентом
небольшой группы совместно
решающих какую-либо задачу пользователей.
1.1.3 Групповая работа в контент-системе
На
раннем
информационных
этапе
развития
технологий
вычислительной
было
техники
ориентировано
на
применение
увеличение
производительности отдельных сотрудников. С появлением телекоммуникационных
технологий акцент в применении информационных технологий сместился в сторону
помощи совместно работающим пользователям, а также организации в целом.[2]
В процессе решения каких-либо общих задач неизбежно возникает
необходимость совместной работы над файлами. Контент-системы обеспечивают
такую возможность, предоставляя средства для совместного редактирования файлов
и управления доступом к ним.
Совместная работа над документами означает, что над отдельным документом
или набором документов работают несколько человек. Они могут редактировать
документ одновременно или поочередно. В работу могут включаться и новые
пользователи, не знакомые с содержанием и структурой хранения существующего
контента, что порождает необходимость быстрого понимания содержания файла.
Возникает проблема семантики, понимания содержимого файла без его полного
изучения.
Эту
проблему
помогают
решить
расширенные
метаданные
–
структурированная дополнительная информация о файле, описывающая его
содержимое. Это может быть, к примеру, аннотация, кратко поясняющая, что за
информация находится в файле, или набор тегов, классифицирующих его тематику.
Так как число тегов может быть достаточно значительным, целесообразно
объединять их в категории.
Не следует путать расширенные метаданные с обычными, используемые на
уровне ОС – к примеру, датой и временем создания или размером файла.
10
Расширенные метаданные задаются пользователем при загрузке файла в контентсистему и служат для характеристики его содержания.
Кроме того, одним из способов решения проблемы семантики в файловом
хранении является использования дескриптивных имен, понятных для человека и
хранящих определенную информацию о его содержании. Обычно при создании
файл получает типовое, неинформативное имя, не позволяющего понять, для чего
он создан, без ознакомления с содержанием. Особенно остро такая проблема встает
при доступе к файлу из результатов поиска – несколько файлов со сходными
именами могут иметь принципиально разное содержание, в особенности, если они
созданы различными авторами. Так как без работы с файлами, созданными другими
пользователями, групповая работа невозможна, проблема именования в файловых
контент-системах занимает довольно важное место. Дескриптивным имена
являются её достаточно удовлетворительным решением. Понятное и в достаточной
мере описывающее содержимое файла имя позволяет значительно упростить
совместную работу с большим числом файлов.
Использование
расширенного
набора
метаданных
также
позволяет
существенно повысить качество поиска по файловому хранилищу. Совокупное
использованием полнотекстового поиска и поиска по метаданным позволяет найти
любой загруженный в систему и корректно проаннотированный файл, если известна
его тематика. К примеру, если пользователь системы знает только то, что искомый
файл был посвящен веб-разработке, соответствующий поисковый запрос вернет
корректный результат, так как при загрузке в систему файла автор должен был
присвоить ему такой тег или указать соответствующую информацию в описании.
1.1.4 Взаимодействие между пользователями контент-системы
Полноценная совместная работа невозможна без взаимодействия между
пользователями. Оно может осуществляться посредством текстовых сообщений,
голосовых сообщения или даже видеоконференций.
11
Как правило, совместно работающих пользователей объединяет работа над
общей задачей - проектом, научной статьей, совместной разработкой. У их
взаимодействия есть четко определенная цель, весь контент, с которым они
работают, создан в рамках достижения этой цели. Такую группу пользователей
можно называть рабочей группой.
В таких группах неизбежно возникает задача разделения прав и обязанностей
пользователей. В случае, когда группа состоит из одного пользователя, такую
группу можно назвать личным архивом и в ней не происходит группового
взаимодействия. В группе, состоящей из нескольких пользователей, обязательно
должен быть руководитель, отвечающий за поведение участников, модерирующий
выложенные файлы и следящий за соблюдением тематической направленности
группы.
Для управления всеми группами, существующими в контент-системе,
необходима роль администратора системы. В его обязанности входит удаление
устаревших и потерявших актуальность групп, а также одобрение или отклонение
заявок на создание новых групп.
Важным средством обеспечения взаимодействия пользователей внутри
рабочей группы может служить механизм журнала. В журнале группы должны
отображаются сведения о загруженных, удаленных и переименованных файлах и
папках, вступивших в группу пользователях. Кроме того, все пользователи могут
оставлять в таком журнале свои сообщения. Удаление записей из журнала
невозможно – таким образом, журнал является исключительно комментируемым, а
не редактируемым. Такой журнал позволил бы
быстро получить общее
представления об активности группы и ознакомиться с сообщениями других
пользователей.
1.1.5 Целевая контент-система С3
В основе целевой контент-системы С3, название которой расшифровывается
как «Содержимое, связь совместная работа» лежит несколько особенностей.
12
Первая из них – придание файлам семантики с помощью использования
расширенных метаданных. Они служит для идентификации файлов, оценки их
содержимого, а также поиска по файлам. Расширенные метаданные, в частности,
аннотация и набор тегов, задаются пользователем при загрузке файла в систему.
Вторая особенность – множественный, не привязанный к жесткой иерархии
каталогов доступ к хранимым файлам, реализуемый за счет гибкой системы поиска,
основанной на метаданных и механизме рабочих групп. Любой загруженный в
систему файл может быть получен разными путями – как через поиск (в том числе
по расширенным метаданным, например, тегам и аннотации), так и посредством
использования файлового менеджера. Каждая рабочая группа имеет иерархическую
структуру каталогов (причем сама группа считается корневым каталогом такой
иерархии)
Рабочая группа в С3 может быть создана любым пользователем, который
успешно прошел процедуру авторизации, введя свой адрес электронной почты и
пароль на странице входа в систему. После подтверждения создания группы
администратором системы пользователь становится её владельцем, а другие
пользователи получают возможность подавать заявки на вступление в эту группу.
Также владелец группы получает полномочия на добавление пользователей системы
в список участников группы. Тематика рабочей группы должна быть четко
определена. Информация о деятельности группы и хранящихся в ней файлах
указывается в описании. Кроме того, при создании группы пользователь
присваивает ей набор тегов, кратко описывающих её направленность. Группа может
быть открытой – доступной для чтения всем пользователям, в том числе и не
авторизированным в системе, или закрытой – доступной только вступившим в неё
пользователям.
Если группа полностью заброшена её участниками и потеряла
всякую актуальность, то администратор домена может сделать её скрытой – доступ
в такой группу невозможно, однако она не является необратимо удаленной и всегда
может вновь получить статус активной. Владелец группы отвечает за поведение её
участников и отвечает за содержание загруженных в группу файлов.
13
В систему могут загружать файлы любых типов. Просмотр реализуется
штатными средствами браузера, редактирование – путем выгрузки, изменения и
повторной загрузки файла. Если браузер не поддерживает просмотр данного типа
файла, осуществляется его сохранение в указанный пользователем каталог.
Возможности просмотра или редактирования файла определяются правами доступа
конкретного пользователя. Флаг доступа «чтение» дает право на просмотр и
выгрузку, флаг «запись» - на загрузку новых файлов и редактирование
существующих.
Контент-система С3 применима во всех сферах деятельности: может быть
создана группа для совместной работы над научным проектом, для индивидуальной
работы студента, для обмена тематическими материалами между коллегами по
работе.
1.2 Задачи работы
Была поставлена цель по разработке файлового менеджера для управления
файлами в целевой контент-системе. В соответствии с ней были поставлены
следующие задачи:
1. Разработка требований к функциональности управления файловым контентом в
рабочей группе
2. Разработка сценариев работы с файлами на основе сформулированных
требований
3. Реализация пользовательского интерфейса для работы с файлами
1.3 Обзор существующих решений
1.3.1 Существующие контент-системы
Перед началом разработки файлового менеджера необходимо сначала изучить
весь спектр существующих программных продуктов.
14
Услуги
по
хранению,
управлению и
групповой
работе
с файлами
предоставляются множеством сервисов. Каждый из них имеет ту или иную
реализацию файлового менеджера, отличающуюся от других в ряде аспектов. Во
многом особенности управления файловым контентом зависят от концепции,
заложенной в контент-систему. Некоторые из них представляют собой только лишь
файловое хранилище и являются альтернативой жесткому диску, в то время как
другие в той или иной степени ориентированы и на совместную работу
пользователей с загруженными файлами.
Для сравнения было отобраны следующие системы: Box, Dropbox, Google Disk
и OneDrive. Контент-системы, ориентированные на корпоративное использование
(такие как Alfresco или Microsoft Sharepoint) в рассмотрение включены не были, так
как их функциональность крайне избыточна и направлена скорее на решение
проблем документооборота предприятия, а не групповой работы над файловым
контентом как таковой.
Все принятые к рассмотрению системы являются коммерческими продуктами
– функциональность, предоставляемая бесплатно, серьёзно ограничена, а полная
версия требует оплаты за использование.
Общее сравнение хранилищ производилось по следующим критериям
1) Поддержка операционных систем
Наличие веб-клиента позволяет взаимодействовать с пользователем через браузер,
не привязываясь к конкретной платформе. Кроме того, это обеспечивает доступ к
контент-системе с мобильных устройств, что увеличивает оперативность доступа к
файлам. Однако большая часть контент-системе имеет и клиентское приложение,
расширяющее спектр возможностей веб-интерфейса. Это приложение является
платформозависимым
и
совместимо
только
с
определенным
перечнем
операционных систем.
2)
Объем доступного пространства для хранения файлов
Большой
объем
предоставляемого
пространства
расширяет
возможности
групповой работы, т.к. позволяет хранить весь необходимый пользователю перечень
15
файлов, не заботясь об высвобождении места за счет удаления потерявших
актуальность файлов.
3)
Ограничение на размер загружаемых файлов
Ограничение максимального размеров загружаемого файла в том или ином виде
присутствует во всех файловых хранилища. Это сокращает потенциальный перечень
загружаемых в систему файлов (например, объем видео- или аудиозаписей может
превышать указанный лимит), однако в большинстве случаев работа ведется с
файлами меньших размеров.
4) Управление доступом к файлам
Все контент-системы дают те или иные возможности для управления доступом
пользователей к файлам, разделяя возможности чтения и редактирования, а также
позволяя предоставляю доступ ко всей папке или к конкретному файлу.
5) Система поиска
Без возможности поиска по файловому контенту крайне затруднительно
полноценно использовать контент-систему. Поиск может быть реализован как и в
наиболее простом варианте поиска по имени файла, так и в виде поиска по
метаданным,
указанным
при
загрузке
файла.
Некоторые
контент-системы
поддерживают и полнотекстовый поиск.
16
Таблица 1 - Сравнение контент-систем.
Система
Критерии
сравнения
Box
Dropbox
Google
OneDrive
Disk
Поддерживаемые
Windows
Windows, Mac
ОС
, Mac
OS, iOS,
Mac
OS,
Android,
iOS,
OS, iOS,
Android,
BlackBerry,
Android,
Android,
Blackber
Linux, Kindle
Chromium
Windows
ry, iOS
Fire
Windows,
OS,
OS.
Windows
, Mac
Phone,
Xbox OS
Объем доступного
10
2+
пространства для
возможность
хранения файлов
расширения
15
7
10
2
+
+
(Гб)
Ограничение на
0.25
размер
Без
ограничений
загружаемых
файлов (Гб)
Управление
+
+
17
доступом к
файлам
Система поиска
+
+
+
+
Помимо общего сравнения контент-систем, следует рассмотреть более подробно
непосредственно средства обеспечения файлового менеджмента. Это необходимо
из-за особой специфики управления файлами в контент-системах групповой работы,
выражающейся, к примеру, в необходимости управлять версиями файлов или
задавать аннотацию к файлу.
Для сравнения файловых менеджеров были выбраны такие критерии:
1) Возможность одновременной загрузки нескольких файлов
2) Возможность перемещения файла из каталога в каталог
3) Обзор иерархии каталогов
4) Создание новых файлов
5) Редактирование существующих файлов
6) Загрузка файла путем перетаскивания в окно браузера
7) Возможность управления версиями файлов
8) Возможность аннотирования файла
9) Возможность подключения через протокол WebDAV
18
Табл. 2 - Сравнение файловых менеджеров контент-систем.
Система
Критерии сравнения
Box
Dropbox
Google
OneDrive
Disk
Одновременная загрузка
+
+
+
+
+
+
+
+
Обзор иерархии каталогов
-
-
+
-
Создание новых файлов
+
-
+
+
Редактирование существующих
+
-
+
+
+
+
+
+
+
-
+
-
нескольких файлов
Перемещение файла из каталога
в каталог
файлов
Загрузка файла
перетаскиванием в окно
браузера
Версионность файлов
19
Возможность аннотирования
-
-
-
-
Подключение через WebDAV
+
-
-
-
1.3.2 Box
Контент-система Box обеспечивает доступ к загруженным в хранилище
файлам как через доступный через браузер веб-интерфейс, так и посредством
клиентского приложения, доступного для Windows, Mac OS, Android, Blackberry, и
iOS.[1]
Рис 1. Интерфейс контент-системы Box
Данная система имеет широкий спектр возможностей для настройки уровней
доступа к файлам и папкам: разделяются возможности просмотра, редактирования и
выгрузки файлов. Как файл, так и каталог могут быть защищены паролем. В то же
время,
богатая
функциональность
управления
доступом
направлена
на
корпоративных пользователей и является избыточной и переусложненной для
персонального использования.
20
Интерфейс
файлового
менеджера
системы
Box
реализует
базовую
функциональность управления файлами хранилища: загрузку-выгрузку и удаление
файлов, перемещение, переименование, создание и удаление каталогов.
Обеспечивается возможность просмотра содержимого некоторых типов
файлов прямо из браузера. Присутствует возможность создания текстовых
документов непосредственно в хранилище.
В
числе
возможности
недостатков
файлового
Box
можно
указать
отсутствие
просмотра всей иерархии каталогов и подкаталогов, а также
невозможность задания описания при загрузке файла.
1.3.3 Dropbox
Dropbox – один из самых известных сервисов файлового хранения. Dropbox
обеспечивает работу с файлами через веб-интерфейс и клиентское приложение
(доступное для Windows, Mac OS, iOS, Android, BlackBerry, Linux и Kindle Fire). В
систему может быть загружен файл любого размера.
Рис. 2 Интерфейс контент-системы Dropbox
Доступный через веб-интерфейс файловый менеджер системы Dropbox
существенно упрощён по сравнению с клиентским приложением. Его особенностью
является невозможность редактирования загруженных документов, а также создания
нового файла прямо в хранилище, без загрузки извне.
21
Возможность аннотирования файлов отсутствует. Выполнение операции
“Undo”, выполняющей возврат к предыдущей версии файла, доступно только в
платной версии.
Загрузка файлов также возможно посредством использования электронной
почты – каждому хранилищу присваивается свой адрес. Все отправленный по этому
адресу файлы будет автоматически, без участия пользователя, загружены в
хранилище. Размер загружаемых файлов ограничен только пределом размера
хранилища. Предусмотрены механизмы автоматической синхронизации файла в
хранилище с файлом на диске.
Недостатком системы DropBox можно считать недостаточно гибкую систему
управления правами доступа, не позволяющую полноценно настраивать права
доступа конкретных пользователей
при совместной работой с общей папкой.
1.3.4 Google Disk.
Контент-система Google Disk возникла как развитие сервиса Google Docs,
предназначенного для работы с текстом, презентациями и таблицами.
Доступ к контент-системе может быть осуществлен через веб-интерфейс или
посредством
использования
клиентского
приложения,
доступного
для
операционных систем Windows, Mac OS, iOS, Android, а также разработанной
компание Google операционной системы Chromium.
Рис. 3 Интерфейс контент-системы Google Disk
22
С точки зрения файлового менеджмента, Google Disk на данный момент
является одной из самых привлекательных для пользователя систем хранения
файлов благодаря тщательно продуманному пользовательскому интерфейсу и
основанной на функциональности сервиса Google Docs системе создания и
редактирования файлов различных типов: текстовых документов, презентаций,
таблиц. Важной особенностью файлового менеджера системы Google Disk является
возможность
просмотра
иерархии
каталогов,
облегчающая
пользователю
ориентацию в структуре хранения.
В то же время, возможность указать для документов описание или аннотацию
отсутствует.
1.3.5 OneDrive
Контент-система OneDrive, ранее носившая название SkyDrive, разработана
компанией Microsoft. Средства для взаимодействия с хранилищем OneDrive
включены в ОС Windows 8 и позволяют работать с ним, как с одним из жестких
дисков компьютера.
Рис. 4 Интерфейс контент-системы OneDrive
Файловый менеджер контент-системы OneDrive обладает типичным для
такого рода систем набором функций: загрузка, выгрузка, удаление файлов.
Присутствует возможность редактирования и создания документов прямо в
хранилище, реализованной посредством использования Microsoft Office Online.
23
Оформление
пользовательского
интерфейса
выполнено
аналогично
используемому в операционной системе Windows 8 графическому интерфейсу
Metro, оптимизированному для использования с сенсорными устройствами ввода.
Возможность аннотирования отсутствует.
Клиентское приложение может быть поддерживает операционные системы
Windows, Mac OS, iOS, Android, Windows Phone. Кроме того, возможна установка
специальной версии приложения на консоль Xbox.
1.3.6 Выводы
В ходе разработки файлового менеджера для целевой системы основное
внимание будет уделяться системе Google Drive, так она предоставляет широкий
набор возможностей для групповой работы над файлами. Её интерфейс продуман и
позволяет пользователям организовать полноценный процесс совместной работы
файловым контентом.
В то же время, с точки зрения совместной работы Google Drive обладает
рядом
серьёзных
дополнительных
недостатков:
поиск
пользовательских
файлов
затруднен
метаданных,
из-за
затруднена
отсутствия
работа
с
дескриптивными именами. Отсутствует возможность аннотирования файлов.
1.4 Требования к работе с файлами
На основе проведенного анализа различных файловых менеджеров можно
сформулировать
ряд
функциональных
требований,
которые
необходимо
предъявлять к разрабатываемому для целевой контент-системы групповой работы
файловому менеджеру:
1. Файловый менеджер должен обеспечивать возможность загрузки в текущую
папку (в том числе множественной), выгрузки, переименования и удаления файла
2. Файловый менеджер должен обеспечивать возможность просмотра содержимого
файла с помощью средств браузера
24
3. Файловый менеджер должен обеспечивать возможность создания, удаления и
переименования папки
4. Файловый менеджер должен обеспечивать возможность указания расширенных
метаданных и тегов при загрузке файла
5. Файловый менеджер должен обеспечивать возможность редактирования
расширенных метаданных и тегов для файлов и папок
6. Файловый менеджер должен обеспечивать возможность редактирования
расширенных метаданных и тегов для текущей папки
7. Файловый менеджер должен обеспечивать возможность указания 6. расширенных
метаданных и тегов при создании папки
8. Файловый менеджер должен обеспечивать возможность управления правами
доступа к файлам и папкам
9. Файловый менеджер должен разграничивать возможности доступа к ресурсам в
соответствии с заданными правами.
10. Файловый менеджер должен отображать информацию о ресурсе: название,
аннотацию, имя владельца, размер, дату изменения.
11. Файловый менеджер должен обеспечивать поддержку дескриптивных имен
файлов.
Кроме того, были сформулированы и нефункциональные требования:
1. Ограничение объема загружаемых и хранимых в системе файлов
2. Корректная обработка ограничений сетевого характера, восстановление
файловых операций при сбоях.
1.5 Архитектура целевой контент-системы
Файловый менеджер является лишь одним из модулей целевой контентсистемы и его разработка невозможна без понимания всей архитектуры системы
25
Целевая контент-система С3 разделена на две подсистемы: C3-Storage
(хранилище файлов) и C3-Web (веб-портал, обеспечивающий взаимодействие с
пользователями).
Компоненты веб-слоя реализуют следующие возможности:
1.
User Interface - Пользовательский интерфейс, получает от пользователя
команды и возвращает ответы в виде html-страниц.
2.
ACL - Система управления доступом, отвечает за аутентификацию и
авторизацию пользователей, а так же за разграничение прав доступа к
ресурсам и группам.
3.
Work Group - Рабочие группы, обеспечивают организацию группового
взаимодействия пользователей и групповой работы с ресурсами хранилища.
Компоненты хранилища:
1.
REST API - отвечает за предоставление интерфейса доступа к ресурсам
файлового хранилища.
2.
Access
Library
-
система
управления
доступом,
отвечает
за
предоставление доступа С3-Web к ресурсам C3-Storage.
3. VFS - Виртуальная файловая система. Предоставляет другим компонентам
интерфейс для работы с хранимыми ресурсами и каталогами.
4.
Replication — механизм синхронизации содержимого нескольких копий
объекта. Процесс, под которым понимается копирование данных из одного
источника на другой (или на множество других) и наоборот.
При репликации изменения, сделанные в одной копии объекта, могут быть
распространены в другие копии.
5.
Search - поисковая система. Для полнотекстового поиска используется
библиотеку Apache Lucene. Apache Lucene - свободная библиотека для
полнотекстового поиска, написанная на Java. Достоинства библиотеки развитые возможности поиска, хорошая система построения и хранения
индекса, возможен параллельный поиск по множеству индексов с
26
объединением результатов, возможностью одновременного поиска и
обновления индекса. Сам индекс построен из сегментов.
6.
Berkeley DB (BDB) — высокопроизводительная встраиваемая система
управления базами данных, реализованная в виде библиотеки. BDB является
нереляционной базой данных — она хранит пары «ключ — значение»
Взаимодействие подсистем может осуществляться двумя способами:
1) Через механизм межпроцессного взаимодействия (IPC, Inter-Proccess
Communication). Его использование возможно только в том случае, если и
C3-Storage, и C3-Web запущены на одном сервере.
2) Посредством протокола HTTP. Этот способ является основным.
Рис 5. Архитектура контент-системы С3
27
Контент-система
С3
предоставляет
две
модели
хранения
данных:
одноуровневое хранение файлов с помощью файловой системы VFS и виртуальная
иерархия каталогов.
Основные модули С3 представлены на рисунке 6.
Контент-система С3
Ключ
c3-web
Программный
модуль
Зависимость
"использует"
c3-access-lib
c3-platform
tika-server
Рис. 6. Основные модули контент-системы С3
Табл. 3 - Описание модулей контент-системы С3
c3-web
Модуль, реализующий интерфейс пользователя, файловый
менеджер и функциональность, связанную с регистрацией
пользователей, управлением доступом, групповой работой и
взаимодействия между пользователями. Модуль представляет
собой веб-приложение на языке Scala с использованием
фреймворка Lift. Для хранения данных о пользователях,
группах и правах доступа используется база данных H2.
c3-platform
Модуль, реализующий функциональность хранения и поиска
ресурсов. Модуль представляет собой приложение на языке
Scala с использованием фреймворка Spring MVC.
c3-accesslib
tika-server
Библиотека,
предназначенная
для
доступа
к
функциональности модуля c3-platform.
Модуль, реализующий функциональность разбора файлов с
целью извлечения метаданных, которые затем используются
28
платформой для поиска ресурсов. Модуль представляет собой
Apache
tika-server
и
оболочку
для
доступа
к
его
функциональности по протоколу HTTP.
Веб-слой разработан на основе архитектурного шаблона MVC (model – view –
controller, модель – представление – контроллер), в соответствии с которым модель
данных
приложения,
пользовательский
интерфейс
и
взаимодействие
с
пользователем разделены на три отдельных компонента таким образом, чтобы
модификация одного из компонентов оказывала минимальное воздействие на
остальные.[5]
Модель (model) –предоставляет данные и методы работы c ними, реагирует на
запросы, изменяя своё состояние. Не содержит информации, как эти данные можно
визуализировать.
Представление (view, вид) – отвечает за отображение информации (визуализацию).
Контроллер (controller) – обеспечивает связь между пользователем и системой:
контролирует ввод данных пользователем и использует модель и представление для
реализации необходимой реакции.
Раздел 2
2.1 Разработка файлового менеджера
2.1.1 Алгоритмы взаимодействия системы с пользователем
Каждый пользователь контент-системы в ходе работы осуществляет ряд
действий, на которые система должна адекватно реагировать и
возвращать
соответствующий результат в случае успешного выполнения операции или
передавать пользователю диагностическое сообщение при возникновении ошибки.
29
Для моделирования таких алгоритмов взаимодействия пользователей с
системой используется унифицированный язык моделирования (UML). UML
пригоден для моделирования любых систем и позволяет графически отобразить все
необходимые процессы [4]. Для наглядного и доступного для понимания
представления этапов некой деятельности системы в языке UML используются
диаграммы деятельности.
Диаграмма деятельности (activity diagram) — диаграмма, на которой показано
разложение некоторой деятельности на её составные части. Под деятельностью
(activity)
понимается
спецификация
исполняемого
поведения
в
виде
последовательного и параллельного выполнения подчинённых элементов —
вложенных видов деятельности и отдельных действий (action), соединённых между
собой потоками, которые идут от выходов одного узла ко входам другого.
В ходе разработки файлового менеджера необходимо построить диаграммы
деятельности для следующих сценариев:
1. Загрузка файла в систему
2. Удаление файла из системы
3. Перемещение файла из папки в папку
4. Переименование файла
5. Редактирование метаданных файла
2.1.2 Загрузка файла в систему
Пользователь имеет право загрузить файл в указанную папку группы новый
файл, если ему предоставлено право на запись в эту папку. Загрузка происходит с
использованием модального окна, предоставляющего возможность выбора файла
для загрузки. Выбор для загрузки нескольких файлов также допустим – такой
способ загрузки называется множественной загрузкой и позволяет загрузить
большое число файлов без повторного открытия модального окна загрузки файлов.
Для каждого загружаемого файла необходимо указать краткое описание и набор
тегов.
30
В случае возникновение в ходе загрузки той или иной ошибки, пользователь
получает диагностическое сообщение. Одной из вероятных причин появления
ошибки может служить превышение максимального размера загружаемого файла –
он установлен в 100 Мб.
Диаграмма загрузки файла в систему представлена на рис. 6.
Рис.7 Диаграмма деятельность для операции загрузки файла
Согласно предъявляемым требованиям, был разработан прототип
пользовательского интерфейса для загрузки файлов. Он представлен на рис 7.
31
Рис.8 Интерфейс загрузки файлов
2.1.3 Создание новой папки
Пользователь имеет право создать новую папку в текущей папке, если у него есть
право на запись в эту папку. При создании необходимо указать описание папки,
отражающее её назначение, и набор тегов.
Диаграмма деятельности для создания новой папки представлена на рис. 8.
32
Рис.9 Диаграмма деятельность для операции создания папки
Согласно предъявляемым требованиям, был разработан прототип
пользовательского интерфейса для создания папки. Он представлен на рис 9.
33
Рис.10 Интерфейс создания новой папки
2.1.4 Удаление файла из системы
Пользователь имеет право удалить файл из папки, если в этой папке ему
предоставлено право на запись. Перед удалением файла система отображает окно
подтверждения,
чтобы
снизить
вероятность
случайного
удаления
файла
пользователем.
В случае возникновение в ходе удаления той или иной ошибки, пользователь
получает диагностическое сообщение.
Диаграмма удаления файла из системы представлена на рис. 10.
34
Рис.11 Диаграмма деятельность для операции удаления файла
Согласно предъявляемым требованиям, был разработан прототип
пользовательского интерфейса для удаления файлов. Он представлен на рис 11.
Рис.12 Интерфейс удаления файла
35
2.1.5 Перемещение файла из папки в папку
Пользователь имеет право переместить файл из папки в папку, если в папкеисточнике ему предоставлено право на чтение, а в целевой папке – право на запись.
В случае возникновение в ходе перемещения файл той или иной ошибки,
пользователь получает диагностическое сообщение.
Диаграмма перемещения файла представлена на рис. 12.
Рис.13 Диаграмма деятельность для операции перемещения файла
Перемещение файла осуществляется методом перетаскивания. Операция
перемещения папки выполняется аналогично.
36
2.1.6 Переименование файла
Пользователь имеет право переименовать файл, если ему предоставлено
право записи для этого файла.
Диаграмма переименования файла в систему представлена на рис. 14.
Рис.14 Диаграмма деятельность для операции переименования файла
Операция переименования папки выполняется аналогично.
Согласно
предъявляемым
требованиям,
был
разработан
прототип
пользовательского интерфейса для переименования файлов. Он представлен на рис
15.
37
Рис.15 Интерфейс переименования файла
2.1.7 Редактирование метаданных файла
Пользователь имеет право редактировать метаданные файла, если ему
предоставлено право записи для этого файла.
Диаграмма редактирования метаданных файла представлена на рис. 10.
38
Рис.16 Диаграмма деятельность для операции редактирования метаданных файла.
Операция редактирования метаданных папки выполняется аналогично
Согласно предъявляемым требованиям, был разработан прототип
пользовательского интерфейса для редактирования метаданных файлов. Он
представлен на рис 17.
39
Рис.17 Интерфейс редактирования метаданных файла
2.1.8 Инструментарий разработки
Целевая система разрабатывается на языке Scala - мультипарадигмальном
язык программирования, сочетающий возможности функционального и объектноориентированного принципов программирования.
Для разработки приложения использовался также веб-фреймворк Lift,
представляющем собой набор библиотек, написанных на языке Scala и
предоставляющий широкий диапазон возможностей для разработки вебприложений. Архитектурно Lift реализует шаблон MVC, разделяющий
представление, бизнес-логику и данные, на основе принципа «представление в
первую очередь», в отличие от более часто используемого принципа «контролер в
первую очередь». Это существенно влияет на процесс разработки.
Для автоматизации сборки проекты был использован фреймворк Apache
Maven, предоставляющий богатые возможности для конфигурирования и имеющий
возможность расширения с помощью широкого спектра плагинов.
2.1.8 Организация тестирования
Тестирование является одним из ключевых этапов процесса разработки
программного обеспечения. Тестирование целевой системы проводится
несколькими способами.
40
Сначала проверяется работоспособность отдельных изолированных модулей
– т.е. производится модульное тестирование. Идея модульного тестирования
заключается в том, что для каждого значимого метода создается тест, передающий в
тестируемый метод некоторый эталонный набор данных и оценивающий результат
на корректность. Модульное тестирование позволяет выявить возможные ошибки в
реализации отдельных частей программы. Кроме того, тесты выполняют роль
своеобразной документации к программного коду – каждый из них представляет
собой наглядный пример использования тестируемого метода.[6]
В то же время написание тестов требует довольно значительное количество
усилий программиста, что приводит к большой практической сложности полного
покрытия всех модулей программы тестами – трудозатраты на их разработку в
большинстве случаев попросту превысят пользу от более качественного
тестирования. Кроме того, если ожидаемое поведение модуля было изменено,
следует обновить и связанные с ними тесты, что также довольно трудоёмко.
Модульное тестирование не позволяет обнаружить все недостатки программы: к
примеру, оно бесполезно для оценки производительности, не позволяет выявить
ошибки, возникающие в процессе интеграции модулей в систему. Кроме того, не
исключены и ошибки в самих тестах, а это может привести к ложным
положительным результатам, не позволяющих выявить некорректное поведение
модуля. По этим причинам модульное тестирование, как правило, выполняется в
совокупности с другими видами тестирования.
Важным этапом процесса тестирования осуществляется интеграционное
тестирование, т.е. проверка работоспособности модуля при взаимодействии с
остальными компонентами системы. Процесс интеграционного тестирования
предполагает группировку модулей в множества и выполнение над ними тестов,
оценивающих корректность или некорректность совместной работы этого набора
модулей. Целью интеграционного тестирования является проверка соответствия
тестируемого набора модулей выработанным требованиям. Этот вид тестирования
41
позволяет выявить дефекты, связанные с ошибками в реализации взаимодействия
между модулями, проверить корректность функционирования системы в целом.
Крайне важно уделять внимание регрессионному тестированию.
Регрессионное тестирование направлено на обнаружение ошибок в уже
протестированных модулях и участках кода. Такие ошибки возникает из-за
вносимых в программный код изменений и исправлений. К примеру, правка одной
ошибки может повлечь за собой появление другой. Задача регрессионного
тестирования, как правило, решается за счет регулярного проведения модульных и
интеграционных тестов. Повторное тестирование целесообразно проводить после
каждой модификации системы.
2.2 Документирование
2.2.1 Документация разработчика
Документация разработчика включает в себя исходный код программы,
комментарии к нему и подробное описание архитектуры. Документирование
исходного кода может включать в себя описание классов, методов, передаваемых
параметров и возвращаемых значений. Также могут поясняться неочевидные
участки кода внутри методов. Комментарии к коду не должны быть тривиальными и
описывать назначение конструкций языка. Документация к исходному кода должна
позволять разработчику оценить назначение каждого участка кода и разъяснять ему
подробности реализации алгоритмов.
Для документирования исходного кода, написанного на языке
программирования Scala, используется входящий в состав компилятора модуль
Scaladoc. Он позволяет автоматически генерировать структурированную
документацию к программе на основе комментариев к исходному коду.
Пример документированного кода, реализующего управление загруженными в
систему файлами, приведен в приложении 1.
42
2.2.2 Эксплуатационная документация
Эксплуатационная документация включает в себя документация по
развертыванию, документацию по сопровождению системы и документацию
пользователя.
Документация по развертыванию определяет требования к аппаратному и
программному обеспечению среды, необходимые и достаточные для корректного
функционирования системы, задает порядок действия, необходимых для
полноценного развертывания и, как правило, дает перечень решений часто
возникающих проблем.
Документация по сопровождению предназначена для администраторов
системы. Она разъясняет, как решать задачи обеспечения полноценного,
бессбойного функционирования системы – к примеру, регулярное создание
резервных копий, восстановление данных из сохраненной копии. Кроме того,
документация по сопровождению может использоваться разработчиком,
участвующем в сопровождении системы, для самоконтроля.
Документация пользователя необходима для полноценного освоения
непосредственным пользователем системы всего спектра её возможностей. Под
«пользователем» в данном контексте понимается именно конечный пользователь,
использующий целевую систему для решения стоящих перед ним задач. После
ознакомление с этой документацией пользователь должен иметь возможность
самостоятельно использовать все пользовательские возможности системы. Как
правило, документация пользователя содержит подробное описание использования
значимых с точки зрения пользователя функций системы или отдельного её
модуля. Также документация пользователя может включать часто задаваемые
вопросы.
Пример документации пользователя для файлового менеджера приведен в
приложении 2.
43
2.3 Тестовые материалы
В процессе тестирования был разработан набор тестовых случаев (test case).
Они представляют собой последовательности действий, необходимые для проверки
соответствия функционирования конкретной функции заданным требованиям.
Тестовый случай разрабатывается в соответствии со структурой «Действие –
ожидаемый результат – результат теста». Набор действия разделяется на
предусловие – те шаги, которые необходимы для приведения системы в исходное
состояние, позволяющее провести тест, непосредственно шаги теста и постусловие,
служащее для окончательной оценки корректности результата. Пример тестового
случая, разработанного в соответствии с описанной структурой и представленного в
табличном виде, приведен на рис. 18.
44
Рис.18 Пример тестового случая
Тестовые случаи могут описывать как положительное поведение системы – к
примеру, успешную загрузку файла, так и отрицательное – отображение
уведомления об ошибке при, например, превышении разрешенного размера файла.
В этом случае успешным результатом будет считаться не загруженный файл, а как
раз таки сообщение пользователю об ошибке. Таким образом, для полного описания
поведения какой-либо операции требуется разработка большого числа тестовых
случаев
Как правило, на основе тестовых случаев разрабатываются интеграционные и
модульные тесты. Это обусловлено сходством их структуры.
Заключение
В ходе работы были решены следующие задачи:
1. Определены требования к функциональности управления файловым контентом в
рабочей группе
2. На их основе разработаны и программно реализованы сценарии работы с
файлами.
3. Разработан пользовательский интерфейс для работы с файлами.
4. Выполнено тестирование и разработка документации
Ссылочные документы
1. Введение в операционные системы [Электронный ресурс] / Режим доступа:
http://cs.mipt.ru/docs/courses/osstud/os.html
2.
OneDrive, Dropbox, Google Drive, and Box: Which cloud storage service is right for
you? [Электронный ресурс] / Режим доступа: http://www.cnet.com/news/onedrivedropbox-google-drive-and-box-which-cloud-storage-service-is-right-for-you/
3. Шон Б.Е. Компьютерные средства коллективной работы в сети [Текст] /
Информационные технологии в бизнесе. Бизнес-класс / Санкт-Петербург, 2002.
45
4. Арлоу Д., Нейштадт И. UML 2 и Унифицированный процесс. Практический
объектно-орие нтированный анализ и проектирование, 2-е издание [Текст] /
Санкт-Петербург, 2007.
5. Обобщённый Model-View-Controller [Электронный ресурс] / Режим доступа:
http://rsdn.ru/article/patterns/generic-mvc.xml
6. Roy Osherove, The Art of Unit Testing [Текст] / Amazon, 2009
Приложение 1.
Фрагмент программного кода модуля, отвечающего за загрузку файлов.
/**
* @author Nikitin.N
* @define shall provide a resource link
* @version 1.0
*/
class GroupFileUpload(group: Group, currentPath: String) {
val c3 = inject[C3System].open_!
val logger = Logger(classOf[GroupFileUpload])
val fullPath = group.baseFilePath + currentPath
/**
* @define upload files from form to path
* @param form NodeSeq
* @return NodeSeq
*/
def fileUploadForm(form: NodeSeq): NodeSeq = {
var fileHolder: Box[FileParamHolder] = Empty
def handleFile() = {
46
fileHolder.map { holder =>
uploadFile(holder,
uploadFileToPath(URIUtil.decode(fullPath,
"UTF-8"),
holder.fileName))
Alert("File is " + holder.fileName + " uploaded to path " + currentPath)
} openOr {
Alert("Upload failed.")
}
}
val bindForm =
"type=file" #> fileUpload((fph) => fileHolder = Full(fph)) &
"type=submit" #> ajaxSubmit("Submit", handleFile _)
ajaxForm(
bindForm(form))
}
/**
* @define upload file
* @param fph FileParamHolder
* @param Array[Byte], Map[String, String] data and metadata
* @return Unit
*/
private def uploadFile(fph: FileParamHolder, uploadMethod: (Array[Byte], Map[String,
String]) => Unit) = {
logger.debug("Got a file " + fph.fileName)
val mimeType: String = new MimetypesFileTypeMap().getContentType(fph.fileName)
try {
47
uploadMethod(fph.file, Map("content.type" -> mimeType))
} catch {
case e: C3AccessException => {
S.error(e.toString)
}
}
}
/**
* @define create file in path
* @param path String path to save
* @param name String file name
* @return data and metadata
*/
def uploadFileToPath(path: String, name: String)(data: Array[Byte], metadata:
Map[String, String]) {
c3.getFile("/" + path).asDirectory.createFile(name, metadata, DataStream(data))
}
}
Приложение 2
Руководство пользователя файлового менеджера целевой контент-системы
Перед началом использования файлового менеджера необходимо выбрать
одну из доступных пользователю в зависимости от его прав рабочих групп и
перейти в её корневой каталог. Затем возможны следующие сценарии управления
файлами:
1) Загрузка файла
Перейти в каталог, в который необходимо загрузить файл. Убедиться, что
права доступа для этого каталога разрешают запись. Нажать на кнопку «Add file», в
48
открывшемся модальном окне выбрать требуемые для загрузки файлы, ввести
описание и набор тегов для каждого файла. Для графических файлов будут
отображены миниатюры предпросмотра.
Для начала загрузки каждого из файлов требуется нажать кнопку «Start».
Отсутствие кнопки Start для какого-либо файла означает, что для него не указано
описание.
В случае успешной загрузки всех файлов модельное окно следует закрыть, в
противном случае – повторить загрузку файлов, для которых произошел сбой. При
попытке загрузки файла, размер которого превышает максимально допустимый,
пользователь получит соответствующее уведомление.
2) Удаление файла
Удаление файла может быть осуществлено двумя способами.
Первый из них – групповое удаление. В текущем каталоге осуществляется
выбор одного или нескольких удаляемых файлов с помощью установки флажков
для каждого из них. Пользователь должен нажать на пиктограмму операции
удаления, а затем подтвердить удаление в появившемся модальном окне.
Второй способ – индивидуальное удаление. Для его использования
необходимо перейти к карточке файла, затем нажать кнопку «Delete», затем
подтвердить удаление.
3) Переименование файла
Для переименования файла необходимо перейти к карточке файла, нажать на
имя файла, в появившемся модальном окне изменить текущее имя файла, затем
подтвердить изменение
4) Редактирование метаданных файла
Для редактирования метаданных файла необходимо перейти к карточке файла,
развернуть перечень метаданных, выбрать редактируемое значение, изменить его и
подтвердить изменение.
5) Просмотр/сохранение файла
Для просмотра файла необходимо перейти к карточке файла и нажать кнопку
49
Show. В случае невозможности просмотра файла средствами используемого
браузера файл будет сохранен на диск. Также сохранить файл возможно с помощью
кнопки Download.
Глоссарий
1. Расширенные метаданные – дополнительные набор структурированных данных,
определяющие семантику файла.
2. Дескриптивные имена файлов – длинные имена файлов, описывающие их
содержание в понятном пользователю формате.
3. Аннотирование – указание для документа краткого описание, позволяющее
получить представление о его содержании.
4. Тег – ключевое слово, характеризующее содержимое текста.
5. Рабочая группа - один или более пользователей, размещающие файлы в системе и
работающие совместно над конкретной общей задачей.
6. Конечный пользователь - человек, использующий систему для решения стоящих
перед ним задач.
50
Download