Л Е К Ц И Й по дисциплине ВВЕДЕНИЕ
В ПРОГРАММНУЮ ИНЖЕНЕРИЮ для студентов направления 231000.62 «Программная инженерия»Лекция 2.2
Модели жизненного цикла ПО
Лекция 2.2
Модели жизненного цикла ПО
Все стадии основаны на специальных технологиях. Например, на стадии Разработки могут использоваться модульная, структурная, объектно-ориентированная или компонентная технологии программирования.
Каждая организация может организовать процесс создания ПО так, как ей это представляется разумным, этот процесс может иметь разную степень формализации. Так, например, возможен подход "вечером обсудили и обо всем договорились", но этот принцип работает только для команд из 2-3 человек в достаточно простых проектах.
Возможна другая крайность - каждое действие жестко определено и прописано в описании процесса. В этом случае возникает необходимость длительного предварительного обучения сотрудников работе в рамках этого, безусловно, сложного описания. Подобный подход может бать рекомендован для очень больших проектов, выполняемых распределенными коллективами.
Несмотря на естественные отличия в описаниях процессов, как правило, в нем присутствуют все рассмотренные выше стадии.
Существуют известные, хорошо проработанные процессы и технологии: Microsoft Solutions Framework (MSF), Rational Unified Process (RUP), eXtreme Programming (XP) - и другие.
Анализ и формирование требований. Путем консультаций с заказчиком ПО определяются функциональные возможности, ограничения и цели создаваемой программной системы.
Проектирование системы и программного обеспечения. Процесс проектирования системы разбивает системные требования на требования, предъявляемые к аппаратным средствам, и требования к программному обеспечению системы. Разрабатывается общая архитектура системы. Проектирование ПО предполагает определение и описание основных программных компонентов и их взаимосвязей.
Кодирование и тестирование программных модулей. На этой стадии архитектура ПО реализуется в виде множества программ или программных модулей. Тестирование каждого модуля включает проверку его соответствия требованиям к данному модулю.
Сборка и тестирование системы. Отдельные программы и программные модули интегрируются и тестируются в виде целостной системы. Проверяется, соответствует ли система своей спецификации.
Эксплуатация и сопровождение системы. Обычно (хотя и не всегда) это самая длительная фаза жизненного цикла ПО. Система инсталлируется, и начинается период ее эксплуатации. Сопровождение системы включает исправление ошибок, которые не были обнаружены на более ранних этапах жизненного цикла, совершенствование системных компонентов и "подгонку" функциональных возможностей системы к новым требованиям.
Требования к системе определяются на начальном этапе и далее не меняются.
Каждый этап может начаться лишь тогда, когда закончился (будет утвержден и документирован) предыдущий.
Достоинства каскадной модели в простоте и хорошей структурированности.
Основные недостатки связаны с прямолинейностью и отсутствием гибкости. Дело в том, что неизменность требований является мифом. Требования менялись, меняются и будут меняться всегда в ходе разработки, а каскадная модель не учитывает этот факт.
К недостаткам каскадной модели можно отнести негибкое разбиение процесса создания ПО на отдельные фиксированные этапы. В этой модели определяющие систему решения принимаются на ранних этапах и затем их трудно отменить или изменить, особенно это относится к формированию системных требований.
Каскадная модель применяется тогда, когда требования формализованы достаточно четко и корректно. Вместе с тем каскадная модель хорошо отражает практику создания ПО. Технологии создания ПО, основанные на данной модели, используются повсеместно, в частности для разработки систем, входящих в состав больших инженерных проектов.
Эта модель может считаться разновидностью каскадной модели, но построена на основе формальных математических преобразований системной спецификации в исполняемую программу.
Существенные отличия от каскадной модели:
Здесь спецификация системных требований имеет вид детализированной формальной спецификации, записанной с помощью специальной математической нотации.
Процессы проектирования, кодирования и тестирования программных модулей заменяются процессом, в котором формальная спецификация путем последовательных формальных преобразований трансформируется в исполняемую программу.
В процессе преобразования формальное математическое представление системы последовательно трансформируется в программный код, постепенно все более детализированный. Преобразования выполняются математически корректно и проверка соответствия спецификации и программы не требуется.
Наиболее известным примером метода формальных преобразований является метод "чистой комнаты" (Cleanroom), разработанный компанией IBM. Этот метод предполагает пошаговую разработку ПО, когда на каждом шаге применяется формальные преобразования, что позволяет отказаться от тестирования отдельных программных модулей, а тестирование всей системы происходит после ее сборки.
Методы формальных преобразований не нашли широкого применения - основная причина заключается в том, что функционирование большинства систем с трудом поддается описанию методом формальных спецификаций.
Методы формальных преобразований обычно применяют для разработки систем, которые должны удовлетворять строгим требованиям надежности, безотказности и безопасности, так как они гарантируют соответствие созданных систем их спецификациям.
Разрабатывается первоначальная версия программного продукта, которая передается на испытание пользователям, затем она дорабатывается с учетом мнения пользователей.
Полученная промежуточная версия продукта также передается для испытаний пользователям, затем снова дорабатывается и так несколько раз, пока не будет получен необходимый программный продукт.
Отличительной чертой данной модели является то, что процессы специфицирования, разработки и аттестации ПО выполняются параллельно при постоянном обмене информацией между ними.
Модель пошаговой разработки относится к категории гибридных итерационных моделей, позволяющих выполнять процессы создания ПО итерационно, когда в ответ на изменения требований повторно выполняются определенные этапы разработки (чаще всего на стадиях проектирования и кодирования).
Существенным отличием итерационных моделей является то, что здесь процесс разработки спецификации протекает параллельно с разработкой самой программной системы.
Модель пошаговой разработки содержит элементы каскадной и эволюционной моделей и была предложена как попытка уменьшить количество повторно выполняемых работ в процессе создания ПО и увеличить для заказчика временной период окончательного принятия решения обо всех деталях требований.
Определяются (в общих чертах) те сервисы (функциональные возможности), которые должны присутствовать у создаваемой системы, и устанавливаются их приоритеты.
Определяется количество и последовательность выполнения шагов разработки, причем на каждом шаге должен быть получен компонент, реализующий определенное подмножество сервисов. Распределение реализации системных сервисов по шагам разработки определяется их приоритетностью.
На первых шагах детализируются требования к компонентам, реализующих сервисы высших приоритетов, и выбираются средства их реализации.
В ходе их реализации (на последующих шагах) анализируются и детализируются требования для компонентов, которые будут разрабатываться на более поздних шагах, причем изменение требований для тех компонентов, которые уже находятся в процессе разработки, не допускается.
По завершении очередного шага разработки полученный компонент интегрируется с ранее произведенными компонентами; таким образом, после каждого шага разработки система приобретает все большую функциональную завершенность..
Заказчик может экспериментировать с готовыми подсистемами и компонентами для того, чтобы уточнить требования, предъявляемые к следующим версиям уже готовых компонентов или к компонентам, разрабатываемым на последующих шагах.
Спиральная модель также относится к категории гибридных итерационных моделей, однако, в отличие от рассмотренных ранее моделей, где процесс создания ПО представлен в виде последовательности отдельных процессов с возможной обратной связью между ними, здесь процесс разработки представлен в виде спирали.
Каждый виток спирали соответствует одной стадии (итерации) процесса создания ПО: самый внутренний виток соответствует стадии принятия решения о создании ПО, на следующем витке определяются системные требования, далее следует стадия (виток спирали) проектирования системы и т.д.
В спиральной модели нет фиксированных этапов на каждом ее витке.
Спиральная модель может включать в себя любые другие модели разработки систем. Например, на одном витке спирали может использоваться протипирование для более четкого определения требований (и, следовательно, для уменьшения соответствующих рисков), но на следующем витке может применяться каскадная модель или метод формальных преобразований (если требования четко сформулированы).
Каждый виток спирали разбит на четыре сектора:
Сектор 1. Определение целей. Определяются цели каждой итерации проекта. Кроме того, устанавливаются ограничения на процесс создания ПО и на сам программный продукт, уточняются планы производства компонентов. Определяются проектные риски (например, риск превышения сроков или риск превышения стоимости проекта) и планируются альтернативные стратегии разработки ПО.
Сектор 2. Оценка и разрешение рисков. Для каждого определенного проектного риска проводится его детальный анализ. Планируются мероприятия для уменьшения (разрешения) рисков. Например, если существует риск, что системные требования определены неверно, планируется разработать прототип системы.
Сектор 3. Разработка и тестирование. После оценки рисков выбирается модель процесса создания системы. Например, если доминируют риски, связанные с разработкой интерфейсов, наиболее подходящей будет эволюционная модель разработки ПО с прототипированием. Если основные риски связаны с соответствием системы её спецификациям, скорее всего, следует применить модель формальных преобразований. Каскадная модель может быть применена в том случае, если основные риски определены как ошибки, которые могут проявиться на этапе сборки системы.
Сектор 4. Планирование. Здесь пересматривается проект и принимается решение о том, начинать ли следующий виток спирали. Если принимается решение о продолжении проекта, разрабатывается план на следующую стадию проекта.
Первая итерация создания ПО в спиральной модели начинается с тщательной проработки системных показателей (целей системы), таких как эксплуатационные показатели и функциональные возможности системы. Конечно, альтернативных путей достижения этих показателей или целей можно сформировать бесконечно много. Но каждая альтернатива должна оценивать стоимость достижения каждой сформулированной цели.
Результаты анализа возможных альтернатив служат источником оценки проектного риска. Это происходит на следующей стадии спиральной модели, где для оценки рисков используются более детальный анализ альтернатив, прототипирование, имитационное моделирование и т.п. С учетом полученных оценок рисков выбирается тот или иной подход к разработке системных компонентов, далее он реализуется, затем осуществляется планирование следующего этапа процесса создания ПО.
Существенное отличие спиральной модели от других моделей процесса создания ПО заключается в точном определении и оценивании рисков. Например, если при написании программного кода используется новый язык программирования, то риск может заключаться в том, что компилятор этого языка может быть ненадежным или что результирующий код может быть не достаточно эффективным. Риски могут также заключаться в превышении сроков или стоимости проекта.
Уменьшение (разрешение) рисков – важный элемент управления системным проектом. Возможные риски и способы их разрешения рассматриваются более детально в отдельной дисциплине «Управление программными проектами».
Если не удалось найти и скачать доклад-презентацию, Вы можете заказать его на нашем сайте. Мы постараемся найти нужный Вам материал и отправим по электронной почте. Не стесняйтесь обращаться к нам, если у вас возникли вопросы или пожелания:
Email: Нажмите что бы посмотреть