Разработка и сопровождение приложений на базе операционной системы Android

  • Вид работы:
    Дипломная (ВКР)
  • Предмет:
    Информационное обеспечение, программирование
  • Язык:
    Русский
    ,
    Формат файла:
    MS Word
    1,29 Мб
  • Опубликовано:
    2015-07-10
Вы можете узнать стоимость помощи в написании студенческой работы.
Помощь в написании работы, которую точно примут!

Разработка и сопровождение приложений на базе операционной системы Android

Содержание

 

Введение

1. Анализ информации и постановка задачи

1.1 Общие характеристики операционной системы Android

1.1.1 Создание и развитие Android

1.1.2 Анализ Dalvik VM

1.1.3 Сравнение Android и Java ME

1.1.4 Программный стек Android

1.2 Постановка задачи

2. Разработка принципов работы приложения

2.1 Комплект для разработки приложений Android SDK

2.1.1 Эмулятор Android

2.1.2 Компоненты пользовательского интерфейса Android

2.1.3 Пакеты, входящие в состав Android SDK

2.2 Сравнительный анализ файловых менеджеров для Android

2.3 Разработка структуры приложения

3. Разработка программного обеспечения

3.1 Графический интерфейс пользователя

3.1.1 Файл разметки main. xml

3.1.2 Файл меню опций icon_menu_for_main. xml

3.1.3 Файл разметки navigation. xml

3.1.4 Файл меню опций icon_menu_for_navigation. xml

3.1.5 Файл разметки элемента списка row. xml

3.2 MainActivity. Java

3.3 NavigationActivity. java

3.4 ArrayAdapterForList. java

3.5 Файл манифеста AndoidManifest. xml

3.6 Работа с приложением

4. Расчет стоимости программного обеспечения

4.1 Основные положения расчета стоимости программного обеспечения

4.2 Исходные данные

4.3 Определение объема программного обеспечения

4.4 Расчет трудоемкости ПО

4.5 Расчет заработной платы разработчиков ПО

4.6 Расчет отчислений, налогов и затрат

4.7 Расчет себестоимости, отпускной цены и прибыли

5. Требования к организации рабочего места инженера-программиста

5.1 Анализ воздействия производственных факторов на рабочем месте инженера-программиста

5.2 Гигиенические требования к организации рабочего места инженера-программиста

Заключение

Список использованных источников

Приложения

Введение

Компьютеры становятся все более "персональными", возможности доступа к ним в любое время и из любого места все время расширяются. В авангарде этого процесса находятся мобильные устройства, которые трансформируются в компьютерные платформы. Мобильные телефоны уже давно используются не только для разговоров - с их помощью можно за определенный период времени передать данные и видео. Мобильные устройства стали выполнять такой широкий спектр компьютерных задач общего профиля, что именно такие устройства могут стать новым поколением персональных компьютеров (ПК). Кроме того, даже ожидается, что некоторые производители традиционных моделей ПК - в частности, ASUS, HP и Dell - будут делать устройства, многие конструктивные параметры которых будут основаны на ОС Android. Фронт, на котором разворачивается борьба между операционными системами, вычислительными платформами, языками программирования и средами разработки, смещается в сторону мобильных устройств.

Скоро в IT-индустрии ожидается быстрое наращивание темпов и объемов программирования для мобильных устройств, так как у все большего количества приложений появляются мобильные аналоги.

Тот факт, что выделенные устройства, такие как мобильные телефоны, станут в один ряд с другими маститыми платформами общего назначения очевиден. Эта новая тенденция открывает доступ к мобильным устройствам для традиционных языков программирования, благодаря чему диапазон применения мобильных приложений и их доля на рынке растут.

Таким образом, актуальность темы дипломного проекта очевидна. Ближайшее время разработка и сопровождение приложений на базе операционной системы Android будут наиболее востребованы на рынке программного обеспечения.

приложение интернет android файл

В дипломном проекте рассматривается пример разработки приложения на основе создания менеджера файлов. Очевидно, что целью проекта было создание файлового менеджера, который позволит получать доступ к файлам, находящимся в "облачном хранилище" - web-сервис, позволяющий пользователям хранить свои данные в сети Интернет, а также изучение операционной системы Android, принципов создания приложений при помощи Software Development Kit (SDK). Для реализации цели необходимо также проанализировать характеристики существующих файловых менеджеров.

1. Анализ информации и постановка задачи


Анализ информации включает в себя изучение собственно операционной системы Android, а именно истории развития, анализ используемой виртуальной машины Dalvik Virtual Machine, сравнение Android с Java Micro Edition и рассмотрение программного стека операционной системы.

 

1.1 Общие характеристики операционной системы Android


Платформа Android реализует идею адаптации программ общего назначения к мобильным устройствам. Это многосторонняя платформа, представляющая собой программный стек операционной системы на основе Linux, предназначенный для управления устройствами, памятью и процессами. В библиотеках Android содержатся функции, связанные с телефонией, видео, графикой, программированием пользовательских интерфейсов и некоторыми другими возможностями мобильного устройства.

Комплект Android SDK поддерживает большинство функций платформы Java Standard Edition (Java SE), кроме абстрактного оконного интерфейса (Abstract Window Toolkit, AWT) и Swing. Вместо AWT и Swing в Android применяется собственный расширенный современный фреймворк пользовательского интерфейса. Поскольку вы пишете приложения на Java, вам может понадобиться виртуальная машина Java (Java Virtual Machine, JVM), которая отвечает за интерпретацию исполняемого байт-кода Java. Обычно JVM обеспечивает необходимую оптимизацию, чтобы помочь Java достичь уровней производительности, сравнимых с аналогичными уровнями транслируемых языков - таких как С и C++. В Android предлагается собственный оптимизированный вариант JVM для исполнения скомпилированных файлов классов Java. Это делается, чтобы преодолеть ограничения, которые свойственны для мобильных устройств, в частности связанные с памятью, скоростью работы процессора и мощностью. Эта виртуальная машина называется Dalvik VM.

Понятность и простота языка Java, усиленная обширной библиотекой классов Android, превращает Android в конкурентоспособную платформу для написания программ.

На рисунке 1 дано схематическое представление программного стека Android.

Рисунок 1.1 - Схематическое представление программного стека Android

1.1.1 Создание и развитие Android

В мобильных телефонах используется целый ряд операционных систем - например, Symbian OS, Microsoft Windows Mobile, Mobile Linux, iPhone OS (на базе Mac OS X), Moblin (от Intel) и большое количество других патентованных операционных систем. Но еще ни одна из ОС не стала стандартом де-факто. Современные интерфейсы прикладного программирования (API) и среды для разработки мобильных приложений имеют слишком много ограничений и сильно уступают аналогичным фреймворкам для локальных компьютеров. Для платформы Android характерны открытость и доступность, ее код распространяется свободно, а фреймворк разработки отличается высоким техническим уровнем.приобрела стартап Android Inc. в 2005 году, чтобы приступить к разработке платформы Android (рисунок 1.2). Ведущими фигурами в Android Inc. были Энди Рубин, Рич Майнер, Ник Сиэрс и Крис Уайт.

Рисунок 1.2 - Хронология развития Android

В конце 2007 года группа лидирующих компаний, работающих в области мобильной связи, сплотилась вокруг платформы Android, сформировав Open Handset Alliance. Некоторыми из наиболее известных членов альянса являются: Sprint Nextel, T-Mobile, Motorola, Samsung, Sony Ericsson, Toshiba, Vodafone, Google, Intel, Texas Instruments.

Одной из целей альянса является ускоренное внедрение инноваций и улучшение отклика на нужды потребителя - и первым значительным результатом работы альянса стала платформа Android. Она была разработана для удовлетворения потребностей операторов мобильной связи, производителей мобильных устройств и разработчиков программ. Члены альянса приняли решение предоставить значительный объем интеллектуальной собственности по свободной лицензии Apache, версия 2.0.

Сначала инструментарий Android SDK был выпущен в ноябре 2007 года как предварительный вариант. В сентябре 2008 компания Т-Mobile анонсировала выход Т-Mobile G1, первого смартфона, работающего на платформе Android. Всего через несколько дней Google анонсировала выход Android SDK Release Candidate 1.0. В октябре 2008 года Google открыла доступ к исходному коду платформы Android в соответствии со свободной лицензией Apache.

Когда Android вышла в свет, одной из основных целей для ее архитектуры было обеспечить возможность взаимодействия приложений и использования компонентов одних приложений другими. Такое повторное применение касалось не только служб, но и данных, а также пользовательского интерфейса (UI). В результате платформа Android включила в себя некоторые архитектурные характеристики, которые позволили воплотить такую открытость в реальности.быстро привлекла к себе внимание, так как в ней имелись возможности, позволявшие в полной мере использовать модель облачных вычислений, которые применяются на web-ресурсах, и этот опыт был усовершенствован при помощи локальных хранилищ данных, расположенных на самом мобильном устройстве. Поддержка реляционной базы данных на мобильных устройствах с Android также посодействовала быстрому признанию этой операционной системы.

В начале 2008 года Google выпустила мобильное устройство под названием Android Dev Phone 1, на котором можно было использовать программы Android, находясь вне зоны действия какой-либо мобильной сети. Это устройство (стоившее около $400) должно было позволить разработчикам проводить эксперименты с настоящими устройствами, на которых Android можно было использовать, не заключая никаких договоров. Примерно в то же время Google выпустила исправленную версию ОС под номером 1.1, которая была полностью основана на версии 1.0. В версиях 1.0 и 1.1 Android не поддерживала виртуальную клавиатуру, требовалось устройство, на котором были бы настоящие клавиши. Эта проблема была устранена в апреле 2009 года, когда вышел комплект SDK 1.5, в котором появились и другие возможности, например продвинутые функции записи медиаданных, виджеты и живые каталоги. В сентябре 2009 вышла версия Android 1.6, а через месяц за ней последовал Android 2.0, поддержавший бурные продажи устройств Android в рождественский сезон 2009 года. В этом релизе появились улучшенные поисковые возможности и функция преобразования текста в речь. В этом релизе появилась также поддержка управления жестами и функция мультитач. Android 2.0 поддерживает HTML 5, благодаря чему в нем появляются интересные функции. Каждый день появляются все новые приложения для Android, размещаемые в независимых онлайновых хранилищах приложений, а также в управляемом Google онлайн-сервисе Google Play Market (ранее Android Market).

 

1.1.2 Анализ Dalvik VM

Android работает поверх ядра Linux. Android-приложения пишутся на языке программирования Java и выполняются в виртуальной машине (VM). Однако используется не Java VM, а открытая технология Dalvik Virtual Machine. Каждое приложение Android запускается внутри экземпляра Dalvik VM, который, в свою очередь заключен в пределах управляемого ядром Linux процесса, как показано на рисунке 1.3.

Рисунок 1.3 - Виртуальная машина Dalvik

В ходе работы с Android специалисты Google много внимания уделили возможностям оптимизации дизайна маломощных мобильных устройств. Мобильные устройства отстают от локальных компьютеров в области памяти и скорости обработки информации на восемь-десять лет. Вычислительные возможности мобильных устройств также ограничены; общая оперативная память мобильного устройства может составлять всего 64 Мбайт, а пространство, на котором можно разместить приложения, может быть и того меньше - около 20 Мбайт.

В результате эксплуатационные требования к мобильным устройствам ужесточаются. Пакеты для Android являются полнофункциональными, с широкими возможностями. По данным Google, эти системные библиотеки используют от 10 до 20 Мбайт памяти, даже при применении оптимизированной виртуальной машины Java.

По этим причинам Google пришлось во многих отношениях переработать стандартную версию JVM. Основным специалистом Google, отвечающим за новую версию JVM является Дэн Борнштейн, написавший виртуальную машину Dalvik VM (Дальвик - это небольшой город на севере Исландии). Во-первых, Dalvik VM использует сгенерированные Java файлы классов и комбинирует их в один или несколько исполняемых файлов Dalvik (DEX). Машина повторно использует повторяющуюся информацию из нескольких файлов классов, эффективно снижая потребность в пространстве, и занимает (без архивации) вполовину меньше места, чем обычный файл JAR. Например, файл DEX мобильного браузера, используемого в Android, имеет размер около 200 Кбайт, а аналогичный файл JAR без архивации занимает около 500 Кбайт. Файл DEX программы-будильника занимает 50 Кбайт, а версия JAR - без малого в два раза больше.

Во-вторых, Google тонко настроила в Dalvik VM процесс сборки мусора (garbage collection), но в ранних версиях было решено обойтись без динамического компилятора (JIT). Насколько можно судить, в коде версии 2.0 содержатся все необходимые источники для компилятора JIT, но в окончательной версии эти источники не активированы. Ожидается, что они появятся в следующих релизах. Такой выбор оправдан, так как многие корневые библиотеки Android, в том числе графические, написаны на С и C++. Например, графические интерфейсы прикладного программирования для Java являются тонкими классами-обертками, в которых заключен нативный код, использующий собственный интерфейс Java (Java Native Interface). Подобным образом в Android предоставляется оптимизированная нативная библиотека на базе С для доступа к базе данных SQLite, но эта библиотека инкапсулирована в высокоуровневом интерфейсе прикладного программирования (API) для Java. Поскольку большая часть корневого кода написана на С и C++, специалисты Google сочли, что компилирование JIT не очень повлияет на работу системы.

Наконец, в Dalvik VM используется иной вид генерирования ассемблерного кода, в ходе которого в качестве основных элементов хранения данных используются реестры, а не стек. Таким образом, Google рассчитывает сократить количество команд на 30%. Следует отметить, что конечный исполняемый код в Android, получаемый после обработки Dalvik VM, основан не на байт-коде Java, а на файлах DEX. Это означает, что невозможно непосредственно выполнять байт-код Java; придется запустить файлы классов Java, а затем преобразовать их в готовые связываемые файлы DEX.

Такое стремление оптимизировать эксплуатационные характеристики наблюдается во всех частях инструментария для разработки в Android. В частности, в Android SDK для определения пользовательских интерфейсов широко применяется XML. Но весь этот XML скомпилирован в двоичные файлы, которые затем становятся резидентными файлами мобильных устройств. Также в Android предусмотрены специальные механизмы для использования XML-данных.

 

1.1.3 Сравнение Android и Java ME

В Android используется комплексный, целенаправленный и сфокусированный подход к созданию мобильной платформы, а для этого недостаточно обычных решений, основанных на JVM. В Android все, что вам нужно, - операционная система, драйверы устройств, библиотеки ядра, собственный интерфейс Java, оптимизированная версия Dalvik VM и среда разработки Java - находится в одном пакете. Разработчик может быть уверен, что при разработке нового приложения все основные библиотеки будут на мобильном устройстве.

Такой комплексный подход отличается от других решений, используемых в программировании для мобильных устройств, например от Java ME. Кратко рассмотрим Java ME, и сравним оба подхода. На рисунке 1.4 показана доступность Java для различных конфигураций вычислительных машин.

Рисунок 1.4 - Конфигурация Java для различных вычислительных машин

Стандартная версия платформы Java (Java SE) подходит для персональных компьютеров и рабочих станций. Корпоративная версия платформы Java (Java ЕЕ) разработана для серверов. Микроверсия платформы Java (Java ME) является сокращенной и предназначена для небольших устройств. Java ME доступна в виде двух вариантов конфигурации. Первый вариант называется "конфигурация коммуникационных устройств" (Connected Device Configuration, CDC). Java ME для CDC содержит упрощенную версию Java SE - с меньшим количеством пакетов, с меньшим количеством классов в них, и даже с меньшим количеством методов и полей в этих классах. Для оборудования и устройств, имеющих дополнительные ограничения, в Java применяется конфигурация для устройств с ограниченными ресурсами (Connected Limited Device Configuration, CLDC). Существующие интерфейсы прикладного программирования для различных конфигураций Java сравниваются на рисунке 1.5.

Любые дополнительные пакеты, устанавливаемые "поверх" основного интерфейса прикладного программирования с конфигурацией CDC или CLDC, считаются "профилями", которые стандартизируются процессом JSR (запрос на спецификацию Java). Каждый заданный профиль предоставляет разработчику дополнительный набор интерфейсов прикладного программирования.

Рисунок 1.5 - Доступность интерфейсов прикладного программирования в Java

Платформа CLDC Java базируется на специализированной и сильно уменьшенной версии JVM, называемой "виртуальная машина К" (К Virtual Machine, KVM), которая способна работать на устройствах с памятью всего 128 Кбайт. В CLDC под MIDP 2.0 (профиль для мобильного устройства с информационными функциями) могут использоваться дополнительные интерфейсы прикладного программирования. Такой интерфейс содержит ряд пакетов для javax. microedition. *. К числу основных пакетов относятся мидлеты (простые приложения), пакет для пользовательских интерфейсов, называемый LCDUI, игровые и медиапакеты.

Интерфейсы прикладного программирования для конфигурации CDC содержат java. awt API и java.net API и некоторые API для реализации функций безопасности, дополнительно к тем интерфейсам, которые содержатся в CLDC. Дополнительные профили, устанавливаемые поверх CDC, открывают разработчикам приложений доступ к прикладному интерфейсу программирования javax. microedition. xlet (xlet - это приложение в конфигурации CDC). Поверх конфигурации CDC может находиться около десяти опциональных пакетов, которые вы можете использовать, в том числе Bluetooth, Media API, OpenGL для встроенных систем (OpenGL ES), Java API для обработки XML QAXP), JAXP-RPC, Java 2D, Swing, интерфейс вызова удаленных методов Java (Java RMI), взаимодействие Java и баз данных (JDBC) и интерфейс прикладного программирования Java. Вообще, спецификация Java ME содержит более 20 JSR. Кроме того, ожидается, что при написании Java-программ для мобильных устройств JavaFX будет играть возрастающую роль.

Сравним Java ME с Android:

·        варианты конфигурации с несколькими устройствами. В Java ME различаются два класса микроустройств, для каждого из которых предлагаются стандартные и особые решения. Android, в свою очередь, использует только одну модель. Она не будет работать с низкоуровневыми устройствами, если их конфигурация не будет усовершенствована;

·        понятность. Поскольку Android ориентирована на работу с конкретным устройством, она понятнее, чем Java ME. В Java ME используется несколько вариантов пользовательских интерфейсов для каждой конфигурации, в зависимости от того, какие функции поддерживает устройство: мидлеты, икслеты (xlets), AWT и Swing. Отслеживать JSR для каждой спецификации Java ME сложнее. Они дольше разрабатываются, и найти определенные их версии может быть непросто;

·        быстрота реагирования. Ожидается, что Dalvik VM будет оптимизирована лучше и будет иметь более высокую скорость отклика, чем стандартная виртуальная машина JVM, используемая на устройстве с аналогичной конфигурацией. Можно сравнить Dalvik VM и KVM, но KVM предназначена для работы с менее сложными устройствами, располагающими значительно более скромными объемами памяти;

·        совместимость с Java. Поскольку Android работает с Dalvik VM, в ней используется не байт-код Java, а байт-код в файлах DEX. Это не очень большая проблема, если Java скомпилирована в виде стандартных файлов классов Java. Только непосредственная интерпретация байт-кода Java будет невозможна;

·        широта внедрения. Java ME широко поддерживается в мобильных устройствах, так как на ее основе работает большинство мобильных телефонов. Но Android отличается однородностью, дешевизной и простотой разработки программ - поэтому разработчиков Java могут заинтересовать и написание программ для Android;

·        поддержка Java SE. Если сравнить поддержку Java SE в CDC и в Android, то в Android такая поддержка реализована чуть более полно, если не считать AWT и Swing. Как уже упоминалось выше, в Android используется собственный подход к работе с пользовательскими интерфейсами. На самом деле декларативные пользовательские интерфейсы Android напоминают более продвинутые UI-платформы, такие как Microsoft Silverlight и JavaFX от Sun.

Таким образом, сравнительный анализ позволяет сделать вывод, что Android является более предпочтительной платформой для разработки приложений.

 

1.1.4 Программный стек Android

При рассмотрении программного стека Android можно представить структуру операционной системы Android. Подробное описание программного стека Android приведено на рисунке 1.6.

Рисунок 1.6 - Подробное описание программного стека Android

Центром платформы Android является ядро Linux версии 2.6.29, отвечающее за драйверы устройств, доступ к ресурсам, управление энергопотреблением и решение других задач ОС. В такой сборке имеются драйверы устройств для работы с дисплеем, камерой, клавиатурой, Wi-Fi, флеш-памятью, аудио и для обеспечения связи между процессами (Inter-Process Communication, IPC). Хотя в системе и используется ядро Linux, подавляющее большинство приложений на устройствах Android разработаны на Java и работают при помощи Dalvik VM.

На следующем уровне, выше ядра, находится ряд библиотек C/C++, в частности OpenGL, Web Kit, FreeType, Secure Sockets Layer (SSL), библиотека времени выполнения С (libc), SQLite и Media. Системная библиотека С, основанная на Berkeley Software Distribution (BSD), настроена для работы со встроенными устройствами, работающими под Linux (при этом ее размер уменьшен по сравнению с первоначальным примерно в два раза). Медиабиблиотеки работают на основе PacketVideo OpenCORE. Эти библиотеки отвечают за запись и воспроизведение аудио - и видеоформатов. Библиотека, называемая Surface Manager, контролирует доступ к системе отображения данных и поддерживает 2D и 3D.

Библиотека WebKit отвечает за поддержку браузеров; именно эта библиотека поддерживает Google Chrome и Apple Safari. Библиотека FreeType поддерживает шрифты. SQLite - это реляционная база данных, которая находится на самом устройстве. Кроме того, SQLite - это независимая разработка с открытым кодом, она не связана непосредственно с Android. Можно использовать инструменты, предназначенные для SQLite, и при работе с базами данных Android.

Большая часть приложений из этого набора обращается к указанным корневым библиотекам через Dalvik VM, выполняющую на платформе Android роль шлюза. Как уже говорилось в предыдущих разделах, Dalvik оптимизирована для одновременного использования нескольких экземпляров VM. Когда приложения Java обращаются к этим корневым библиотекам, каждое приложение работает с собственным экземпляром виртуальной машины.

В основных библиотеках прикладного интерфейса программирования на Java для Android содержатся функции для телефонии, работы с ресурсами, местоположением, пользовательскими интерфейсами, поставщиками содержимого (данными), а также диспетчеры пакетов (отвечающие за установку, безопасность и т.д.). Программисты разрабатывают приложения для конечных пользователей на основе данного прикладного интерфейса программирования Java. Примерами таких приложений являются Home, Contacts, Phone, Browser и т.д.

В Android также поддерживается пользовательская библиотека Google Skia, предназначенная для работы с 2D-графикой. Эта библиотека написана на С и C++. На Skia основан браузер Google Chrome. Однако прикладные интерфейсы для программирования 3D в Android работают на основе разновидности OpenGL ES от группы Khronos. В OpenGL ES содержатся сокращенные версии OpenGL, оптимизированные для работы со встроенными системами.

Для работы с медиа на платформе Android поддерживается большинство распространенных форматов аудио, видео и изображений. В области беспроводной связи Android располагает специальными API для поддержки Bluetooth, EDGE, 3G, Wi-Fi и глобальной системы мобильной связи (GSM), зависимыми от оборудования.

 

1.2 Постановка задачи


Итак, после изучения основных характеристик операционной системы Android необходимо сформулировать основную задачу дипломного проекта. Было принято решение разработать в качестве приложения менеджер файлов. В настоящее время существует два основных типа таких приложений: верхний и нижний. Файловые менеджеры верхнего уровня оснащены богатым функционалом, но занимают значительный объем в памяти устройства. Приложения нижнего уровня менее требовательны к ресурсам и занимают меньший объем в памяти, но зачастую не реализуют стандартный набор функций файловых менеджеров. Таким образом, существует необходимость реализовать средний уровень.

2. Разработка принципов работы приложения


Для разработки собственного приложения необходимо изучить инструментарий комплекта для разработки программ Android Software Development Kit (SDK), а также рассмотреть характеристики существующих файловых менеджеров.

 

.1 Комплект для разработки приложений Android SDK


Для разработки приложений используется высокоуровневый прикладной интерфейс программирования Java для Android, при помощи которого можно создавать приложения для конечных пользователей Android. Рассмотрим особенности эмулятора Android, фундаментальные компоненты Android и пакеты, входящие в состав SDK. Также будут приведены несколько фрагментов кода.

 

2.1.1 Эмулятор Android

Комплект для разработки программ (SDK) для Android поставляется вместе с плагином Eclipse, который называется инструментарием для разработки в Android (Android Development Tools, ADT). Этот инструмент интегрированной среды разработки (IDE) используется для создания, отладки и тестирования приложений на Java. Android SDK можно использовать и без ADT; вместо этого инструментария можно применять средства командной строки. Эмулятор поддерживается при использовании обоих подходов, и с его помощью вы можете запускать, исправлять и тестировать свои приложения.90% разработки приложения можно завершить, вообще не пользуясь реальным устройством. Полнофункциональный эмулятор Android воспроизводит большинство характеристик устройств. К числу тех функций, которые нельзя имитировать в эмуляторе, относятся USB-соединения, работа камеры и видеосъемка, имитация работы наушников, батарей и технология Bluetooth.

Эмулятор Android работает на базе свободно распространяемой технологии "имитации процессора", называемой QEMU, которую разработал Фабрис Беллар. Та же технология позволяет эмулировать одну операционную систему в другой, независимо от того, какой процессор применяется. QEMU обеспечивает эмуляцию на уровне процессора.

При работе эмулятора Android имитируется процессор, функционирующий на базе ARM (Advanced RISC Machine, усовершенствованная RISC-машина). ARM - это 32-битная архитектура микропроцессоров, основанная на RISC (Reduced Instruction Set Computer, компьютер с сокращенным набором команд), в которой благодаря уменьшению числа команд достигается простой дизайн и увеличение скорости работы. Эмулятор задействует на таком имитируемом процессоре версию Linux, используемую в Android.широко используется в мобильных устройствах и во встроенных электронных приборах, где важно обходиться небольшим количеством энергии. Многие имеющиеся на рынке мобильные устройства имеют процессоры с такой архитектурой. Например, Apple Newton основан на процессоре ARM6. Устройства iPod, Nintendo DS и Game Boy Advance работают на архитектуре ARM версии 4, в которой используется около 30 000 транзисторов. Классический Pentium содержит 3,2 млн. транзисторов.

 

2.1.2 Компоненты пользовательского интерфейса Android

В Android используется UI-фреймворк, сравнимый с другими полнофункциональными UI-фреймворками, применяемыми на локальных компьютерах. Он является более современным и асинхронным по природе. По существу, UI-фреймворк Android относится уже к четвертому поколению, если считать первым поколением традиционный прикладной интерфейс программирования Microsoft Windows, основанный на С, а MFC (Microsoft Foundation Classes, библиотека базовых классов Microsoft на основе C++) - вторым. В таком случае UI-фреймворк Swing, основанный на Java, будет третьим поколением, так как предлагаемые в нем возможности дизайна значительно превосходят по гибкости MFC. Android UI, JavaFX, Microsoft Silverlight и язык пользовательских интерфейсов Mozilla XML (XUL) относятся к новому типу UI-фреймворков четвертого поколения, в котором UI является декларативным и поддерживает независимую темизацию.

При программировании в пользовательском интерфейсе Android применяется объявление интерфейса в файлах XML. Затем эти определения представления (view definitions) XML загружаются в приложение с пользовательским интерфейсом как окна. Даже меню приложения загружаются из файлов XML. Экраны (окна) Android часто называются активностями (activities), которые включают в себя несколько видов, нужных пользователю, чтобы выполнить логический элемент процесса. Виды (views) являются основными элементами, из которых в Android состоит пользовательский интерфейс. Виды можно объединять в группы (view groups). Для внутренней организации видов используются давно известные в программировании концепции холст (canvas), рисование (painting) и взаимодействие пользователя с системой (user interaction).

Такие составные представления, в которые входят виды и группы видов, работают на базе специального логического заменяемого компонента пользовательского интерфейса Android.

Одной из ключевых концепций фреймворка Android является управление жизненным циклом (lifecycle) окон явлений (activity windows). В системе применяются протоколы, поэтому Android может управлять ситуацией по мере того, как пользователи скрывают, восстанавливают, останавливают и закрывают окна явлений.

Базовые компоненты Android

Фреймворк пользовательского интерфейса Android вместе с другими компонентами Android базируется на новой сущности, называемой намерением (intent). Намерение - это сложное явление, в котором сочетаются такие идеи, как сообщения, выводимые в окнах (windowing messages), действия (actions), модели типа "публикация и подписка" (publish-and-subscribe), межпроцессный обмен информацией и реестры приложений. Ниже приведен пример использования класса Intent для активации или запуска веб-браузера:

public static void invokeWebBrowser (Activity activity)

{intent = new Intent (Intent. ACTION_VIEW):. setData (Uri. parse ("#"784060.files/image007.gif">

Рисунок 2.1 - Структура разрабатываемого приложения

Интерфейс главного окна представлен файлом разметки main. xml и будет дополнен меню опций, описание которого приведено в файле icon_menu_for_main. xml. Исходный код главного окна содержится в файле MainActivity. java. Интерфейс окна навигации по файловой системе представлен файлом разметки navigation. xml и будет ListView отображающий список элементов, разметка которых содержится в файле row. xml. Функции работы с файлами будут реализованы в меню опций, описание которого приведено в файле icon_menu_for_navigation. xml, и в контекстном меню, созданным программно и вызываемым длительным нажатием на пункте списка. Исходный код навигационного окна содержится в файле NavigationActivity. java. Файл ArrayAdapterForList. java содержит модифицированный адаптер ArrayAdapter, который необходим для отображения списка элементов.

Таким образом, проведено ознакомление с инструментарием для разработки программ, определена структура и сформулированы принципы работы приложения.

3. Разработка программного обеспечения


Разработку ПО начнем с графичкского интерфейса. Это связано с особенностями программирования для Android. Для того, чтобы взаимодействовать с элементами окна, программный модуль подключается к необходимым элементам с помощью идентификаторов. При этом элементы интерфейса в главном окне далжны быть созданы в первую очередь. Как уже отмечалось ранее, графический интерфейс пользователя объявляется в XML файлах, а основным языком для разработки приложений Android является объектно-ориентированный язык программирования Java. В соответствии с определенной структурой при разработке компонентов приложения (MainActivity. java, NavigationActivity. java, ArrayAdapterForList. java) будет использован язык Java. В качестве среды разработки используется среда Eclipse, так как для нее предоставляется плагин для работы с Android SDK, а также она является свободно распространяемой.

 

3.1 Графический интерфейс пользователя

SDK предоставляет два способа разработки графического интерфейса пользователя. При первом в область окна необходимо перенести элементы интерфейса или виды (views), далее в списке свойств этих элементов изменяются требуемые. При использовании второго способа разработчик набирает теги объявляющие виды и объявляет требуемые свойства вручную в XML файлах.

С помощью XML файлов определяется разметка окон, а также меню опций и прочие элементы графического интерфейса пользователя.

Компонентами интерфейса разрабатываемого приложения являются файлы main. xml, icon_menu_for_main. xml, navigation. xml, icon_menu_for_navigation. xml, row. xml.

3.1.1 Файл разметки main. xml

В файле main. xml содержится разметка главного окна, состоящая из тегов объявляющих элементы и свойства этих элементов. Основой главного окна является элемент-контейнер LinearLayout заполняющий все окно, с фоном белого цвета и с вертикальным расположением внутренних элементов:

<LinearLayout xmlns: android="#"784060.files/image008.gif">

Рисунок 3.1 - Главное окно

3.1.2 Файл меню опций icon_menu_for_main. xml

В файле icon_menu_for_main. xml содержится разметка меню опций для главного окна, вызываемое при нажатии на клавишу "Меню" на устройстве:

<? xml version="1.0" encoding="utf-8"? >

<menu xmlns: android="#"784060.files/image009.gif">

Рисунок 3.2 - Навигационное окно

3.1.4 Файл меню опций icon_menu_for_navigation. xml

В файле icon_menu_for_navigation. xml содержится разметка меню опций для навигационного окна, вызываемое при нажатии на клавишу "Меню" на устройстве:

<? xml version="1.0" encoding="utf-8"? >

<menu xmlns: android="#"784060.files/image010.gif">

Рисунок 3.3 - Меню опций навигационного окна

3.1.5 Файл разметки элемента списка row. xml

В файле row. xml содержится разметка элемента списка, отображаемого в навигационном окне. Основой разметки является элемент-контейнер RelativeLayout заполняющий все окно с относительным расположением внутренних элементов:

<RelativeLayout xmlns: android="#"784060.files/image011.gif">

Рисунок 3.4 - Схема работы модифицированного адаптера ArrayAdapter

Листинг файла ArrayAdapterForList. java приведен в приложении А дипломного проекта.

 

3.5 Файл манифеста AndoidManifest. xml


Файл манифеста AndroidManifest. xml предоставляет основную информацию о программе системе.

Файл AndroidManifest. xml предназначен для:

·        объявления имени Java-пакета приложения, который служит уникальным идентификатором;

·        описания компонентов приложения - окна, службы, приемники широковещательных намерений и контент-провайдеры, что позволяет вызывать классы, которые реализуют каждый из компонентов, и объявляет их намерения;

·        содержания списка необходимых разрешений для обращения к защищенным частям API и взаимодействия с другими приложениями;

·        объявления разрешений, которые сторонние приложения обязаны иметь для взаимодействия с компонентами данного приложения;

·        объявления минимального уровня API Android, необходимого для работы приложения;

·        перечисления связанных библиотек.

Файл манифеста инкапсулирует всю архитектуру Android-приложения, его функциональные возможности и конфигурацию. Корневым элементом манифеста является <manifest>. Помимо данного элемента обязательными элементами является теги <application> и <uses-sdk>. Элемент <application> является основным элементом манифеста и содержит множество дочерних элементов, определяющих структуру и работу приложения. Порядок расположения элементов, находящихся на одном уровне, произвольный. Все значения устанавливаются через атрибуты элементов. Кроме обязательных элементов, упомянутых выше, в манифесте по мере необходимости используются другие элементы.

В файле манифеста AndroidManifest. xml разрабатываемого приложения объявление имени Java-пакета выглядит следующим образом: package="ru. mail. korgik46. filemanager"

Объявление минимального уровня API Android, необходимого для работы разрабатываемого приложения: <uses-sdk android: minSdkVersion="7" />

Так как в разрабатываемом файловом менеджере реализованы функции работы с файлами и папками и доступа к web-сервису, необходимо запросить для него разрешения на изменение содержимого внешнего накопителя и доступа в сеть Интернет соответственно: <uses-permission android: name="android. permission. WRITE_EXTERNAL_STORAGE"/>

<uses-permission android: name="android. permission. INTERNET"/>

Структура приложения включает два элемента. Главный из них MainActivity объявляется в файле манифеста по умолчанию, так как с него программа начинает работу. Другое окно NavigationActivity, в котором осуществляется навигация по файловой системе, необходимо объявить вручную в секции <application> после закрывающего тега </activity> главного окна:

<application: icon="@drawable/ic_launcher": label="@string/app_name" >

<activity: name=". MainActivity": label="@string/app_name" >

<intent-filter>

<action android: name="android. intent. action. MAIN" />

<category android: name="android. intent. category. LAUNCHER" />

</intent-filter>

</activity>

<activity android: name="NavigationActivity": configChanges="keyboardHidden|orientation">

</activity>

</application>

Внесением изменений в файл манифеста заканчивается разработка приложения, которое после установки готово к работе.

3.6 Работа с приложением


Для установки приложения на устройство пользователю необходим установочный APK файл Android. Этот файл генерируется автоматически при сборке проекта в среде разработки Eclipse. Запустив APK файл на устройстве, пользователь начинает процесс установки приложения. Так как приложение загружается не из Google Play Market, необходимо, чтобы в настройках приложений устройства была включена функция "Неизвестные источники". Включение данной функции разрешает установку приложений загруженных не из Маркета. После завершения процесса установки в списке приложений появится значок соответствующий установленному. Приложение можно запустить, нажав на этот значок.

После запуска приложения пользователю показывается главное окно. Для того, чтобы перейти в окно навигации, необходимо выбрать пункт "Мои файлы", расположение и пиктограмма которого приведена на рисунке 3.5.

Рисунок 3.5 - Кнопка "Мои файлы" перехода в навигационное окно

После этого пользователю показывается окно навигации по файловой системе, изображение которого дано на рисунке 3.6.

Рисунок 3.6 - Окно навигации по файловой системе

Навигационное окно содержит три кнопки, две из которых отвечают за отображение корневого каталога и содержимого карты памяти установленной в устройстве соотвтетственно, а третья включает или выключает режим множественного выбора. Ниже кнопок расположен список содержимого текущего каталога. По умолчанию отображается содержимое корневого каталога. Для открытия каталога необходимо нажать на пункт списка с его названием. После этого в заголовке списка отобразится путь текущего каталога, а его содержимое появится в списке. При этом наименование верхнего пункта необходимого для перехода на уровень вверх".".

Для работы с одним файлом или каталогом необходимо длительным нажатием на этом файле списка вызвать контекстное меню, внешний вид которого приведен на рисунке 3.7.

Рисунок 3.7 - Контекстное меню окна навигации

Для работы с несколькими файлами или каталогами необходимо включить режим множественного выбора соответствующей клавишей, далее произвести выбор файлов. Затем нажатием клавиши "Меню" на устройстве вызвать меню опций и произвести выбор необходимого действия. Внешний вид меню опций приведен на рисунке 3.8.

Рисунок 3.8 - Меню опций окна навигации

Для того, чтобы создать новую папку необходимо вызвать меню опций и выбрать в нем пункт "Новая папка", расположение и пиктограмма которого приведены на рисунке 3.9.

Рисунок 3.9 - Кнопка создание новой папки

Для перехода на сайт "облачного" web-сервиса box, необходимо в меню главного окна выбрать пункт "Мое облако", расположение и пиктограмма которого приведены на рисунке 3.10. При этом необходимо, чтобы в устройстве была включена передача данных.

Для возврата в главное окно не необходимо нажать клавишу "Назад" на устройстве или, вызвав меню опций нажатием аппаратной клавиши "Меню", выбрать в нем пункт "Назад".

Рисунок 3.10 - Кнопка "Мое облако" перехода на сайт web-сервиса box

После этого происходит переход на сайт "облачного" web-сервиса box в окне встроенного браузера Android, где пользователю необходимо зарегистрироваться или войти, указав адрес электронной почты и пароль. В последнем случае пользователю предоставляется список загруженных файлов, изображение которого дано на рисунке 3.11.

Рисунок 3.11 - Сайт "облачного" web-сервиса box

Для возврата в главное окно программы необходимо нажать клавишу "Назад" на устройстве или закрыть браузер в меню опций, вызываемом нажатием аппаратной клавиши "Меню".

После этого приложение готово к использованию.

4. Расчет стоимости программного обеспечения


4.1 Основные положения расчета стоимости программного обеспечения


Программное обеспечение является материальным объектом специфической интеллектуальной деятельности специалистов, состоящим из программно-документально оформленного проекта, реализующего свои потребительские свойства и качества в составе функционирующих вычислительных систем или систем обработки данных. По стоимости и срокам службы ПО относится к основным производственным фондам предприятия.

Каждое ПО как реальная продукция имеет определенный жизненный цикл, т.е. период от начала разработки и до снятия с эксплуатации, включающей три стадии: разработку (проектирование), производство (создание) и использование.

Программное обеспечение как товарная продукция могут быть двух видов:

·        научно-техническая продукция;

·        продукция производственно-технического назначения.

В современных рыночных экономических условиях ПО выступает преимущественно в виде продукции научно-технических организаций, представляющей собой функционально завершенные и имеющие товарный вид программного обеспечения вычислительной техники, реализуемые покупателям по рыночным отпускным ценам. Все завершенные разработки программного обеспечения ВТ являются научно-технической продукцией.

Широкое применение средств вычислительной техники требует постоянного обновления и совершенствования ПО. Выбор эффективных проектов ПО связан с их экономической оценкой и расчетом экономического эффекта.

Расчет экономического эффекта ПО основан на принципах "Комплексной оценки эффективности мероприятий, направленных на ускорение научно-технического прогресса". Экономический эффект может определяться как у разработчика, так и у пользователя.

У разработчика экономический эффект выступает в виде чистой прибыли, остающейся в распоряжении предприятия от реализации ПО, а у пользователя - в виде экономии трудовых, материальных и финансовых ресурсов, получаемой от:

·        снижения трудоемкости расчетов, алгоритмизации программирования и отладки программ (задач) за счет использования ПО в процессе разработки автоматизированных систем и систем обработки данных;

·        сокращения расходов на оплату машинного времени и других ресурсов на отладку задач;

·        снижения расходов на материалы (магнитные, лазерные диски и прочие материалы);

·        ускорения ввода в эксплуатацию новых систем;

·        улучшения показателей основной деятельности предприятий в результате использования ПО.

Стоимостная оценка ПО у разработчиков предполагает составление сметы затрат, которая включает следующие статьи:

·        затраты на материалы;

·        спецоборудование;

·        заработная плата исполнителей основная и дополнительная;

·        отчисления в фонд социальной защиты населения;

·        налоги, входящие в себестоимость ПО;

·        машинное время;

·        расходы на научные командировки;

·        прочие расходы;

·        накладные расходы.

На основании сметы затрат рассчитывается себестоимость и отпускная цена ПО. Сумма основной заработной платы рассчитывается на основе численности специалистов, соответствующих тарифных ставок и фонда рабочего времени. Причем численность специалистов, календарные сроки разработки программы и фонда рабочего времени определяются по укрупненным нормам времени на разработку, сопровождение и адаптацию программного обеспечения или экспертным путем. Расчет трудоемкости ПО с использованием укрупненных норм времени осуществляется в основном в крупных научно-технических организациях для решения сложных задач программного обеспечения ВТ. В мелких и средних научно-технических организациях трудоемкость, численность исполнителей и сроки разработки ПО определяются экспертным путем с использованием данных по базовым моделям. При определении трудоемкости ПО учитываются объем ПО (в тыс. условных машинных команд или исходных команд), объем документации (тыс. строк), новизна и сложность ПО, язык программирования, степень использования типовых (стандартных) программ.

 

4.2 Исходные данные


Расчет производится на основе исходных данных, представленных в таблице 4.1

Таблица 4.1 - Исходные данные

Наименование показателей

Буквенные обозначения

Единицы измерения

Количество

Коэффициент новизны

kн

единиц

1,0

Группа сложности

гсл

единиц

3

Дополнительный коэффициент сложности

kсл

единиц

0,18

Поправочный коэффициент, учитывающий использование типовых программ

kт

единиц

0,9

Установленная плановая продолжительность разработки

Tр

лет

0,1

Годовой эффективный фонд времени

Фэф

дней

255

Продолжительность рабочего дня

Tч

ч

8

Тарифная ставка 1-го разряда

ТС1

руб.

210000

Коэффициент премирования

kпр

единиц

1,4

Норматив дополнительной заработной платы

Hзд

%

10

Ставка отчислений в фонд социальной защиты населения

Hсз

%

35

Норматив прочих затрат

Hпз

%

3

Норматив на сопровождение и адаптацию ПО

Hса

%

10

Ставка налога на добавленную стоимость

Hдс

%

20

Норматив амортизации ВТ

На

%

12,5


Разработка программных средств (ПС) предусматривает проведение всех стадий проектирования (техническое задание, эскизный проект, технический проект, рабочий проект, внедрение) и относится к 3-й группе сложности. По степени новизны ПС относится к группе "А" с коэффициентом 1,0.

В выполнении работ задействованы: руководитель дипломного проекта, студент-дипломник. Приравняем руководителя дипломного проекта к должности начальник отдела. Присвоим ему 13 разряд, установим продолжительность участия в разработке - 5 дней. Тарифный коэффициент - 3,98;

Приравняем студента-дипломника к должности инженера-программиста без категории. Присвоим ему 9 разряд, установим продолжительность участия в разработке 12 дней. Тарифный коэффициент - 2,48.

4.3 Определение объема программного обеспечения


Объем ПО определяется путем подбора аналогов на основании классификации типов ПО, каталога функций ПО и каталога аналогов ПО в разрезе функций, которые постоянно обновляются и утверждаются в установленном порядке. На основании информации о функциях разрабатываемой САО, по каталогу функций определяется объем функций. Затем по каталогу аналогов в разрезе функций уточняется объем функций.

Таблица 4.2 - Объем программного обеспечения

Номер функции

Содержание функций

Объем (условных машинных команд)

109

Организация ввода/вывода информации в интерактивном режиме

109

305

Обработка файлов

367

309

Формирование файла

740

503

Управление внешними устройствами и объектами

1456

506

Обработка ошибочных и сбойных ситуаций

520

507

Обеспечение интерфейса между компонентами

686

707

Графический вывод результатов

203


Общий объем ПО рассчитывается по формуле (1):

 (1)

где Vo - общий объем ПО, условных машинных команд;

Vi - объем функций ПО, условных машинных команд;

n - общее число функций.

По формуле (1) определим общий объем ПО:

Vo = 109 + 367 +740 + 1456 + 520 +686 + 203 = 4081 условных машинных команд.

 

4.4 Расчет трудоемкости ПО


На основании общего объема ПО определяется нормативная трудоемкость Tн по таблицам. Нормативная трудоемкость устанавливается с учетом сложности ПО. Выделяется три группы сложности, в которых учтены следующие составляющие ПО: языковой интерфейс, ввод-вывод, организация данных, режимы работы, операционная система и техническая среда. Кроме того, устанавливаются дополнительные коэффициенты сложности ПО.

С учетом дополнительного коэффициента сложности kсл (см. таблицу 4.1) рассчитывается общая трудоемкость ПО.

 (2)

где То - общая трудоемкость ПО, человеко-дней;

Тн - нормативная трудоемкость ПО, человеко-дней;

kсл - дополнительный коэффициент сложности ПО.

Объему в 4081 условных машинных команд (3-я группа сложности ПО) соответствует нормативная трудоемкость 110 человеко-дней. По формуле (2) определим общую трудоемкость ПО:

 чел. - дней.

При решении сложных задач с длительным периодом разработки ПО трудоемкость определяется по стадиям разработки (техническое задание - ТЗ, эскизный проект - ЭП, технический проект - ТП, рабочий проект - РП и внедрение - ВН) с учетом новизны, степени использования типовых программ и удельного веса трудоемкости стадий разработки ПО в общей трудоемкости разработки ПО. При этом на основании общей трудоемкости рассчитывается уточненная трудоемкость с учетом распределения по стадиям (формула (3)):

 (3)

где Ту - уточненная трудоемкость ПО, человеко-дней;

Тi - трудоемкость разработки ПО на i-й стадии, человеко-дней;

m - количество стадий разработки.

Трудоемкость ПО по стадиям определяется с учетом новизны и степени использования в разработке типовых программ и ПО (формула (4)):

Тстi = dстi kн kт Tо, (4)

где

Тстi - трудоемкость разработки ПО на i-й стадии (технического задания, эскизного проекта, технического проекта, рабочего проекта и внедрения), человеко-дней;

dстi - удельный вес трудоемкости i-й стадии разработки ПО в общей трудоемкости ПО;

kн - поправочный коэффициент, учитывающий степень новизны ПО;

kт - поправочный коэффициент, учитывающий степень использования в разработке типовых программ и ПО.

На основании уточненной трудоемкости разработки ПО и установленного периода разработки по формуле (5) рассчитывается общая плановая численность разработчиков ПО:

 (5)

гдеЧр - плановая численность разработчиков, чел.;

Тр - плановая продолжительность разработки ПО, лет;

Фэф - годовой эффективный фонд времени работы одногоработника в течение года, дней в год.

Результаты расчетов уточненной трудоемкости и общей плановой численности разработчиков на разных стадиях разработки по формулам (4) и (5) представлены в таблице 4.3.

Таблица 4.3 - Результаты расчетов трудоемкости

Расчетный коэффициент

Стадии разработки

Итого


ТЗ

ЭП

ТП

РП


Коэффициенты удельных весов трудоемкости стадий,

0,11

0,09

0,11

0,55

0,14

1,0

Коэффициенты, учитывающие использование типовых программ,

-

-

-

0,9

-

-

Коэффициенты новизны, kн

1,0

1,0

1,0

1,0

1,0

-

Уточняющая трудоемкость стадий, человеко-дней

14

12

14

64

18

122

Численность исполнителей, чел.

1,8

1,9

1,8

1,9

2

1,9

Срок разработки, лет

0,03

0,025

0,023

0,13

0,035

0,25


Например, по формуле (4) определим уточнённую трудоёмкость на стадии рабочего проекта:

 чел. - дней.

По формуле (5) определим общую плановую численность разработчиков ПО на стадии рабочего проекта:

 чел.

4.5 Расчет заработной платы разработчиков ПО


Уточненная трудоемкость и общая плановая численность разработчиков служат базой для расчета основной заработной платы. По данным о спецификации и сложности выполняемых функций составляется штатное расписание группы специалистов-исполнителей, участвующих в разработке ПО с определением образования, специальности, квалификации и должности.

В соответствии с тарифными разрядами и коэффициентами должностей руководителей научных организаций каждому исполнителю устанавливается разряд и тарифный коэффициент.

Месячная тарифная ставка каждого исполнителя ТСм определяется путем умножения действующей месячной тарифной ставки 1-го разряда ТС1 на тарифный коэффициент kT, соответствующий установленному разряду:

. (6)

Часовая тарифная ставка рассчитывается путем деления месячной тарифной ставки на установленный при семичасовом рабочем дне фонд рабочего времени - 169,8 часа.

, (7)

где ТСч - часовая тарифная ставка, ден. ед.;

ТСм - месячная тарифная ставка, ден. ед.

По формулам (6) и (7) определим месячные и тарифные ставки начальника отдела (ТСмн, ТСчн) и инженера программиста (ТСми, чи):

 руб.;

 руб.;

 руб.;

 руб.;

Основная заработная плата исполнителей ПО рассчитывается по формуле (8):

, (8)

где n - количество исполнителей, занятых разработкой ПО;

ТСчi - часовая тарифная ставка i-го исполнителя, ден. ед.;

Фэi - эффективный фонд рабочего времени i-го исполнителя, дней;

Тч - количество часов работы в день, ч;

kп - коэффициент премирования.

По формуле (8) определим основную заработную плату исполнителей ПО:

 руб.

Дополнительная заработная плата на ПО Здi включает выплаты, предусмотренные законодательством о труде (оплата, отпусков, льготных часов, времени выполнения государственных обязанностей и других выплат, не связанных с основной деятельностью исполнителей), и определяется по нормативу в процентах к основной заработной плате:

, (9)

где Здi - дополнительная заработная плата исполнителей ПО, ден. ед.;

Нд - норматив дополнительной заработной платы в целом по научной организации.

По формуле (9) определим дополнительную заработную плату на ПО:

 руб.

4.6 Расчет отчислений, налогов и затрат


Отчисления в фонд социальной защиты населения Зсзi определяются в соответствии с действующими законодательными актами по нормативу в процентном отношении к фонду основной и дополнительной заработной платы исполнителей:

, (10)

где Нсз - норматив отчислений в фонд социальной защиты населения, %. По формуле (10) определим отчисления в фонд социальной защиты населения:

 руб.

Расходы по статье "Спецоборудование" Рсi включают затраты средств на приобретение вспомогательных специального назначения технических и программных средств, необходимых для разработки ПО, включая расходы на их проектирование, изготовление, отладку, установку и эксплуатацию. Затраты по этой статье определяются в соответствии со сметой расходов, которая составляется перед разработкой ПО. Данная статья включается в смету расходов на разработку ПО в том случае, когда приобретаются специальное оборудование или специальные программы, предназначенные для разработки и создания только данного ПО.

В небольших научных организациях и на малых предприятиях, где основными производственными фондами являются лишь средства ВТ, амортизационные отчисления Аoi можно определить прямым счетом, используя нормы амортизационных отчислений:

, (11)

где Аoi - амортизационные отчисления по конкретному средству ВТ в расчете на год, ден. ед.;

Тф - фактический срок использования основной ВТ;

ПСi - первоначальная стоимость ВТ, составляет 2500000 руб.

По формуле (11) определим сумму амортизационных отчислений:

 руб.

Расходы по статье "Прочие затраты" Пзi на ПО включают затраты на приобретение и подготовку специальной научно-технической информации и специальной литературы. Определяются по нормативу, разрабатываемому в целом по научной организации, в процентах к основной заработной плате:

, (12)

где Hпз - норматив прочих затрат в целом по научной организации, %.

По формуле (12) определим прочие затраты:

 руб.

Общая сумма расходов по всем статьям сметы Срi на ПО рассчитывается по формуле:

.  (13)

По формуле (13) определим общую сумму расходов:

 руб.


Кроме того, организация-разработчик осуществляет затраты на сопровождение и адаптацию ПО Pсаi, которые определяются по нормативу Hса:

, (14)

где Hса - норматив расходов на сопровождение и адаптацию, %.

По формуле (14) определим расходы на сопровождение и адаптацию

 руб.

4.7 Расчет себестоимости, отпускной цены и прибыли


Общая сумма расходов на разработку (с затратами на сопровождение и адаптацию) как полная себестоимость ПО Спi определяется по формуле:

.  (15)

По формуле (15) определим полную себестоимость ПО:

 руб.

Рентабельность и прибыль по создаваемому ПО определяются исходя из результатов анализа рыночных условий, переговоров с заказчиком (потребителем) и согласования с ним отпускной цены, включающей дополнительно налог на добавленную стоимость. Прибыль рассчитывается по формуле:

, (16)

где Прi - прибыль от реализации ПО заказчика, ден. ед.;

Урпi - уровень рентабельности ПО, принимаем 30 %;

Спi - себестоимость ПО, ден. ед.

По формуле (16) определим прибыль от реализации создаваемого ПО:

 руб.

В цену ПО включается налог на добавленную стоимость, который рассчитывается по нормативу, установленному действующим законодательством, в процентах к общей сумме добавленной стоимости:

, (17)

где

Ндсi - налог на добавленную стоимость, ден. ед.;

Дсi - добавленная стоимость, ден. ед.;

Нндс - норматив налога на добавленную стоимость, %.

Действующим законодательством предусмотрены льготы по налогу на добавленную стоимость. От налога на добавленную стоимость освобождается реализация научно-исследовательских работ, которые выполняются на основе хозяйственных договоров для потребителей Республики Беларусь, работы и услуги учебно-опытных участков и учебных хозяйств, учреждений образования и другие работы.

Добавленная стоимость на ПО рассчитывается по формуле:

.  (18)

На реализацию создаваемого ПО льготы по налогу на добавленную стоимость Ндсi не распространяются. В связи с этим добавленная стоимость на ПО определяется по формуле (17).

 руб.

По формуле (18) определим налог на добавленную стоимость

 руб.

Прогнозируемая отпускная цена ПО представляет собой сумму себестоимости, прибыли и налога на добавленную стоимость

.  (19)

По формуле (19) определим прогнозируемую отпускную цену ПО

 руб.

Прибыль от реализации ПО остается организации разработчику и предоставляет собой эффект от создания нового программного обеспечения ВТ.

Таким образом, экономический эффект от создания нового программного обеспечения составляет 369681,84 рублей.

5. Требования к организации рабочего места инженера-программиста

 

5.1 Анализ воздействия производственных факторов на рабочем месте инженера-программиста


В процессе трудовой деятельности, связанной с выполнением работ на персональных электронно-вычислительных машинах (ПЭВМ), на работающих могут воздействовать следующие неблагоприятные производственные факторы: электромагнитное и электростатическое поля, ультрафиолетовое, низкоэнергетическое рентгеновское излучение, электрическое напряжение, повышенные уровни отраженной блесткости, ослепленности, яркости светового изображения, неравномерность распределения яркости в поле зрения, электрическое напряжение, напряжение зрения и внимания и др. При длительной работе за экраном дисплея у операторов отмечается выраженное напряжение зрительного аппарата, головные боли, раздражительность, нарушение сна, усталость и болезненные ощущения в глазах, в пояснице, в области шеи, руках и др.

Наиболее отрицательное физиологическое воздействие на операторов связано с дискомфортными зрительными условиями, поэтому работа с экраном может сопровождается покраснением век и глазных яблок, слезотечением, замутнением зрения, жжением или болью в глазах. Выделены две причины возникновения астенопии (зрительного дискомфорта) и утомления: "техническая" и "режимная". Первая связана с особенностью экранного изображения: низкой контрастностью, частыми перепадами яркости и мерцанием экрана, угловыми размерами сигналов, геометрические и не линейные искажения и т.д. Существенно влияет выбор сочетаний цветов знака и фона, причем некоторые сочетания могут привести не только к утомлению, но и к стрессу. Весьма значимо и соотношение спектров свечения экрана и внешнего освещения. Режимная обусловлена временем работы, а именно, длительностью наблюдения за экраном или продолжительности фиксации взора на экране. Наряду с продолжительностью работы существенное значение имеет вид трудовой деятельности.

Работа с дисплеем многофункциональна и связана с нагрузками на различные системы организма оператора видеодисплейного терминала (ВДТ). В процессе интенсивного умственного труда у пользователей ВДТ формируется нервно психическое напряжение, а в ряде случаев развивается состояние перенапряжения, которое рассматривается в качестве одной из причин развития невротических нарушений возникновения сердечнососудистой патологии, а также является иногда причиной производственного стресса, играет определенную роль в повышении личной тревоги и, в ряде случаев, в развитии депрессивных состояний.

К числу вредных воздействий относится также длительная гиподинамия. Любая поза при длительной фиксации вредна для опорно-двигательного аппарата, кроме того, ведет к застою крови во внутренних органах и капиллярах.

Положение различных частей тела при работе с ПЭВМ является нефизиологическим для человека. Физиологическим является так называемое эмбриональное положение, его легко испытать на себе, если полностью расслабиться в соленой воде. Когда мышцы расслаблены и воздействует на них лишь естественный тонус покоя, тело приходит в определенное положение. Для спины и шеи в вертикальном положении физиологично другое когда явно выражены поясничный и шейный изгибы позвоночника, при прямой вертикальной линии, проходящей через затылок и копчик. Правильную осанку необходимо выучить "телом" путем его контроля какое-то время, и потом она будет поддерживаться автоматически. Проще всего встать к ровной стене и прижать к ней плотно пятки, икры, ягодицы, лопатки, локти и затылок. Достигнуть идеала вообще непросто, в процессе работы особенно, но к этому надо стремиться - хотя бы для отдельных частей тела.

Как показывают исследования, длительная и интенсивная работа с такими устройствами как клавиатура и мышь может стать источником тяжелых профессиональных заболеваний. Заболевания, обусловленные травмой повторяющихся нагрузок (ТПН), развиваются постепенно. Легкая боль в руке, если ее вовремя не вылечить, может, в конечном счете, привести к инвалидности.

Специалисты полагают, что естественным положением кистей рук является вертикальное, а не ладонью вниз, как при работе с компьютером. Причем при работе с клавиатурой (мышью) однообразные движения повторяются постоянно в течение длительного времени.

Заболевания, обусловленные ТПН, включают болезни нервов, мышц и сухожилий рук. Наиболее часто страдают кисть запястье и плечо, хотя могут быть затронута и шейная область. У людей, работающих с вычислительной техникой, заболевание обычно наступает в результате непрерывной работы на неудобно или неправильно расположенной клавиатуре, например, при чрезмерно высоком расположении поверхности стола или плохо подогнанном кресле.

 

5.2 Гигиенические требования к организации рабочего места инженера-программиста


Гигиенические требования к организации рабочего места инженера-программиста регламентируются в Санитарных правилах и нормах СанПиН 9-131 РБ 2000 "Гигиенические требования к видеодисплейным терминалам, электронно-вычислительным машинам и организации работы". Данные Санитарные правила и нормы предназначены для предотвращения неблагоприятного воздействия на человека вредных факторов, сопровождающих работы с ВДТ, электронно-вычислительными машинами (ЭВМ) и ПЭВМ и определяют санитарно-гигиенические требования к:

·        обеспечению безопасных и безвредных для здоровья пользователей условий при работе их с ВДТ, ЭВМ, ПЭВМ;

·        помещениям для эксплуатации ВДТ, ЭВМ и ПЭВМ;

·        параметрам физических факторов в помещениях с ВДТ, ЭВМ и ПЭВМ

·        микроклимату, содержанию вредных химических веществ и аэроинов в воздухе помещений при эксплуатации ВДТ, ЭВМ и ПЭВМ;

·        освещению помещений и рабочих мест с ВДТ, ЭВМ и ПЭВМ;

·        организации и оборудованию рабочих мест с ВДТ, ЭВМ и ПЭВМ.

Требования к помещениям для эксплуатации ВДТ, ЭВМ и ПЭВМ:

·        должны иметь естественное и искусственное освещение;

·        естественное освещение должно осуществляться через светопроемы, ориентированные преимущественно на север и северо-восток и обеспечивать коэффициент естественной освещенности (КЕО) не ниже 1,5%;

·        в случаях производственной необходимости, эксплуатация ВДТ, ЭВМ и ПЭВМ в помещениях без естественного освещения может проводиться только по согласованию с органами Государственного санитарного надзора;

·        площадь на одно рабочее место с ВДТ, ЭВМ и ПЭВМ должна составлять не менее 6,0 м2, а объем не менее 20,0 м;

·        при строительстве новых и реконструкции действующих зданий и помещений для ВДТ, ЭВМ и ПЭВМ их следует проектировать высотой (от пола до потолка) не менее 3,0 м;

·        производственные и административные помещения, в которых для работы используются преимущественно ВДТ, ЭВМ и ПЭВМ (диспетчерские, операторские, расчетные и др.), не должны граничить с помещениями, в которых уровни шума и вибрации превышают нормируемые значения (механические цеха, мастерские т.п.);

·        звукоизоляция ограждающих конструкций помещений с ВДТ, ЭВМ и ПЭВМ должна отвечать гигиеническим требованиям и обеспечивать нормируемые параметры шума в них;

·        помещения с ВДТ, ЭВМ и ПЭВМ должны оборудоваться системами отопления, кондиционирования воздуха или эффективной приточно-вытяжной вентиляцией;

·        для внутренней отделки интерьера помещений с ВДТ, ЭВМ и ПЭВМ должны использоваться диффузно-отражающие материалы с коэффициентом отражения для потолка - 0,7-0,8; для стен - 0,5-0,6; для пола - 0,3-0,5;

·        полимерные материалы, используемые для внутренней отделки интерьера помещений с ВДТ, ЭВМ и ПЭВМ, должны быть разрешены для применения органами Государственного санитарного надзора;

·        поверхность пола в помещениях эксплуатации ВДТ, ЭВМ и ПЭВМ должна быть ровной, без выбоин, нескользкой, удобной для очистки и влажной уборки, обладать антистатическими свойствами.

Требования к микроклимату, содержанию вредных химических веществ и аэроионов в воздухе помещений при эксплуатации ВДТ, ЭВМ И ПЭВМ:

·        в производственных помещениях, в которых работа на ВДТ, ЭВМ и ПЭВМ является основной, должны обеспечиваться оптимальные параметры микроклимата (таблица 5.1);

Таблица 5.1 - Оптимальные параметры микроклимата для помещений с ВДТ, ЭВМ и ПЭВМ

Период года

Категория работ

Температура воздуха,°С не более

Относительная влажность воздуха, %

Скорость движения воздуха, м/с

Холодный

легкая-1а

22-24

40-60

0,1


легкая-1б

21-23

40-60

0,1

Теплый

легкая-1а

23-25

40-60

0,1


легкая-1б

22-24

40-60

0,2

Примечания: к категории 1а относятся работы, производимые сидя и не требующие физического напряжения, при которых расход энергии составляет до 120 ккал/ч; к категории 1б относятся работы, производимые сидя, стоя или связанные с ходьбой и сопровождающиеся некоторым физическим напряжением, при которых расход энергии составляет от 120 до 150 ккал/ч.


·        для повышения влажности воздуха в помещениях с ВДТ, ЭВМ и ПЭВМ следует применять увлажнители воздуха, заправляемые ежедневно дистиллированной или прокипяченной питьевой водой;

·        уровни положительных и отрицательных аэроионов в воздухе помещений с ВДТ и ПЭВМ должны соответствовать нормам, приведенным в таблице 5.2;

Таблица 5.2 - Уровни ионизации воздуха помещений при работе на ВДТ, ЭВМ и ПЭВМ

Уровни

Число ионов в 1 см3 воздуха


п+

п-

Минимально необходимые

400

600

Оптимальные

1500-3000

3000-5000

Максимально допустимые

50000

50000


·        содержание вредных химических веществ в производственных помещениях, в которых работа на ВДТ, ЭВМ и ПЭВМ является основной, не должно превышать значений, установленных в перечне "Предельно допустимых концентрациях, загрязняющих веществ в атмосферном воздухе населенных мест", № 3086-84, утвержденных МЗ СССР от 27.08.84 г., и дополнений к нему, утвержденных МЗ РБ;

·        запрещается проводить ремонт ВДТ, ЭВМ и ПЭВМ непосредственно в рабочих помещениях.

Требования к параметрам физических факторов в помещениях с ВДТ, ЭВМ и ПЭВМ:

·        при выполнении основной работы на ВДТ, ЭВМ и ПЭВМ (категория I) уровень шума на рабочем месте не должен превышать 50 дБА (таблица 5.3);

·        в помещениях, где работают инженерно-технические работники, осуществляющие лабораторный, аналитический или измерительный контроль (категория II), уровень шума не должен превышать 60 дБА;

·        в помещениях операторов ЭВМ (без дисплеев) (категория III) уровень шума не должен превышать 65 дБА;

·        на рабочих местах в помещениях для размещения шумных агрегатов вычислительных машин (АЦПУ, принтеры и т.п.) - категория IV уровень шума не должен превышать 75 дБА (таблица 5.3).

Таблица 5.3 - Уровни звука, эквивалентные уровни звука и уровни звукового давления в октавных полосах частот

Категория нормы шума

Уровни звукового давления, дБ в октавных полосах со среднегеометрическими частотами, Гц

Уровни звука, эквивалентные уровни звука, дБА


31,5

63

125

250

500

1000

2000

4000

8000


I

86

71

61

54

49

45

42

40

38

50

II

93

79

70

63

58

55

52

50

49

60

III

96

83

74

68

63

60

57

55

54

65

IV

103

91

83

77

73

70

68

66

64

75


·        шумящее оборудование (АЦПУ, принтеры и др.), уровни шума которого превышают допустимые, должно находиться вне помещения с ВДТ, ЭВМ и ПЭВМ;

·        снизить уровень шума в помещениях с ВДТ, ЭВМ и ПЭВМ можно использованием звукопоглощающих материалов для отделки помещений, разрешенных органами Государственного санитарного надзора Республики Беларусь, с максимальными коэффициентами звукопоглощения в области частот 63 - 8000 Гц и подтвержденных специальными акустическими расчетами Дополнительным звукопоглощением служат однотонные занавеси из плотной ткани, гармонирующие с окраской стен и подвешенные в складку на расстоянии 15-20 см от ограждения. Ширина занавеси должна быть в два раза больше ширины окна.

Требования к освещению помещений и рабочих мест с ВДТ, ЭВМ и ПЭВМ:

·        искусственное освещение в помещениях эксплуатации ВДТ, ЭВМ и ПЭВМ должно осуществляться системой общего равномерного освещения. В производственных и административно-общественных помещениях, в случаях преимущественной работы с документами, допускается применение системы комбинированного освещения (к общему освещению дополнительно устанавливаются светильники местного освещения, предназначенные для освещения зоны расположения документов);

·        освещенность на поверхности стола в зоне размещения рабочего документа должна быть 300-500 лк. Местное освещение не должно создавать бликов на поверхности экрана и увеличивать освещенность экрана более 300 лк;

·        следует ограничивать прямую блесткость от источников освещения, при этом яркость светящихся поверхностей (окна, светильники и др.), находящихся в поле зрения, должна быть не более 200 кд/м2 (кандел на метр квадратный);

·        следует ограничивать отраженную блесткость на рабочих поверхностях (экран, стол, клавиатура и др.) за счет правильного выбора типов светильников и расположения рабочих мест по отношению к источникам естественного и искусственного освещения, при этом яркость бликов на экране ВДТ, ЭВМ и ПЭВМ не должна превышать 40 кд/м2 и яркость потолка, при применении системы отраженного освещения, не должна превышать 200 кд/м;

·        в качестве источников света при искусственном освещении должны применяться преимущественно люминесцентные лампы. При устройстве отраженного освещения в производственных и административно-общественных помещениях допускается применение металлогалогенных ламп мощностью до 250 Вт. Допускается применение ламп накаливания в светильниках местного освещения;

·        общее освещение следует выполнять в виде сплошных или прерывистых линий светильников, расположенных сбоку от рабочих мест, параллельно линии зрения пользователя при рядном расположении ВДТ, ЭВМ и ПЭВМ. При периметральном расположении компьютеров линии светильников должны располагаться локализовано над рабочим столом ближе к его переднему краю, обращенному к оператору;

·        для освещения помещений с ВДТ, ЭВМ и ПЭВМ следует применять светильники серии ЛП036 с зеркализованными решетками, укомплектованные высокочастотными пускорегулирующими аппаратами (ВЧ ПРА). Допускается применять светильники серии ЛП036 без ВЧ ПРА только в модификации "Кососвет", а также светильники прямого света - П, преимущественно прямого света - Н, преимущественно отраженного света - В. Применение светильников без рассеивателей и экранирующих решеток не допускается;

·        яркость светильников общего освещения в зоне углов излучения от 50 до 90 градусов с вертикалью в продольной и поперечной плоскостях должна составлять не более 200 кд/м2, защитный угол светильников должен быть не менее 40°;

·        светильники местного освещения должны иметь не просвечивающий отражатель с защитным углом не менее 40°;

·        коэффициент запаса (Кз) для осветительных установок общего освещения должен приниматься равным 1,4;

·        для обеспечения нормируемых значений освещенности в помещениях с ВДТ, ЭВМ и ПЭВМ следует проводить чистку стекол оконных рам и светильников по необходимости, но не реже двух раз в год и проводить своевременную замену перегоревших ламп.

Требования к организации и оборудованию рабочих мест с ВДТ, ЭВМ и ПЭВМ:

·        высота рабочей поверхности стола для взрослых пользователей должна регулироваться в пределах 680-800 мм, при отсутствии такой возможности высота рабочей поверхности стола должна составлять 725 мм;

·        модульными размерами рабочей поверхности стола для ВДТ, ЭВМ и ПЭВМ, на основании которых должны рассчитываться конструктивные размеры, следует считать: ширину 800, 1000, 1200 и 1400 мм, глубину 800 и 1000 мм при нерегулируемой его высоте, равной 725 мм;

·        рабочий стол должен иметь пространство для ног высотой не менее 600 мм, шириной - не менее 500 мм, глубиной на уровне колен - не менее 450 мм и на уровне вытянутых ног - не менее 650 мм.

·        конструкция рабочего стула (кресла) должна обеспечивать:

-       ширину и глубину поверхности сиденья не менее 400 мм;

-       поверхность сиденья с закругленным передним краем;

-       регулировку высоты поверхности сиденья в пределах 400-550 мм и углам наклона вперед до 15° и назад до 5°;

-       высоту опорной поверхности спинки 300 ± 20 мм, ширину - не менее 380 мм и радиус кривизны горизонтальной плоскости - 400 мм;

-       угол наклона спинки в вертикальной плоскости в пределах 0 ± 30°;

-       регулировку расстояния спинки от переднего края сиденья в пределах 260 - 400 мм;

-       стационарные или съемные подлокотники длиной не менее 250 мм и шириной - 50-70 мм;

-       регулировку подлокотников по высоте над сиденьем в пределах 230 ± 30 мм и внутреннего расстояния между подлокотниками в пределах 350-500 мм.

·        рабочее место должно быть оборудовано подставкой для ног, имеющей ширину не менее 300 мм, глубину не менее 400 мм, регулировку по высоте в пределах до 150 мм и по углу наклона опорной поверхности подставки до 20 градусов. Поверхность подставки должна быть рифленой и иметь по переднему краю бортик высотой 10 мм;

·        клавиатуру следует располагать на поверхности стола на расстоянии не менее чем 300 мм от края, обращенного к пользователю или на специальной, регулируемой по высоте рабочей поверхности, отделенной от основной столешницы.

Согласно вышеизложенным требованиям к организации пространства при работе на ПЭВМ, спроектируем рабочие места для инженеров-программистов. На рисунках 5.1 и 5.2 приведены проектные автоматизированные рабочие места инженеров-программистов.

Рисунок 5.1 - План спроектированного помещения

Рисунок 5.2 - Проект помещения с автоматизированными рабочими местами

Таким образом, соответствие спроектированных рабочих мест вышеизложенным требованиям санитарных норм обеспечивает благоприятные условия для работы инженеров-программистов.

Заключение


В ходе выполнения дипломного проекта разработан файловый менеджер с возможностью использования web-сервиса для получения и отправки данных.

Рассмотрены общие характеристики операционной системы Android. Изучен комплект для разработки программ Android Software Development Kit. Проведен сравнительный анализ существующих файловых менеджеров. Определены структура и принципы работы приложения. Обоснован выбор визуальной среды разработки приложений Eclipse Indigo. Разработано программное обеспечение соответсвуюшее определенным принципам работы.

Разработанное приложение выполняет следующие основные функции:

·        работы с файлами (копирование, перемещение, удаление);

·        создание новых каталогов;

·        работа с web-сервисом box.

При выполнении дипломного проекта использовались следующие программные продукты:

Eclipse Indigo - среда разработки;

Android Software Development Kit - комплект для разработки программ Android;

MS Visio 2007 - оформление графического материала;Word 2007 - оформление текстовых материалов.

Рассчитана стоимость программного обеспечения, рассмотрены требования по организации рабочего места инженера-программиста.

Список использованных источников


1 Бочков, К.А. Автоматика, телемеханика и связь на транспорте: Пособие по оформлению дипломных проектов / К.А. Бочков, С.Н. Харлап, А.Г. Серенков, В.Ф. Кондрачук - Гомель: БелГУТ, 2012. - 74 с.

2 Голощапов, А.Л. Google Android: программирование для мобильных устройств / А.Л. Голощапов - СПб.: БХВ-Петербург, 2011. - 448 с.

Емельянова, И.А. Технико-экономическое обоснование в дипломных проектах. Пособие для студентов электротехнического факультета / И.А. Емельянова - Гомель: БелГУТ, 2004. - 50 с.

СанПиН 9-131 РБ 2000 "Гигиенические требования к видеодисплейным терминалам, электронно-вычислительным машинам и организации работы", Мн., 2000.

Техника безопасности, №1, 2005. Голиков П.Е. Компьютерный зрительный синдром - основная проблема операторов ПК.

Хашими, С. Разработка приложений для Android / С. Хашими, С. Коматинени, Д. Маклин - СПб.: Питер, 2011 - 736 с.

Шатило, С.Н. Методические указания к выполнению раздела "Охрана труда" в дипломных проектах / С.Н. Шатило, А.М. Рудницкий - Гомель: БелИИЖТ, 1990. - 41 с.

8 Эккель, Б. Философия Java. Библиотека программиста / Б. Эккель - СПб.: Питер, 2009. - 640 с.

9 "ЕСКД. Общие требования к текстовым документам" (ГОСТ 2.105-95)

10 Официальный сайт обеспечения Android SDK [Электронный ресурс] - режим доступа: http://developer. android.com <http://developer.android.com/>

Приложения

 

Приложение А

 

Файл разметки main. xml

<? xml version="1.0" encoding="utf-8"? >

<LinearLayout xmlns: android="http://schemas. android.com/apk/res/android": id="@+id/LinearLayout1": layout_width="fill_parent": layout_height="fill_parent": background="@android: color/white": orientation="vertical">

<LinearLayout: layout_width="fill_parent": layout_height="wrap_content": baselineAligned="false": onClick="navigationButtonClicked": orientation="horizontal": background="@drawable/main_screen_back": padding="5dp": layout_margin="2dp" >

<ImageView: id="@+id/imageView1": layout_width="wrap_content": layout_height="wrap_content": src="@drawable/ic_main_myfiles" />

<TextView: id="@+id/textView1": layout_width="fill_parent": layout_height="wrap_content": layout_gravity="center": paddingLeft="5dp": text="@string/myfiles_for_textview_on_main": textColor="@android: color/black": textSize="22dp": textStyle="bold" />

</LinearLayout>

<LinearLayout: layout_width="fill_parent": layout_height="wrap_content": onClick="cloudButtonClicked": orientation="horizontal": background="@drawable/main_screen_back": padding="5dp": layout_margin="2dp" >

<ImageView: id="@+id/imageView2": layout_width="wrap_content": layout_height="wrap_content": src="@drawable/ic_main_cloud" />

<TextView: id="@+id/textView2": layout_width="fill_parent": layout_height="wrap_content": layout_gravity="center": paddingLeft="5dp": text="@string/cloud_for_textview_on_main": textColor="@android: color/black": textSize="22dp": textStyle="bold" />

</LinearLayout>

</LinearLayout>

Файл меню опций icon_menu_for_main. xml

<? xml version="1.0" encoding="utf-8"? >

<menu xmlns: android="http://schemas. android.com/apk/res/android" >

<item android: id="@+id/icon_menu_quit": icon="@drawable/ic_menu_quit": title="@string/menu_quit_title" />

</menu>

Файл разметки navigation. xml

<? xml version="1.0" encoding="utf-8"? >

<LinearLayout xmlns: android="http://schemas. android.com/apk/res/android": id="@+id/LinearLayout1": layout_width="fill_parent": layout_height="fill_parent": background="@android: color/white": orientation="vertical" >

<LinearLayout: layout_width="fill_parent": layout_height="wrap_content" >

<Button: id="@+id/rootButton": layout_width="0dp": layout_height="wrap_content": layout_weight="1": text="/": onClick="rootButtonClicked"/>

<Button: id="@+id/memoryCardButton": layout_width="0dp": layout_height="wrap_content": layout_weight="2": text="@string/memory_card_for_button": onClick="memoryCardButtonClicked"/>

<Button: id="@+id/multiSelectButton": layout_width="0dp": layout_height="wrap_content": layout_weight="2": text="@string/multiselection_for_button": onClick="multiSelectButtonClicked"/>

</LinearLayout>

<TextView: id="@+id/titleManager": layout_width="fill_parent": layout_height="wrap_content": background="@android: color/white": padding="5dp": textColor="@android: color/black": textSize="18dp": textStyle="bold" />

<LinearLayout: layout_width="fill_parent": layout_height="wrap_content": orientation="vertical" >

<ListView: id="@+id/android: list": layout_width="fill_parent": layout_height="fill_parent": layout_weight="1": background="@android: color/white": cacheColorHint="#00000000": drawSelectorOnTop="true" >

</LinearLayout>

</LinearLayout>

Файл меню опций icon_menu_for_navigation. xml

<? xml version="1.0" encoding="utf-8"? >

<menu xmlns: android="http://schemas. android.com/apk/res/android" >

<item android: id="@+id/icon_menu_copy": icon="@drawable/ic_menu_copy": title="@string/menu_copy_title" />

<item android: id="@+id/icon_menu_cut": icon="@drawable/ic_menu_cut": title="@string/menu_cut_title" />

<item android: id="@+id/icon_menu_paste": icon="@drawable/ic_menu_paste": title="@string/menu_paste_title" />

<item android: id="@+id/icon_menu_delete": icon="@drawable/ic_menu_delete": title="@string/menu_delete_title" />

<item android: id="@+id/icon_menu_newfolder": icon="@drawable/ic_menu_newfolder": title="@string/menu_newfolder_title" />

<item android: id="@+id/icon_menu_back": icon="@drawable/ic_menu_back": title="@string/menu_back_title" />

</menu>

Файл разметки элемента списка row. xml

<? xml version="1.0" encoding="utf-8"? >

<RelativeLayout xmlns: android="http://schemas. android.com/apk/res/android": layout_width="fill_parent": layout_height="fill_parent" >

<ImageView: id="@+id/imageViewForIcon": layout_width="wrap_content": layout_height="wrap_content": layout_alignParentLeft="true": layout_centerVertical="true": src="@drawable/ic_launcher" />

<TextView: id="@+id/textViewForName": layout_width="wrap_content": layout_height="wrap_content": layout_centerVertical="true": layout_marginLeft="42dp": ellipsize="end": gravity="center_vertical": padding="5dp": scrollHorizontally="true": textColor="@android: color/black": textSize="18dp" />

<ImageView: id="@+id/imageViewForSelect": layout_width="wrap_content": layout_height="wrap_content": layout_alignParentRight="true": layout_centerVertical="true": maxHeight="36dp": maxWidth="36dp"/>

</RelativeLayout>

Файл строковых ресурсов string. xml

<? xml version="1.0" encoding="utf-8"? >

<resources>

<string name="app_name">FileManager</string>

<string name="menu_copy_title">Копировать</string>

<string name="menu_cut_title">Вырезать</string>

<string name="menu_delete_title">Удалить</string>

<string name="menu_paste_title">Вставить</string>

<string name="menu_newfolder_title">Новая папка</string>

<string name="menu_back_title">Назад</string>

<string name="menu_quit_title">Выйти</string>

<string name="myfiles_for_textview_on_main">Мои файлы</string>

<string name="cloud_for_textview_on_main">Мое облако</string>

<string name="memory_card_for_button">Карта памяти</string>

<string name="multiselection_for_button">Мульти-выбор</string>

</resources>

Файл MainActivity. java

package ru. mail. korgik46. filemanager;

import android. app. Activity;

import android. content. Intent;

import android.net. Uri;

import android. os. Bundle;

import android. view. Menu;

import android. view. MenuInflater;

import android. view. MenuItem;

import android. view. View;

public class MainActivity extends Activity {

static final String HTTP_FOR_WEB = "http://www.box.com";

/** Вызывается при создании окна */

@Override

public void onCreate (Bundle savedInstanceState) {

super. onCreate (savedInstanceState);(R. layout. main);

}

/** Вызывается при выборе пункта "Мои файлы" */

public void navigationButtonClicked (View v) {startNavigationActivity;= new Intent (this, NavigationActivity. class);(startNavigationActivity);

}

/** Вызывается при выборе пункта "Мое облако" */

public void cloudButtonClicked (View v) {launchIntent;= new Intent (Intent. ACTION_VIEW, Uri. parse (HTTP_FOR_WEB));(launchIntent);

}

@Override

public boolean onCreateOptionsMenu (Menu menu) {inflater = getMenuInflater ();. inflate (R. menu. icon_menu_for_main, menu);

return true;

}

@Override

public boolean onOptionsItemSelected (MenuItem item) {

// Handle item selection

switch (item. getItemId ()) {

case R. id. icon_menu_quit:();

return true;

default:

return super. onOptionsItemSelected (item);

}

}

private void quit () {();

}

}

Файл NavigationActivity. java ru. mail. korgik46. filemanager;

import java. io. File;

import java. io. FileInputStream;

import java. io. FileNotFoundException;

import java. io. FileOutputStream;

import java. io. IOException;

import java. io. InputStream;

import java. io. OutputStream;

import java. util. ArrayList;

import java. util. List;

import android. app. AlertDialog;

import android. app. ListActivity;

import android. content. DialogInterface;

import android. content. DialogInterface. OnClickListener;

import android. content. Intent;

import android. content. res. Configuration;

import android.net. Uri;

import android. os. Bundle;

import android. os. Environment;

import android. view. ContextMenu;

import android. view. ContextMenu. ContextMenuInfo;

import android. view. Menu;

import android. view. MenuInflater;

import android. view. MenuItem;

import android. view. MenuItem. OnMenuItemClickListener;

import android. view. View;

import android. widget. AdapterView. AdapterContextMenuInfo;

import android. widget. ListView;

import android. widget. TextView;

import android. widget. Toast;

public class NavigationActivity extends ListActivity {

private List<String> directoryEntries = new ArrayList<String> ();

private File currentDirectory = new File ("/");

private boolean multiSelection = false;

// Вызывается при создании окна

@Override

public void onCreate (Bundle icicle) {

super. onCreate (icicle);

// Установка главного экрана(R. layout. navigation);

// Обзор корневого каталога

browseTo (new File ("/"));(getListView ());

}

// Вызывается при смене ориентации устройства

@Override

public void onConfigurationChanged (Configuration newConfig) {

super. onConfigurationChanged (newConfig);

// Сохраняется прежнее состояние

}

// При создании контекстного меню

@Override

public void onCreateContextMenu (ContextMenu menu, View v, ContextMenuInfo menuInfo) {aMenuInfo = (AdapterContextMenuInfo) menuInfo;

// Получаем позицию элемента в списке

int position = aMenuInfo. position;

// Получаем данные элемента списка, тип данных здесь вы должны указать свой!

final String item = (String) getListAdapter (). getItem (aMenuInfo. position);. setHeaderTitle (item);. add ("Копировать"). setOnMenuItemClickListener (new OnMenuItemClickListener () {

@Override

public boolean onMenuItemClick (MenuItem item) {();

return true;

}

});. add ("Вырезать"). setOnMenuItemClickListener (new OnMenuItemClickListener () {

@Override

public boolean onMenuItemClick (MenuItem item) {();

return true;

}

});. add ("Удалить"). setOnMenuItemClickListener (new OnMenuItemClickListener () {

@Override

public boolean onMenuItemClick (MenuItem item) {();

return true;

}

});

}

// При создании меню опций

@Override

public boolean onCreateOptionsMenu (Menu menu) {inflater = getMenuInflater ();. inflate (R. menu. icon_menu_for_navigation, menu);

return true;

}

// При выборе пункта меню опций

@Override

public boolean onOptionsItemSelected (MenuItem item) {

switch (item. getItemId ()) {

case R. id. icon_menu_back:();

return true;

case R. id. icon_menu_copy:();

return true;

case R. id. icon_menu_cut:();

return true;

case R. id. icon_menu_paste:();

return true;

case R. id. icon_menu_delete:();

return true;

case R. id. icon_menu_newfolder:();

return true;

default:

return super. onOptionsItemSelected (item);

}

}

private void copyFiles () {

/*{fFrom = new File ("/from");

if (fFrom. isDirectory ()) { // Если директория, копируем все ее содержимое

createDir ("/to");[] FilesList = fFrom. list ();(int i = 0; i <= FilesList. length; i++)(! copy (from + "/" + FilesList [i], to + "/" + FilesList [i]))

} else if (fFrom. isFile ()) { // Если файл просто копируем егоfTo = new File (to);in = new FileInputStream (fFrom); // Создаем потокиout = new FileOutputStream (fTo);[] buf = new byte [1024];len;( (len = in. read (buf)) > 0) {. write (buf, 0, len);

}. close (); // Закрываем потоки. close ();

}

}(FileNotFoundException ex) { // Обработка ошибок

}(IOException e) { // Обработка ошибок

}*/

}

private void cutFiles () {. makeText (this, "cut выбран", Toast. LENGTH_LONG). show ();

}

private void deleteFiles () {okDeleteButtonListener = new OnClickListener () {

public void onClick (DialogInterface arg0, int arg1) {

// Удалениеfile = new File (path); // Создаем файловую переменную(file. exists ()) { // Если файл или директория существуетdeleteCmd = "rm - r " + path; // Создаем текстовую командную строку

Runtime runtime = Runtime. getRuntime ();{

runtime. exec (deleteCmd); // Выполняем системные команды

} catch (IOException e) {

}

}

}

};noDeleteButtonListener = new OnClickListener () {

public void onClick (DialogInterface arg0, int arg1) {

// Ничего не делать

}

};

// Создание диалога

new AlertDialog. Builder (this)

. setTitle ("Подтверждение") // Заголовок

. setMessage ("Удалить файл?") // Сообщение

. setPositiveButton ("Да", okDeleteButtonListener) // Кнопка подтверждения

. setNegativeButton ("Нет", noDeleteButtonListener)

. show ();

}

private void pasteFiles () {. makeText (this, "paste выбран", Toast. LENGTH_LONG). show ();

}

private void newFolder () {newFolder = new File ("/folder");

if (newFolder. exists ()) {. mkdirs ();

}

}

public void rootButtonClicked (View v) {= new File ("/");(currentDirectory);

}

public void memoryCardButtonClicked (View v) {

// проверяем доступность SD

if (! Environment. getExternalStorageState (). equals (Environment. MEDIA_MOUNTED)) {

Toast. makeText (this, "SD-карта не доступна: "

+ Environment. getExternalStorageState (),

). show ();

return;

}

// получаем путь к SD= Environment. getExternalStorageDirectory ();(currentDirectory);

}

public void multiSelectButtonClicked (View v) {

if (multiSelection) {= false;. makeText (this, "Множественный выбор выключен",

). show ();

}

else {= true;. makeText (this, "Множественный выбор включен",

). show ();

}

}

// Обзор родительского каталога

private void upOneLevel () {

if (this. currentDirectory. getParent ()! = null) {

this. browseTo (this. currentDirectory. getParentFile ());

}

}

// Обзор файла или каталога

private void browseTo (final File aDirectory) {

// Если открывается каталог

if (aDirectory. isDirectory ()) {

// Заполнение списка файлами из открываемого каталога

this. currentDirectory = aDirectory;(aDirectory. listFiles ());

// Установка текста заголовкаtitleManager = (TextView) findViewById (R. id. titleManager);. setText (aDirectory. getAbsolutePath ());

}

else {

// При открытии файла запускается диалогokButtonListener = new OnClickListener () {

public void onClick (DialogInterface arg0, int arg1) {i = new Intent (android. content. Intent. ACTION_VIEW, Uri. parse ("file: // " + aDirectory. getAbsolutePath ()));(i);

}

};noButtonListener = new OnClickListener () {

public void onClick (DialogInterface arg0, int arg1) {

// Ничего не делать

}

};

// Создание диалога

new AlertDialog. Builder (this)

. setTitle ("Подтверждение") // Заголовок

. setMessage ("Хотите открыть файл "+ aDirectory. getName () + "?") // Сообщение

. setPositiveButton ("Да", okButtonListener) // Кнопка подтверждения

. setNegativeButton ("Нет", noButtonListener)

. show ();

}

}

// Заполнение списка

private void fill (File [] files) {

try {

// Очистка списка

this. directoryEntries. clear ();

if (this. currentDirectory. getParent ()! = null)

this. directoryEntries. add (". ");

// Добавление всех файлов в список

for (File file: files) {

this. directoryEntries. add (file. getAbsolutePath ());

}

// Создание ArrayAdapter'a для отображения спискаdirectoryList = new ArrayAdapterForList (this, this. directoryEntries);

this. setListAdapter (directoryList);

}

catch (Exception e)

{. makeText (this, "Нет прав для доступа",

). show ();;

}

}

// При нажатии пункта списка

@Override

protected void onListItemClick (ListView l, View v, int position, long id) {

// При выключенном множественном выборе

if (! multiSelection) {

String item = (String) getListAdapter (). getItem (position);. makeText (this, item + " выбран",

). show ();

// Получение названия выбранного файла

int selectionRowID = position;

String selectedFileString = this. directoryEntries. get (selectionRowID);

// Если выбрано"." поднимаемся выше

if (selectedFileString. equals (". ")) {

this. upOneLevel ();

}

else {

// Обзор выбранного файла или каталога функцией browseTo ()

File clickedFile = null;= new File (selectedFileString);

if (clickedFile! = null) {

this. browseTo (clickedFile);

}

}

}

else{

}

}

}

Файл ArrayAdapterForList. java

package ru. mail. korgik46. filemanager;

import java. io. File;

import java. util. List;

import android. app. Activity;

import android. view. LayoutInflater;

import android. view. View;

import android. view. ViewGroup;

import android. widget. ArrayAdapter;

import android. widget. ImageView;

import android. widget. TextView;

/** Определение адаптера для списка */

public class ArrayAdapterForList extends ArrayAdapter<String> {

private final Activity context;

private final List<String> itemTitle;

private File currentDirectory;

static final int TYPE_OF_ITEM = R. layout. row;

public ArrayAdapterForList (Activity context, List<String> directoryEntries) {

super (context, TYPE_OF_ITEM, directoryEntries);

this. context = context;

this. itemTitle = directoryEntries;

}

/** View-holder pattern */

static class ViewHolder {

public ImageView imageViewHolder;

public TextView titleViewHolder;

public ImageView selectHolder;

}

@Override

public View getView (int position, View convertView, ViewGroup parent) {holder;= new File ("itemTitle. get (position)");rowView = convertView;

if (rowView == null) {inflater = context. getLayoutInflater ();= inflater. inflate (TYPE_OF_ITEM, null, true);= new ViewHolder ();. imageViewHolder = (ImageView) rowView. findViewById (R. id. imageViewForIcon);. titleViewHolder = (TextView) rowView. findViewById (R. id. textViewForName);. selectHolder = (ImageView) rowView. findViewById (R. id. imageViewForSelect);. setTag (holder);

}

else {= (ViewHolder) rowView. getTag ();

}

if (! currentDirectory. isDirectory ()) {. imageViewHolder. setImageResource (R. drawable. ic_menu_folder);

}

else. imageViewHolder. setImageResource (R. drawable. ic_menu_file);. titleViewHolder. setText (itemTitle. get (position));

return rowView;

}

}

Файл AndroidManifest. xml

<manifest xmlns: android="http://schemas. android.com/apk/res/android"="ru. mail. korgik46. filemanager": versionCode="1": versionName="1.0" >

<uses-sdk android: minSdkVersion="7" />

<uses-permission android: name="android. permission. WRITE_EXTERNAL_STORAGE"/>

<uses-permission android: name="android. permission. INTERNET"/>

<application: icon="@drawable/ic_launcher": label="@string/app_name" >

<activity: name=". MainActivity": label="@string/app_name" >

<intent-filter>

<action android: name="android. intent. action. MAIN" />

<category android: name="android. intent. category. LAUNCHER" />

</intent-filter>

</activity>

<activity android: name="NavigationActivity": configChanges="keyboardHidden|orientation">

</activity>

</application>

</manifest>

Похожие работы на - Разработка и сопровождение приложений на базе операционной системы Android

 

Не нашли материал для своей работы?
Поможем написать уникальную работу
Без плагиата!