9-software_engineering_tools_and_methods (1133549), страница 3
Текст из файла (страница 3)
В то же время, деятельность по сопровождению и поддержке, вчастности, касающаяся сбоев и исправления обнаруженных ошибок в программном обеспечении,требует, в определенной степени, отнесения к этой теме и средств конфигурационногоуправления, рассматриваемых ниже (например, в части обработки запросов на изменения).1.6 Инструменты конфигурационного управления (Software Configuration Management Tools)Инструменты конфигурационного управления делятся на три категории:Инструменты отслеживания (tracking) дефектов, расширений и проблем.Инструменты управления версиями.Инструменты сборки и выпуска.
Эти инструменты предназначены для управлениязадачами сборки и выпуска продуктов, а также включают средства инсталляции.Copyright © Сергей Орлик, 2004-2010.http://swebok.sorlik.ru6Основы программной инженерии (по SWEBOK)Программная инженерия. Инструменты и методы программной инженерии.Дополнительная информация по данной теме представлена в области знаний SWEBOK“Конфигурационное управление”.1.7 Инструменты управления инженерной деятельностью (Software Engineering ManagementTools)Средства управления деятельностью по программной инженерии делятся на три категории:Инструменты планирования и отслеживания проектов.
Эти средства используютсякалендарного планирования работ, количественной оценки усилий и стоимостныхожиданий, связанных с проектами.Инструменты управления рисками. Эти средства используются для идентификации, оценкиожиданий и мониторинга рисков.Инструменты количественной оценки. Эти инструменты ведения измерений помогают ввыполнении работ, связанных с программой количественной оценки, проводимой вотношении проектов программного обеспечения.Функциональные аспекты управления инженерной деятельностью достаточно детальнопредставлены в области знаний SWEBOK “Управление программной инженерией” (SoftwareEngineering Management).1.8 Инструменты поддержки процессов (Software Engineering Process Tools)В описании этой темы в текущей версии SWEBOK наблюдается противоречие между краткимделением на категории инструментов и их более детальным определением.
Скорее всего, такаянесогласованность связана, в первую очередь, с отсутствием достигнутого консенсуса в этойобласти. Базируясь на обеих классификациях, упомянутых в SWEBOK, хотелость бы отметитьнесколько типов инструментов из “смежных” областей, имеющих особое значение в поддержкепроцессов программной инженерии:Инструменты моделирования, позволяющие, в частности, описать и модель процессов, кактаковую.Инструменты управления проектами.Инструменты конфигурационного управления, поддерживающие работу с актуальнымиверсиями всего комплекса артефактов проекта и, что не менее важно, позволяющиезадать поведенческие характеристики (в упрощенном понимании - workflow) и атрибутыэтих артефактов в форме элементов конфигураций.Ролевые платформы разработки программного обеспечения, охватывающие все стадиижизненного цикла и, на сегодняшний день, являющиеся развитием интегрированныхсредств разработки и CASE-инструментов в направлении поддержки “смежной”функциональности – управления требованиями, работ по конфигурационному управлениюс поддержкой управления изменениями, тестирования и оценки качества.Первые три вида инструментов в такой классификации позволяют описать применяемые процессыпрограммной инженерии.
Четвертый класс – “супер-интегрированные среды разработки”,называемые сегодня ролевыми платформами разработки, обеспечивают поддержку заданныхпроцессов, описанных, например, в виде соответствующих правил на уровне глубокоинтегрированных в такие среды инструментов конфигурационного управления.1.9 Инструменты обеспечения качества (Software Quality Tools)Средства обеспечения качества делятся на две категории:Copyright © Сергей Орлик, 2004-2010.http://swebok.sorlik.ru7Основы программной инженерии (по SWEBOK)Программная инженерия. Инструменты и методы программной инженерии.Инструменты инспектирования. Эти средства используются для поддержки обзора (review)и аудита.Инструменты (статического) анализа. Эти средства используются для анализапрограммных артефактов, данных, потоков работ и зависимостей. Такие инструментыпредназначены для проверки определенных свойств или артефактов, в целом, насоответствие <заданным характеристикам>.1.10 Дополнительные аспекты инструментального обеспечения (Miscellaneous Tool Issues)Эта тема охватывает вопросы, касающиеся всех классов инструментов.
Создателями SWEBOKидентифицированы три категории таких аспектов:Техники интеграции инструментов. Эти техники важны для естественного использованиясочетания различных инструментов. Типичные виды интеграции инструментов включаютплатформы, представление, процессы, данные и управление.Мета-инструменты. Такие средства генерируют другие инструменты. Например,классическим примером мета-инструмента является компилятор компиляторов.Оценка инструментов. Данная тема представляется достаточно важной в силу постояннойэволюции инструментов программной инженерии.2. Методы программной инженерии (Software Engineering Methods)Данная секция (подобласть) разделена на три темы: эвристические методы (heuristic methods),касающиеся неформализованных подходов; формальные методы (formal methods), обоснованныематематически; методы прототипирования (prototyping methods), базирующиеся на различныхформах прототипирования.
Эти три темы не являются изолированными <друг от друга>, скорееони выделены исходя из их значимости и на основе определенных достаточно явныхиндивидуальных особенностей. Например, объектно-ориентированный подход может включатьформальные техники и использовать прототипирование для проверки и аттестации. Так же как иинструменты, методы программной инженерии постоянно эволюционируют. Именно поэтому, вописании данной области знаний авторы SWEBOK постарались избежать, насколько этовозможно, упоминания любых конкретных методологий.2.1 Эвристические методы (Heuristic Methods)Эта тема содержит четыре категории методов: структурные, ориентированные на данные,объектно-ориентированные и ориентированные на область применения.Структурные методы (structured methods).
При таком подходе системы строится сфункциональной точки зрения, начиная с высокоуровневого понимания поведения системыс постепенным уточнением низко-уровневых деталей. (такой подход, иногда, такженазывают “проектированием сверху-вниз”)Методы, ориентированные на данные (data-oriented methods). Отправной точкой такогоподхода являются структуры данных, которыми манипулирует создаваемое программноеобеспечение.
Функции в этом случае являются вторичными.Объектно-ориентированные методы (object-oriented methods). Система при таком подходерассматривается как коллекция объектов, а не функций.Методы, ориентированные на конкретную область применения (domain-specific methods).Такие специализированные методы разрабатываются с учетом специфики решаемыхзадач, например, систем реального времени, безопасности <жизнедеятельности> (safety) изащищенности <от несанкционированного доступа> (security).2.2 Формальные методы (Formal Methods)Copyright © Сергей Орлик, 2004-2010.http://swebok.sorlik.ru8Основы программной инженерии (по SWEBOK)Программная инженерия.
Инструменты и методы программной инженерии.Эта тема касается математических (строгих) методов программной инженерии.К сожалению, SWEBOK не дает здесь какого-либо определения формальных методов, поэтому,хотелось бы привести в данном контексте характеристику, данную им одним из классиковпрограммной инженерии – Ианом Соммервиллем [Соммервилл, 2002, стр.
188]: “Терминформальные методы подразумевает ряд операций, в состав которых входит созданиеформальной спецификации системы, анализ и доказательство спецификаций, реализациясистемы на основе преобразования формальной спецификации в программы и верификацияпрограмм. Все эти действия зависят от формальной спецификации программного обеспечения.Формальная спецификация – это системная спецификация, записанная на языке, словарь,синтаксис и семантика которого определены формально. Необходимость формальногоопределения языка предполагает, что этот язык основывается на математических концепциях.Здесь используется область математики, которая называется дискретной математикой иосновывается на алгебре, теории множеств и алгебре логики.”Эти методы можно классифицировать в виде следующих категорий:Языки и нотации специфицирования (specification languages and notations).
Языкиспецификаций могут быть ориентированы на модель, свойства и поведение. По мнениюавтора, ярким примером такого рода методов являются формальные методы описаниятребований, интерес к которым периодически возникает на протяжении всей историипрограммной инженерии.Уточнение (refinement). Данные подходы связаны с уточнением (трансформацией)превращения спецификаций в конечный результат, максимально близкий желаемому. Вкачестве результата применения таких методов рассматривается конечный - исполнимыйпрограммный продукт.Подтверждение/доказательство (verification/proving properties).
Этот подход основываетсяна строгом доказательстве точности <любых> характеристик <исходных предпосылок иполучаемого продукта> с использованием теорем и проверки точности моделей.История программной инженерии показала, что в области разработки прикладных систем,обоснованность (в частности, в силу трудоемкости) применения формальных методов неподтверждается на практике, за исключением случаев “скрытого” (неявного для разработчиков)применения определенных формальных методов на уровне внутренней реализации конкретныхинструментов программной инженерии, например, в средствах моделирования и проектирования.Иан Соммервилл дает такую характеристику формальным методам [Соммервилл, 2002, стр.