Под разработка – Разработка под ios/android. Выбор платформы для небольшого заработка. Какие аппаратные требования необходимы?

Содержание

Разработка ПОД

Разработка ПОД – это процесс создания седьмого раздела проектной документации, направленного на безопасное разрушение или разборку здания или сооружения.

Разработка ПОДПроцесс разрушения объекта капитального строительства сопряжен с большими рисками, особенно актуальными для стесненных городских условий.

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

Чтобы избежать рисков или свести их к минимуму в составе проектной документации разрабатывается проект организации работ по сносу или демонтажу.

АКБ Монолит имеет свидетельство СРО и занимается профессиональной разработкой ПОД более 10 лет.

Разработка ПОД условно состоит из четырех основных частей:

  • Разработка плана земельного участка с указанием демонтируемого объекта
  • Разработка чертежей защитных устройств инженерной инфраструктуры
  • Разработка технологических карт-схем последовательности демонтажа
  • Разработка пояснительносй записки

Наши специалисты разрабатывают ПОД в соответствии с требованиями действующих нормативных документов.

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

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

В пояснительной записке ПОД наши специалисты подробно описывают:

  • Особенности района работ (климат, рельеф местности, сейсмичность)
  • Местоположение объекта (город, промышленная зона и др.), расстояние до жилой застройки
  • Условия работ (стесненность, на территории действующего предприятия и др.)

Наши специалисты разрабатывают мероприятия по выведению сносимого или демонтируемого здания (сооружения) из эксплуатации.

В перечень мероприятий могут быть включены:

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

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

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

  • Изучение актов, заключений (отчетов) предшествующих обследований, имеющейся проектной документации
  • Уточнение объемно-планировочных параметров и размеров объекта
  • Разработку схем страхующих опираний несущих конструкций
  • Выявление аварийных участков

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

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

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

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

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

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

Наши специалисты разрабатывают в ПОД общие решения по безопасным методам работ. Частные, более детальные решения (требования и мероприятия) по ведению отдельных видов работ предусматриваются в проекте производства работ (ППР), технологических картах (ТК). Указывают способы, порядок сигнализации и предупредительные меры: звуковые и световые сигналы, громкое оповещение, временные ограждения и знаки опасности, заградительные посты и др.

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

При сносе механизированном способом наши специалисты:

  • Указывают основные источники опасности (самопроизвольное обрушение зависших балок и блоков, разлет осколков, работа строительных машин), расположение постов предупреждения и охраны на границах опасной зоны
  • Предусматривают выполнение работ в соответствии с разработанным проектом производства работ (ППР) и обязательными разделами по безопасности при работе разрушающих машин, в том числе, с помощью, например, «экскаватора-разрушителя» и сменных рабочих органов, навешиваемых на экскаватор

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

На объектах в Москве и Московской области часто в ПОД наши специалисты разрабатывают мероприятия по обеспечению безопасности населения. В этот раздел включают:

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

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

При сносе объекта наши специалисты указывают решения по вывозу и утилизации отходов. Производится описание отходов (крупногабаритные, негабаритные — высотой более 4 метров и шириной более 2,25 метров, мелкоблочные, пылевидные, строительный мусор и т.д.), направления (маршрутов) на полигоны захоронения отходов и способы их перевозки (вид транспорта, в открытом виде или контейнерах и т.д.). При демонтаже объекта наши специалисты принимают решения по номенклатуре и способах переработки демонтируемых строительных конструкций: железобетонных блоков, панелей, плит и т.д. и вывозе их на предприятия переработки, а также об утилизации материалов разборки (дерево, металл, фаянс, стекло, битум и т.д.). Железобетонные строительные конструкции (панели, плиты), удовлетворяющие техническим условиям, используют в строительстве (подъездные дороги, площадки, склады и т.д.). Металлические конструкции и детали перерабатывают (режут, прессуют и т.д.) для сдачи в металлолом на переплавку. Отходы утеплителя, стекла, керамики перерабатывают в сырье (наполнитель) для производства строительных материалов и изделий (стеновые плиты, блоки и т.д.).

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

Руководство для начинающих VR-разработчиков / Mail.ru Group corporate blog / Habr

В этом руководстве собраны базовые ссылки и рекомендации, которые могут послужить вам точкой отсчёта в освоении VR-разработки.


Спросите себя: меня интересует разработка для десктопных устройств, наподобие HTC Vive, или меня больше привлекают мобильные устройства вроде Samsung Gear VR или Google Cardboard? Если вы пока не определились, то почитайте обзоры и подумайте о том, что лучше выбрать для вашего рынка. Если для ваших идей требуются контроллеры движения или качественная графика, то ориентируйтесь на подключаемые к компьютеру очки VR. Модели, которые сегодня поддерживаются движками Unity, Unreal и веб-реaлизациями:

Компьютерная VR:
Мобильная VR: (в качестве базового устройства может использоваться смартфон)
Веб-реализация виртуальной реальности: (в качестве базового устройства может использоваться смартфон)
  • Язык разработки Mozilla A-Frame (как HTML и XML) для создания кроссплатформенных VR-приложений. Чтобы понять, как это выглядит, зайдите на сайт со своего смартфона, отключите блокировку ориентации и нажмите появившуюся кнопку VR.
  • Vizor — веб-приложение, позволяющее создавать 3D-сцены и просматривать их на разных платформах, включая мобильные устройства. Конечно, возможностей у него меньше, чем у игровых движков или открытых веб-платформ, но зато оно очень простое и позволяет легко начать изучать создание виртуальной реальности без дорогих устройств. В блоге есть несколько вводных постов.
  • Responsive WebVR — кроссплатформенный веб-инструмент, доступный для модифицирования. Возможно, вы захотите освежить его с помощью Three.js.

Пока не выпущенное:
  • Google Daydream. Недоступно, но уже поддерживается в Unreal Engine 4, доступна предварительная техническая версия в Unity.
  • OSVR HDK 2, $399. Выйдет в июле, не упомянут контроллер движения.


Дизайн для VR очень похож на дизайн видеоигр, поскольку в обоих случаях мы имеем дело с интерактивным 3D-опытом. Разница в том, что в VR нужно уделять особое внимание эффекту присутствия, погружённости, нелинейности повествования, не вызывающему тошноты перемещению и графической оптимизации.

Большинство VR-разработчиков предпочитают использовать игровые движки (если только не создают для веб-VR, о чём ниже), и с самого начала им приходится выбирать, на чём же работать. Самые популярные движки — Unreal Engine 4 (UE4) и Unity. Оба имеют очень широкие возможности и являются надёжными инструментами. Вокруг обоих сложились активные сообщества с многочисленными информационными ресурсами. Оба движка позволяют управлять 3D-окружением, импортировать собственный контент (3D-модели, изображения, звук, видео), а также программировать интерактивность и геймплей. На YouTube есть огромное количество обучающих видео, а в сети — руководств, созданных как самими авторами, так и поклонниками.

Среди VR-разработчиков нет общепринятого мнения, что один из этих движков лучше другого. У каждого есть свои особенности. UE4 считается более оптимизированным с точки зрения вычислений, даёт более достоверную картинку, но имеет более крутую кривую обучения. Unity создавался из расчёта, чтобы его возможностей хватало для создания коммерческих игр, но при этом он остаётся более интуитивно понятным и эффективным для начинающих разработчиков. Unreal Engine 4 можно скачать и использовать бесплатно, но авторам придётся ежеквартально отстёгивать по 5% дохода с игры, если он превысит $3000. У Unity есть несколько версий разной стоимости, но можно остановиться на бесплатной Unity Personal. Желательно попробовать оба движка, чтобы понять, какой вам подходит больше, хотя здесь трудно ошибиться, потому что вы в любом случае получаете превосходный и мощный инструмент.

Помимо игровых движков, вы можете обратиться к разработке интерактивных VR-веб-страниц. Это можно делать с помощью языка разметки Mozilla’s A-Frame, с помощью JavaScript (поковыряйтесь в Three.js!), HTML5 и/или WebGL. Подобные эксперименты ведутся в Chrome и Mozilla. Разработка для веба позволяет отображать VR-контент прямо на смартфонах пользователей, так что вам не понадобится дорогое дополнительное оборудование. Также вам не придётся компилировать или упаковывать код, вы легко можете делиться своими творениями с друзьями. Если вам всё это кажется слишком трудоёмким, то можете начать с простейшего редактора VR-сцен Vizor, позволяющего рисовать на компьютере и просматривать с мобильных устройств.

После того, как вы определитесь с движком или веб-приложением, надо поподробнее ознакомиться со своим выбором. Начните с азов того языка программирования, который использует ваш инструмент: C++ и Blueprints Visual Scripting (UE4), C# (Unity) или кастомный язык разметки для веб-приложений. Если вы разрабатываете для Android, то скачайте Android Studio и попробуйте развернуть тренировочное приложение. В случае с Google Cardboard и Unity обратитесь к Google SDK.

В /learnVRdev wiki есть ссылки и материалы, полезные для тех, кто учится использовать движки. Лучше знакомиться с движком по какому-нибудь руководству, чтобы лучше прочувствовать его, как манипулировать объектами в пространстве, и так далее. В Unity и Unreal есть встроенный предпросмотр, так что вы можете сразу увидеть, что у вас получилось!


Итак, вы выбрали движок и обзавелись VR-устройством. Теперь вам нужен графический контент, аудио материалы, 3D-модели и анимации для заполнения виртуального мира. Всё это можно найти в сети, надёргать из популярных игр (если вы не планируете продавать свой продукт), сделать самостоятельно или модифицировать готовые материалы. Помните, что виртуальная реальность требует максимально реалистичного визуального и звукового оформления при близком исследовании, с разных сторон, даже если объект стилизован или абстрактен.

3D-модели


У начинающих есть два пути.
  1. Самый простой: использовать открыто доступные 3D-модели, пока вы изучаете другие аспекты VR-разработки. Можно использовать содержимое хранилищ ресурсов (asset stores) Unity и Unreal, либо поискать на сторонних сайтах. У начинающего и так голова забита множеством новой информации, так что лучше таким образом упростить себе процесс обучения.
  2. Другой вариант: научиться делать 3D-модели самостоятельно. Это труднее, но в долгосрочной перспективе лучше. Ведь со временем ваши проекты будут усложняться, и рано или поздно вам понадобятся собственные арт-материалы.

Даже если вы решили взять уже готовые исходники, возможно, в результате вы захотите подправить их в 3D-редакторе. К счастью, для этого есть достаточно онлайн-ресурсов. Профессиональными инструментами можно пользоваться по ежемесячной подписке, сравнимой с абонентской платой за MMORPG. И в сети есть руководства по всем вопросам 3D-моделирования (в первую очередь, на YouTube). Используйте поиск на каждом сайте! Если вам нужен более качественные обучающие материалы, то можете подписаться на PluralSight. Немало полезного можно найти и на Reddit, в обсуждениях различных VR-сообществ.
  • 3D-моделирование:
    • Autodesk’s Entertainment Creation Suite. Пакет приложений (включающий в себя Maya, 3ds Max, Motionbuilder и Mudbox, с нативным экспортом в Unity и UE4) доступен для «студентов» бесплатно в течение трёх лет. При этом никакой проверки на «студенчество» не делается. В этом пакете есть всё, что нужно для создания профессиональных моделей, текстур, анимаций и так далее.
    • Pixologic ZBrush (от $795, студентам — скидка). Это приложение для создания 3D-скульптур, дающее больше творческой свободы, чем традиционные приложения вроде Maya или 3ds Max. Оно позволяет создавать и обрабатывать высокополигональные, фотореалистичные модели. Функциональность аналогична Autodesk Mudbox.
    • Blender. Бесплатный пакет opensource-приложений для 3D-моделирования, анимации и игрового дизайна. У него очень широкие возможности, но он гораздо сложнее в освоении, чем коммерческое ПО.
    • Покупать и скачивать модели и 3D-сканы можно на сайтах Turbosquid и Sketchfab.
    • MODO Indie ($15 в месяц, или $300). Инструмент для 3D-моделирования, раскраски и анимации, предназначенный для игровых дизайнеров и любительского моделирования.
    • Speedtree ($19 в месяц). Приложение полезно для создания процедурно генерируемых моделей деревьев, растений и прочих ветвистых структур. Их можно извлечь со всевозможными опциями для использования в фотореалистичных ландшафтах.

Фотограмметрия (3D-сканирование)


Как и VR, трёхмерное фотосканирование — это ещё одна футуристическая технология, уже доступная для использования в дешёвых мобильных решениях. Фотограмметрия — это использование многочисленных фотографий настоящих объектов с разных ракурсов для построения их моделей. Фотографии импортируются в приложения вроде Agisoft Photoscan, или одно из многочисленных решений от Autodesk, и на их основе генерируются подробные сетчатые модели. Затем их вместе с цветовыми/диффузными текстурными картами можно экспортировать и использовать в игровом движке в качестве регулярного ресурса. Весь процесс хорошо показан на YouTube.
  • Фотограмметрия и 3D-сканирование
    • Agisoft Photoscan (от $179). Набор приложения для 3D-сканирования, где в качестве источника данных используются фотографии.
    • Autodesk предлагается несколько разных решений, от бесплатных мобильны и облачных (123D Catch) до десктопных (Remake и Recap 360). Здесь обсуждаются различия между разными программами.

Аудио и музыка


Работа со звуковыми эффектами в VR не слишком отличается от работы над музыкой и эффектами в кино и традиционных играх. Как и в случае с графикой, нужно делать упор на реализм и качество. Наибольшая степень погружения достигается с помощью размещения источников звука относительно позиции игрока, направления его взгляда. Чтобы Unity и UE4 корректно функционировали с точки зрения звука, их придётся настраивать.
  • Создание аудио


После того, как вы освоитесь с движком и приготовите арт-материалы, нужно будет придумать, как придать вашему проекту интерактивности. Я очень рекомендую сначала почитать о принципах построения UI и UX в виртуальной реальности. Иначе у ваших пользователей могут заболеть глаза от плохих решений по стереоскопическому рендерингу, или их укачает. Этого можно избежать, просто отказавшись от привязки текста к полю просмотра, или поместив камеру игрока во время движения в видимую капсулу (автомобиль, скафандр, кабину). А если вы хотите реализовать ручное управление, то рекомендую делать всё как можно реалистичнее — ваши усилия по исследованию и прототипированию будут вознаграждены чувством присутствия.

Полезные ресурсы по UI/UX в виртуальной реальности


Вам потребуется освоить некое подобие скриптового языка. В Unreal Engine 4 используется интуитивно понятная, схематическая скриптовая система Blueprint Visual Scripting. К слову, она будет полезна для тех, кто ещё не слишком уверенно чувствует себя в программировании вообще. Общее введение в Blueprint, эта система достаточно мощная, чтобы с её помощью сделать весь проект, не написав ни строчки кода (хотя вы и будете использовать ряд программистских методик). А вообще в Unreal используется С++, а в Unity — C#. Многие из тех, кто стремится войти в VR-разработку, имеют очень мало опыта программирования, так что этот этап становится особенно трудным.
Если вы самостоятельный разработчик, помните — лучше начинать с малого. Когда вы освоите базовые вещи, можно будет переходить к более масштабным идеям. Но начните лучше с самого примитивного проекта. Развивайтесь поэтапно, создав несколько проектов, вы сможете гораздо увереннее штурмовать более сложные задачи.

Обзор процесса разработки программного обеспечения / Habr

Введение

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

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

Проекты, над которыми я работаю, чаще всего связаны с разработкой заказного или инвестиционного программного обеспечения. Также мне приходилось работать с встроенным ПО и программами, ориентированными на выпуск «хитов» (что, с лёгкой руки Джоэля Спольски, я называю далее игровым ПО, хотя на самом деле некоторые игровые проекты ближе к инвестиционным).

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

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

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

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

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

Другая сторона наших заказных проектов – высокие требования к функциональности. Это и высокая нагрузка на все системы, и большая географическая распределённость, и высокие требования к точности вычислений при очень ограниченных временных рамках. Часто в наших проектах появляются элементы исследовательской работы и творческого поиска, направленного на решение нетривиальных проектных задач. Иногда нам приходится комбинировать в рамках одного процесса разработки разные методологии, например, вставляя в общий процесс, близкий к RUP, один или несколько этапов почти чистого scrum, порождая что-то вроде проекта в проекте. Это позволяет нам сохранять невысокий уровень вовлеченности пользователей, связанный с природой проекта, с гибкостью разработки в условиях высокой неопределённости требований. В этом плане для меня важен именно подготовительный этап, во время которого можно выбрать необходимую методологию и выстроить оптимальный процесс разработки. Один из примеров применения гибкой методологии я описал в статье «Применение agile при разработке проекта для государственного заказчика».

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

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

Важно понимать, что переход процесса от одного этапа к другому не имеет чёткой границы. Как правило, работы следующего этапа начинаются по мере выполнения 80-90% работ по предыдущему этапу. Особенно это касается разработки требований, когда в ряде случаев снятие неопределённости происходит лишь к концу проекта. Безусловно, наличие такой неопределённости в проекте является существенным риском и должно находиться под постоянным контролем.

Процесс разработки заказного ПО

Обзор процесса разработки начнём с наиболее общего случая – разработки заказного программного обеспечения. Схема процесса приведена на рисунке 1.


Рисунок 1. Процесс разработки заказного программного обеспечения.

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

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

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

Иногда уточнение требований приводит к пересмотру концепции проекта. Если после уточнения всех требований не удаётся найти приемлемого технического решения, проект приходится сворачивать либо откладывать на некоторое время в ожидании более приемлемых обстоятельств.

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

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

Если баланс был найден, и удалось создать приемлемую архитектуру системы, исполнитель может переходить к реализации и поставке системы. Реализация может проходить в один или несколько этапов. Для небольших проектов одноэтапная поставка всего функционала системы может быть вполне приемлемой. Однако, чем больше проект, тем выше зависимости подсистем внутри создаваемой системы. В этих условиях следует делить реализацию на несколько этапов так, чтобы в конце каждого этапа команда разработчиков имела готовый к поставке продукт. При этом самый важный, фундаментальный функционал должен разрабатываться на ранних этапах, а надстройки, работающие поверх этих основных компонентов, следует реализовывать позднее. В таком случае наиболее опасные для системы ошибки будут исправлены на первых этапах, и риск того, что прикладная функциональность системы будет основана на нестабильной основе, будет значительно снижен.
После поставки полностью завершённой системы проект заказного ПО обычно переходит к этапу опытной эксплуатации. Цель этого этапа заключается в проверке качества работы разработанной системы в реальных условиях эксплуатации. Как правило, на этом этапе исполнитель совместно с заказчиком проводит измерение количественных метрик, позволяющих определить качество созданной системы. В первую очередь проверяются функциональные характеристики качества, затем – нефункциональные. При наличии несоответствий исполнитель корректирует код системы.

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

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

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

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

Процесс разработки инвестиционного ПО

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


Рисунок 2. Процесс разработки инвестиционного программного обеспечения.

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

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

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

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

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

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

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

Особое внимание нужно уделить стендам, на которых проводится тестирование: на них должны быть развёрнуты все версии продукта, которые были выпущены ранее (по меньшей мере, те версии, которые сопровождаются), и все версии, разработка которых ведётся в настоящий момент.

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

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

Процесс разработки встроенного ПО

Как уже отмечалось выше, встроенное ПО отличается от заказного тем, что его крайне сложно сопровождать.

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

Таким образом, при разработке встроенного ПО возникает сразу несколько важных ограничений.

Во-первых, поставка выполняется в рамках только одного этапа: никто не будет встраивать в устройства наполовину работающую программу.

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

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

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

Процесс разработки встроенного ПО показан на рисунке 3.


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

Процесс разработки игр

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

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

Указанные факторы сказываются на процессе разработки игрового ПО. Процесс представлен на рисунке 4.


Рисунок 4. Процесс разработки игрового программного обеспечения.

Нужно отметить следующие особенности процесса разработки игрового ПО.

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

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

Поставка игрового программного обеспечения происходит в рамках одного единственного этапа. Даже если сначала создаётся некое ядро, «движок» игровой системы, его работу невозможно проверить без реализации всего функционала системы.

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

Заключение

В рамках статьи я попытался сделать обзор «верхнего уровня» процесса разработки прикладного программного обеспечения. Каждый этап процесса, безусловно, нуждается в отдельном обсуждении с обязательным учётом особенностей разрабатываемых программных средств.

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

Продолжение: Подготовительный этап разработки программного обеспечения

этапы и принципы / Edison corporate blog / Habr

Основной нашей специализацией в EDISON является разработка сложного заказного программного обеспечения на платформах Windows, Linux, MacOS и мобильных Android, iOS, Windows Phone. За время своей работы мы выполнили свыше нескольких сотен крупных проектов на самом высоком уровне качества разработки и обслуживания клиентов. К сожалению, большая часть самых интересных проектов надёжно скрыты за NDA. Но каким бы ни было разрабатываемое программное обеспечение: системное, прикладное, веб-приложение или приложение для мобильных, — общая схема разработки и ее принципы одинаковы.

В прошлой статье мы рассказали о наших принципах проектирования ПО, в этом посте перейдём непосредственно к процессу разработки в Центре разработки EDISON.

Этапы разработки программного обеспечения


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

Подробно про первый и второй этапы (подготовительный и проектирование программного обеспечения) можно перечитать в прошлой статье.

Перейдём к созиданию:

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

Схематично создание программного обеспечения выглядит так:

Принципы разработки программного обеспечения


Важный момент для компании, занимающейся разработкой ПО, — определиться с базовыми принципами работы. У каждого разработчика свой подход, свои ценности и приоритеты. Для компании EDISON такими принципами при разработке являются:
  1. Ориентация на качество. Мы прилагаем все усилия, чтобы это было не избитым маркетинговым клише, а объективной реальностью. Бесперебойность работы и удовлетворенность конечным результатом обеспечивают:
    • следование ГОСТам, лучшим практикам и методологиям качественной разработки (RUP, Agile),
    • лучшие спецы, четкое разделение труда и хорошая мотивация срок+качество,
    • отлаженная и мощная система тестирования продуктов,
    • качественное и прозрачное планирование и выполнение задач, система управления разработкой и обязательность грамотного технического задания,
    • документирование процесса и результата,
    • гарантии на разработанные продукты, техническая поддержка и обучение пользователей,
    • понятная и удобная система оплаты за разработку ПО.
  2. Адаптивность и гибкость. В некоторых проектах нет возможности четкой формулировки требований на этапе составления ТЗ, а иногда у клиента уже на этапе разработки программного обеспечения появляется потребность в изменениях, — мы с пониманием относимся к таким ситуациям и заранее предусматриваем их вероятность и согласовываем с клиентом условия работы при прецеденте.

Примеры реализованных EDISON проектов


Программное обеспечение для микротомографа для изучения материалов, созданного учёными Томского Государственного Университета


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

Электронная библиотечная система Vivaldi


Сервис, разработанный EDISON, совмещает в себе электронные библиотеки ВУЗов страны с доступом к базе Российской Государственной Библиотеки. С его помощью студенты и преподаватели из 126 городов России могут получить доступ к ценнейшим и редчайшим научным трудам. ЭБС Vivaldi сотрудничает с крупными библиотеками, научными центрами и периодическими печатными изданиями. Пользователи могут посещать специализированные читательские залы круглосуточно. В данном проекте реализован лёгкий поиск нужной литературы, возможность распечатки, доступ к архивам ВУЗов страны. Сервис легко внедряется в учебное заведение, экономя место и затраты на содержание библиотеки бумажных книг.

Сеть электронных бибилиотек Vivaldi (ЭБС) с аннотацией from EDISON Software Development Centre

Система для контроля и учета рабочего времени «Большой Брат»


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

Есть замечания по нашей методологии или вы хотите поделиться своим опытом? Рады будем пообщаться в комментариях, в нашей группе в Фейсбуке или во Вконтакте.

О компании:
Проектирование программного обеспечения
Разработка программного обеспечения: этапы и принципы
Тестировщик в ответе за всё
Поддержка программного обеспечения
Как йога кодить и жить помогает: личный опыт
Обучаем сотрудников английскому: опыт Edison
Умственный труд и физическая культура

Процесс разработки программного обеспечения — Википедия

Процесс разработки программного обеспечения (англ. software development process, software process) — структура, согласно которой построена разработка программного обеспечения (ПО)[источник не указан 1006 дней].

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

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

Водопадная (каскадная, последовательная) модель[править | править код]

Водопадная модель жизненного цикла (англ. waterfall model) была описана Уинстоном Ройсом в статье «Managing the Development of Large Software Systems» в 1970 г. Она предусматривает последовательное выполнение всех этапов проекта в строго фиксированном порядке. Переход на следующий этап означает полное завершение работ на предыдущем этапе. Требования, определенные на стадии формирования требований, строго документируются в виде технического задания и фиксируются на все время разработки проекта. Каждая стадия завершается выпуском полного комплекта документации, достаточной для того, чтобы разработка могла быть продолжена другой командой разработчиков.

Этапы проекта в соответствии с каскадной моделью:

  1. Формирование требований;
  2. Проектирование;
  3. Реализация;
  4. Тестирование;
  5. Внедрение;
  6. Эксплуатация и сопровождение.

Преимущества:

  • Полная и согласованная документация на каждом этапе;
  • Легко определить сроки и затраты на проект.

Недостатки:

В водопадной модели переход от одной фазы проекта к другой предполагает полную корректность результата (выхода) предыдущей фазы. Однако неточность какого-либо требования или некорректная его интерпретация в результате приводит к тому, что приходится «откатываться» к ранней фазе проекта и требуемая переработка не просто выбивает проектную команду из графика, но приводит часто к качественному росту затрат и, не исключено, к прекращению проекта в той форме, в которой он изначально задумывался. По мнению современных специалистов, основное заблуждение авторов водопадной модели состоит в предположениях, что проект проходит через весь процесс один раз, спроектированная архитектура хороша и проста в использовании, проект осуществления разумен, а ошибки в реализации легко устраняются по мере тестирования. Эта модель исходит из того, что все ошибки будут сосредоточены в реализации, а потому их устранение происходит равномерно во время тестирования компонентов и системы[1]. Таким образом, водопадная модель для крупных проектов мало реалистична и может быть эффективно использована только для создания небольших систем[2].

Итерационная модель[править | править код]

Альтернативой последовательной модели является так называемая модель итеративной и инкрементальной разработки (англ. iterative and incremental development, IID), получившей также от Т. Гилба в 70-е гг. название эволюционной модели. Также эту модель называют итеративной моделью и инкрементальной моделью[3].

Модель IID предполагает разбиение жизненного цикла проекта на последовательность итераций, каждая из которых напоминает «мини-проект», включая все процессы разработки в применении к созданию меньших фрагментов функциональности, по сравнению с проектом в целом. Цель каждой итерации — получение работающей версии программной системы, включающей функциональность, определённую интегрированным содержанием всех предыдущих и текущей итерации. Результат финальной итерации содержит всю требуемую функциональность продукта. Таким образом, с завершением каждой итерации продукт получает приращение — инкремент — к его возможностям, которые, следовательно, развиваются эволюционно. Итеративность, инкрементальность и эволюционность в данном случае есть выражение одного и того же смысла разными словами со слегка разных точек зрения[2].

По выражению Т. Гилба, «эволюция — приём, предназначенный для создания видимости стабильности. Шансы успешного создания сложной системы будут максимальными, если она реализуется в серии небольших шагов и если каждый шаг заключает в себе четко определённый успех, а также возможность «отката» к предыдущему успешному этапу в случае неудачи. Перед тем, как пустить в дело все ресурсы, предназначенные для создания системы, разработчик имеет возможность получать из реального мира сигналы обратной связи и исправлять возможные ошибки в проекте»[3].

Подход IID имеет и свои отрицательные стороны, которые, по сути, — обратная сторона достоинств. Во-первых, целостное понимание возможностей и ограничений проекта очень долгое время отсутствует. Во-вторых, при итерациях приходится отбрасывать часть сделанной ранее работы. В-третьих, добросовестность специалистов при выполнении работ всё же снижается, что психологически объяснимо, ведь над ними постоянно висит ощущение, что «всё равно всё можно будет переделать и улучшить позже»[2].

Различные варианты итерационного подхода реализованы в большинстве современных методологий разработки (RUP, MSF, XP).

Спиральная модель[править | править код]

Спиральная модель (англ. spiral model) была разработана в середине 1980-х годов Барри Боэмом. Она основана на классическом цикле Деминга PDCA (plan-do-check-act). При использовании этой модели ПО создается в несколько итераций (витков спирали) методом прототипирования.

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

На каждой итерации оцениваются:

  • риск превышения сроков и стоимости проекта;
  • необходимость выполнения ещё одной итерации;
  • степень полноты и точности понимания требований к системе;
  • целесообразность прекращения проекта.

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

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

  1. Дефицит специалистов.
  2. Нереалистичные сроки и бюджет.
  3. Реализация несоответствующей функциональности.
  4. Разработка неправильного пользовательского интерфейса.
  5. Перфекционизм, ненужная оптимизация и оттачивание деталей.
  6. Непрекращающийся поток изменений.
  7. Нехватка информации о внешних компонентах, определяющих окружение системы или вовлеченных в интеграцию.
  8. Недостатки в работах, выполняемых внешними (по отношению к проекту) ресурсами.
  9. Недостаточная производительность получаемой системы.
  10. Разрыв в квалификации специалистов разных областей.

В сегодняшней спиральной модели определён следующий общий набор контрольных точек[4]:

  1. Concept of Operations (COO) — концепция (использования) системы;
  2. Life Cycle Objectives (LCO) — цели и содержание жизненного цикла;
  3. Life Cycle Architecture (LCA) — архитектура жизненного цикла; здесь же возможно говорить о готовности концептуальной архитектуры целевой программной системы;
  4. Initial Operational Capability (IOC) — первая версия создаваемого продукта, пригодная для опытной эксплуатации;
  5. Final Operational Capability (FOC) –— готовый продукт, развернутый (установленный и настроенный) для реальной эксплуатации.
  1. ↑ Брукс Ф. Мифический человеко-месяц или как создаются программные системы : пер. с англ. / Ф. Брукс. — Санкт-Петербург : Символ-Плюс, 1999. — 304 с.: ил.
  2. 1 2 3 4 Мирошниченко Е. А. Технологии программирования: учебное пособие / Е. А. Мирошниченко. — 2-е изд., испр. и доп. — Томск: Изд-во Томского политехнического университета, 2008. — 128 с.
  3. 1 2 Ларман К. Итеративная и инкрементальная разработка: краткая история / К. Ларман, В. Базили // Открытые системы. — 2003.— N 9.
  4. ↑ Орлик С. Введение в программную инженерию и управление жизненным циклом ПО. [1]

Оформляем внутреннюю разработку как программный актив в пять шагов

Привет, Хабр. Меня зовут Владимир Разуваев, я руководитель департамента бизнес-консалтинга. Наша команда занимается тем, что помогает клиентам понимать значимость программных активов и управлять ими. В этом посте я предлагаю поговорить о внутренних разработках, которые в той или иной мере есть практически в любой компании.

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

Опыт последних трёх лет показывает, как изменилось отношение компаний ко внутренним разработкам. Даже простой, созданный «на коленке» софт, воспринимается как некая сущность, имеющая свою ценность. В некоторых компаниях ценность внутренних разработок увеличилась еще и под влиянием политики импортозамещения: для них написанное собственной командой программистов ПО – альтернатива зарубежным продуктам, часто уже достаточно близкая к ним по функциональности. Как бы то ни было, организации стремятся формализовать внутренние разработки – мы видим это по количеству соответствующих обращений в наш департамент.

Пять шагов к формализации внутренних разработок


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

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

Шаг второй. Всегда составляйте служебное задание на разработку программы для ЭВМ. Строго говоря, с него должна начинаться любая разработка. Служебное задание готовится в свободной форме. Оно содержит цели конкретного проекта, разработку которого планируется начать, а также некое краткое описание функциональности либо задач, которые создаваемое приложение будет решать. Совсем идеально, если служебные задания будут готовиться под конкретные модули разрабатываемого решения и содержать в себе полное и чёткое техническое задание на каждый модуль. Если такой документ отсутствует, рекомендуется его разработать для текущих проектов, либо составить новый на развитие ранее разработанного продукта, в котором следует дополнительно прописать принадлежность исключительных прав компании. Своим заказчикам мы упрощаем жизнь и предлагаем им готовые шаблоны, но вы можете написать и в свободной форме.

Не страшно, если вы не составляли служебное задание на предыдущих этапах разработки. Ваш продукт наверняка дорабатывается, и начать практику заданий имеет смысл при развитии продукта. В этом случае сформулируйте задание так, чтобы из контекста было понятно: дорабатывается именно существующее решение, работа над которым велась и ранее. Если служебные задания так или иначе были сформулированы, нелишним будет провести их аудит – либо самостоятельно, либо с помощью привлеченного консультанта. Это позволит понять, все ли в порядке с документами, если нет, то привести их в порядок. Нужно понимать, что собственный софт, не имеющий документов, проверяющими органами будет восприниматься как пиратский. А это – лишние риски, которые ни к чему любой компании.

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

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

Шаг пятый. После приказа по организации о том, что продукт введен в эксплуатацию, следует подготовить распоряжение о постановке ПО на бухгалтерский баланс, определить его начальную стоимость, полезный срок использования и пр. Как это сделать? Необходимо создать экспертный совет, который в рамках обсуждения функциональности ПО выдаст рекомендации и оценки, связанные со стоимостью программного обеспечения. Рекомендации экспертов лучше формулировать в виде протокола, который затем должен быть передан в бухгалтерию. Начальная стоимость определяется самостоятельно компанией-разработчиком и чаще всего включает в себя непосредственно прямые затраты. Не стоит завышать стоимость ПО, т.к. после постановки на бухгалтерский учет компания должна будет платить налоги, которые будут зависеть от начальной стоимости. Подробные правила формирования в бухгалтерском учете и бухгалтерской отчетности информации о нематериальных активах организаций устанавливает ПБУ 14/2007 (Положение по бухгалтерскому учету «Учет нематериальных активов», приложение к приказу Минфина РФ от 27.12.2007 №153н).

Итак, чтобы внутренняя разработка была полностью формализована, она должна быть защищена следующими документами:

1. Служебное задание
2. Докладная записка о выполнении задания
3. Акт приемки программного продукта к эксплуатации в компании
4. Распоряжение о постановке программного обеспечения на бухгалтерский баланс

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

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

На что может рассчитывать рядовой разработчик?


Это очень частый вопрос со стороны программистов: «Какую выгоду я, как создатель, получаю от формализации написанного мною приложения?» Если работодатель, для которого разработчик создал приложение, юридически правильно это приложение формализовал, программисту остается так называемое личное неимущественное право автора. Никаких денежных бенефитов оно с собой, скорее всего, не несет, поскольку создатель уже получил вознаграждение за выполненную работу, и никакими имущественными правами на написанный им софт он уже не обладает. Неимущественные права позволяют потешить собственное эго и добавить проект в портфолио. Например, автор разработки вправе сам предложить название ПО, разрешать указывать свое имя в контексте приложения. Но имейте в виду, что право указывать имя автора, либо его не указывать, тоже регулируется вышеупомянутым трудовым договором. Отмечу ещё, что неимущественные права распространяются в том числе на несколько человек, то есть у продукта может быть несколько авторов.

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

Почему важна бумажная работа?


Мне и моим коллегам нередко приходится сталкиваться с ситуацией, когда собственник или топ-менеджеры компаний-заказчиков даже не знают, какое ПО и для каких целей создала команда разработки. Информацию о таком софте мы получаем на самом первом этапе процедуры Software Asset Management, когда специальные средства сканируют серверы и ПК в компании-заказчике. Обнаружив такие «артефакты», мы вместе с ответственными сотрудниками поднимаем необходимую документацию и по крайней мере понимаем, что перед нами внутренняя разработка.

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

Если остались вопросы – пишите в комментариях, я постараюсь ответить.

tips & tricks / Redmadrobot corporate blog / Habr

Все знают, что еще в сентябре Apple представила Apple TV четвертого поколения с новой операционной системой tvOS на борту, и что для него можно разрабатывать свои приложения. О том, как это делать, уже кое-что писали, и в этой статье мы тоже обратимся к этой теме. О чем необходимо знать, приступая к разработке под tvOS и как избежать некоторых сложностей?

Изменилось взаимодействие между приложением и пользователем


Раньше мы могли прикоснуться к экрану, нажать на кнопку, перелистнуть картинку — работали с интерфейсом напрямую. Теперь взаимодействие происходит опосредованно, у пользователя есть два способа взаимодействия:
  1. Через пульт управления
  2. Управление при помощи Siri


Пульт управления тоже обновился, теперь там есть:
  1. Тач панель (можно тапать, свайпать и т.д.)
  2. Кнопка меню
  3. Siri
  4. Микрофон
  5. Play/Pause
  6. Домой
  7. Громкость
  8. Гироскоп
  9. Отверстие для зарядки

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

UIKit framework поддерживает только интерфейсы, которые поддерживают работу с Focus. Другими словами, для большинства элементов Focus работает “из коробки”. Программно Focus можно только заставить обновиться, но установить или передвинуть его программно нельзя.
Что значит в большинстве случаев? Например, UIButton поддерживает фокус. На нее можно нажать.UILlabel Focus не поддерживает, на лейбл нельзя нажать — да и зачем? По умолчанию Focus поддерживают следующие UI-элементы:

  • UIButton
  • UITextField
  • UITableView
  • UICollectionView
  • UITextView
  • UISegmentedControl
  • UISearchBar

Об обновлении Focus более подробно написано в документации.

Домашний экран Apple TV теперь выглядит по-новому

TOP SHELF

Теперь он состоит из иконок приложения и Top Shelf (опционально), который располагается над иконкой приложения. Когда пользователь выбирает ваше приложение (фокусируется ), над иконкой появляется Top Shelf.
Top Shelf – некое подобие виджета, если проводить паралели с iOS.

Top Shelf отличное место, чтобы продемонстрировать ключевой контент вашего приложения (например, погода) или сделать шорткат для пользователя, например, вернуть его к просмотру фильма, который поставлен на паузу.
Для вашего приложения Top Shelf является расширением (extension). Специально для работы с ним написан новый фреймворк – TV Services framework, который состоит из:
Объекта TVContentIdentifier – уникальный идентификатор медиаконтента
Объекта TVContentItem – любой из элементов или контейнер для элементов, отображаемых в Top Shelf
Протокола TVTopShelfProvider с двумя обязательными для реализации методами
topShelfItems – возвращает элементы, которые должны быть отображены в Top Shelf
topShelfStyle – говорит о том, какой стиль использовать для отображения элементов

Добавление Top Shelf в tvOS application-проект

Для того чтобы добавить Top Shelf в проект, необходимо:

  1. Добавить новый target в ваш проект.
    File > New > Target
  2. Выбирать TV Service Extention
    tvOS > Application Extention > tvOS > Application Extention
  3. Дать имя для вашего Top Shelf
  4. Согласиться активировать схему Top Shelf для отладки
  5. В проекте появится папка с вашим только что созданным Top Shelf

Ну а дальше дело техники — выбираем стиль отображения TopShelf и добавляем необходимые элементы. Варианты реализации можно посмотреть в примере проекта от Apple.

Параллакс

Иконка тоже не такая простая, как кажется. Все иконки в tvOS должны поддерживать параллакс.

Apple разработала для параллаксных картинок новый формат файла – .lsr
Параллакс достигается многоуровневым наложением картинок, такие картинки можно создавать либо прямо из Xcode, либо из специальной удобной программы Parallax Previewer, другой альтернативный вариант — скачать расширение для Photoshop. В архиве вместе с расширением для Photoshop есть инструкция по работе.

Два способа разработки: TVML vs нативное приложение

Каждый из них имеет свои преимущества и недостатки.

1. TVML

Первый способ предполагает использование стека технологий TVML, TVJS и TVMLKit
  • TVML – Television Markup Language – родственник XML
  • TVJS – набор JavaScript API, который обеспечит создание интерфейса приложения
  • TVMLKit – клей между TVML, JavaScript и приложением для tvOS

И чтобы нам было проще, Apple подготовила для нас инструкции и каталог шаблонов,
Плюс: Приложение можно обновлять, обновляя свой сервер. Больше вам не придется ждать ревью в аппсторе!
Минус: Слабо кастомизируется. Нативные приложения всегда будут выглядеть лучше.
Вообще, это отличное решение типичного юскейса для приложения на Apple TV. Допустим, у вас уже есть сервер, который предоставляет видеоконтент для пользователей, и вы не хотите заморачиваться с дизайном или сложной навигацией для вашего tvOS-приложения. В таком случае разработка приложения с помощью TVML подойдет вам идеально.
2. Нативное приложение

В этом случае процесс разработки под Apple TV практически идентичен созданию обычных iOS-приложений, здесь также можно использовать Objective-С и/или Swift. Большинство iOS-фреймворков доступны и для tvOS, среди них MediaPlayer или UIKit. Полный список можно найти тут.

Ограничения


Нет локального хранилища данных. Для хранения приходится использовать iCloud, CloudKit или свой собственный бэкэнд.
Размер приложения не должен превышать 200 Мб.

Авторизация


Отдельно хотелось рассказать про проблемы с авторизацией. Сейчас ввод пароля выглядит примерно так:

Авторизация требуется довольно часто, например, при покупке фильма или загрузке приложения, даже бесплатного. Довольно скоро такой способ авторизации покажется утомительным. Поэтому если в вашем приложении присутствует авторизация, стоит задуматься о том, как сделать ее менее болезненной. В сети уже можно найти несколько примеров интересных решений (1, 2), но никто не запрещает пофантазировать дальше и попробовать использовать для авторизации QR-коды, Siri (“сим-сим-откройся”) или тач-панель пульта для ввода графического кода (как в Android).

Ссылки


  1. Документация Apple
  2. Downloads for tvOS
  3. Примеры – туториалы – семплы
  4. Авторизация
  5. Другое

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *