Введение в жизненный цикл разработки мобильного программного обеспеченияIntroduction to the mobile Software Development Lifecycle

Создание мобильных приложений может быть очень простым процессом: вы открываете интегрированную среду разработки, быстро выполняете сборку, с легкостью выполняете тестирование и отправляете приложение в Магазин приложений — все это занимает полдня.Building mobile applications can be as easy as opening up the IDE, throwing something together, doing a quick bit of testing, and submitting to an App Store – all done in an afternoon. Или наоборот, вы реализуете чрезвычайно сложную задачу с тщательным предварительным проектированием, тестированием на удобство использования, проверкой качества на множестве устройств и обслуживанием полного жизненного цикла бета-версии с последующим развертыванием различными способами.Or it can be an extremely involved process that involves rigorous up-front design, usability testing, QA testing on thousands of devices, a full beta lifecycle, and then deployment a number of different ways.

В этом документе мы подробно познакомим вас с основными принципами создания мобильных приложений, включая следующие:In this document, we’re going to take a thorough introductory examination of building mobile applications, including:

  1. Процесс — процесс разработки ПО, называется жизненным циклом разработки программного обеспечения (SDLC).Process – The process of software development is called the Software Development Lifecycle (SDLC). Мы рассмотрим все стадии этого цикла в контексте разработки мобильных приложений: формирование идеи, проектирование, разработка, стабилизация, развертывание и обслуживание.We’ll examine all phases of the SDLC with respect to mobile application development, including: Inspiration, Design, Development, Stabilization, Deployment, and Maintenance.
  2. Рекомендации — при создании мобильных приложений следует учитывать ряд моментов, которые отличают их от классических приложений и традиционных веб-приложений.Considerations – There are a number of considerations when building mobile applications, especially in contrast to traditional web or desktop applications. Мы рассмотрим, как они влияют на разработку мобильных приложений.We’ll examine these considerations and how they affect mobile development.

В этом документе приводятся ответы на общие вопросы о разработке мобильных приложений, которые будут полезны как начинающим, так и опытным разработчикам.This document is intended to answer fundamental questions about mobile app development, for new and experienced application developers alike. В этой статье применяется всесторонний подход к описанию большинства понятий, с которыми вы можете столкнуться на протяжении всего жизненного цикла разработки ПО (SDLC).It takes a fairly comprehensive approach to introducing most of the concepts you’ll run into during the entire Software Development Lifecycle (SDLC). Тем не менее этот документ может быть полезен не всем. Если вы хотите лишь ознакомиться с начальной стадией разработки приложений, мы рекомендуем прочитать руководство Введение в разработку мобильных приложений и после этого вернуться к этому документу.However, this document may not be for everyone, if you’re itching to just start building applications, we recommend jumping ahead to the Introduction to Mobile Development guide and then coming back to this document later.

Жизненный цикл разработки мобильных приложенийMobile Development SDLC

Жизненный цикл разработки мобильных приложений по большей части совпадает с жизненным циклом для классических или веб-приложений.The lifecycle of mobile development is largely no different than the SDLC for web or desktop applications. Его также можно разбить на 5 основных стадий:As with those, there are usually 5 major portions of the process:

  1. Зарождение — любое приложение начинается с формирования идеи.Inception – All apps start with an idea. Как правило, хорошо продуманная идея представляет собой прочный фундамент для дальнейшей разработки приложения.That idea is usually refined into a solid basis for an application.
  2. Проектирование — на стадии проектирования вы определяете механизм взаимодействия приложения с пользователем, его общий макет, принципы работы и другие моменты, а также проектируете на их основе пользовательский интерфейс (как правило, для этого применяется графический конструктор).Design – The design phase consists of defining the app’s User Experience (UX) such as what the general layout is, how it works, etc., as well as turning that UX into a proper User Interface (UI) design, usually with the help of a graphic designer.
  3. Разработка — как правило, это наиболее ресурсоемкая стадия создания приложения, которая заключается в его фактическом построении.Development – Usually the most resource intensive phase, this is the actual building of the application.
  4. Стабилизация — на определенной стадии разработки обычно начинается оптимизация качества приложения путем его тестирования и исправление выявленных ошибок.Stabilization – When development is far enough along, QA usually begins to test the application and bugs are fixed. Часто приложения выпускаются в виде версий для ограниченного бета-тестирования, на стадии которого более широкая пользовательская аудитория имеет возможность познакомиться с вашим приложением и поделиться своими отзывами о нем.Often times an application will go into a limited beta phase in which a wider user audience is given a chance to use it and provide feedback and inform changes.
  5. РазвертываниеDeployment

Многие из этих стадий часто перекрываются. Например, достаточно распространена практика, когда разработка идет уже на стадии окончательной доводки пользовательского интерфейса и может влиять на этот процесс.Often many of these pieces are overlapped, for example, it’s common for development to be going on while the UI is being finalized, and it may even inform the UI design. Кроме того, приложение может возвращаться на стадию стабилизации при добавлении новых функций в очередную версию.Additionally, an application may be going into a stabilization phase at the same that new features are being added to a new version.

Описываемые стадии могут применяться в любых методологиях жизненного цикла разработки ПО, таких как гибкая, спиральная, каскадная разработка и т. д.Furthermore, these phases can be used in any number of SDLC methodologies such as Agile, Spiral, Waterfall, etc.

В последующих разделах каждая из этих стадий будет описана более подробно.Each of the these phases will be explained in more detail by the following sections.

ЗарождениеInception

Сегодня мобильные устройства получили широчайшее распространение и проникли во все сферы жизни, благодаря чему практически любой пользователь имеет представление о мобильных приложениях.The ubiquity and level of interaction people have with mobile devices means that nearly everyone has an idea for a mobile app. Мобильные устройства открывают перед нами совершенно новый способ взаимодействия с вычислительными ресурсами, Интернетом и даже корпоративной инфраструктурой.Mobile devices open up a whole new way to interact with computing, the web, and even corporate infrastructure.

На этапе зарождения формируется и дорабатывается идея самого приложения.The inception stage is all about defining and refining the idea for an app. Для создания успешного приложения важно получить ответы на некоторые базовые вопросы.To create a successful app, it’s important to ask some fundamental questions. Ниже приводятся некоторые моменты, на которые следует обратить внимание перед публикацией приложения в одном из общедоступных магазинов приложений:Here are some things to consider before publishing an app in one of the public App Stores:

  • Конкурентные преимущества — существуют ли аналогичные приложения?Competitive Advantage – Are there similar apps out there already? Если да, то чем ваше приложение выгодно отличается от других?If so, how does this application differentiate from others?

Для приложений, распространяемых в корпоративной среде:For apps that will be distributed in an Enterprise:

  • Интеграция с инфраструктурой — в какую существующую инфраструктуру будет интегрироваться приложение и какие дополнительные возможности оно привнесет?Infrastructure Integration – What existing infrastructure will it integrate with or extend?

Кроме того, приложения следует оценивать в контексте форм-фактора мобильного устройства:Additionally, apps should be evaluated in the context of the mobile form factor:

  • Ценность — какие ценностные преимущества даст пользователям ваше приложение?Value – What value does this app bring users? Как они будут использовать его?How will they use it?
  • Форма и мобильность — как это приложение будет работать с мобильными устройствами разных форм-факторов?Form/Mobility – How will this app work in a mobile form factor? Как повысить ценность приложения, используя различные мобильные технологии, включая службы определения местоположения, камеру и т. д.?How can I add value using mobile technologies such as location awareness, the camera, etc.?

Чтобы упростить проектирование функций приложения, рекомендуется определить субъекты и варианты использования.To help with designing the functionality of an app, it can be useful to define Actors and Use Cases. Субъекты — это роли в рамках приложения, которые часто соответствуют его пользователям.Actors are roles within an application and are often users. Варианты использования — это типовые действия или цели.Use cases are typically actions or intents.

Например, в приложении для отслеживания задач можно определить два субъекта: пользователь и друг.For instance, a task tracking application might have two Actors: User and Friend. Пользователь может создавать задачу и предоставлять другу общий доступ к ней.A User might Create a Task, and Share a Task with a Friend. В этом случае можно выделить два варианта использования (создание задачи и предоставление общего доступа к ней), а также субъекты, на основании чего вы сможете понять, какие экраны нужно создать и какие бизнес-сущности и логику требуется разработать.In this case, creating a task and sharing a task are two distinct use cases that, in tandem with the Actors, will inform what screens you’ll need to build, as well as what business entities and logic will need to be developed.

После определения достаточного количества вариантов использования и субъектов вам будет проще приступить к проектированию приложения.Once an appropriate number of use cases and actors has been captured, it’s much easier to begin designing an application. Благодаря этому на стадии разработки вы сможете сосредоточиться на том, как реализовать приложение, а не на том, что оно должно делать.Development can then focus on how to create the app, rather than what the app is or should do.

Проектирование мобильных приложенийDesigning mobile applications

После определения функций и функциональных возможностей приложения можно приступить к проектированию механизма взаимодействия с пользователем.Once the features and functionality of the app have been determined, the next step is start trying to solve the User Experience or UX.

Проектирование механизма взаимодействия с пользователемUX design

Взаимодействие с пользователем обычно реализуется на основе каркасов или макетов с помощью многочисленных наборов инструментов для проектирования.UX is usually done via wireframes or mockups using one of the many design toolkits. Применение макетов позволяет проектировать взаимодействие с пользователем, не заботясь о его фактической разработке.UX mockups allow the UX to be designed without having to worry about the actual UI design:

При создании макетов взаимодействия с пользователем важно учитывать рекомендации по работе с интерфейсом для различных целевых платформ приложения.When creating UX mockups, it’s important to consider the interface guidelines for the various platforms that the app will target. На любой платформе приложение должно работать "как у себя дома".The app should "feel at home" on each platform. Ниже приводятся ссылки на официальные рекомендации по разработке для различных платформ.The official design guidelines for each platform are:

  1. Apple - рекомендации по работе с человеческим интерфейсомApple - Human Interface Guidelines
  2. Android — рекомендации по разработкеAndroidDesign Guidelines
  3. UWP — основы проектирования UWPUWPUWP Design basics

Например, в каждом приложении реализуется концепция переключения между различными разделами приложения.For example, each app has a metaphor for switching between sections in an application. В iOS для этого используется панель вкладок в нижней части экрана, в Android — панель вкладок вверху экрана, а в UWP — элемент управления Pivot или вкладка.iOS uses a tab bar at the bottom of the screen, Android uses a tab bar at the top of the screen, and UWP uses the Pivot or tab view.

Кроме того, реализация механизма взаимодействия с пользователем во многом зависит от особенностей оборудования.Additionally, the hardware itself also dictates UX decisions. Например, на устройствах iOS отсутствует физическая кнопка возврата и в связи с этим используется концепция контроллера навигации:For example, iOS devices have no physical back button, and therefore introduce the Navigation Controller metaphor:

Также решения о взаимодействии с пользователем необходимо принимать с учетом форм-фактора устройств.Furthermore, form factor also influences UX decisions. Так, экран планшета гораздо больше и, соответственно, может вмещать больше информации.A tablet has far more real estate, and so can display more information. Поэтому зачастую информация, которая выводится на телефоне на нескольких экранах, на планшете умещается на одном:Often what needs multiple screens on a phone is compressed into one for a tablet:

На современном рынке представлены устройства самых разных форм-факторов, включая промежуточные (например, между телефоном и планшетом).And due to the myriad of form factors out there, there are often mid-size form factors (somewhere between a phone and a tablet) that you may also want to target.

Проектирование пользовательского интерфейсаUser Interface (UI) design

После определения механизма взаимодействия с пользователем самое время приступить к созданию пользовательского интерфейса.Once the UX is determined, the next step is to create the UI design. Механизм взаимодействия представляет собой черновой макет, который вы наполняете цветами, графическими элементами и доводите до состояния готовности на стадии проектирования пользовательского интерфейса.While UX is typically just black and white mockups, the UI Design phase is where colors, graphics, etc., are introduced and finalized. Пользовательский интерфейс является лицом вашего приложения. Именно поэтому в большинстве популярных приложений применяется профессиональный подход к его разработке.Spending time on good UI design is important and generally, the most popular apps have a professional design.

Как и в случае с механизмом взаимодействия, важно понимать, что каждая платформа использует собственный язык проектирования и даже хорошо проработанное приложение может выглядеть на них по-разному:As with UX, it’s important to understand that each platform has it’s own design language, so a well-designed application may still look different on each platform:

РазработкаDevelopment

Стадия разработки, как правило, начинается достаточно рано.The development phase usually starts very early. Фактически, после формирования и созревания идеи на стадии зарождения уже подготавливается рабочий прототип, который позволяет оценить функциональные возможности, предположения и получить общее понимание предстоящего объема работы.In fact, once an idea has some maturation in the conceptual/inspiration phase, often a working prototype is developed that validates functionality, assumptions, and helps to give an understanding of the scope of the work.

В оставшихся учебниках мы сосредоточимся преимущественно на стадии разработки.In the rest of the tutorials, we’ll focus largely on the development phase.

СтабилизацияStabilization

Стабилизации — это процесс устранения ошибок в приложении.Stabilization is the process of working out the bugs in your app. При этом ошибки могут быть не только функциональными, например возникающими при нажатии определенной кнопки, но и относиться к удобству использования и производительности приложения в целом.Not just from a functional standpoint, e.g.: “It crashes when I click this button,” but also Usability and Performance. Как правило, стабилизацию рекомендуется начинать на ранних этапах разработки, что позволяет своевременно вносить исправления до того, как стоимость ошибки заметно возрастет.It’s best to start stabilization very early within the development process so that course corrections can occur before they become costly. Во многих случаях приложение последовательно проходит стадии прототипа, альфа-версии, бета-версии и версии-кандидата.Typically, applications go into Prototype, Alpha, Beta, and Release Candidate stages. Определения этих стадий разнятся, однако в общем случае они соответствуют следующей схеме:Different people define these differently, but they generally follow the following pattern:

  1. Прототип — приложение находится на стадии экспериментальной проверки концепции. При этом работают только его отдельные функции или части.Prototype – The app is still in proof-of-concept phase and only core functionality, or specific parts of the application are working. На этом этапе в приложении могут присутствовать серьезные ошибки.Major bugs are present.
  2. Альфа-версия — обычно готов код основных функциональных возможностей, однако его полное тестирование еще не завершено.Alpha – Core functionality is generally code-complete (built, but not fully tested). На этом этапе по-прежнему присутствуют серьезные ошибки и могут отсутствовать некоторые дополнительные функции.Major bugs are still present, outlying functionality may still not be present.
  3. Бета-версия — большая часть функциональных возможностей завершена и прошла хотя бы предварительное тестирование с устранением ошибок.Beta – Most functionality is now complete and has had at least light testing and bug fixing. На этом этапе могут по-прежнему присутствовать основные известные проблемы.Major known issues may still be present.
  4. Версия-кандидат — все функциональные возможности завершены и прошли тестирование.Release Candidate – All functionality is complete and tested. За исключением новых ошибок, приложение готово к публичному выпуску.Barring new bugs, the app is a candidate for release to the wild.

Тестирование приложения никогда не может быть начато слишком рано.It’s never too early to begin testing an application. Например, если на стадии прототипа обнаружена серьезная проблема, вы по-прежнему сможете изменить механизм взаимодействия с пользователем, чтобы устранить ее.For example, if a major issue is found in the prototype stage, the UX of the app can still be modified to accommodate it. При обнаружении проблемы с производительностью в альфа-версии у вас будет достаточно времени на изменение архитектуры, пока еще не создан большой объем кода на основе неверных предположений.If a performance issue is found in the alpha stage, it’s early enough to modify the architecture before a lot of code has been built on top of false assumptions.

Как правило, по мере продвижения по этапам жизненного цикла все больше людей получают доступ к нему с возможностью опробовать, протестировать, поделиться своими отзывами и т. д. Например, доступ к прототипам приложений обычно получают только ключевые заинтересованные лица, тогда как версия-кандидат может распространяться среди клиентов, которые зарегистрировались в программе раннего доступа.Typically, as an application moves further along in the lifecycle, it’s opened to more people to try it out, test it, provide feedback, etc. For instance, prototype applications may only be shown or made available to key stakeholders, whereas release candidate applications may be distributed to customers that sign up for early access.

На начальных этапах тестирования и развертывания на относительно небольшом количестве устройств обычно достаточно выполнить развертывание непосредственно с компьютера разработчика.For early testing and deployment to relatively few devices, usually deploying straight from a development machine is sufficient. Тем не менее по мере расширения аудитории приложения этот процесс заметно усложняется.However, as the audience widens, this can quickly become cumbersome. В связи с этим предлагается целый ряд вариантов развертывания, которые упрощают этот процесс, позволяя приглашать людей в группы тестирования, выпускать сборки через Интернет и получать отзывы и предложения пользователей.As such, there are a number of test deployment options out there that make this process much easier by allowing you to invite people to a testing pool, release builds over the web, and provide tools that allow for user feedback.

Для тестирования и развертывания можно использовать центр приложений, чтобы иметь возможность непрерывной сборки, тестирования, выпуска и мониторинга приложений.For testing and deployment, you can use App Center to continuously build, test, release, and monitor apps.

РаспределениеDistribution

После того как приложение стабилизировано, настает время его публичного выпуска.Once the application has been stabilized, it’s time to get it out into the wild. В зависимости от платформы на этой стадии вам доступны различные варианты распространения.There are a number of different distribution options, depending on the platform.

iOSiOS

Приложения Xamarin.iOS и Objective-C распространяются точно так же:Xamarin.iOS and Objective-C apps are distributed in exactly the same way:

  1. Apple App Store — глобальный интернет-репозиторий приложений, встроенный в Mac OS X с помощью iTunes.Apple App Store – Apple’s App Store is a globally available online application repository that is built into Mac OS X via iTunes. На данный момент это самый популярный канал распространения приложений на рынке, требующий от разработчиков минимальных затрат усилий.It’s by far the most popular distribution method for applications and it allows developers to market and distribute their apps online with very little effort.
  2. Развертывание внутри компании — предназначено для внутреннего распространения корпоративных приложений, которые не публикуются в App Store.In-House Deployment – In-House deployment is meant for internal distribution of corporate applications that aren’t available publicly via the App Store.
  3. Специальное развертывание — предназначено преимущественно для разработки и тестирования и позволяет развертывать ограниченное число надлежащим образом подготовленных устройств.Ad-Hoc Deployment – Ad-hoc deployment is intended primarily for development and testing and allows you to deploy to a limited number of properly provisioned devices. Так, к этой категории относится развертывание устройств с помощью Xcode или Visual Studio для Mac.When you deploy to a device via Xcode or Visual Studio for Mac, it is known as ad-hoc deployment.

AndroidAndroid

Перед началом распространения любые приложения Android необходимо подписывать.All Android applications must be signed before being distributed. Разработчики подписывают свои приложения с помощью собственного сертификата, защищенного закрытым ключом.Developers sign their applications by using their own certificate protected by a private key. Таким образом, реализуется цепочка проверки подлинности, которая связывает приложение с создающим и выпускающим его разработчиком.This certificate can provide a chain of authenticity that ties an application developer to the applications that developer has built and released. Следует отметить, что хотя сертификат разработчика для Android может быть подписан признанным центром сертификации, большинство разработчиков не пользуются такими услугами и подписывают свои сертификаты самостоятельно.It must be noted that while a development certificate for Android can be signed by a recognized certificate authority, most developers do not opt to utilize these services, and self-sign their certificates. Сертификаты необходимы в первую очередь для того, чтобы различать разработчиков и их приложения.The main purpose for certificates is to differentiate between different developers and applications. В Android эта информация используется для принудительного делегирования разрешений между приложениями и компонентами, выполняемыми в ОС Android.Android uses this information to assist with enforcement of delegation of permissions between applications and components running within the Android OS.

В отличие от других популярных мобильных платформ, в Android практикуется максимально открытый подход к распространению приложений.Unlike other popular mobile platforms, Android takes a very open approach to app distribution. Устройства не привязываются к одному утвержденному магазину приложений.Devices are not locked to a single, approved app store. Вместо этого любой пользователь может создать собственный магазин приложений, из которого можно будет устанавливать приложения на большинство телефонов с Android.Instead, anyone is free to create an app store, and most Android phones allow apps to be installed from these third party stores.

Благодаря этому разработчики получают более широкий, но при этом и более сложный, канал распространения приложений.This allows developers a potentially larger yet more complex distribution channel for their applications. Google Play — это официальный магазин приложений Google, однако вы можете использовать и другие.Google Play is Google’s official app store, but there are many others. Ниже приведены лишь некоторые из них:A few popular ones are:

  1. AppBrainAppBrain
  2. Amazon App Store для AndroidAmazon App Store for Android
  3. HandangoHandango
  4. GetJarGetJar

UWPUWP

Приложения UWP распространяются среди пользователей через магазин Microsoft Store.UWP applications are distributed to users via the Microsoft Store. Приложения могут появиться в Store только после того, как разработчики отправят их на утверждение.Developers submit their apps for approval, after which they appear in the Store. Дополнительные сведения о публикации приложений Windows см. в документации UWP о публикации приложений.For more information on publishing Windows apps, see UWP's Publish documentation.

Рекомендации по разработке мобильных приложенийMobile development considerations

Процесс и архитектура разработки мобильных приложений в целом схож с классическими или веб-приложениями, однако при этом необходимо учитывать определенные моменты.While developing mobile applications isn’t fundamentally different that traditional web/desktop development in terms of process or architecture, there are some considerations to be aware of.

Общие соображенияCommon considerations

МногозадачностьMultitasking

Реализация многозадачности (возможность одновременного выполнения нескольких приложений) на мобильных устройствах сопряжена с двумя основными проблемами.There are two significant challenges to multitasking (having multiple applications running at once) on a mobile device. Во-первых, из-за ограниченного размера экрана физически сложно уместить на нем сразу несколько приложений.First, given the limited screen real estate, it is difficult to display multiple applications simultaneously. Соответственно, на переднем плане экрана мобильного устройства одновременно может находиться только одно приложение.Therefore, on mobile devices only one app can be in the foreground at one time. Во-вторых, несколько одновременно работающих и выполняющих задачи приложений очень быстро расходуют заряд аккумулятора.Second, having multiple applications open and performing tasks can quickly use up battery power.

На каждой платформе реализация многозадачности имеет свои особенности, которые мы рассмотрим в общих чертах.Each platform handles multitasking differently, which we’ll explore in a bit.

Форм-факторForm factor

Мобильные устройства обычно делятся на две основных категории, телефоны и планшеты, с возможными пересечениями между ними.Mobile devices generally fall into two categories, phones and tablets, with a few crossover devices in between. Процесс разработки для различных форм-факторов во многом одинаков, однако порядок проектирования приложений может существенно отличаться.Developing for these form factors is generally very similar, however, designing applications for them can be very different. Размер экрана телефона крайне ограничен. Планшеты могут похвастаться более крупным экраном, но при этом все же остаются мобильными устройствами и не могут сравниться в этом плане с ноутбуками.Phones have very limited screen space, and tablets, while bigger, are still mobile devices with less screen space than even most laptops. Поэтому элементы управления для пользовательского интерфейса мобильных устройств разрабатываются с учетом ограничений форм-фактора.Because of this, mobile platform UI controls have been designed specifically to be effective on smaller form factors.

Фрагментация устройства и ОСDevice and OS fragmentation

На протяжении всего жизненного цикла разработки ПО важно учитывать различия между устройствами:It’s important to take into account different devices throughout the entire software development lifecycle:

  1. Концептуальное представление и планирование — помните, что оборудование и функциональные возможности устройств могут отличаться, поэтому привязка к определенным функциям может плохо сказаться на работе вашего приложения на некоторых устройствах.Conceptualization and Planning – Keep in mind that hardware and features will vary from device to device, an application that relies on certain features may not work properly on certain devices. Например, не все устройства оснащены камерой, поэтому если вы разрабатываете приложение для обмена видеосообщениями, некоторые устройства смогут воспроизводить видео, но не снимать его.For example, not all devices have cameras, so if you’re building a video messaging application, some devices may be able to play videos, but not take them.
  2. Проектирование — при проектировании механизма взаимодействия с пользователем приложения уделяйте внимание различиям в пропорциях и размерах экрана между устройствами.Design – When designing an application’s User Experience (UX), pay attention to the different screen ratios and sizes across devices. Кроме того, при проектировании пользовательского интерфейса необходимо учитывать возможность работы с разными разрешениями экрана.Additionally, when designing an application’s User Interface (UI), different screen resolutions should be considered.
  3. Разработка — прежде чем использовать какую-либо функцию из кода, сначала необходимо протестировать ее.Development – When using a feature from code, the presence of that feature should always be tested first. Например, прежде чем использовать камеру, всегда следует запрашивать у ОС информацию о ее наличии на устройстве.For example, before using a device feature, such as a camera, always query the OS for the presence of that feature first. При инициализации функции или устройства сначала следует запросить у ОС информацию о текущей поддержке и использовать соответствующие устройству параметры конфигурации.Then, when initializing the feature/device, make sure to request currently supported from the OS about that device and then use those configuration settings.
  4. Тестирование — важно как можно раньше начать тестирование приложения на реальных устройствах и проводить его как можно чаще.Testing – It’s incredibly important to test the application early and often on actual devices. Даже устройства с одинаковыми характеристиками оборудования могут реагировать на события по-разному.Even devices with the same hardware specs can vary widely in their behavior.

Ограниченные ресурсыLimited resources

Производительность мобильных устройств постоянно растет, но тем не менее они по-прежнему имеют крайне ограниченные по сравнению с настольными компьютерами и ноутбуками ресурсы.Mobile devices get more and more powerful all the time, but they are still mobile devices that have limited capabilities in comparison to desktop or notebook computers. Например, разработчики классических приложений обычно не беспокоятся о памяти, поскольку привыкли к доступности больших объемов физической и виртуальной памяти. Однако на мобильном устройстве можно достаточно быстро исчерпать свободные ресурсы, всего лишь загрузив несколько высококачественных изображений.For instance, desktop developers generally don’t worry about memory capacities; they’re used to having both physical and virtual memory in copious quantities, whereas on mobile devices you can quickly consume all available memory just by loading a handful of high-quality pictures.

Кроме того, активно использующие ресурсы мобильного процессора приложения, такие как игры или средства распознавания текста, могут заметно снижать производительность устройства.Additionally, processor-intensive applications such as games or text recognition can really tax the mobile CPU and adversely affect device performance.

В связи с этим важно продуманно подходить к написанию кода и как можно раньше и чаще выполнять развертывание на реальных устройствах, чтобы оценить эффективность своего приложения.Because of considerations like these, it’s important to code smartly and to deploy early and often to actual devices to validate responsiveness.

Особенности iOSiOS considerations

МногозадачностьMultitasking

В iOS реализовано эффективное управление многозадачностью и определено множество правил и требований, которым должно соответствовать ваше приложение в тех случаях, когда на передний план выводится другое приложение. Если эти требования не соблюдаются, ваше приложение попросту может быть закрыто системой iOS.Multitasking is very tightly controlled in iOS, and there are a number of rules and behaviors that your application must conform to when another application comes to the foreground, otherwise your application will be terminated by iOS.

Зависящие от устройств ресурсыDevice-specific resources

Даже в устройствах, относящихся к одному форм-фактору, может использоваться совершенно разное оборудование.Within a particular form factor, hardware can vary greatly between different models. Например, на одних устройствах есть только основная камера, на других также фронтальная, а на некоторых камера отсутствует.For instance, some devices have a rear-facing camera, some also have a front-facing camera, and some have none.

Некоторые старые устройства (например, iPhone 3G и более ранние) и вовсе не поддерживают многозадачность.Some older devices (iPhone 3G and older) don’t even allow multitasking.

Из-за этих различий важно всегда проверять наличие функции на устройстве, прежде чем пытаться использовать ее.Because of these differences between device models, it’s important to check for the presence of a feature before attempting to use it.

Ограничения операционной системыOS specific constraints

Чтобы гарантировать работоспособность и безопасность приложений, в iOS применяется ряд обязательных правил и требований.To make sure that applications are responsive and secure, iOS enforces a number of rules that applications must abide by. Помимо правил в отношении многозадачности, определено множество методов событий, из которых приложение должно возвращаться не позднее установленного времени, иначе система iOS завершит его работу.In addition to the rules regarding multitasking, there are a number of event methods out of which your app must return in a certain amount of time, otherwise it will get terminated by iOS.

Также необходимо отметить, что приложения выполняются в так называемой "песочнице", изолированной среде, в которой приложение получает ограниченный доступ к ресурсам.Also worth noting, apps run in what’s known as a Sandbox, an environment that enforces security constraints that restrict what your app can access. Например, у приложения есть собственный каталог, в котором оно может считывать и записывать данные, однако при попытке записать данные в каталог другого приложения оно будет завершено.For instance, an app can read from and write to its own directory, but if it attempts to write to another app directory, it will be terminated.

Особенности AndroidAndroid considerations

МногозадачностьMultitasking

В Android многозадачность реализуется на основе двух компонентов, первый из которых относится к жизненному циклу действия.Multitasking in Android has two components; the first is the activity lifecycle. Каждый экран в приложении для Android представлен действием, и для него определен набор событий, которые возникают при выводе приложения на передний план или его переходе в фоновый режим.Each screen in an Android application is represented by an Activity, and there is a specific set of events that occur when an application is placed in the background or comes to the foreground. При создании эффективных приложений необходимо придерживаться требований этого жизненного цикла.Applications must adhere to this lifecycle to create responsive, well-behaved applications. Дополнительные сведения см. в руководстве Жизненный цикл действия.For more information, see the Activity Lifecycle guide.

Второй компонент многозадачности в Android связан с использованием служб.The second component to multitasking in Android is the use of Services. Службы — это выполняющиеся долгое время процессы, которые существуют независимо от приложения и используются для выполнения процессов, пока приложение находится в фоновом режиме.Services are long-running processes that exist independent of an application and are used to execute processes while the application is in the background. Дополнительные сведения см. в разделе Создание служб.For more information see the Creating Services guide.

Множество устройств и форм-факторовMany devices and many form factors

Google не накладывает никаких ограничений на устройства, на которых можно запускать операционную систему Android.Google doesn’t impose any limits on which devices can run the Android OS. Такой открытый подход привел к появлению множества устройств с самым разным оборудованием, разрешениями и пропорциями экрана, функциями и возможностями.This open paradigm results in a product environment populated by a myriad of different devices with very different hardware, screen resolutions and ratios, device features, and capabilities.

Из-за столь сильной фрагментации сегмента устройств с Android, большинство разработчиков выбирают для проектирования и тестирования 5 или 6 популярных устройств, ориентируясь в работе именно на них.Because of the extreme fragmentation of Android devices, most people choose the most popular 5 or 6 devices to design and test for, and prioritize those.

Замечания по безопасностиSecurity considerations

В ОС Android приложения выполняются под отдельным изолированным удостоверением с ограниченными разрешениями.Applications in the Android OS all run under a distinct, isolated identity with limited permissions. По умолчанию приложениям присваиваются минимальные разрешения.By default, applications can do very little. Например, без соответствующего разрешения приложение не может отправить текстовое сообщение, определить состояние телефона и даже выйти в Интернет.For example, without special permissions, an application cannot send a text message, determine the phone state, or even access the Internet! Для доступа к этим функциям в файле манифеста приложения должны быть указаны требуемые им разрешения. При установке приложения ОС считывает эти разрешения, уведомляет пользователя о том, что приложение запрашивает эти разрешения, а затем позволяет пользователю продолжить или отменить установку.To access these features, applications must specify in their application manifest file which permissions they would like, and when they’re being installed; the OS reads those permissions, notifies the user that the application is requesting those permissions, and then allows the user to continue or cancel the installation. Это важная особенность модели распространения Android, поскольку из-за открытой модели хранения многие приложения не контролируются в той степени, в которой это реализовано, например, в iOS.This is an essential step in the Android distribution model, because of the open application store model, since applications are not curated the way they are for iOS, for instance. Список разрешений для приложения приведен в справочной статье Разрешения манифеста в документации по Android.For a list of application permissions, see the Manifest Permissions reference article in the Android Documentation.

Рекомендации по использованию WindowsWindows considerations

МногозадачностьMultitasking

Реализация многозадачности в UWP также основана на двух компонентах: жизненном цикле страниц и приложений и фоновых процессах.Multitasking in UWP has two parts: the lifecycle for pages and applications, and background processes. Каждый экран приложения представляет собой экземпляр класса Page, с которым связаны различные события активного и неактивного состояния (и специальные правила обработки таких состояний или "отметки об остановке").Each screen in an application is an instance of a Page class, which has events associated with being made active or inactive (with special rules for handling the inactive state, or being “tombstoned”).

Вторая часть связана с использованием фоновых агентов для обработки задач даже в том случае, если приложение не выполняется на переднем плане.The second part is providing background agents for processing tasks even when the application is not running in the foreground.

Возможности устройстваDevice capabilities

Несмотря на то что спектр оборудования для UWP достаточно однороден, все еще существуют необязательные компоненты, которые требуют особого внимания при написании кода.Although UWP hardware is fairly homogeneous, there are still components that are optional and therefore require special considering while coding. К ним относятся камера, компас и гироскоп.Optional hardware capabilities include the camera, compass, and gyroscope. Также существует особый класс устройств с небольшой памятью (до 256 МБ), поддержку которых разработчик может не реализовывать. Тем не менее, если они используются, этому также следует уделять особое внимание.There is also a special class of low-memory (256MB) that requires special consideration, or developers can opt-out of low-memory support.

Замечания по безопасностиSecurity considerations

Сведения о вопросах безопасности в UWP см. в документации по безопасности.For information on important security considerations in UWP, refer to the Security documentation.

СводкаSummary

В этом руководстве приводятся общие сведения о жизненном цикле разработки программного обеспечения в контексте разработки мобильных приложений.This guide gave an introduction to the SDLC as it relates to mobile development. В нем вы найдете общие рекомендации по созданию мобильных приложений и описание особенностей различных платформ, которые необходимо учитывать при проектировании, тестировании и развертывании приложения.It introduced general considerations for building mobile applications and examined a number of platform-specific considerations including design, testing, and deployment.

Следующие шагиNext steps