02.06.2015

Мобильный клиент или Контрольная работа 3.

Как построить клиент-серверное приложение

Введение

В этом уроке мы будем учиться тому, как установить коммуникацию между клиентом и сервером, причем клиент – это мобильное Android-приложение, а сервер – это интернет-сервис, хранящий общие для многих клиентов данные и выполняющий их обработку.
Примеров таких приложений множество:
  • мобильный клиент делает фотосъемку и посылает файлы изображений в общее серверное хранилище, где могут подвергаться обработке и откуда они доступны для других клиентов (инстаграм); 
  • мобильный клиент делает опрос и результат посылает серверу, где данные опросов интегрируются, обратно посылается статистика ответов (участие в телешоу, исследование рынка) ; 
  • координаты мобильного клиента отсылаются на сервер, где наносятся на карту, обратно отсылается карта ближайшего  окружения с выделенными типами мобильных клиентов и их телефонов (например, - передвижные пункты проката, ларьки, такси, попутчики, друзья, игроки…), 
  • результаты мобильной игры передаются на сервер для составления рейтинга игроков
  • и т.п.
В простейшем случае для указанных целей можно использовать веб-приложение, где:
- клиентом является браузер, 
- сервер – это веб-сервер,
- для обмена данными используется http-протокол.
Достоинство такого приложения – простота разработки, так как все подробности обмена данными с сервером уже «упакованы» в браузере. Недостатки: низкое быстродействие, ограниченная функциональность.
Поэтому мы рассмотрим здесь, как разработать мобильный клиент, используя «родной» Java.  Остальные компоненты системы останутся такими же. Пример информационных потоков в приложении показан на рисунке 1.
Таким образом, в систему входят следующие компоненты:

  1. клиентский метод, управляющий обработкой пользовательского интерфейса – ввод данных, нажатие кнопок и т.п. (onCreate)
  2. клиентский метод для обмена информацией с веб-сервером (GetText>),
  3. серверный скрипт для получения данных от клиента и возврата ответа (httppost.php);
  4. клиентский метод для отображения полученных данных (showData).
В зависимости от выбранных технологий на клиенте и сервере все компоненты могут быть реализованы совершенно по-разному.
В данном уроке рассмотрим пример приложения «Голосование», в котором пользователь должен ввести регистрационные данные (имя, email) и выбрать один из предложенных вариантов ответа на вопрос. Затем номер выбранного варианта отсылается на сервер, где хранятся счетчики голосов по каждому варианту, а также БД с регистрационными данными пользователей. К нужному счетчику добавляется 1, а пользователь получает сообщение о приеме данных или отказе сервера, а также значения счетчиков. Если пользователь желает посмотреть статистику голосования, значения счетчиков выводятся в виде диаграммы.
Примечание: пример приложения рассмотрен исключительно в образовательных целях. Не учитываются такие необходимые для реальной жизни компоненты приложения, которые обеспечивают безопасность, надежность и др.

Разработка пользовательского интерфейса

Спланируем интерфейс клиентского приложения (рисунок 2):
Используем табличный макет из 2-х столбцов. В верхней строке - два элемента TextView для подсказки и вывода результатов. Там будет отображаться ответ пользователя и статистика.
Во 2-ой строке – кнопки для работы с сервером (получить статистику и сохранить данные на сервере).
Третья строка – это вопрос и подсказка к нему (текстовые поля). Далее две строки содержат 4 кнопки для выбора ответа.
Наконец, последние 2 строки содержат подсказки и поля для ввода имени и почтового адреса.

Разработка серверной части

Сервер не просто хранит файлы, но и обрабатывает их: анализирует полученные от клиента значения, увеличивает счетчики, посылает их значения клиенту.
В нашем примере все операции будут реализованы на языке PHP.
Все данные будем хранить в базе данных:
-      счетчики голосования в таблице result (code, rating), где  – первый столбец – код ответа, второй – рейтинг ответа (целые числа);
-      список пользователей – в таблице users(name, email).
Алгоритм работы сервера:
1) Вначале проводим разбор http-запроса и записываем в 3 переменные значения: имя пользователя, почту и номер ответа.
2) Затем пользовательское имя и почту с помощью команды выборки ищем в базе данных. Если такой пользователь не найден, то добавляем новую запись в таблицу users.
3) Анализируем код выбранного пользователем ответа codeAnswer:
- делаем выборку в переменную ratingValue из таблицы  result: текущее значение счетчика rating при условии code= codeAnswer.
- если таких ответов еще не было в БД (ratingValue = пустое значение), то добавляем в result новую запись (CodeAnswer, 1);
- иначе: в result заменяем значение rating=ratingValue+1 для записи с code= codeAnswer.
4) Читаем все значения таблицы result и формируем результат, возвращаемый в выходной поток.

Отладка и тестирование сервера

Нам нужен веб-сервер.
Во-первых, вы можете установить на домашнем компьютере web-сервер, php и СУБД, например, MySQL. После того, как приложение будет отлажено, перенести серверную часть приложения на хостинг в интернет и провести тестирование в реальных условиях.
Во-вторых, можно сразу найти хостинг с поддержкой php и СУБД, разобраться, как с ним работать и начать отладку в условиях «живого интернета». Например, на сайте  http://www.hostinger.ru всё это есть - и бесплатно.
Есть достоинства и того и другого метода. Выбирайте сами, учитывая, что обучение работе с веб-сервером не входит в рамки данного курса, а для сдачи контрольной работы достаточно продемонстрировать вариант действующего приложения в любом виде.

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

Текст серверной части см. в файле httpgetpost.php Пример кода отладочной веб-страницы приведен в файле index.html

Разработка клиентской части 

Поскольку обмен данными с сервером – длительная операция, то необходимо создать обработчик этой операции, функционирующий в фоновом режиме, чтобы обеспечить доступность элементов пользовательского интерфейса во время обмена данными. В противном случае приложение «зависает» на время работы с сервером, не реагируя на действия пользователя.
В нашем случае клиентская часть содержит методы:
onCreate – определяются переменные для получения данных с интерфейса,
определяются обработчики всех кнопок. Если пользователь не ввел данные в поля или не выбрал ответ – обращение к серверу не выполняется.
GetText –  обмен данными с сервером: формирует текстовую строку для отсылки имен и значений переменных на сервер, посылает данные и выводит ответ, полученный с сервера, в массив из 4-х значений.
ShowData – массив значений счетчиков выводится в виде диаграммы.
Для отладки клиента сначала убедитесь, что интерфейс работает, а также формируется правильный http-запрос (хотя бы выведите его текст в log ). Только потом можно подключаться к серверу.


Архив проекта клиентской части (без метода вывода диаграммы) можно скачать по ссылке здесь. 

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

О контрольной работе 3

Требуется модернизировать ваш проект по работе 2 так, чтобы он мог что-то сохранять на сервере и выводить некую статистику в виде диаграммы. То есть интерфейс у вас уже есть, только добавьте обмен данными с сервером вместо локальной БД. 
Присылаем отчеты на почту или в форум. Завершить все задания нужно до 20.06. 


07.05.2015

Контрольная работа 2 по разделу 2.

Контрольная работа 2 по модулю 2

Контрольная работа позволит оценить ваши знания по 8 и 9 урокам.

Написать программу, которая изобразит в виде диаграммы статистику голосования.
Главная активность содержит 2 кнопки (или список) - первая запускает активность "Голосование", вторая - "Статистика".
Активность "Голосование" выводит вопрос и позволяет выбрать из 3-х вариантов ответа (см. варианты заданий). Ответ преобразовать в число 0, 1 или 2, затем проанализировать это число и увеличить на 1 одно из трех полей в таблице БД (БД содержит таблицу из трех полей, каждое поле - счетчик числа ответов 0, 1 или 2 вида).
Вторая активность "Статистика" должна получить текущие значения счетчиков из БД и по этим значениям нарисовать диаграмму.
Программа в дальнейшем будет расширена: базу данных будем хранить и синхронизировать с облаком).
Вопрос придумывайте сами. Варианты ответов:
12 3 456
плохо-средне-хорошонет-может быть-да никогда - иногда - всегда ненавижу это равнодушен - обожаю очень близко - на среднем расстоянии - как можно дальше первая - вторая - третья вещь (предмет, система, программа и т.п.)
Задание выполняет бригада из двух студентов.
Срок сдачи - 20 мая текущего года.

Урок 9. Работа с базой данных

Куда же мы без базы данных, если нужно хранить какую-то структурированную информацию: списки клиентов,  заказов и прайс-листы, список артефактов, достигнутые результаты в игре, и мало ли что еще!
В Андроид есть специальный класс для работы с БД SQLite (это простая реляционная БД, хранящаяся в текстовом файле).
Изучаем лекцию 7 в университете ИНтуит (разделы 16.1 и 16.2)
http://www.intuit.ru/studies/courses/12643/1191/lecture/22001
и делаем самостоятельную работу 10:
http://www.intuit.ru/studies/courses/12643/1191/lecture/22003

Контрольное задание к уроку:
1) Придумайте, что в вашем курсовом проекте можно хранить в базе данных, предложите структуру БД из 2-3 таблиц, разработайте sql- запросы для их создания.
2) Измените пример, приведенный в самостоятельной работе к этой теме, для работы с вашей базой данных.

Урок 8. Использование библиотек

"Родные" и сторонние библиотеки позволяют быстрее разработать приложение, пользуясь уже готовыми объектами. Вопрос только в том, - какие выбрать библиотеки и как разобраться в объектах. А ещё - как подключить библиотеку к своему проекту. Именно этому посвящен данный урок.
Прочитайте лекцию на сайте ИНТУИТ:
http://www.intuit.ru/studies/courses/12643/1191/lecture/21998,
решите тест по лекции
и проделайте самостоятельную работу
http://www.intuit.ru/studies/courses/12643/1191/lecture/22000.

Результаты ваших трудов понадобятся для 2-ой контрольной работы.


14.04.2015

Контрольная работа 1 по разделу 2.

Контрольная работа по теме 1.

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

Проектирование мобильного приложения сводится к проработке трех компонентов:
- поведения: удобного, понятного и приятного пользовательского интерфейса (сценария взаимодействия пользователя с приложением);
- содержания: состав, структура и собственно информационное наполнение приложения;
- представления: внешний вид приложения (графика и звук).
Расширенные по сравнению с предыдущим семестром сведения о проектировании вы найдете в лекциях ИНТУИТА в рамках курса «Разработка приложений для смартфонов на ОС Android». Знакомимся с лекциями 1 - 3:
в конце сдаем тесты и присылаем подтверждение в виде скриншотов

Выполняем самостоятельные работы 1 - 3. Приведенные в курсе задания и примеры используйте как опору и пример для решения аналогичных задач  своего курсового проекта.
Работа 1. Разработка сценария взаимодействия и требований к программе: http://www.intuit.ru/studies/courses/12786/1219/lecture/22482.
Работа 2: разработка макета и прототипа интерфейса. - http://www.intuit.ru/studies/courses/12786/1219/lecture/22485
Работа 3 - разработка системы тестов - http://www.intuit.ru/studies/courses/12786/1219/lecture/22488

Отчет о контрольной работе по этой теме должен содержать:
  1.       Титульный лист со списком участников бригады. Заголовок отчета: «Отчет о научно-производственной практике» по теме «Организация проектирования мобильных приложений».
  2.       Формулировка темы курсового проекта, обоснование ее актуальности (анализ аналогов, SWOT-анализ проекта);
  3.       Отчет о проведении интервью с  пользователями и Use-case диаграмма сценария взаимодействия каждого типа пользователя с приложением.
  4.       Техническое задание на проект и технические требования к приложению.
  5.       Проект дизайна интерфейса приложения (эскизы экранов приложения, связанные в диаграмму переходов между экранами).
  6. Проект тест-кейса (словесное описание  всех видов тестов, например - см. http://okiseleva.blogspot.ru/2014/08/blog-post.html, а также http://www.protesting.ru/testing/templates.html),
  7. Календарный план проекта (может быть в форме диаграммы Ганта) и распределение ролей между участниками бригады.
Контрольная работа выполняется бригадой из 3-4 студентов (в том же составе, как и в курсовом проекте). Распределите работу между участниками и в отчете укажите, кем написан каждый из разделов.

Отчет о работе оформить в формате WORD  и сдать на проверку до 1.05.2015. 

Скриншоты о прохождении тестов приложить к отчету (в приложении).
Отчеты присылайте на мою почту, складывайте в облако. Также можем продолжить использовать форум Google

12.03.2015

Урок 7. Этапы жизненного цикла мобильных приложений

Модуль 2. Тема 1. Проектирование, тестирование и поддержка процесса разработки мобильных приложений.

Цель: ознакомиться с современными подходами к процессу разработки мобильных приложений и программным обеспечением для поддержки ЖЦ МП; поставить задачи курсового проекта.
 План
1.     Основные виды мобильных приложений (МП).
2.     Жизненный цикл МП.
3.     Управление проектами разработки МП. Проектная документация: техническое задание, календарный план и др.
4.     Процесс разработки МП. Организация коллективной работы над проектом.
5.     Тестирование МП.
6.     Публикация и продвижение МП.

Методические рекомендации

Прочитайте приведенный здесь краткий обзор материала по теме. Распределите в группе вопросы темы и подготовьте обзор приведенной литературы по каждому вопросу (можно использовать другие источники).  
На следующем занятии проводим семинар по данной теме. Выступления занимают по 5 минут, обсуждение доклада - до 5 минут.  Приветствуется доклад с презентацией.
Те, кто не готовит выступления, готовят по 3 тестовых задания к каждому вопросу и формируют общий тест по теме.  Тестовые задания содержат: вопросы с выбором альтернативных ответов (не менее 3-х), вопросы на сопоставление, вопросы с открытым ответом (вводится 1-2 слова). Рекомендуется Google таблицы и формы для создания теста.

Не участвовавшие в семинаре студенты проходят тестирование по теме.

1 вопрос. Виды мобильных приложений

Сегодня из Android-market и AppStore уже загружено около миллиарда приложений и в связи с удешевлением и доступностью смартфонов количество потребителей будет расти еще долго. Рынок МП – очень динамичный. Эксперты публикуют данные, что максимальную долю мирового рынка занимают iOS приложения, но в России распределение количества пользователей разных ОС другое: 63% - Android,  по 12% - Bada и Simbian, 5% - Windows Phone. Поэтому есть смысл ориентироваться именно на недорогие Android-приложения.
Наряду с большими платформами, такими как Google Android или Apple iOS, существуют многочисленные ответвления, с которыми могут работать разработчики и которые открывают рынок приложений в новом свете – например, речь идет о носимых устройствах, типа часов, Интернете вещей, умных телевизорах. У всех у них есть свои приложения и выбор целевой платформы становится еще одной проблемой для разработчиков.
Эксперты J’son & Partners Consulting разделяют рынок приложений на следующие сегменты: контентные приложения, бизнес-приложения, мобильные игры и социальные сети.

Контентные приложения очень популярны: они предназначены для прослушивания музыки, просмотра фильмов и фотографий,  чтения цифровых книг и журналов. Сюда же можно отнести информационные приложения: погода, расписания, новости, карты, транспорт, рецепты и т.п. Это и справочники, руководства и учебники, прилагаемые к сложному товару (автомобиль, станок, оборудование),  услуге (обучение и доступ к онлайн-обучению) или предприятию (университет, визитная карточка фирмы и специалиста). Также это приложения, созданные специально к какому-то событию (олимпиада, футбольный чемпионат, выставка или конгресс). Наконец, специальные рекламные приложения, позволяющие не только рекламировать товар или бренд, но и получить обратную связь от покупателя.
Еще варианты: поиск нужного сервиса (банкомата, автозаправки, стоянки, магазина, гостиницы, репетитора…), заказ/бронирование товара, запись на прием, просмотр отзывов на товар.
Заказчики подобных приложений – владельцы контента: СМИ, фирмы – производители, сервисные фирмы.
     
      Бизнес-приложения помогают в офисной работе, расчетах, обмене служебными данными, а также предоставляют доступ к интернет-магазинам, платежным системам и банковским счетам. В настоящий момент сегмент бизнес-приложений является предпочтительным для инвесторов, но сложность составляет перевод бизнес-задач на мобильные телефоны.
       Мобильные игры - это наиболее востребованный сектор МП. Увеличивается количество игр, выпускаются новые версии существующих, расширяется аудитория (возраст - от 0 до 100 лет, языковая локализация, культурные особенности).
       Мобильные социальные сети.  Социальные сети с каждым днем набирают все большую популярность, наращивая многочисленную аудиторию по всему миру, чему способствует доступность сетей со смартфонов. То есть МП для всех видов общения – актуальны.

С технической точки зрения можно выделить 4 вида МП:
- приложения переднего плана – выполняются только, когда видимы на экране;
- фоновые приложения – не взаимодействуют с пользователем после настройки,
- смешанные приложения – основной режим – фоновый, но некоторые события могут переводить их в диалоговый режим;
- виджеты – графические объекты для отображения динамической информации.
Сложные приложения могут включать компоненты нескольких видов.

Литература:
1.     Рынок МП в России и мире - www.json.ru/poleznye_materialy/free_market_watches/analytics/rynok_mobilnyh_prilozhenij_v_rossii_i_mire/
2.     Тренды рынка МП - http://www.gazeta.ru/tech/2013/12/19_a_5811609.shtml
3.     Доли рынка, сектора - http://www.apollo-8.ru/mobilnie-prilojeniya.

2 вопрос. Жизненный цикл МП.

Этапы ЖЦ:
1.     Определение цели (портрет пользователя - социально-демографического среза аудитории, маркетинговых задач, разработка концепции и механизма привлечения аудитории)
2.     Анализ требований и разработка концепции продукта (составление требований к программе, ТЗ, тест-кейсов)
3.     Проектирование графического интерфейса и структуры программного кода (составление каркаса дизайна, карты экранов, чернового прототипа, сценариев использования программы, модель классов высшего уровня, требования к серверу)
4.     Окончательный дизайн интерфейса (разработка прототипа высокой детализации и тестирование его пользователями)
5.     Программирование и отладка функционала (клиент, сервер, безопасность, проврка на модульных тестах)
6.     Тестирование (проверка на тест-кейсах на соответствие исходным требованиям)
7.     Публикация в магазинах (подготовка маркетинговых материалов – описаний, скриншотов, видео презентации, выпуск релиза МП) и продвижение
8.     Техническая поддержка: взаимодействие с пользователями, фиксация ошибок
9.     Развитие и обновление (новый релиз) – повторение цикла, начиная с 1.
10.  Отказ от сопровождения (утилизация)

Литература
1.     Пример этапов разработки - http://itech-mobile.ru/stages.html
2.     О задачах каждого этапа - http://habrahabr.ru/company/mailru/blog/179113/
3.     Директор компании об этапах - http://siliconrus.com/2014/06/mobile-app-development/
4.     Блок-схема - http://www.web-classic.ru/services/razrabotka_mobilnykh_prilozhenij/etapy_razrabotki_mobilnyh_prilozheniy/

3 вопрос. Управление проектами МП. Проектная документация

Организация разработки МП – это одна из управленческих задач, получившая общепринятое название «управление проектами» (Project Management), представляет собой искусство руководства и координации людских и материальных ресурсов на протяжении жизненного цикла проекта путем применения современных методов и техники управления для достижения определенных в проекте результатов по составу и объему работ, стоимости, времени, качеству и удовлетворению участников проекта.[1]
Для успеха проекта необходимо составить план проекта, провести его анализ на предмет выполнимости в существующих условиях и контролировать результаты каждого этапа выполнения плана. В плане проекта фиксируют работы, необходимое время, результат на каждом этапе и требуемые ресурсы. Для иллюстрации плана проекта готовят сетевой график (последовательность работ) проекта и ресурсную гистограмму (потребность в различных ресурсах в каждый момент времени).
Управление проектом мобильного приложения имеет некоторые особенности:
- небольшой размер приложения по сравнению с «настольными» и веб-приложениями;
- небольшой бюджет,
- малый срок разработки (жесткие требования к срокам, нельзя опоздать даже на день),
- проект часто не документируется,
- анализ требований, проектирование и кодирование прототипов часто выполняются одновременно, и зачастую раньше, чем появился договор с заказчиком;
- заказчик редко может сформулировать требования или ссылается на приложение-конкурент;
- требования могут изменяться в процессе разработки;
- часто один менеджер управляет 2-4 проектами одновременно;
- в целом проект более рискован.

Особенности самих приложений:
- устройство имеет массу сенсоров, события от которых могут неожиданно влиять на работу программы;
- имеется масса моделей устройств и версий ОС, необходимо тестирование на многих моделях или в договоре перечислять, какие именно поддерживаются;

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

Гибкие модели процесса разработки ПО


Гибкая методология разработки программного обеспечения ориентирована на использование итеративного подхода, при которомпрограммный продукт создается постепенно, небольшими шагами, включающими реализацию определенного набора требований. При этом предполагается, что требования могут изменяться. Команды, использующие гибкие методологии, формируются из универсальных разработчиков, которые выполняют различные задачи в процессе создания программного продукта.
При использовании гибких методологий минимизация рисков осуществляется путём сведения разработки к серии коротких циклов, называемых итерациями, продолжительностью 2 -3 недели. Итерация представляет собой набор задач, запланированных на выполнение в определенный период времени. В каждой итерации создается работоспособный вариант программной системы, в которой реализуются наиболее приоритетные (для данной итерации) требования заказчика. На каждой итерации выполняются все задачи, необходимые для создания работоспособного программного обеспечения: планирование, анализ требований, проектирование,кодирование, тестирование и документирование. Хотя отдельная итерация, как правило, недостаточна для выпуска новой версии продукта, подразумевается, что текущий программный продукт готов к выпуску в конце каждой итерации. По окончании каждой итерации команда выполняет переоценку приоритетов требований к программному продукту, возможно, вносит коррективы в разработку системы.

На этих принципах основано целое семейство методологий:
§  Extreme programming
§  Scrum
§  Lean Software Development
§  Test Driven Development
§  Feature Driven Development и др.

Данные методологии наиболее популярны на сегодняшний день. Основное кредо Agile можно сформулировать как "Гибкость, коммуникация и результат, результат, результат". Данная методология придерживается следующих принципов:
·       Люди и взаимодействие важнее процессов и инструментов
·       Работающая программа важнее исчерпывающей документации
·       Сотрудничество с заказчиком важнее формальных договоренностей контракта
·       Готовность к изменениям важнее следования первоначальному плану
В литературе можно найти  более подробную детализацию этих принципов

Ограничения методологии Agile:
·       Fixed Price проекты. Невозможно адекватно оценить проект, если декларируется поздний сбор требований.
·       Проекты разработки ПО, выполняющие критические работы. Для таких проектов важны стандартизированные шаблоны и процессы, поскольку они позволяют создавать ПО заранее оговоренного качества.
·       Проекты в совершенно новой области. Абсолютно не зная специфики предметной области, необходимо начинать проект с глубокого анализа, сбора требований, прототипирования, фиксирования архитектуры и т. д. Это противоречит принципам методологии Agile.
·       Проекты большого размера и сложности, имеющие длительный срок разработки и внедрения.
·       Низкий уровень квалификации команды.
Agile так распространён потому, что большинство проектов удовлетворяют этим ограничениям. 
Например, на рисунке https://i-msdn.sec.s-msft.com/dynimg/IC367945.gif показана модель жизненного цикла программного решения от Microsoft (MSF)


Распределение обязанностей в команде типичного проекта из 4 человек:
1.     Менеджер проекта:
o   Требования:
§  Высшее образование (не обязательно, но будет являться хорошей «базой»);
§  Опыт в области разработки игрового или иного ПО - от 2 лет;
§  Опыт управления проектной командой  (так же интересен опыт управления удаленными или распределенными командами);
§  Владение современными методиками управления проектами и персоналом;
§  Знания в области планирования и бюджетирования;
§  Представление об архитектуре мобильных приложений, понимание тенденций развития мобильного рынка;
§  Аналитические навыки в области выявления и оценки производственных рисков, управление ими.
                              Обязанности:
-      Участие в разработке ТЗ по проекту (цели, критерии, сроки, бюджет), оценка возможностей реализации проекта в требуемые сроки, разработка календарно-сетевых планов по проекту, выработка критериев и процедур приемки выполненных работ;
-      Организация процесса разработки, управление командой, постоянный мониторинг соответствия темпов разработки существующим планам;
-      Выявление проектных рисков и выработка решений по их минимизации;
-      Управление изменениями в требованиях, возникающими в процессе разработки;
-      Менеджмент в области организации работы специалистов компании (рабочее место, оборудование, программный инструментарий, прочее);
-      Мониторинг моральной и рабочей атмосферы внутри проектной группы, принятие мер по их оздоровлению;
-      Разрешение конфликтных ситуаций – как в коллективе, так и с заказчиками;
-      Ведение проектной документации и полной отчетности по проекту.

2. Дизайнер:
o   Обязанности:
-      Разработка интерфейсов для мобильных приложений: от создания прототипов до полной реализации;
-      Подготовка и нарезка дизайна для разработчиков.
o   Требования к кандидатам:
-      Знание Guidelines и UX для мобильной платформы iOS;
-      Знание стандартных графических элементов операционной системы iOS;
-      Нацеленность на создание красивых и удобных мобильных приложений;
-      Отличное владение Photoshop и знание правил хорошего тона.

 3. Разработчик:
o   Требования:
-      Высшее или незаконченное высшее техническое образование;
-      Опыт программирования и проектирования ПО от 5 лет;
-      Опыт разработки под iOS (Objective C) или Android от 2 лет;
-      Понимание принципов ООП и знание шаблонов проектирования и алгоритмов;
-      Опыт работы с многопоточными приложениями, понимание механизмов управления памятью и журналированием на мобильном устройстве;
-      Отличное знание сетевых протоколов TCP/IP, UDP, HTTP;
-      Уверенный английский язык на уровне технической литературы.
-      Опыт работы в SCRUM
o   Обязанности:
§  Работа в команде c product/project managers, тестировщиками, дизайнерами - нацеленность на качественный финальный продукт;
§  Создавать bugs-free решения (без очевидных багов и утечек памяти);
§  Постоянно изучать новые технологии, что касается последних тенденций в области мобильной разработки.
4. Тестировшик:
o   Основные требования:
§  Опыт работы в QA в игровой индустрии.
§  Знакомство с системами баг-трекинга.
§  Большой игровой опыт.
§  Общая техническая грамотность.
§  Увлечение играми и опыт работы с платформами iOS/Android.
§  Ответственность, скрупулезность, аккуратность, усидчивость.
§  Знание ПК на уровне очень опытного пользователя.
§  Хорошее знание английского языка.
§  Хорошее знание письменного и устного русского языка.
§  Легкая обучаемость.
o   Основные обязанности:
§  Тестирование игр на мобильных устройствах.
§  Занесение отчетов в баг-трекинговую систему.
§  Составление тест планов по гейм-дизайн документам.

На рисунке представлен базовый план проекта. Его особенности: отсутствует чёткая поэтапность реализации, многие задачи выполняются единовременно,


Рис 3.6. Диаграмма Ганта и Базовый план проекта 
Используемый  подход не подразумевает чёткую поэтапность выполнения проекта, и как правило отсутствует большое количество документации. В соответствии с этим, после возникновения необходимости вводить изменения в разработку, при реализации не требуется заново собирать требования и создавать новый прототип по новому ТЗ. Достаточно дизайнеру адаптировать проект под возникшие ограничения, а разработчику на основе нового дизайна и правил изменить существующий код. Измененная диаграмма Ганта по проекту - на рис. 3.7


Рис 3.7. Диаграмма Ганта с отслеживанием

Литература

1. Project Management Institute. PMI PMBOK (4th Edition). Руководство к Своду знаний по управлению проектами (четвёртое издание), Project Management Institute, Inc., 2009.
2. Грей К.Ф., Ларсон Э.У. Управление проектами: Практическое руководство/Пер. с англ.-М.: Издательство «Дело и Сервис», 2003.
3. Agile-манифест разработки программного обеспечения
4.     Ошибки разработки - http://habrahabr.ru/post/247763/
5.     Программы управления проектами - http://www.teamer.ru/, https://planfix.ru/, https://app.asana.com/
6.     Диаграммы Гантта и управление проектами онлайн - http://www.gantter.com/
7.     Сервис управления проектами и планирования (3 чел. Бесплатно) - http://www.comindwork.com/pricing-and-signup
8.     Пишем ТЗ -  http://protext.su/pro/?p=3219, http://protext.su/pro/?p=3223, http://protext.su/pro/?p=3066
9.     Программа для составления ТЗ - http://www.mastertz.ru/
10.     В. Куперштейн. Microsoft Project 2010 в управлении проектами, Изд-во: БХВ-Петербург, 2011 - 416 с.
11 . Аскар Рахимбердиев. Современные процессы разработки программного обеспечения. RSDN Magazine #4-2006.
 http://agilemanifesto.org/iso/ru/ - Agile-манифест разработки программного обеспечения.
12.  http://managementzone.ru/archives/438 - Agile менеджмент
13  http://www.slideshare.net/touchin/ss-10377923 - Лекции Дениса Цыплакова - «Управление разработкой мобильных проектов»
14.   Аналитика компании Json&Partners
15.Технологии командной разработки программного обеспечения информационных систем - / Акаделми Microsoft. - НОУ ИНТУИТ  - www.intuit.ru/studies/courses/4806/1054/lecture/16121


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


Прежде всего, необходимо определить, что и для кого мы пишем. Ответы на эти вопросы оформляются в User Story. Примеры кратких описаний проектов студентов SMU (Сингапур) - см. на сайте https://wiki.smu.edu.sg/is480/2014-2015_Term_2#FLIP


На картинке показан пример описания задачи: как существующий пользователь может войти в приложение, и какие проблемы он может встретить. На этом этапе важно проработать все возможные сценарии, чтобы не было неприятных сюрпризов на более поздних этапах разработки.  Рекомендуется обобщить информацию о функциях проекта на диаграмме вариантов использования.  Примеры диаграммы:
(использован пример с сайта http://www.codeproject.com/Articles/585883/Classic-ASP-and-MVC)

(пример проекта https://wiki.smu.edu.sg/is480/Team_IMATEAM_Mobile_Use_Case)

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

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

Кодирование – следующий этап, который завершается тестированием. Если в разработке кода участвует несколько программистов, то используются средства коллективной работы и средства отслеживания версий приложения.
Если приложение одновременно должно работать на разных платформах и к тому же иметь серверную часть, то проект и команду разработчиков делят на соответствующие группы: сервер, клиент-андроид, клиент-веб, клиент-iOS.
На сервере хранят общую базу данных приложения. Поэтому перед кодированием клиентских программ необходимо спроектировать структуру БД и выбрать протокол обмена информацией с сервером.

Пример последовательности работ над проектом:


 Организация коллективной работы над проектом - см. [14-16].

Литература
1.     Основы разработки интерфейсов МП -http://www.intuit.ru/studies/courses/12643/1191/lecture/21986
2.     Презентация по дизайну UI мобильной коммерции - http://www.slideshare.net/wud/ss-1500408
3.     10 принципов проектирования интерфейса - http://www.cmsmagazine.ru/library/items/graphical_design/10-principles-mobile-interface-design/
4.     Средства прототипирования UI - https://xakep.ru/2014/09/09/prototype-tools/
5.     Программа MAQETTA – макет интерфейса html5 - http://www.ibm.com/developerworks/ru/library/mo-maqetta-1/
6.     Шрифты - http://habrahabr.ru/post/247785/  (просто красиво и бесплатно –один из множества)
7.     Пример описания проекта мобильного приложения (общие сведения, интерфейс, архитектура) - https://code.google.com/p/android-geocaching/wiki/ApplicationArchitecture
8.     Серверы: http://habrahabr.ru/post/158157/
9.     Oracle DB как сервер для мобильных клиентов -  http://www.oracle.com/technetwork/database/database-technologies/database-mobile-server/overview/index.html
10.  О сервере для игр (англ.) - http://gafferongames.com/networking-for-game-programmers/what-every-programmer-needs-to-know-about-game-networking/
11.  Автоматизация процесса разработки - https://academy.yandex.ru/events/autoschool/spb-2014/(видеолекции)
12.  Отладка – см. книга Голощапова А.Л. БХВ-Петербург, 2012 (https://books.google.ru/books?id=hx36iz5za54C&dq=%D0%BE%D1%82%D0%BB%D0%B0%D0%B4%D0%BA%D0%B0+%D0%BC%D0%BE%D0%B1%D0%B8%D0%BB%D1%8C%D0%BD%D0%BE%D0%B3%D0%BE+%D0%BF%D1%80%D0%B8%D0%BB%D0%BE%D0%B6%D0%B5%D0%BD%D0%B8%D1%8F+android&hl=ru&source=gbs_navlinks_s)
13. http://www.google.com/design/spec/material-design/introduction.html# - проектирование интерфейсов 
14. IBM упрощает разработку программного обеспечения в облаке с помощью платформы Bluemix - http://habrahabr.ru/company/ibm/blog/225441/
15. Инструменты, которые мы используем для командной разработки - http://habrahabr.ru/post/178827/
16. https://ru.wikipedia.org/wiki/GitHub

 5 вопрос. Тестирование МП

Тестирование делают как на реальных устройствах (их должно быть много), так и на эмуляторах. Следует составить список устройств и версий Андроид, на которых проводить проверку программы. Пример списка устройств для тестирования на Android:
  • Samsung Galaxy S2 / Android 4.1
  • Samsung Galaxy S3 / Android 4.3
  • Samsung Galaxy S4 / Android 4.4
  • Sony Xperia Z1 / Android 4.4
  • LG Nexus 5 / Android 4.4
  • HTC One X / Android 4.2
Необходимо определить критерии оценки, например: соответствие прототипу, соответствие ТЗ.  Составить план проведения тестирования (распределение работ, ответственные, сроки) и подготовить программы для тестов (тест-кейсы).  Описать форму представления отчета об ошибках и организовать его коллективное составление. Планирование тестирования можно вести параллельно с кодированием, так чтобы к моменту создания программы тесты уже были готовы.
Для тестирования законченных релизов могут привлекаться сторонние тестировщики, в том числе энтузиасты; обязательно применяются средства автоматизации (составление тестов, отчетов по тестам, скриншоты всего пути теста).
Важно сделать приложение  удобным, быстрым, безопасным, понятным и стабильно работающим. Особенно это касается приложений, взаимодействующих с интернетом. Где могут возникнуть проблемы, которые обнаружит тестирование?
  •         Обновления. Нужно сделать его автоматическим, простым.
  •       Языковая поддержка, установка даты-времени.
  •       Юзабилити – привлекательнгость приложения, легкая навигация, разумное энергопотребление.
  •       производительность приложения – загрузка памяти и системы.
  •       Так называемый стресс-тест – проверка реакции приложения на непредсказуемые действия: хаотичное нажатие кнопок, резкое отсоединение от сети или выключение.
  •       Поддержка всех устройств и платформ – приложение должно адекватно работать на всех видах устройств, для которых оно создано, учитывая разный размер экрана, разные оперативные системы и пр.
  •       Последние типы исследований – лабораторное и аттестационное, имитация действий в приложении в реальности и подтверждение готовности приложения.

Литература
1.     Тестирование - http://habrahabr.ru/company/touchinstinct/blog/197060/
2.     Статьи по тестированию http://mobile-testing.ru/how_to_test_mobileapp/
3.     Эмуляторы, симуляторы - http://habrahabr.ru/post/237499/
  

6 вопрос. Публикация,  продвижение и поддержка

Мобильные приложения приносят значительный доход. Существует ряд бизнес-моделей, благодаря которым происходит монетизация рынка мобильных приложений. Некоторые из них:
  • -      Premium - платные приложения: которые продаются в платформе по установленной цене)
  • -      Freemium / In-App Purchases - изначально бесплатные приложения, но которые подразумевают покупки внутри приложения, в том числе расширение до полной версии, какие либо бонусы
  • -      Ad - реклама внутри приложения
  • -      Мобильная коммерция – банкинг, сравнение цен, бронирование мест, купоны.


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

Литература
  1.           Советы по продвижению - http://habrahabr.ru/company/nevosoft/blog/138341/
  2.           Оптимизация и продвижение МП (презентация) - http://www.slideshare.net/sharifulin/mo-co-2014-0603?related=1
  3.          Продвижение в Google Play - http://www.slideshare.net/morenkova/ss-29170193?related=2
  4.          Предпринимательство в области МП - http://www.intuit.ru/studies/courses/3468/710/lecture/22015 
  5.         Продвижение - http://www.intuit.ru/studies/courses/3468/710/lecture/22018
  6.        Аналитика для МП - http://siliconrus.com/2013/10/analitika-dlya-mobilnyih-startapov/
  7.     Магазин приложений Google - ru.wikipedia.org/wiki/Google_Play                                   
  8. Яндекс,Store - https://tech.yandex.ru/store/doc/index-docpage/
  9.  Места распространения Android приложений - http://habrahabr.ru/post/164413
  10. 10 альтернатив магазину приложений Google Play - http://geektimes.ru/post/232273/