Введение 5
1 Определения и обозначения 8
2 Постановка целей 10
3 Обзор существующих технологий для идентификации абонента 11
3.1 Электронные справочники
3.2 Мобильные приложения и сервисы для
мгновенной идентификации абонента . . . . . . . . . . . . . 13
4 Разработка рейтинговой системы
обработки обратной связи от пользователей 16
4.1 Основные проблемы и задачи
4.2 Разработка рейтинговой системы
4.3 Отличия от существующих систем и обзор
существующих вариантов
4.4 Обзор альтернативных вариантов . . . . . . . . . . . . . . . 20
4.5 Результаты
5 Реализация мобильного приложения для
идентификации абонента 22
5.1 База данных
5.2 Веб-приложение на базе ASP.NET
5.3 Мобильное приложение на базе Android .
5.4 Результаты
Заключение 39МОБИЛЬНОЕ ПРИЛОЖЕНИЕ ДЛЯ ИДЕНТИФИКАЦИИ АБОНЕНТА 4
Список литературы
Определение имени и цели звонящего абонента по его телефонному номеру — актуальная задача, которая на сегодняшний момент в ИТ-индустрии не решается комплексно [44]. Возможностью приобрести подробные телефонные базы, доступные любому желающему, пользуются коллекторские и рекламные агентства, телефонные мошенники и другие люди и организации, досаждая владельцам смартфонов нежелательными звонками. Не зная, кто ему звонит, абонент вынужден тратить время на бесполезные беседы. Другая проблема, существующая в современном обществе — информационная перегрузка. У абонента нет времени отвечать на все входящие вызовы. Большинство людей хотели бы сэкономить своё время и другие ресурсы, отказываясь от разговоров, которые не принесут важной информации. В этом свете актуальной представляется задача разработки технологической системы, которая могла бы обеспечить пользователей мгновенным доступом к важной информации о входящих вызовах — кто именно звонит и с какой целью.
Существующие решения — онлайн-справочники (например, «Жёлтые страницы» [9]), мобильные приложения (TrueCaller [30], Contactive [20], Whoscall [32]), — решают задачу лишь частично, обеспечивая либо высокую скорость взаимодействия с системой (за счёт небольшого размера
базы данных, содержащей только те номера, звонки с которых совершаются чаще всего, и чаще всего хранящейся прямо на мобильном устройстве),
либо точность подачи информации и её актуальность (как, правило, точную и актуальную информацию по большинству запросов пользователя предоставляют объёмные онлайн-базы, доступ к которой осуществляется
при помощи веб-браузера). Ещё одна сложность в разработке полезной системы заключается в быстром устаревании информации — и коллекторы,
и рекламные агентства, и обычные пользователи время от времени меняют телефонные номера, и номер, который несколько дней или месяцев принадлежал одному абоненту, уже сейчас может принадлежать другому
человеку. Решением этой проблемы могла бы стать рейтинговая система,
обновление которой происходит на основе полученной от пользователей обратной связи. Многие из перечисленных решений обеспечивают механизмы получения и обработки обратной связи, но скорость работы этих механизмов может оказаться слишком мала, чтобы оперативно реагировать на изменения в телефонной базе.
Представленная в данной работе система учитывает недостатки упомянутых выше решений. Теоретическая ценность такой системы состоит в демонстрации возможности уточнять, добавлять и ранжировать информацию об абонентах самим пользователям. Практическая цель данной работы — создать такую технологическую платформу, которая могла бы предоставлять пользователю максимально полную информацию о характере входящего вызова — кто именно звонит и с какой целью. При этом система должна обрабатывать обратную связь от пользователей, а также предоставлять информацию в сжатые сроки (а именно, обработка запроса не
должна превышать 1–2 секунды: именно столько обычно требуется человеку, чтобы оценить ситуацию и принять решение — в данном случае, ответить на звонок), а также работать в облегченном виде без доступа к сети Интернет.
Наиболее комфортной для пользователя представляется ситуация, когда информация о входящем вызове отображается мгновенно на самом мобильном устройстве. Именно поэтому для разработки системы, представленной в данной квалификационной работе, в качестве платформы была
выбрана операционная система Android [14]. На базе этой операционной системы к началу 2016 года работает 80,7% [51] смартфонов по всему миру.
Основной IDE (средой разработки) была выбрана система Xamarin [34] —
она обеспечивает средства кроссплатформенной разработки и портирования мобильных приложений, так что созданное решение можно будет перенести и на другие мобильные операционные системы. Непрерывную работу системы и её масштабируемость обеспечивает облачный бэкенд, реализованный на платформе Microsoft Azure [24].
Представленное решение состоит из мобильного приложения на базе Android, названного CallDialer (реализовано на платформе .NET [63] во фреймворке Xamarin), двух веб-приложений (реализованных на платформе ASP.NET) и СУБД [5]. И СУБД, и веб-приложения на базе ASP.NET
размещены в облачном хранилище Microsoft Azure [18].
В СУБД хранятся телефонные номера и варианты описаний, которые им присваивают клиенты системы, а также дата и время последнего звонка с каждого номера. Кроме того, в ней ведётся учёт рейтинга каждого из вариантов и каждого из клиентов системы. Рейтинг конкретного имени определяется тем, какое количество клиентов подтвердили его состоятельность и каков рейтинг этих клиентов. Рейтинг клиентов зависит от количества добавленных вариантов имён и их рейтинга. Одно из разработанных веб-приложений отвечает за обработку рейтингов — как пользователей, так и добавленных ими вариантов имён. Второе веб-приложение выступает в качестве анализатора, который определяет владельца телефонного номера и цель его звонков, обрабатывая записи пользователей сети Интернет, собранных с различных специализированных сайтов.
В мобильном приложении пользователь может просмотреть историю входящих вызовов, дополнительную информацию по каждому телефонному номеру и предложить собственные варианты имён. При каждом звонке с неизвестного пользователю номера приложение выводит на главный экран имя с самым высоким рейтингом на текущий момент.
Для удобства изложения сначала раскрывается часть данной работы, касающаяся разработки рейтинговой системы ранжирования вариантов описаний (глава 4), а затем — разработки самой технологической системы (глава 5). Все используемые определения вынесены в главу 1.
В данной работе рассмотрен алгоритм ранжирования данных, учитывающий обратную связь от пользователей системы. Также представлена технологическая платформа, позволяющая идентифицировать абонента и цель его звонка по номеру телефона звонящего, удовлетворяющая всем заданным требованиям.
Результаты работы были представлены на нескольких конференциях «Наука настоящего и будущего 2016», «СПИСОК 2016», «Современные технологии в теории практике программирования 2016».
Все цели работы достигнуты.
[1] Андере, К. Truecaller: How it works and what you need to
know about it. Режим доступа [проверено 7.05.2016]. URL:
https://www.linkedin.com/pulse/truecaller-how-works-what-you-needknow-keith-andere
[2] Баранвал, В. Where does Truecaller get its data. Режим доступа
[проверено 7.05.2016]. URL: https://www.quora.com/Where-doesTruecaller-get-its-data-It-doesnt-seem-to-work-for-me-but-if-it-did-workwouldnt-that-raise-privacy-concerns/answer/Vipul-Baranwal
[3] Бернерс-Ли, Т., Филдинг, Р., Фристик, Г. Hypertext Transfer
Protocol — HTTP/1.0. Режим доступа [проверено 7.05.2016]. URL:
https://tools.ietf.org/html/rfc1945
[4] Лоуренс, Ф. Hanging on the Metaphone. Computer Language, Vol. 7, No.
12, 1990.
[5] Майер, Д. Theory of Relational Databases. Rockville, MD: Computer
Science Press, 1983. P. 637.
[6] Нейгел, К., Ивьен, Б., Глинн, Д., Уотсон, К., Скиннер, М., Джонс, А.
C# 5.0 и платформа .NET 4.5 для профессионалов. M.: Издательство
Вильямс, 2014.
[7] Парамонов, С. Расшифровываем формулу Хабра-рейтинга или
восстановление функциональных зависимостей по эмпирическим данным. Режим доступа [проверено 7.05.2016]. URL:
https://habrahabr.ru/post/249375/
[8] Просто о корпоративном IaaS: что это, для кого, и как
оплачивается. Режим доступа [проверено 7.05.2016]. URL:
https://habrahabr.ru/company/it-grad/blog/257295/
[9] Сайт проекта «Жёлтые страницы». Режим доступа [проверено
7.05.2016]. URL: http://www.yp.ru/
[10] Сайт проекта «Код телефона». Режим доступа [проверено 7.05.2016].
URL: http://www.kodtelefona.ru/region_ru
[11] Сайт проекта «Фотобратск». Режим доступа [проверено 7.05.2016].
URL: http://photobratsk.ru/
[12] Сайт проекта «Фотогорький». Режим доступа [проверено 7.05.2016].
URL: http://www.photogorky.ru/
[13] Сайт проекта «Хабрахабр». Режим доступа [проверено 7.05.2016]. URL:
https://habrahabr.ru/
[14] Сайт проекта Android. Режим доступа [проверено 7.05.2016]. URL:
https://www.android.com/intl/ru_ru/
[15] Сайт проекта Android Developers. BroadcastReceiver.
Режим доступа [проверено 7.05.2016]. URL:
http://developer.android.com/reference/android/content/BroadcastReceiver.html
[16] Сайт проекта Android Developers. CallLog. Режим доступа [проверено 7.05.2016]. URL:
http://developer.android.com/reference/android/provider/CallLog.html
[17] Сайт проекта Android Developers. Toast. Режим доступа [проверено 7.05.2016]. URL:
http://developer.android.com/intl/ru/guide/topics/ui/notifers/toasts.html
[18] Сайт проекта ASP.NET. Режим доступа [проверено 7.05.2016]. URL:
http://www.asp.net/
[19] Сайт проекта Blackberry OS. Режим доступа [проверено 7.05.2016].
URL: http://global.blackberry.com/en/software/smartphones/blackberry-
10-os.html
[20] Сайт проекта Google Play. Contactive. Режим доступа [проверено 7.05.2016]. URL:
https://play.google.com/store/apps/details?id=com.contactive&hl=ru
[21] Сайт проекта GSM Inform. Режим доступа [проверено 7.05.2016]. URL:
https://gsm-inform.ru/info/
[22] Сайт проекта Indexmain. Режим доступа [проверено 7.05.2016]. URL:
http://indexmain.ru/phone/ru
[23] Сайт проекта iOS. Режим доступа [проверено 7.05.2016]. URL:
http://www.apple.com/ru/ios/
[24] Сайт проекта Microsoft Azure. Режим доступа [проверено 7.05.2016].
URL: https://azure.microsoft.com/ru-ru/
[25] Сайт проекта Mono Develop. Режим доступа [проверено 7.05.2016].
URL: http://www.mono-project.com/
[26] Сайт проекта MSDN. Язык Entity SQL. Режим доступа
[проверено 7.05.2016]. URL: https://msdn.microsoft.com/ruru/library/bb399560(v=vs.110).aspx
[27] Сайт проекта SimilarWeb. Режим доступа [проверено 7.05.2016]. URL:
https://www.similarweb.com/
[28] Сайт проекта SQLite. Режим доступа [проверено 7.05.2016]. URL:
https://www.sqlite.org/
[29] Сайт проекта Tellows. Режим доступа [проверено 7.05.2016]. URL:
http://www.tellows.ru/
[30] Сайт проекта Truecaller. Режим доступа [проверено 7.05.2016]. URL:
https://www.truecaller.com/ru
[31] Сайт проекта Visual Studio 2013. Режим доступа [проверено 7.05.2016]. URL: https://www.microsoft.com/ruru/SoftMicrosoft/VisualStudio2013.aspx
[32] Сайт проекта Whoscall. Режим доступа [проверено 7.05.2016]. URL:
https://whoscall.com/en-US/
[33] Сайт проекта Windows Phone. Режим доступа [проверено 7.05.2016].
URL: https://www.microsoft.com/ru-ru/windows/phones
[34] Сайт проекта Xamarin. Режим доступа [проверено 7.05.2016]. URL:
https://www.xamarin.com/
[35] Сайт проекта Xamarin Developers. CallType.
Режим доступа [проверено 7.05.2016]. URL:
https://developer.xamarin.com/api/type/Android.Provider.CallType/
[36] Сайт проекта 2ГИС. Режим доступа [проверено 7.05.2016]. URL:
https://2gis.ru/
[37] Сайт проекта 2GIS Dialer. Режим доступа [проверено 7.05.2016]. URL:
https://apps.2gis.ru/dialer
[38] Скарлетт, К. Облачные стандарты: средства взаимодействия приложений в облаке. Режим доступа [проверено 7.05.2016]. URL:
https://www.ibm.com/developerworks/ru/library/cl-tools-to-ensurecloud-application-interoperability/
[39] Сметанин, Н. Фонетические алгоритмы. Режим доступа [проверено
7.05.2016]. URL: https://habrahabr.ru/post/114947/
[40] Стайн, С. Когда следует использовать пул эластичных
баз данных. Режим доступа [проверено 7.05.2016]. URL:
https://azure.microsoft.com/ru-ru/documentation/articles/sql-databaseelastic-pool-guidance/
[41] Фаулер, М. Unit of Work. Режим доступа [проверено 7.05.2016]. URL:
http://martinfowler.com/eaaCatalog/unitOfWork.html
[42] Филдинг, Р. Representational State Transfer (REST).
Режим доступа [проверено 7.05.2016]. URL:
http://www.ics.uci.edu/˜fielding/pubs/dissertation/rest_arch_style.htm
[43] Хига, С. Создание пула эластичных баз данных на портале Azure. Режим доступа [проверено 7.05.2016]. URL:
https://azure.microsoft.com/ru-ru/documentation/articles/sql-databaseelastic-pool-create-portal/
[44] Хохлова Д. Д., Григорьев Д. А. Разработка системы идентификации
абонентов по номеру телефона. Материалы научно-практической конференции студентов, аспирантов и молодых учёных Северо-Запада
«Современные технологии в теории и практике программирования». —
2016. — С. 28–29.
[45] Шаллоуей А., Тротт Д. Шаблоны проектирования. Новый подход к
объектно-ориентированному анализу и проектированию. М.: Издательство Вильямс, 2002.
[46] Шелёхин, А. Подробно о Xamarin. Режим доступа [проверено
7.05.2016]. URL: https://habrahabr.ru/post/188130/МОБИЛЬНОЕ ПРИЛОЖЕНИЕ ДЛЯ ИДЕНТИФИКАЦИИ АБОНЕНТА 45
[47] Шинкаренко, В.И. Зависимость временной эффективности алгоритмов
и программ обработки больших объемов данных от их кэширования.
Математические машины и системы. 2007. №2. С. 43–55.
[48] Шторкин, С. Средневзвешенная система голосования. Режим доступа
[проверено 7.05.2016]. URL: https://habrahabr.ru/post/63664/
[49] Щербин, И. RESTful API для сервера — делаем правильно. Режим
доступа [проверено 7.05.2016]. URL: https://habrahabr.ru/post/144011/
[50] iOS 9 tells you who that unknown caller is. Режим доступа [проверено
7.05.2016]. URL: http://venturebeat.com/2015/09/16/ios-9-tells-you-whothat-unknown-caller-is/
[51] Gartner Says Worldwide Smartphone Sales Grew 9.7 Percent in
Fourth Quarter of 2015. Режим доступа [проверено 7.05.2016]. URL:
http://www.gartner.com/newsroom/id/3215217
[52] Google buys secretive Silicon Valley start-up,
Android. Режим доступа [проверено 7.05.2016]. URL:
http://www.siliconbeat.com/entries/2005/08/17/google_buys_secretive_silicon_v
[53] Microsoft Azure: Get started with Elastic Database tools. Режим
доступа [проверено 7.05.2016]. URL: https://azure.microsoft.com/enus/documentation/articles/sql-database-elastic-scale-get-started/
[54] MSDN: Класс HttpClient. Режим доступа [проверено 7.05.2016]. URL: https://msdn.microsoft.com/ruru/library/system.net.http.httpclient.aspx
[55] MSDN: System.Net.Http — пространство имен. Режим доступа [проверено 7.05.2016]. URL: https://msdn.microsoft.com/ruru/library/system.net.http.aspxМОБИЛЬНОЕ ПРИЛОЖЕНИЕ ДЛЯ ИДЕНТИФИКАЦИИ АБОНЕНТА 46
[56] Wikipedia: ADO.NET. Режим доступа [проверено 7.05.2016]. URL:
https://ru.wikipedia.org/wiki/ADO.NET
[57] Wikipedia: ADO.NET Entity Framework. Режим доступа [проверено 7.05.2016]. URL:
https://ru.wikipedia.org/wiki/ADO.NET_Entity_Framework
[58] Wikipedia: API. Режим доступа [проверено 7.05.2016]. URL:
https://ru.wikipedia.org/wiki/API
[59] Wikipedia: Cloud Computing. Режим доступа [проверено 7.05.2016].
URL: https://en.wikipedia.org/wiki/Cloud_computing
[60] Wikipedia: ORM. Режим доступа [проверено 7.05.2016]. URL:
https://ru.wikipedia.org/wiki/ORM
[61] Wikipedia: Platform as a Service. Режим доступа [проверено 7.05.2016].
URL: https://ru.wikipedia.org/wiki/Platform_as_a_service
[62] Wikipedia: SaaS. Режим доступа [проверено 7.05.2016]. URL:
https://ru.wikipedia.org/wiki/SaaS
[63] .NET Framework. Режим доступа [проверено 7.05.2016]. URL:
https://www.microsoft.com/net/default.aspx
[64] 200 million users strong and new tagging feature. Сайт проекта Truecaller. Режим доступа [проверено 7.05.2016]. URL:
http://blog.truecaller.com/2015/11/05/200-million-users-strong-andnew-tagging-feature/