4) выполнение анализа раздела, выбранного пользователем, на предмет необходимости выполнения дефрагментации данного раздела. В данной структуре реализован процесс выполнения анализа раздела на предмет необходимости выполнения дефрагментации данного раздела. Работа данного программного модуля базируется на использовании блока обработки исключений (try… except…), ключевых слов (логических переменных True and False), операторов цикла (for… in…), операторов сравнения (if), методов list (осуществляет создание списка), system (осуществляет выполнение системной команды), append (осуществляет добавление элемента в конец списка), метода конкатенации, split (преобразует строку в список слов), join (объединяет список в строку с учетом заданного разделителя), а также метода конкатенации.
5) выполнение дефрагментации раздела, выбранного пользователем. В данной структуре реализован процесс выполнения дефрагментации раздела, указанного пользователем. Работа данного программного модуля базируется на использовании блока обработки исключений (try… except…), ключевых слов (логических переменных True and False), операторов цикла (for… in…), операторов сравнения (if), методов list (осуществляет создание списка), system (осуществляет выполнение системной команды), append (осуществляет добавление элемента в конец списка), метода конкатенации, split (преобразует строку в список слов), join (объединяет список в строку с учетом заданного разделителя), а также метода конкатенации.
6) получение текущего времени. В данной структуре реализован процесс получения текущего времени и даты выполнения дефрагментации или анализа выбранного раздела. Работа данного программного модуля базируется на использовании методов localtime (преобразует время, выраженное в секундах с начала эпохи в struct_time) и метода strftime (преобразует кортеж или struct_time в строку по указанному формату).
7) блок работы с пользователем, вывод полученных данных на экран. В данной структуре реализован весь процесс взаимодействия с пользователем программы, осуществляется выбор им раздела диска, для которого необходимо провести анализ или фрагментацию, а также реализовано создание лог-файлов (отчетов по выполненной работе). Работа данного программного модуля базируется на использовании ключевых слов (логических переменных True and False), операторов цикла (for… in…), операторов сравнения (if), методов system (осуществляет выполнение системной команды), open (открывает (при необходимости создает) файл для чтения), close (осуществляет закрытие файла), print (осуществляет вывод текстовой информации на экран), input (осуществляет получение данных, введенных пользователем с клавиатуры), а также метода конкатенации.
3. Блок-схема работы программы
Работа программы дефрагментации может быть представлена в виде блок-схемы (диаграмма действий языка UML), которая реализуется как последовательность действий, выполняемых пользователем, и ответов, которые он получает как результат взаимодействия с программой.
Открыв программу дефрагментации «Defragmentation Utility» (файл организации проектов PyCharm Community с расширением.py) в среде разработки PyCharm Community, пользователь осуществляет запуск окна консольного приложения. Этот процесс реализован в блок-схеме как действие «Открыть файл.py».
В загруженном окне пользователю предлагается список доступных разделов, а также сведения об имени найденного раздела, его размере, типе, состоянии, типе файловой системы. Описание данного действия на языке UML выглядит как блок «Получение информации о разделах».
Далее программа предлагает пользователю ввести ключ. Возможны три варианта: A - анализ раздела, D - дефрагментация раздела, Exit - выход из программы, ее завершение. Описание данного действия на языке UML выглядит как блок «Ввод ключа».
Далее программа осуществляет проверку и обработку введенного пользователем ключа. На первом этапе программа оценивает, желает ли пользователь выполнить анализ раздела на предмет необходимости выполнения дефрагментации. Описание данного действия на языке UML выглядит как блок условия «Ключ A?», выраженный в вопросной форме.
В зависимости от результата проверки условия («Да» или «Нет») осуществляется выбор одного из альтернативных путей работы алгоритма. Если пользователь желает выполнить анализ доступного раздела («Да»), программа предлагает ему выбрать один из доступных разделов. Данное действие на языке UML реализуется как прохождение блока «Выбор раздела».
Если имя раздела введено корректно, программа осуществляет анализ выбранного раздела на предмет необходимости дефрагментации. Описание данного действия на языке UML выглядит как блок «Анализ».
Далее программа предлагает пользователю вывести на экран отчет о деталях проведения анализа и его результатах. Описание данного действия на языке UML выглядит как блок условия «Печатать отчет?», выраженный в вопросной форме.
В зависимости от результата проверки условия («Да» или «Нет») осуществляется выбор одного из альтернативных путей работы алгоритма. Если пользователь решил вывести содержимое отчета на экран («Да»), программа отобразит на экране детали отчета. Данное действие на языке UML реализуется как прохождение блока «Вывод отчета на экран».
Если пользователь решил не выводить содержимое отчета на экран («Нет»), программа предложит пользователю вновь выбрать ключ. Данное действие на языке UML реализуется как повторное прохождение блока «Ввод ключа».
На втором этапе программа оценивает, желает ли пользователь выполнить дефрагментацию раздела. Описание данного действия на языке UML выглядит как блок условия «Ключ D?», выраженный в вопросной форме.
В зависимости от результата проверки условия («Да» или «Нет») осуществляется выбор одного из альтернативных путей работы алгоритма. Если пользователь желает выполнить дефрагментацию раздела («Да»), программа предлагает ему выбрать один из доступных разделов. Данное действие на языке UML реализуется как прохождение блока «Выбор раздела».
Если имя раздела введено корректно, программа осуществляет дефрагментацию выбранного раздела. Описание данного действия на языке UML выглядит как блок «Дефрагментация».
Далее программа предлагает пользователю вывести на экран отчет о деталях проведения дефрагментации и ее результатах. Описание данного действия на языке UML выглядит как блок условия «Печатать отчет?», выраженный в вопросной форме.
В зависимости от результата проверки условия («Да» или «Нет») осуществляется выбор одного из альтернативных путей работы алгоритма. Если пользователь решил вывести содержимое отчета на экран («Да»), программа отобразит на экране детали отчета. Данное действие на языке UML реализуется как прохождение блока «Вывод отчета на экран».
Если пользователь решил не выводить содержимое отчета на экран («Нет»), программа предложит пользователю вновь выбрать ключ. Данное действие на языке UML реализуется как повторное прохождение блока «Ввод ключа».
На третьем этапе программа оценивает, желает ли пользователь продолжить работу с программой. Описание данного действия на языке UML выглядит как блок условия «Ключ Exit?», выраженный в вопросной форме.
В зависимости от результата проверки условия («Да» или «Нет») осуществляется выбор одного из альтернативных путей работы алгоритма. Если пользователь желает продолжить работать с программой («Да»), программа предлагает ему выбрать ключ. Данное действие на языке UML реализуется как повторное прохождение блока «Ввод ключа».
Если пользователь не желает работать с программой, она закрывается. Описание данного действия на языке UML выглядит как блок «Конец». Работа программы, а, следовательно, и алгоритма, завершена.
Блок-схема работы программы дефрагментации представлена ниже (рис. 3.1).
Рис. 3.1. Блок-схема программы.
4. Руководство пользователя
4.1 Общая информация
Программа дефрагментации «Defragmentation Utility» создана в среде разработки PyCharm Community на языке программирования Python. Реализована данная программа в качестве консольного приложения. Для дальнейшего использования данного приложения необходимо открыть файл организации проектов PyCharm Community с расширением.py.
Язык интерфейса программы - английский.
4.2 Руководство пользователя
Открыв программу дефрагментации «Defragmentation Utility» (файл организации проектов PyCharm Community с расширением.py) в среде разработки PyCharm Community, пользователь осуществляет запуск окна консольного приложения.
В дизайне загруженного окна наблюдается название консольного приложения, отображающее смысл работы программы - «Defragmentation Utility» («Утилита дефрагментации»). Здесь же пользователю предлагается список доступных разделов «Existing drives» («Доступные разделы») с краткой информацией о них, а также предложение ввести ключ. Возможны три варианта: A - анализ разделов («analyze drives»), D - дефрагментация разделов («defragment drives»), Exit - выход из программы («exit utility») (рис. 4.1).
Рис.4.1. Список доступных разделов и ввод ключа.
Далее программа осуществляет проверку и обработку введенного пользователем ключа. Если пользователь решил провести анализ выбранного раздела на предмет необходимости выполнения дефрагментации, т.е. ввел ключ A, программа предложит ему выбрать разделы, для которых необходимо провести анализ - «Match drives by the comma» («Перечислите разделы, разделяя их запятой»). Также программой предусмотрена возможность проведения анализа для всех доступных разделов сразу. Для этого необходимо ввести в соответствующем поле ключ «ALL» («Все») (рис. 4.2).
Рис.4.2. Выбор раздела для анализа.
Далее, выбрав требующий анализа раздел, пользователю предлагаются детали и результат выполнения анализа раздела: «Starting analysis drives:» («Начало анализа диска:»), «Please, wait. It can take a few minutes.» («Пожалуйста, подождите. Это может занять несколько минут.»), «Analysis successful!» («Анализ проведен успешно!»).
Затем пользователю предлагается путь, где он может найти файл с отчетом о проведенном анализе - «Log file:» («Файл с отчетом: »). Также имеется возможность вывести содержимое файла - отчета на экран - «Print log file?» («Вывести на экран файл - отчет?»)
Рис.4.3. Детали проведения анализа.
Если пользователь решит вывести содержимое файла-отчета на экран, т.е. введет ключ «Y», программа отобразит подробные детали анализа и его результат (рис. 4.4).
Рис.4.4. Результат анализа выбранного раздела.
Затем пользователю предлагается нажать кнопку Enter для дальнейшей работы с программой.
Если пользователь решил провести дефрагментацию, т.е. ввел ключ D, программа предложит ему выбрать разделы, для которых ее необходимо провести - «Match drives by the comma» («Перечислите разделы, разделяя их запятой»). Также программой предусмотрена возможность проведения дефрагментации для всех доступных разделов сразу. Для этого необходимо ввести в соответствующем поле ключ «ALL» («Все») (рис. 4.5).
Рис.4.5. Выбор раздела для дефрагментации.
Далее, выбрав требующий дефрагментации раздел, пользователю предлагаются детали и результат выполнения дефрагментации раздела: «Starting defragmentation drives:» («Начало дефрагментации диска:»), «Please, wait. It can take a few minutes.» («Пожалуйста, подождите. Это может занять несколько минут.»), «Defragmentation successful!» («Дефрагментация проведена успешно!»).
Затем пользователю предлагается путь, где он может найти файл с отчетом о проведенной дефрагментации - «Log file:» («Файл с отчетом: »). Также имеется возможность вывести содержимое файла - отчета на экран - «Print log file?» («Вывести на экран файл - отчет?») (рис. 4.6).
Рис.4.6. Детали проведения дефрагментации.
Если пользователь решит вывести содержимое файла-отчета на экран, т.е. введет ключ «Y», программа отобразит подробные детали дефрагментации и ее результат (рис. 4.7).
Рис.4.7. Результат дефрагментации выбранного раздела.
Затем пользователю предлагается нажать кнопку Enter для дальнейшей работы с программой.
Также программа предусматривает возможность проверки корректности введенного ключа. Если параметр, введенный пользователем, будет некорректным, программа сообщит об ошибке - «Wrong parametr» («Неверный параметр»).
Если на этом пользователь решит окончить работу с программой, ему следует ввести ключ EXIT. В этом случае программа завершит свою работу.
По завершении работы с программой пользователь закрывает консольное приложение.
Программный код утилиты дефрагментации «Defragmentation Utility» находится в Приложении.
Заключение
Век развития информационных технологий характеризуется рядом проблем, решение которых неразрывно связано с решением проблем быстродействия в компьютерных системах. В связи с этим, разработка утилиты дефрагментации - небольшой шаг вперед в этом направлении.
В ходе выполнения данной работы я изучил основы файловой системы, принципы, на которых она базируется, ее типы, основы дефрагментации, а также создал в среде разработки PyCharm Community утилиту анализа и дефрагментации разделов жесткого диска. Разработанная программа имеет следующий функционал и способна выполнять такие задачи, как: