Жизненный цикл программного обеспечения: Жизненный цикл программного обеспечения — QA evolution

Содержание

модели жизненного цикла, методы и пинципы

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

Жизненный цикл программного обеспечения: этапы

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

Обычно к этапам жизненного цикла относят:

  1. Анализ требований
  2. Проектирование
  3. Программирование
  4. Тестирование и отладку
  5. Эксплуатацию, сопровождение и поддержку

Но это не полный перечень. 

Существует некая вариативность в прохождении этапов ЖЦ во время разработки и внедрения продукта на рынок. Для каждого продукта это происходит по-своему, но чтобы процессом как-то управлять были сформулированы модели жизненного цикла ПО – упрощенное и обобщенное представление о том, как развивается продукт. В реальности жизнь продукта не соответствует модели.

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

  1. Каскадная модель (она же “водопадная” — waterfall)
  2. Итерационные модели
  3. Инкрементная модель
  4. Спиральная модель

Давайте посмотрим на них подробнее и разберемся, что в них общего, а что отличается.

Модели жизненного цикла ПО

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

Waterfall (каскадная модель) 

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

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

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

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

Для заказчиков данная модель выглядит линейно и со стороны достаточно просто: из завершенного этапа проектирования следует программирование, а затем тестирование — и так шаг за шагом пока не будет достигнута финальная точка и цель, ради которой ведется разработка. 

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

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

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

Итерационная, спиральная и инкрементная модели 

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

Поясним разбиение на этапы на бытовом примере. Допустим, нам нужен стол в гостиную.

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

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

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

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

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

Итерационная модель например применялась при разработке СДО проекта Джерело. Детальнее о разработке чата Джерело можно почитать тут.

Спиральная и инкрементная модели являются видами итерационной модели жизненного цикла. 

Что же такое спиральная модель?

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

Теперь поговорим об инкрементной модели.

Принцип, который лежит в основе инкрементной модели, подразумевает расширение возможностей, достраивание модулей и функций приложения. Буквальный перевод слова инкремент: «увеличение на один». Это «увеличение на один» применяется в том числе для обозначения версий продукта.

Если в каскадной модели по сути есть два состояния продукта: «ничего» и «готовый продукт», то с появлением итерационных моделей стало  применяться версионирование продукта. Каждая итерация обозначается цифрой: 1,2,3 и соответственно продукт после каждой итерации имеет версию с соответствующим номером: v.1, v.2, v.3. Числами после слова версия обозначают масштабные изменения в ядро продукта.

А когда одна из версий эксплуатируется, следующая, учитывая недочеты предыдущей, только планируется или уже разрабатывается, а улучшения заказчику и пользователю хочется доставить прямо сейчас, тогда появляются минорные версии. Туда попадают изменения, которые не влияют на ядро разработки и представлены как под-версии 1.1,1.2,1.3 или релизы 1.1.1, 1.1.2 и т.п. 

В совокупности такие поэтапные релизы приводят к полноценной версии 2.0. 

Agile и Lean: принципы разработки ПО

Начнем с Agile. 

Agile — набор принципов гибкой разработки (всего их 12) и идей. Основные идеи Agile:

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

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

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

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

Во внутреннем планировании и в продуктовой разработке без этого принципа и элементов Agile не обойтись. 

Теперь давайте поговорим о Lean.

Идея подхода Lean в том, что мы бережливо относимся к ресурсам (в том числе времени) и решаем задачи самым простым способом. Например: мы не делаем весь продукт, чтобы понять, что он никому не нужен – мы делаем лендинг и форму подписки и даем на него рекламу, чтобы проверить что этот продукт вызывает интерес клиентов и принять осознанное решение о необходимости разработки.  

Когда доходит до разработки продукта, или делается какое-то улучшение, производственное или инженерное, мы сначала делаем его MVP (minimum viable product). Термин MVP сейчас широко распространён и применяется повсеместно, но он родился именно из Lean подхода. MVP это такая версия продукта, которая выполняет свою главную функцию и при этом её не отторгают клиенты и признают её полезность. Конечно, её можно улучшать и улучшать, но в целом продукт на стадии MVP должен быть полезным, понятным клиенту и таким, чтобы можно было принять решение о его дальнейших улучшениях или признать эксперимент неудачным и тестировать новую гипотезу, потратив при этом как можно меньше ресурсов.

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

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

В заключение о Lean хочется сказать такое: часто когда говорят о Lean то говорят что “Lean это о том чтобы вместо сервиса сделать лендинг с формой контактов”. Нет, это не Lean. Такое тестирование не противоречит Lean, но Lean-методология предлагает гораздо больше приемов чем этот, и стоит внимательного изучения.

Основные методы разработки ПО: гибкие методологии

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

Scrum методология основывается на понятии спринта (sprint), в течении которого выполняется работа над продуктом. Перед началом каждого спринта проводится планирование (Sprint Planning), на котором производится оценка содержимого списка задач по развитию продукта (Product Backlog) и формирование бэклога на спринт (Sprint Backlog), в рамках которых и действует команда. Для спринта всегда существуют ограничения по времени, обычно от недели до месяца. Жизнь продукта таким образом разбита на равные по продолжительности спринты.

По Kanban методологии проект делится на этапы, которые визуализируются в виде канбан-доски. Этапы, это например: планирование, разработка, тестирование, релиз и т.п. Задачи в виде “карточек” перемещаются с этапа на этап. Новые задачи можно добавлять в любое время. Задача закрывается не по истечению конкретного времени, а по смене статуса на “завершено”.  Канбан это методология из концепции “бережливого производства”.

RUP (Rational Unified Process) — разработка продукта при данном методе состоит из четырех фаз (начальная стадия, уточнение, построение, внедрение), каждая из которых включает в себя одну или несколько итераций. RUP огромная методология, которую трудно уложить в абзац текста, но методы, рекомендуемые RUP основаны на статистике коммерчески успешных проектов. 

DSDM (Dynamic Systems Development Model) — методология, которая демонстрирует набор принципов, предопределенных типов ролей и техник.

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

RAD (Rapid Application Development) — методология быстрой разработки приложений, которая предполагает применение инструментальных средств визуального моделирования (прототипирования) и разработки. RAD предусматривает небольшие команды разработки,сроки до 4 месяцев и активное привлечение заказчика с ранних этапов. Данная методология опирается на требования, но также существует возможность их изменений в период разработки системы. Такой подход позволяет сократить расходы и свести время разработки к минимуму. 

XP (Extreme Programming) — методология, которая ориентируется на постоянное изменение требований к продукту и предлагает 12 подходов для достижения эффективных результатов в подобных условиях. Среди них:

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

Вместо вывода

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

Хотите поговорить о том, как лучше всего построить управление вашим проектом? Пишите!

10.03.2020

Используемые в статье картинки взяты из открытых источников и используются как иллюстрации.

Стадии цикла разработки ПО — QALight

1. Анализ требований

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

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

В зависимости от выбранной модели разработки, могут отличаться подходы к определению момента перехода с одной стадии на другую. К примеру, в каскадной или V-модели стадия анализа требований закрепляется в документе – спецификации требований к программному обеспечению (Software Requirement Specification, SRS), оформление которого должно быть закончено до перехода на следующую стадию.

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

2. Проектирование

На стадии проектирования (называемой также стадией дизайна и архитектуры) программисты и системные архитекторы, руководствуясь требованиями, разрабатывают высокоуровневый дизайн системы.

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

Утвержденный дизайн системы определяет перечень разрабатываемых программных компонентов, взаимодействие с третьими сторонами, функциональные характеристики программы, используемые базы данных и многое другое. Дизайн, как правило, закрепляется отдельным документом – дизайн-спецификацией (Design Specification Document, DSD).

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

– Блок-схемы;

– ER-диаграммы;

– UML-диаграммы;

– Макеты – например, нарисованный в фотошопе прототип сайта.

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

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

Системные администраторы настраивают программное окружение, front-end программисты разрабатывают пользовательский интерфейс программы и логику ее взаимодействия с сервером.

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

Программирование предполагает четыре основных стадии:

1) Разработка алгоритмов – фактически, создание логики работы программы;

2) Написание исходного кода;

3) Компиляция – преобразование в машинный код;

4) Тестирование и отладка – речь, главным образом, о юнит-тестировании.

4. Документация

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

Всего существует четыре уровня документации:

– Архитектурная (проектная) – например, дизайн-спецификация. Это документы, описывающие модели, методологии, инструменты и средства разработки, выбранные для данного проекта.

– Техническая – вся сопровождающая разработку документация. Сюда входят различные документы, поясняющие работу системы на уровне отдельных модулей. Как правило, пишется в виде комментариев к исходному коду, которые впоследствии структурируются в виде HTML-документов.

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

– Маркетинговая – включает рекламные материалы, сопровождающие выпуск продукта. Ее цель – в красочной форме представить функциональность и конкурентные преимущества продукта.

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

Основные этапы тестирования мы уже рассматривали ранее, в разделе Фундаментальный процесс тестирования

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

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

Тестирование повторяется до тех пор, пока не будут достигнуты критерии его окончания.

Виды, методы и техники тестирования мы подробно рассмотрим дальше в этом пособии.

6. Внедрение и сопровождение

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

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

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

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

Заключение

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

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

Жизненный цикл программного обеспечения — это… Что такое Жизненный цикл программного обеспечения?

Жизненный цикл программного обеспечения (ПО) — период времени, который начинается с момента принятия решения о необходимости создания программного продукта и заканчивается в момент его полного изъятия из эксплуатации[1]. Этот цикл — процесс построения и развития ПО.

Стандарты жизненного цикла ПО

Стандарт ГОСТ 34.601-90

Стандарт ГОСТ 34.601-90 предусматривает следующие стадии и этапы создания автоматизированной системы:

  1. Формирование требований к АС
    1. Обследование объекта и обоснование необходимости создания АС
    2. Формирование требований пользователя к АС
    3. Оформление отчета о выполнении работ и заявки на разработку АС
  2. Разработка концепции АС
    1. Изучение объекта
    2. Проведение необходимых научно-исследовательских работ
    3. Разработка вариантов концепции АС и выбор варианта концепции АС, удовлетворяющего требованиям пользователей
    4. Оформление отчета о проделанной работе
  3. Техническое задание
    1. Разработка и утверждение технического задания на создание АС
  4. Эскизный проект
    1. Разработка предварительных проектных решений по системе и ее частям
    2. Разработка документации на АС и ее части
  5. Технический проект
    1. Разработка проектных решений по системе и ее частям
    2. Разработка документации на АС и ее части
    3. Разработка и оформление документации на поставку комплектующих изделий
    4. Разработка заданий на проектирование в смежных частях проекта
  6. Рабочая документация
    1. Разработка рабочей документации на АС и ее части
    2. Разработка и адаптация программ
  7. Ввод в действие
    1. Подготовка объекта автоматизации
    2. Подготовка персонала
    3. Комплектация АС поставляемыми изделиями (программными и техническими средствами, программно-техническими комплексами, информационными изделиями)
    4. Строительно-монтажные работы
    5. Пусконаладочные работы
    6. Проведение предварительных испытаний
    7. Проведение опытной эксплуатации
    8. Проведение приемочных испытаний
  8. Сопровождение АС.
    1. Выполнение работ в соответствии с гарантийными обязательствами
    2. Послегарантийное обслуживание

Эскизный, технический проекты и рабочая документация — это последовательное построение все более точных проектных решений. Допускается исключать стадию «Эскизный проект» и отдельные этапы работ на всех стадиях, объединять стадии «Технический проект» и «Рабочая документация» в «Технорабочий проект», параллельно выполнять различные этапы и работы, включать дополнительные.

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

Федеральным агентством по техническому регулированию и метрологии РФ 01.03.2012 г. взамен ГОСТ Р ИСО/МЭК 12207-99 принят стандарт ГОСТ Р ИСО/МЭК 12207-2010 «Информационная технология. Системная и программная инженерия. Процессы жизненного цикла программных средств», идентичный международному стандарту ISO/IEC 12207:2008 «System and software engineering — Software life cycle processes».

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

Процессы жизненного цикла ПО

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

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

Каждый процесс включает ряд действий. Например, процесс приобретения охватывает следующие действия:

  1. Инициирование приобретения
  2. Подготовка заявочных предложений
  3. Подготовка и корректировка договора
  4. Надзор за деятельностью поставщика
  5. Приемка и завершение работ

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

  1. Формирование требований к системе
  2. Формирование списка программных продуктов
  3. Установление условий и соглашений
  4. Описание технических ограничений (среда функционирования системы и т. д.)

Стадии жизненного цикла ПО, взаимосвязь между процессами и стадиями

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

Стандарт ГОСТ Р ИСО/МЭК 12207-99 не предлагает конкретную модель жизненного цикла. Его положения являются общими для любых моделей жизненного цикла, методов и технологий создания ИС. Он описывает структуру процессов жизненного цикла, не конкретизируя, как реализовать или выполнить действия и задачи, включенные в эти процессы.

Модель ЖЦ ПО включает в себя:

  1. Стадии;
  2. Результаты выполнения работ на каждой стадии;
  3. Ключевые события — точки завершения работ и принятия решений.

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

На каждой стадии могут выполняться несколько процессов, определенных в стандарте ГОСТ Р ИСО/МЭК 12207-99, и наоборот, один и тот же процесс может выполняться на различных стадиях. Соотношение между процессами и стадиями также определяется используемой моделью жизненного цикла ПО.

Модели жизненного цикла ПО

Водопадная (каскадная, последовательная) модель

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

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

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

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

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

Недостатки:

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

Итерационная модель

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

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

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

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

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

Спиральная модель

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

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

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

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

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

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

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

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

  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) –— готовый продукт, развернутый (установленный и настроенный) для реальной эксплуатации.

Методологии разработки ПО

  • Rational Unified Process (RUP).
  • Microsoft Solutions Framework (MSF). Включает 4 фазы: анализ, проектирование, разработка, стабилизация, предполагает использование объектно-ориентированного моделирования.
  • Экстремальное программирование (англ. Extreme Programming, XP). В основе методологии командная работа, эффективная коммуникация между заказчиком и исполнителем в течение всего проекта по разработке ИС. Разработка ведется с использованием последовательно дорабатываемых прототипов.
  • ЕСПД — комплекс государственных стандартов Российской Федерации, устанавливающих взаимосвязанные правила разработки, оформления и обращения программ и программной документации.

Литература

  • Братищенко В.В. Проектирование информационных систем. — Иркутск: Изд-во БГУЭП, 2004. — 84 с.
  • Вендров А.М. Проектирование программного обеспечения экономических информационных систем. — М.: Финансы и статистика, 2000.
  • Грекул В.И., Денищенко Г.Н., Коровкина Н.Л. Проектирование информационных систем. — М.: Интернет-университет информационных технологий — ИНТУИТ.ру, 2005.
  • Мишенин А.И. Теория экономических информационных систем. — М.: Финансы и статистика, 2000. — 240 с.
  • Орлик С., «Модели жизненного цикла»

Примечания

  1. Стандарт IEEE Std 610.12, Глоссарий
  2. Брукс Ф. Мифический человеко-месяц или как создаются программные системы : пер. с англ. / Ф. Брукс. — Санкт-Петербург : Символ-Плюс, 1999. — 304 с.: ил.
  3. 1 2 3 4 Мирошниченко Е. А. Технологии программирования: учебное пособие / Е. А. Мирошниченко. — 2-е изд., испр. и доп. — Томск: Изд-во Томского политехнического университета, 2008. — 128 с.
  4. 1 2 Ларман К. Итеративная и инкрементальная разработка: краткая история / К. Ларман, В. Базили // Открытые системы. — 2003.— N 9.
  5. Орлик С. Введение в программную инженерию и управление жизненным циклом ПО. [1]

1.2.1. Фазы жизненного цикла

Жизненный цикл разработки системы (süsteemiarenduse elutsükkel,

Systems Development Life Cycle) (также

жизненный цикл разработки программного обеспечения) — это процесс, в ходе

которого создается новая или изменяется старая система программного

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

обеспечение является конечным продуктом

процесса разработки системы. Процесс разработки системы состоит как из проектирования продукта

(дизайна), так и из изготовления продукта.

Цель процесса разработки системы — изготовить высококачественной продукт,

то есть программное обеспечение, который отвечает потребностям и ожиданиям

пользователей, может быть изготовлен к установленному

сроку и быть в пределах оговоренной стоимости, работает эффективно и результативно

в текущей и планируемой ИТ-инфраструктуре и не является дорогим в сопровождении и развертывании.


Что касается
программного обеспечения, ровно, как и любого другого продукта, его жизненный
цикл (процесс разработки) можно разделить на фазы. Наименования фаз и детализация разделения на фазы меняется в
зависимости от автора. Однако это не означает, что перечень основных действий
по разработке как-то отличается. Типичными частями жизненного цикла можно
считать: анализ (analüüs, analysis), проектирование / планирование (projekteerimine
/ kavandamine, design), реализация (teostus, implementation) и сопровождение (hooldus,
maintenance).


Исходя из этого, рассмотрим, какие виды деятельности содержат
перечисленные фазы разработки.


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


Пример функциональных требований: ученик желает посмотреть свои
оценки в привычной на текущий момент учебной
информационной системе (õpiinfosüsteem ÕIS).
Учителю нужно просматривать, добавлять, редактировать и удалять оценки обучаемых учеников (конечно, своего
предмета). На этом перечень требований ÕIS не исчерпывается. Здесь появляется
еще один факт, состоящий в том, что требования обычно связаны с ролями — у
разных пользователей системы имеются различные предпочтения и права. Нефункциональные
требования могут, например, включать в себя условие, такое, что система должна
работать непрерывно, и максимально
допустимая длина перерыва может равняться получасу.


Проектирование (планирование, projekteerimine / kavandamine) в соответствии с определением стандарта IEEE -
это «определение характеристик архитектуры системы или компонентов,
составляющих, интерфейсов и других частей». Англоязычное слово «дизайн» обозначает
как действие, так и продукт, полученный в
результате этого действия, на эстонском языке можно результат наименовать «kavand»
или «projekt». Планирование является
частью процесса разработки, в течение которой
анализируются требования, необходимые для создания внутренней структуры программного обеспечения.
Созданное описание, в свою очередь, является фундаментом для реализации. Проект
программного обеспечения должен описывать архитектуру системы, т.е. как система подразделяется
на части (компоненты), и каковы их
интерфейсы (возможности сопряжения с
другими компонентами). Компоненты должны быть описаны с такой точностью, которая
позволила бы начать их реализацию.


В классическом
жизненном цикле программного обеспечения в соответствии со стандартом ISO / IEC
12207 Software life cycle processes, часть проектирования
состоит из двух этапов:


  • архитектурное
    проектирование, в течение которого оговариваются так называемые компоненты высокого
    уровня, связи между наиболее крупными и
    общими частями программного обеспечения;

  • детальная
    разработка компонентов, в течение которого определяется их структура (процедуры, объекты, алгоритмы и
    т.д.).


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


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


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


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


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


Для сравнения, Ян Соммервилль (Ian Sommerville) в своей книге
«Software Engineering» («Разработка программного обеспечения»), обыгрывает
следующие виды деятельности процесса создания и эксплуатации программного
обеспечения. Размышляя над тем, что их сущность покрывает описания вышеприведенных фаз.


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


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


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


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

В жизненный цикл разработки

системы должны относиться все вышеописанные действия, но эти этапы не должны, безусловно,

быть описаны как линейное множество строк.

Stratus Политика жизненного цикла программных продуктов

I. Общие сведения

Настоящая политика жизненного цикла программных продуктов Stratus («Политика в отношении жизненного цикла программного обеспечения» или «Политика») предназначена для оказания помощи нашим партнерам и конечным пользователям («клиентам») в эффективном планировании, развертывании и поддержке программных продуктов Stratus , а также для более эффективного управления текущим использованием, уровнями поддержки и переходами в конце жизненного цикла критически важных систем, работающих с программными продуктами Stratus . Кроме того, наши клиенты могут использовать эту политику, чтобы понять, как Stratus может наилучшим образом помочь им на протяжении всего жизненного цикла поддержки наших программных продуктов, включая планирование и подготовку, необходимые при переходе между старыми и новыми платформами, программным обеспечением и услугами.

Stratus предоставляет поддержку и обслуживание в течение указанных периодов времени для выпусков наших программных продуктов. Жизненный цикл, связанный с программным продуктом Stratus , определяет различные уровни («Фазы») поддержки для каждого выпуска данного продукта в течение периода времени от даты первоначального выпуска — или общей доступности (GA) — до окончания этапа ограниченной поддержки.

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

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

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

Матрицы жизненного цикла программных продуктов (Северная и Южная Америка, ЕМЕА, Азиатско-Тихоокеанский регион)
Матрицы жизненного цикла программных продуктов (Япония)

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

Управление исправлениями
Обновления заплат по адресу Stratus , если и когда доступны, доставляются через загрузку программного обеспечения. Патчи могут выпускаться индивидуально по мере необходимости или включаться в выпуск технического обслуживания (например, выпуск 5.0.1, 5.0.2).

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

II. Stratus Фазы жизненного цикла программных продуктов

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

Фаза 1: Полная поддержка
Начальная дата: Фаза полной поддержки начинается с даты выхода большого или малого релиза GA и продолжается в течение 4 лет после этого.

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

  • Полная техническая поддержка с 24 x 7 x 365 дневными уровнями обслуживания
  • Доступ к Порталу клиентов и ресурсам самопомощи
  • Доступ ко всем исправлениям и консолидированным пакетам услуг
  • Предупреждения системы безопасности и обновления критических исправлений.

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

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

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

  • Техническая поддержка до 24×7, 365 дней в неделю.
  • Доступ к Порталу клиентов и ресурсам самопомощи
  • Доступ ко всем существующим патчам, обходным путям и консолидированным пакетам услуг.
  • Доступ ко всем существующим предупреждениям и обновлениям системы безопасности.

Фаза 3: Расширенная ограниченная поддержка (опция)
Дата начала: Stratus предлагает расширенную ограниченную поддержку в качестве дополнительного предложения. Extended Limited предоставляет вашей организации ценное дополнительное время, которое вам может понадобиться для планирования перехода на Stratus’ новейшее программное обеспечение. Для получения дополнительной информации обращайтесь по адресу Stratus .

Расширенная ограниченная поддержка включает в себя разумные усилия по анализу первопричин только критических и серьезных проблем. В течение продленного ограниченного периода не будет никаких «горячих» исправлений. Если доступно, Пользователи должны будут обновиться для получения горячих исправлений. Продленный ограниченный период будет предлагаться в премиум-классе, с ежегодным увеличением и ежегодным пересмотром. Stratus может в любое время прекратить предложение о продлении расширенной ограниченной поддержки.

Фазы жизненного цикла продукта

Право собственностиПолная поддержкаОграниченная поддержкаРасширенная ограниченная поддержка
Доступ к исправлениям или горячим исправлениямДа*НетНет
Доступ к обновлениямДаДаДа
Портал для клиентов и инструменты самопомощи ДаДаДа
Неограниченная техническая поддержка ДаДаДа

* В некоторых случаях может потребоваться обновление до более новой версии.

III. Определение терминов

  • Дата общей доступности (GA): Дата, когда Stratus объявляет о том, что программный продукт или услуга становятся общедоступными для приобретения.
  • Дата окончания срока годности (EOSL): Дата, когда Stratus объявляет о программном продукте или услуге, больше не поддерживается Stratus.
  • Восстановительный сбор: Восстановительный взнос за поддержку — это плата, которая применяется к любому клиенту, который решит возобновить истекший контракт поддержки Stratus . Эта плата добавляется к стоимости контракта поддержки Stratus . Восстановительная плата гарантирует, что все клиенты в равной степени участвуют в расходах на постоянное совершенствование всех программных продуктов Stratus .
  • Основной релиз (он же «Обновление версии»): «Мажорный выпуск», также известный как «Обновление», означает общедоступный выпуск Программного обеспечения, который содержит функциональные улучшения или расширения, обозначенные по адресу Stratus путем изменения цифры слева от первой десятичной точки (например, Программное обеспечение 5.0).
  • Минорное освобождение: «обозначенный Stratus путем изменения цифры справа от первой десятичной точки. Например, Программное обеспечение 5.0 (т.е. Большой выпуск) изменяется на Программное обеспечение 5.1 (т.е. Минорный выпуск).
  • Релиз технического обслуживания (он же «Релиз обновления»): «Релиз Сопровождения» или «Обновление» означает общедоступный релиз Программного обеспечения, который, как правило, предоставляет только исправления или исправления Сопровождения, обозначенные по адресу Stratus путем изменения цифры справа от второй десятичной запятой. Например, Программное обеспечение 5.0 (т.е. Основной выпуск) становится Программным обеспечением 5.0.1 (Релиз Сопровождения).

IV. Конвенция о нумерации релизов Резюме

  • Основная редакция = ПО 5.0, 6.0 и 7.0.
  • Незначительный выпуск = Программное обеспечение 5.1, 5.2 и 5.3.
  • Релиз сопровождения = Программное обеспечение 5.0.1, 5.0.2 и 5.0.3.

Информация, содержащаяся в настоящем документе, считается точной на дату публикации, однако обновления и изменения могут публиковаться периодически и без предварительного уведомления. STRATUS НЕ ПРЕДОСТАВЛЯЕТ НИКАКИХ ГАРАНТИЙ, СВЯЗАННЫХ С НАСТОЯЩЕЙ ИНФОРМАЦИЕЙ И СПЕЦИФИКЛИЧЕСКИМИ ОТРИЦАМИ, ВКЛЮЧАЯ, БЕЗ ОГРАНИЧЕНИЯ, ГАРАНТИЙНЫХ, НЕОТВЕРЖДЕННЫХ, СОВМЕСТНЫХ, НАСТОЯЩИХ И СПЕЦИАЛЬНЫХ УБЫТКОВ, В СООТВЕТСТВИИ С ИНФОРМАЦИЕЙ, ПРЕДОСТАВЛЯЮЩЕЙ ЗДЕСЬ.

Жизненный цикл программного обеспечения — Информатика, информационные технологии

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

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

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

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

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

Программу (по ГОСТ 19781–90) допускается идентифицировать и применять самостоятельно и (или) в составе других программ. Программы подразделяют на компоненты и комплексы. Компонент – это программа, рассматриваемая как единое целое, выполняющая законченную функцию и применяемая самостоятельно или в составе комплекса. Комплекс – это программа, состоящая из двух или более компонентов и (или) комплексов, выполняющих взаимосвязанные функции, и применяемая самостоятельно или в составе другого комплекса.

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

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

Процесс разработки программного обеспечения можно разбить на этапы (фазы), показанные на рис. 15.

Работа над программным обеспечением начинается с составления документа, называемого “Задание на разработку программного обеспечения (техническое задание)”.

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

Техническое задание

Техническое задание включает в себя три этапа: 1) обоснование необходимости разработки программы; 2) проведение научно-исследовательских работ; 3) разработка и утверждение технического задания.

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

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

Разработка и утверждение технического задания включает в себя:

определение требований к программе;

разработку технико-экономического обоснования разработки программы;

определение стадий, этапов и сроков разработки программы и документации на нее;

выбор языков программирования;

определение необходимости проведения научно-исследовательских работ на последующих стадиях;

согласование и утверждение технического задания.

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

Какими должны быть входные данные?

Какие данные являются корректными и какие ошибочными?

Кто будет использовать программное обеспечение, и каким должен быть интерфейс (средство общения с пользователем)?

Какие упрощения, предположения и допущения можно сделать по отношению к программам?

Какими должны быть выходные данные?

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

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

Проектирование

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

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

1) он имеет средства взаимодействия с внешней средой;

2) он является самостоятельной программной единицей, выполняющей определенные функции.

Частью интерфейса являются потоки данных. При описании их для каждого модуля необходимо дать ответы на следующие вопросы:

Какие данные можно передать в модуль до начала его выполнения?

Какие упрощения, предположения и допущения сделаны по отношению к модулю?

Что будет с данными после того, как модуль завершит свою работу?

На рис. 16 приведен пример описания модуля, используемого для сортировки целых чисел.

Рис. 16. Пример спецификации модуля

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

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

Рабочий проект

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

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

Кодирование должно быть простым. Должен соблюдаться так называемый KISS–принцип: Keep It Simple, Stupid (делай проще, глупец!). Изощренное программирование может обойтись слишком дорого при отладке и модификации программы. Необычное кодирование (например, использование скрытых возможностей машины) часто препятствует отладке программы и, конечно, затрудняет ее использование другими программистами.

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

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

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

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

Тестирование – это проверка программы на работоспособность. Отладка имеет место тогда, когда программа со всей очевидностью работает неправильно. Отладка начинается всегда в предвидении отказа программы. Если же оказывается, что программа работает верно, то она тестируется. Часто случается так, что после прогона тестов программа вновь должна быть подвергнута отладке. Таким образом, тестирование устанавливает факт наличия ошибки, а отладка выявляет ее причину.

Для несложного приложения тестирование может оказаться простым. Большие программы поддаются тестированию с трудом. Возможны устранения ошибок на этапе эксплуатации.

Можно привести примеры ошибок в программных комплексах, допущенных при разработке и не обнаруженных при тестировании [ 9 ].

В “Справочнике Microsoft Works” в интерактивной помощи пакета интегрированной обработки информации Works 2.0 функция ЕСЛИ описана как

ЕСЛИ (Условие, ЗначениеЛожь, ЗначениеИстина).

Однако, в действительности, работа данной функции должна иметь следующий вид: ЕСЛИ (Условие, ЗначениеИстина, ЗначениеЛожь). В “Руководстве пользователя Microsoft Works для Windows” пакета Works 3.0 эта ошибка исправлена.

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

Do 50 i = 12,525

На самом же деле он должен был выглядеть следующим образом:

Do 50 i = 12.525

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

В 1983 году произошло наводнение в юго–западной части США. Причина заключалась в том, что в компьютер были введены неверные данные о погоде, в результате чего он дал ошибочный сигнал шлюзам, перекрывающим реку Колорадо.

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

В процессе выполнения всех вышеописанных этапов накапливается определенный опыт, который даст основание для усовершенствования программы.

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

Внедрение

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

Примером добавления новых функций в программный комплекс является текстовый редактор Лексикон 1.3. Данная версия получена из текстового процессора 1.2 путем включения в него функций – импортирование графических файлов в формате PCX в текстовые файлы.

Документация

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

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

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

Техническое задание должно содержать следующие разделы:

введение;

основания для разработки;

назначение разработки;

требования к программе и программному изделию;

требования к программной документации;

технико-экономические показатели;

стадии и этапы разработки;

порядок контроля и приемки.

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

Спецификация является основным программным документом и составляется в соответствии с ГОСТ. Спецификация представляет собой таблицу, состоящую из граф: “Обозначение”, “Наименование”, “Примечание”. В графе “Обозначение” записывают обозначения перечисляемых документов и программ. В графе “Документация” указывают наименования и вид документа или программы. В графе “Примечание” – дополнительные сведения, относящиеся к записанным в спецификации программам.

Описание программы содержит:

– прокомментированные исходные тексты (листинги) модулей программы и управляющего модуля;

– схему разбиения программного комплекса на программные модули;

– схему потоков данных программного комплекса;

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

– планы и данные для тестирования программного комплекса;

– другие материалы, иллюстрирующие проект, например, схемы алгоритмов.

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

Что дальше?

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

Версия 6.0 Турбо Паскаля, выпущенная в 1990 году, наглядно продемонстрировала преимущества объектно–ориентированной технологии программирования. В комплект поставки новой версии вошла библиотека Turbo Vision, на которой многие тысячи программистов осваивали принципы ООП. За короткий срок появилось множество коммерческих программ, построенных на базе Turbo Vision. Эта библиотека поистине революционизирует процесс разработки интерактивных программ, сокращая до минимума сроки и обеспечивая высочайшее качество программ.

Эволюция технических средств персональных компьютеров привела к повсеместному вытеснению старой “доброй” ОС MS–DOS значительно более мощными системами Windows, программирование для которых существенно сложнее, чем программирование для MS–DOS. С выпуском системы Borland Pascal with Objects корпорация Borland предоставила в распоряжение программистов весьма эффективные средства разработки и отладки программ, рассчитанные на работу под управлением операционной оболочки Windows. Но все же несколько лет назад о создании своих собственных программ под Windows рядовому программисту оставалось только мечтать.

Дальнейшим развитием языка Паскаль является объектно-ориентированный язык Object Pascal, который лежит в основе новой системы программирования Delphi. Delphi – это система скоростной разработки приложений (Rapid Application Development). В этом новом мире RAD программисты используют инструменты, которые более наглядны и интуитивно понятны. Модульность, локализация, абстракция и сокрытие данных – свойства усовершенствованной объектной модели Object Pascal, которые позволяют создавать удобные, надежные и эффективные приложения для Windows при минимальной затрате времени.

Введение

Совершенствуя Turbo Pascal, фирма Borland разрабатывала новые версии пакета. Первоначально язык Паскаль был создан как язык для обучения программированию. Со временем в систему программирования были внесены дополнения, позволяющие создавать большие программные проекты, что сделало ее привлекательной для профессиональных программистов. Позже в Turbo Pascal появились средства, обеспечивающие поддержку концепции объектно-ориентированного программирования. Эволюция технических средств персональных компьютеров привела к повсеместному вытеснению OC MS-DOS значительно более мощными системами Windows, программирование для которых существенно сложнее, чем программирование для MS?DOS. С выпуском системы Borland Pascal with Objects корпорация Borland предоставила в распоряжение программистов весьма эффективные средства разработки и отладки программ, рассчитанные на работу под управлением операционной оболочки Windows. Наиболее распространенным инструментом разработки программ, ориентированных на работу в Windows, был С++ for Windows, явно предназначенный для профессионалов. В 1993 году фирма Microsoft выпустила первую визуальную среду программирования Visual Basic, и программирование для Windows стало проще, чем программирование для MS-DOS. Фирма Borland выпустила аналогичный продукт, который получил название Delphi.

Delphi – это среда разработки программ, ориентированных на работу в Windows. В основе идеологии Delphi лежит технология визуального проектирования и методология объектно-ориентированного программирования. Для представления программ в Delphi используется разработанный Borland язык Object Pascal, в основе которого лежит Turbo Pascal. Слово “Object” особо подчеркивает, что язык поддерживает концепцию объектно-ориентированного программирования.

Первая версия, Delphi 1, работала в среде Windows 3.1. После появления Windows 95 Borland выпустила сначала 16-разрядную версию, Delphi 2, затем, значительно более совершенную, 32-разрядную – Delphi 3 и ее дальнейшее развитие – Delphi 4.

В основе Delphi лежит концепция быстрого создания приложений (RAD – Rapid Application Development). Основной составляющей среды быстрого создания приложений является технология, получившая название Two Ways Tools. Это значит, что при размещении или изменении компонента в какой-либо форме, соответствующая программа автоматически дополняется и модифицируется. И наоборот, все изменения, которые вносятся в программу при разработке приложения, автоматически отражаются на функциональных свойствах компонентов формы.

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

Статьи к прочтению:

Видео 22.Жизненный цикл ПО.Этапы разработки ПО.Классическая модель разработки ПО

Похожие статьи:

Жизненный цикл разработки программного обеспечения: все о SDLC

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

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

Как работает SDLC?

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

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

Следующие этапы SDLC обеспечивают бесперебойный, эффективный и продуктивный процесс:

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

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

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

  1. Дизайн. Следующим этапом в жизненном цикле разработки программного обеспечения является разработка и ответ на вопрос «Как мы получим то, что мы хотим?».  Эта фаза определяет элементы системы, компоненты, уровень безопасности, модули, архитектуру, различные интерфейсы и типы данных, которыми оперирует система. Дизайн системы в общих чертах может быть сделан ручкой на листке бумаги — он определяет, как система будет выглядеть и как функционировать.  Как правило, в спецификации DDS — Design Document предлагается более одного подхода к проектированию архитектуры продукта.
  2. Разработка и развертывание. Теперь мы создаем ПО. Все фактическое кодирование выполняется на этом этапе SDLC. Это наименее сложный шаг, если все предыдущие шаги были выполнены тщательно. 

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

  1. Тестирование. Следующим этапом жизненного цикла разработки программного обеспечения является проверка того, «получили ли мы то, что хотим?». На этом этапе мы проверяем наличие дефектов и недостатков. Позже, после обнаружения, мы пытаемся решить все проблемы, пока продукт не будет соответствовать действующим спецификациям.
  2. Эксплуатация и интеграция. «Давайте начнем использовать то, что получили». Этот шаг включает в себя обратную связь от конечных пользователей. В зависимости от их обратной связи нужно сделать изменения и корректировки. Часто эта часть процесса SDLC сначала происходит ограниченным образом. Иногда в соответствии с требованиями продукт может быть выпущен на определенном рынке до окончательного запуска.
  3. Поддержка. Фазы жизненного цикла разработки программного обеспечения включают в себя еще один шаг, который заключается в поддержке. На этой фазе осуществляется периодическая техническая поддержка системы, чтобы убедиться, что система не устарела. Сюда входит замена старого оборудования и постоянная оценка производительности. Также здесь осуществляются апдейты определенных компонентов с целью удостовериться, что система отвечает нужным стандартам и новейшим технологиям, чтобы не быть подверженной текущим угрозам безопасности. 

Что такое SDLC? Понимание жизненного цикла разработки программного обеспечения — Stackify

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

  • Анализ требований
  • Планирование
  • Дизайн программного обеспечения, например архитектурный дизайн
  • Разработка программного обеспечения
  • Тестирование
  • Развертывание

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

Каков жизненный цикл разработки программного обеспечения?

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

SDLC включает шесть этапов, как объяснено во введении. Популярные модели SDLC включают модель водопада, спиральную модель и гибкую модель.

Итак, как работает жизненный цикл разработки программного обеспечения?

Как работает SDLC

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

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

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

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

Этапы и передовой опыт

Следование передовым методикам и / или этапам SDLC обеспечивает бесперебойную, эффективную и продуктивную работу процесса.

1. Определите текущие проблемы

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

2. План

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

Другими словами, команда должна определить осуществимость проекта и то, как они могут успешно реализовать проект с наименьшим риском.

3. Конструкция

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

4.Сборка

«Давайте создадим то, что мы хотим».

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

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

5. Кодовый тест

«Мы получили то, что хотели?» На этом этапе мы проверяем наличие дефектов и недостатков. Мы исправляем эти проблемы до тех пор, пока продукт не будет соответствовать исходным спецификациям.

Короче говоря, мы хотим проверить, соответствует ли код определенным требованиям.

Попробуйте бесплатный профилировщик кода Prefix от Stackify, чтобы писать лучший код на своей рабочей станции. Префикс работает с .NET, Java, PHP, Node.js, Ruby и Python.

6. Развертывание программного обеспечения

«Давайте начнем использовать то, что у нас есть.”

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

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

Дополнительно: обслуживание программного обеспечения

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

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

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

Подробнее: 3 причины, по которым использование APM смещается в сторону разработки и контроля качества

Примеры

Наиболее распространенные примеры SDLC или модели SDLC перечислены ниже.

Водопад Модель

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

Agile Модель

Модель Agile SDLC разделяет продукт на циклы и очень быстро предоставляет рабочий продукт. Эта методология производит последовательность выпусков. При тестировании каждого выпуска возвращается информация, которая будет включена в следующую версию. По словам Роберта Халфа, недостатком этой модели является то, что упор на взаимодействие с клиентами может в некоторых случаях привести проект в неверном направлении.

Итерационная модель

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

V-образная модель

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

Модель большого взрыва

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

Модель спирали

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

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

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

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

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

Об Александре Альтватер

  • Что делать с утечками памяти Java: инструменты, исправления и многое другое — 3 сентября 2021 г.
  • Что такое нагрузочное тестирование? Как это работает, инструменты, руководства и многое другое — 5 февраля 2021 г.
  • Americaneagle.com и ROC Commerce остаются впереди с Retrace — 25 сентября 2020 г.
  • Новые цены Stackify: все, что вам нужно знать — 9 сентября 2020 г.
  • ИННОВАТОРЫ ПРОТИВ COVID 19 Мэтт Уотсон, генеральный директор Stackify, советует предпринимателям сосредоточиться на вещах, которые делают их счастливыми, независимо от того, является ли работа огромным пожаром в мусорном контейнере — 2 сентября 2020 г.

Что такое SDLC? Этапы разработки программного обеспечения и модели

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

Каков жизненный цикл разработки программного обеспечения?

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

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

Как работает жизненный цикл разработки программного обеспечения

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

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

Семь этапов SDLC

1. Планирование

На этапе планирования руководители проекта оценивают сроки проекта. Это включает в себя расчет затрат на рабочую силу и материалы, создание расписания с целевыми целями, а также создание команд проекта и структуры руководства.

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

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

2. Определите требования

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

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

3. Дизайн и прототипирование

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

Архитектура — Определяет язык программирования, отраслевые практики, общий дизайн и использование любых шаблонов или шаблонов
Пользовательский интерфейс — Определяет способы взаимодействия клиентов с программным обеспечением и то, как программное обеспечение реагирует на ввод
Платформы — Определяет платформы, на которых будет работать программное обеспечение, такие как Apple, Android, версия Windows, Linux или даже игровые консоли
Программирование — Не только язык программирования, но и методы решения проблем и выполнения задач в приложении
Связь — Определяет методы, которыми приложение может взаимодействовать с другими активами, такими как центральный сервер или другие экземпляры приложения.
Безопасность — Определяет меры, принятые для защиты приложения, и может включать шифрование трафика SSL, защиту паролем и безопасное хранение учетных данных пользователя

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

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

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

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

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

Документация

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

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

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

6. Развертывание

На этапе развертывания приложение становится доступным для пользователей. Многие компании предпочитают автоматизировать этап развертывания. Это может быть просто платежный портал и ссылка для скачивания на сайте компании.Это также может быть загрузка приложения на смартфон.

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

7. Эксплуатация и техническое обслуживание

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

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

Объяснение моделей и методологий SDLC

Водопад

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

Проворный

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

Итеративная

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

DevOps

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

Прочтите наши подробности.

Другие модели

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

Лучшие практики разработки программного обеспечения

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

Система управления версиями

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

Приложения

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

Непрерывная интеграция

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

Системы управления SDLC

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

Заключение: процесс разработки программного обеспечения

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

Как и многие бизнес-процессы, SDLC направлен на анализ и улучшение процесса создания программного обеспечения. Он создает масштабируемое представление проекта, от повседневного кодирования до управления датами производства.

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

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

Каков жизненный цикл разработки программного обеспечения?

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

  • Сбор требований,
  • Разработка программного обеспечения,
  • Разработка программного обеспечения,
  • Тестирование и интеграция,
  • Развертывание,
  • Эксплуатация и обслуживание.

Остановимся на каждом этапе работы подробнее.

Фазы SDLC

Сбор требований

На этом этапе работы группа выявляет, собирает и определяет текущие проблемы, требования, запросы и ожидания клиентов, связанные с программным приложением или услугой.

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

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

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

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

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

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

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

Тестирование и интеграция

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

Развертывание

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

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

Эксплуатация и техническое обслуживание

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

Почему SDLC имеет значение для доставки программного обеспечения?

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

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

Наш отчет Continuous Delivery 2020 Insights показал, что инженерные группы тратят в среднем 109 000 долларов в год на развертывание и доставку своих программных приложений. Усилия по развертыванию в производственной среде приводят в среднем к 25 часам инженерных работ.

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

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

Понимание SDLC позволяет командам также улучшать производительность DevOps, которую можно измерить с помощью показателей DORA.

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

Ученые-информатики, специалисты по разработке программного обеспечения и руководители всегда стремились создавать более качественное программное обеспечение и быстрее.Со временем появилось несколько моделей (таких как водопад, спираль, Agile) для описания и представления процессов SDLC и управления уровнем сложности разработки по мере изменения спроса, инструментов, процессов и мышления.

Водопад Модель

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

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

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

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

Итеративная и инкрементная модель

В ответ на предполагаемые проблемы с водопадной моделью такие организации, как Министерство обороны США, опубликовали заявления, такие как MIL-STD-498, поощряющие «Итеративную и инкрементную разработку». Это привело к появлению термина, который сочетал бы как итеративное проектирование, так и паттерны инкрементной разработки.

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

Проект НАСА «Меркурий» 1960-х годов является примером раннего использования модели итеративного и инкрементального развития.Успех проекта позже привел к его дальнейшему внедрению, так как инженеры Project Mercury начали работать с другими командами и проектами.

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

Эволюция моделей процессов

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

Спиральная модель — это модель развития, основанная на рисках, которая побуждает проектные группы работать на основе уникальных проектных рисков, используя один или несколько элементов других методологий реализации. В 1990-х годах манифест Agile привел к принятию и популярности модели Agile и последующих методологий Agile.

Узнайте больше об истории и основах Agile (включая такие термины, как Scrum, XP и Kanban).

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

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

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

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

Загрузите бесплатную копию электронной книги Kubernetes прямо сейчас.

7 этапов жизненного цикла разработки системы

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

Что такое жизненный цикл разработки системы?

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

Жизненный цикл разработки системы Руководство США

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

7 этапов жизненного цикла разработки системы

Существует семь основных этапов жизненного цикла разработки современной системы. Вот краткая разбивка:

  • Этап планирования
  • Технико-экономическое обоснование или требования этапа анализа
  • Этап проектирования и прототипирования
  • Этап разработки программного обеспечения
  • Этап тестирования программного обеспечения
  • Внедрение и интеграция
  • Этап эксплуатации и обслуживания

Сейчас присмотритесь к каждому этапу индивидуально.

Стадия планирования

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

Стадия планирования (также называемая стадией технико-экономического обоснования) — это именно то, на что это похоже: стадия, на которой разработчики будут планировать предстоящий проект.

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

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

И помочь обеспечить финансирование и ресурсы, необходимые для реализации их плана.

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

Этап анализа

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

Разработчики могут:

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

Кроме того, разработчики часто создают спецификацию требований к программному обеспечению или документ SRS .

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

Стадия проектирования

Стадия проектирования является необходимой предшествующей стадией основной стадии разработки.

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

  • Пользовательские интерфейсы
  • Системные интерфейсы
  • Требования к сети и сети
  • Базы данных

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

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

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

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

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

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

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

Языки программирования могут включать такие базовые продукты, как C ++, PHP и другие.Разработчики выберут правильный программный код для использования в соответствии со спецификациями и требованиями проекта.

Этап тестирования

Создание программного обеспечения — это еще не конец.

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

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

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

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

Этап внедрения и интеграции

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

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

Стадия сопровождения

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

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

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

Роль системного аналитика

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

Системный аналитик должен быть:

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

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

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

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

6 Базовые методологии SDLC

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

Модель водопада

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

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

Итерационная модель

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

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

Модель спирали

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

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

V-модель

V-модель (сокращение от «верификация и валидация») очень похожа на модель водопада.Фаза тестирования включается в каждую стадию разработки, чтобы выявить потенциальные ошибки и дефекты.

Это невероятно дисциплинировано и требует четких сроков. Но теоретически он проливает свет на недостатки основной модели водопада, не позволяя более крупным ошибкам выйти из-под контроля.

Модель Big Bang

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

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

Agile Model

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

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

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

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

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

Четкое описание целей

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

Правильное тестирование перед установкой

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

Clear Stage Progression

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

Гибкость участников

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

Совершенство достижимо

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

Ни один участник не создает и не нарушает проект

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

Что нужно знать о жизненном цикле разработки системы

Где используется SDLC?

Жизненные циклы разработки системы обычно используются при разработке ИТ-проектов.

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

SDLC

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

Какая модель SDLC лучше?

Это во многом зависит от целей вашей команды и требований к ресурсам.

Большинство команд ИТ-разработки используют гибкую методологию для своих SDLC. Однако другие могут предпочесть итерационные или спиральные методологии.

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

Методологии DevOps также являются популярным выбором. И если вам когда-либо понадобится курс повышения квалификации по DevOps, не беспокойтесь, наша команда CloudDefense поможет вам!

Что разрабатывает SDLC?

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

Часто задаваемые вопросы

Какими были 5 исходных этапов жизненного цикла разработки системы?

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

Что такое 7 этапов SDLC?

Новые семь этапов SDLC включают планирование, анализ, проектирование, разработку, тестирование, внедрение и сопровождение.

Что такое жизненный цикл разработки системы в MIS?

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

Заключение

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

Что такое SDLC (жизненный цикл разработки программного обеспечения): Этапы и процесс

Что такое жизненный цикл разработки программного обеспечения (SDLC)? Изучите этапы, процесс и модели SDLC:

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

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

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

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

Соблюдение процесса SDLC ведет к систематической и дисциплинированной разработке программного обеспечения.

Назначение:

Целью SDLC является предоставление высококачественного продукта в соответствии с требованиями заказчика.

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

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

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

Цикл SDLC

SDLC Cycle представляет собой процесс разработки программного обеспечения.

Ниже приведено схематическое изображение цикла SDLC:

Фазы SDLC

Ниже представлены различные фазы:

  • Сбор и анализ требований
  • Проект
  • Реализация или кодирование
  • Тестирование
  • Развертывание
  • Техническое обслуживание

# 1) Сбор и анализ требований

На этом этапе от клиента собирается вся необходимая информация для разработки продукта в соответствии с их ожиданиями.Любые неясности должны быть разрешены только на этом этапе.

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

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

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

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

# 2) Дизайн

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

# 3) Реализация или кодирование

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

# 4) Тестирование

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

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

# 5) Развертывание

После тестирования продукта он развертывается в производственной среде или выполняется первое UAT (пользовательское приемочное тестирование), в зависимости от ожиданий клиента.

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

# 6) Техническое обслуживание

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

Модели жизненного цикла разработки программного обеспечения

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

# 1) Модель водопада

Модель

Waterfall — самая первая модель, которая используется в SDLC. Она также известна как линейная последовательная модель.

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

  • Во-первых, выполняется сбор и анализ требований.После того, как требование заморожено, можно начинать только проектирование системы. Здесь созданный документ SRS является выходом для фазы требований и действует как входные данные для проектирования системы.
  • В архитектуре и проектировании программного обеспечения для проектирования систем создаются документы, которые служат исходными данными для следующего этапа, т. Е. Реализации и кодирования.
  • На этапе внедрения выполняется кодирование, и разработанное программное обеспечение является исходными данными для следующего этапа, то есть тестирования.
  • На этапе тестирования разработанный код тщательно тестируется для выявления дефектов в программном обеспечении.Дефекты регистрируются в средстве отслеживания дефектов и повторно проверяются после исправления. Ведение журнала ошибок, повторное тестирование, регрессионное тестирование продолжается до тех пор, пока программное обеспечение не будет запущено.
  • На этапе развертывания разработанный код перемещается в производство после утверждения заказчиком.
  • Любые проблемы в производственной среде решаются разработчиками, находящимися на техническом обслуживании.

Преимущества водопада Модель:

  • Модель водопада — это простая модель, которую легко понять, в которой все этапы выполняются шаг за шагом.
  • Результаты каждой фазы четко определены, что не приводит к сложности и упрощает управление проектом.

Недостатки модели Waterfall:

    Модель водопада

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

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

# 2) V-образная модель

Модель

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

a) Этап проверки:

(i) Анализ требований:

На этом этапе собирается и анализируется вся необходимая информация.Действия по проверке включают рассмотрение требований.

(ii) Проектирование системы:

Как только требование становится ясным, разрабатывается система, т. Е. Архитектура, компоненты продукта создаются и документируются в проектном документе.

(iii) Дизайн высокого уровня:

Проект верхнего уровня определяет архитектуру / дизайн модулей. Он определяет функциональность между двумя модулями.

(iv) Проект нижнего уровня:

Низкоуровневый дизайн определяет архитектуру / дизайн отдельных компонентов.

(v) Кодировка:

На этом этапе выполняется разработка кода.

b) Этап валидации:

(i) Модульное тестирование:

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

(ii) Интеграционное тестирование:

Интеграционное тестирование выполняется с использованием тестовых примеров интеграции на этапе проектирования высокого уровня.Интеграционное тестирование — это тестирование интегрированных модулей. Выполняется тестировщиками.

(iii) Тестирование системы:

Тестирование системы выполняется на этапе проектирования системы. На этом этапе тестируется вся система, т. Е. Тестируется вся функциональность системы.

(iv) Приемочные испытания:

Приемочное тестирование связано с этапом анализа требований и проводится в среде заказчика.

Преимущества V — Модель:

  • Это простая и понятная модель.
  • Подход

  • V -model хорош для небольших проектов, в которых требования определены и зависают на ранней стадии.
  • Это систематическая и дисциплинированная модель, результатом которой является высококачественный продукт.

Недостатки V-модели:

  • V-образная модель не подходит для текущих проектов.
  • Изменение требований на более позднем этапе будет стоить слишком дорого.

# 3) Прототип модели

Модель прототипа — это модель, в которой прототип разработан до фактического программного обеспечения.

Модели

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

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

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

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

Преимущества прототипа модели:

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

Недостатки прототипа модели:

  • Поскольку заказчик участвует на каждом этапе, заказчик может изменить требования к конечному продукту, что увеличивает сложность объема работ и может увеличить время доставки продукта.

# 4) Модель спирали

Модель спирали включает итерационный подход и подход прототипа.

Фазы спиральной модели отслеживаются в итерациях. Циклы в модели представляют собой этап процесса SDLC, то есть самый внутренний цикл — это сбор и анализ требований, который следует за планированием, анализом рисков, разработкой и оценкой. Следующий цикл — проектирование, за которым следует реализация, а затем тестирование.

Модель спирали имеет четыре фазы:

  • Планирование
  • Анализ рисков
  • Инженерное дело
  • Оценка

(i) Планирование:

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

(ii) Анализ рисков:

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

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

(iii) Инженерное дело:

После завершения анализа рисков завершаются кодирование и тестирование.

(iv) Оценка:

Заказчик оценивает разработанную систему и планирует следующую итерацию.

Преимущества спиральной модели:

  • Анализ рисков широко проводится с использованием прототипов моделей.
  • Любое улучшение или изменение функциональности может быть выполнено в следующей итерации.

Недостатки спиральной модели:

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

# 5) Итеративная инкрементная модель

Итеративная инкрементная модель делит продукт на небольшие части.

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

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

Следовательно, продукт увеличивается с точки зрения функций, и после завершения итераций окончательная сборка сохраняет все функции продукта.

Фазы итеративной и инкрементной разработки Модель:

  • Начальная фаза
  • Этап разработки
  • Этап строительства
  • Переходная фаза

(i) Начальный этап:

Начальная фаза включает требования и объем проекта.

(ii) Этап разработки:

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

(iii) Этап строительства:

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

(iv) Переходный этап:

На этапе перехода продукт развертывается в производственной среде.

Преимущества итеративной и инкрементной модели:

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

Недостатки итеративной и инкрементной модели:

  • Полные требования и понимание продукта необходимы для постепенной разбивки и построения.

# 6) Модель большого взрыва

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

Модель большого взрыва

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

Преимущества модели Big Bang:

  • Это очень простая модель.
  • Меньше планирования и составления расписаний.
  • Разработчик может создавать собственное программное обеспечение.

Недостатки модели Big Bang:

  • Модели Big Bang нельзя использовать для крупных, текущих и сложных проектов.
  • Высокий риск и неопределенность.

# 7) Гибкая модель

Agile Model — это комбинация итеративной и инкрементной моделей. Эта модель больше ориентирована на гибкость при разработке продукта, чем на требования.

В Agile продукт разбивается на небольшие инкрементальные сборки. Он не разрабатывается как полный продукт за один раз. Каждая сборка увеличивается с точки зрения функций. Следующая сборка основана на предыдущей функциональности.

В Agile итерации называются спринтами. Каждый спринт длится 2-4 недели. В конце каждого спринта product owner проверяет продукт, и после его утверждения он доставляется заказчику.

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

Преимущества гибкой модели:

  • Это дает больше гибкости для адаптации к изменениям.
  • Новую функцию можно легко добавить.
  • Удовлетворенность клиентов, отзывы и предложения принимаются на каждом этапе.

Недостатки:

  • Отсутствие документации.
  • Agile нужны опытные и высококвалифицированные ресурсы.
  • Если заказчик не понимает, каким именно должен быть продукт, то проект потерпит неудачу.

Заключение

Соблюдение подходящего жизненного цикла очень важно для успешного завершения проекта. Это, в свою очередь, упрощает управление.

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

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

Модель

Waterfall является базовой моделью, и все другие модели SDLC основаны только на ней.

Надеюсь, вы получили обширные знания о SDLC.

Что такое жизненный цикл разработки программного обеспечения (SDLC) и как он работает?

Каковы этапы / фазы SDLC?

Этап планирования

Этап планирования охватывает все аспекты управления проектами и продуктами.Обычно это включает распределение ресурсов, планирование мощности, планирование проекта, оценку стоимости и предоставление.

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

Ожидания также четко определены на этом этапе; команда определяет не только то, что желательно в программном обеспечении, но и то, что НЕЛЬЗЯ. Материальные результаты, полученные на этом этапе, включают планы проекта, предполагаемые затраты, прогнозируемые графики и потребности в закупках.

Фаза кодирования

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

Этап строительства

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

Этап тестирования

Этап предполагает оценку созданного программного обеспечения. Группа тестирования оценивает разработанные продукты, чтобы определить, соответствуют ли они требованиям, указанным на этапе «планирования».

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

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

Фаза выпуска

Этап выпуска включает групповую упаковку, управление и развертывание выпусков в различных средах.

Этап развертывания

На этапе развертывания программное обеспечение официально вводится в производственную среду.

Фаза эксплуатации

Этап эксплуатации предполагает использование программного обеспечения в производственной среде.

Фаза монитора

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

ШЕСТЬ базовых шагов разработки программного обеспечения от KitoTech

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

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

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

Итак, где же начинается разработка? Каковы различные процессы разработки? А как узнать, что процесс разработки завершен? Без лишних слов, процесс разработки программного обеспечения:

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

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

Планировка

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

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

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

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

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

Системный анализ

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

Начиная процесс системного анализа, важно помнить:

  • Шаг 2 — это дальнейшее детальное описание вышеуказанного шага: будет определена вся программная система, включая план каждой фазы разработки программного обеспечения.
  • Этот «объем работ» разбивает проект на более мелкие части, чтобы упростить определение задач на каждом этапе и обеспечить правильное управление всеми ними, чтобы ничто не проскальзывало.
  • При таком большом количестве вовлеченных сторон — разработчиков, тестировщиков, дизайнеров, сотрудников-заказчиков, менеджеров проектов, тестировщиков и т. Д. — легко понять, почему даже те, кто работает над проектом на более поздних стадиях, сочтут такое распределение ответственности полезным.

Системное проектирование

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

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

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

Кодирование / Разработка

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

На этапе разработки и кодирования помните:

  • С установленным программным обеспечением каркаса программисты могут погрузиться в самые мелкие детали. Это основная часть проекта; где заложено сердце программного обеспечения! Другими словами, именно здесь идеи, изложенные в первых трех шагах, становятся реальностью, поскольку команда программистов воплощает их в жизнь.
  • Задачи кодирования распределяются в соответствии с делегированными объемами работы, созданными на шагах 1 и 2 в процессе, называемом «распределение задач».Такое разделение труда гарантирует, что все программисты знают, за какие области кода они несут ответственность, что позволяет максимально повысить эффективность.

Тестирование

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

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

Внедрение (запуск и поддержка)

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

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

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

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

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

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

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