Понятие жизненного цикла программного продукта
Появление понятияжизненного цикла (ЖЦ) программного продукта (ПП) было связано с кризисом программирования, которыйпроизошел в конце 60-х – начале 70-х годов ХХ в. В результате чего программные проекты все чаще стали выходитьиз-под контроля: нарушались сроки, превышались запланированныеобъемы финансирования, результаты не соответствовали требуемым.Многие проекты вообще не доводились до завершения. Ситуациябыла вызвана ростом сложности проектов. Необходимо было принимать меры для радикального усовершенствования принципов иметодов разработки ПОс учетом его развития и сопровождения. Заговорили о том, что надо обратиться к опыту промышленного проектирования и производства, где были накоплены практическиенавыки успешной разработки не менее сложных проектов.
Методологическую основу промышленной инженерии составляетпонятие жизненного цикла изделия (продукта) как совокупности всехдействий, которые надо выполнить на протяжении всей «жизниизделия».
Каждая программная система (ПС) на протяжении своего существования проходит определенную последовательность процессов(этапов), начиная от постановки задачи до ее воплощения в готовуюпрограмму, а затем через эксплуатацию и, наконец, изъятие. Такаяпоследовательность этапов называется жизненным циклом (ЖЦ) разработки ПС. На каждом этапе ЖЦ выполняется некоторая совокупность процессов и/или подпроцессов, каждый из которых порождает соответствующий промежуточный продукт, используя результаты предыдущего.
Организация промышленного производства с позиции жизненного цикла позволяет рассматривать все его этапы во взаимосвязи, что ведет к сокращению сроков, стоимости и трудозатрат.
Впервые о жизненном цикле ПО заговорили в 1968 г. в Лондоне, где состоялась встреча 22 руководителей проектов по разработке ПО.
На встрече анализировались проблемы и перспективы проектирования, разработки, распространения и поддержки программ. Применяющиеся принципы и методы разработки ПО требовали постоянного усовершенствования. Именно на этой встрече была предложена концепция жизненного цикла ПО (SLC – Software Lifetime Cycle), как последовательности шагов-стадий, которые необходимо выполнить в процессе создания и эксплуатации ПО.
В 1970 г. У. У. Ройс (W. W. Royce) произвел идентификацию нескольких стадий в типичном цикле и было высказано предположение, что контроль выполнения стадий приведет к повышению качестваПО и сокращению стоимости разработки.
Все продукты процессов программной инженерии представляютсобой некоторые описания, а именно тексты требований к разработке, согласования договоренностей с заказчиком, описания архитектуры и структуры данных, тексты программ, документацию, инструкции по эксплуатации и т. П.
Главнымиресурсами разработки ПС в программной инженерииявляются сроки, время и стоимость. Правильное использование этихресурсов на процессах ЖЦ определяет эффективность этой разработки.
Существует общее соглашение о выделениичетырех обобщенныхфаз жизненного цикла (в скобках приведены используемые в различных источниках альтернативные термины:
1) концепция (инициация, идентификация, отбор);
2) определение (анализ);
3) выполнение (практическая реализация или внедрение, производство и развертывание, проектирование или конструирование, сдача в эксплуатацию, инсталляция, тестирование и т. п.);
4) закрытие (завершение, включая оценивание после завершения.
Однако эти фазы столь широко определены, что необходимыболее конкретные определения, может быть выделение пяти – десяти основных фаз для каждой категории и подкатегории проектавозможно с выделением внутри каждой фазы нескольких подфаз.
В общем случае жизненный цикл определяется моделью и описывается в форме методологии (метода).
Модель (парадигма) жизненного цикла обусловливает концептуальный взгляд на его организацию и основные фазы, а также принципы перехода междуними.
Методология (метод) жизненного цикла задает комплекс работ, их детальное содержание и ролевую ответственность специалистовна всех этапах выбранной модели ЖЦ, обычно определяет и самумодель, а также рекомендует практики (best practices), позволяющиемаксимально эффективно воспользоваться соответствующей методологией и ее моделью.
В индустрии ПО можно (так как это уже конкретная область приложения концепций и практик проектного управления) и необходимо (для обеспечения возможности управления) четко разграничиватьфазы проекта (что не подразумевает их линейного и последовательного выполнения.
В определенном контексте слова «модель» и «методология» могутиспользоваться взаимозаменяемым образом, например при обсуждении разграничения фаз проекта. Говоря «жизненный цикл» мычаще всего подразумеваем «модель жизненного цикла». Несмотря наданное в стандартах определение модели жизненного цикла, все жепри употреблении слова «модель» чаще всего подразумевается именно общий принцип организации ЖЦ, чем детализация соответствующих работ. Соответственно, при определении и выборе моделив первую очередь приходится решать вопросы определенности истабильности требований, жесткости и детализированности планаработ, а также частоты сборки работающих версий создаваемой программной системы.