Книжная полка Сохранить
Размер шрифта:
А
А
А
|  Шрифт:
Arial
Times
|  Интервал:
Стандартный
Средний
Большой
|  Цвет сайта:
Ц
Ц
Ц
Ц
Ц

Введение в программную инженерию

Покупка
Основная коллекция
Артикул: 656041.08.01
Доступ онлайн
от 404 ₽
В корзину
Учебник представляет собой введение в программную инженерию, охватывает все основные области знания, связанные с этим направлением. Рассматриваются задачи, стоящие перед программным инженером, излагаются этапы и виды работ, связанные с созданием программного продукта и его дальнейшим сопровождением: сбор и управление требованиями, управление проектом (финансами, процессами, ресурсами), проектирование, конструирование, тестирование, поддержка и эксплуатация; описываются различные модели жизненного цикла программного продукта; раскрывается понятие качества программ; описываются инструменты, поддерживающие те или иные виды работ в рамках всего жизненного цикла программного продукта. При изложении особое внимание уделяется стандартам, которым должны отвечать как рассматриваемые работы, так и их результаты. Для студентов учреждений высшего образования.
Введение в программную инженерию : учебник / В.А. Антипов, А.А. Бубнов, А.Н. Пылькин, В.К. Столчнев. — Москва : КУРС : ИНФРА-М, 2025. — 336 с. - ISBN 978-5-906923-22-6. - Текст : электронный. - URL: https://znanium.ru/catalog/product/2173919 (дата обращения: 21.11.2024). – Режим доступа: по подписке.
Фрагмент текстового слоя документа размещен для индексирующих роботов
В.А. АНТИПОВ
А.А. БУБНОВ
А.Н. ПЫЛЬКИН
В.К. СТОЛЧНЕВ
ВВЕДЕНИЕ 
В ПРОГРАММНУЮ 
ИНЖЕНЕРИЮ
УЧЕБНИК
Рекомендовано
Научно-методическим советом «РГРТУ» в качестве учебника 
для студентов высших учебных заведений, обучающихся 
по направлению подготовки 2.09.03.04 
«Программная инженерия» (квалификация «бакалавр»)
Москва
КУРС
ИНФРА-М


ФЗ 
№ 436-ФЗ
Издание не подлежит маркировке 
в соответствии с п. 1 ч. 4 ст. 11
УДК 004.41(075.8)
ББК 32.973я73
 
А72
Р е ц е н з е н т ы:
В.В. Золотарев — д-р техн. наук, профессор Института космических 
исследований РАН, г. Москва;
А.Е. Кузнецов — д-р техн. наук, профессор, зам. директора Института 
обработки аэрокосмических изображений «Фотон», г. Рязань
Антипов В.А. 
Введение в программную инженерию : учебник / В.А. АнтиА72
пов, А.А. Бубнов, А.Н. Пылькин, В.К. Столчнев. — Москва : 
ISBN 978-5-906923-22-6 (КУРС)
ISBN 978-5-16-012731-6 (ИНФРА-М, print)
ISBN 978-5-16-103172-8 (ИНФРА-М, online)
Учебник представляет собой введение в программную инженерию, охватывает все основные области знания, связанные с этим направлением.
Рассматриваются задачи, стоящие перед программным инженером, 
излагаются этапы и виды работ, связанные с созданием программного 
продукта и его дальнейшим сопровождением: сбор и управление требованиями, управление проектом (финансами, процессами, ресурсами), проектирование, конструирование, тестирование, поддержка и эксплуатация; 
описываются различные модели жизненного цикла программного продукта; раскрывается понятие качества программ; описываются инструменты, 
поддерживающие те или иные виды работ в рамках всего жизненного цикла 
программного продукта. При изложении особое внимание уделяется стандартам, которым должны отвечать как рассматриваемые работы, так и их 
результаты.
Для студентов учреждений высшего образования.
УДК 004.41(075.8)
ББК 32.973я73
©  
Коллектив авторов, 
2017, 2019
© КУРС, 2017, 2019
ISBN 978-5-906923-22-6 (КУРС)
ISBN 978-5-16-012731-6 (ИНФРА-М, print)
ISBN 978-5-16-103172-8 (ИНФРА-М, online)


Введение
Современный подход к разработке программного обеспечения в 
корне отличается от того, который был десять и более лет назад. 
Первые программы писались на бумаге и переносились в компьютер 
напрямую в машинных кодах. Затем появились языки программирования, которые упростили и ускорили процесс разработки. Стали 
усложняться задачи, которые решали программы, и к этим программам стали предъявляться повышенные требования (по надежности, отказоустойчивости, производительности). Параллельно 
совершенствовались и вычислительные системы. Увеличивалась 
производительность процессоров, объем используемой памяти, номенклатура внешних устройств и т.д. 
Изменялись и организационные подходы к программированию: 
если в начале 80-х гг. прошлого века на написание большинства 
программ могло хватить сил одного человека, то в дальнейшем поставленные задачи приходилось решать командам разработчиков. 
Появилась необходимость в координировании процесса разработки 
и распределении зон ответственности. Более сложные системы потребовали дополнительного тестирования и качественно другой документации, необходимой как для обучения пользователей, так и для 
описания самого исходного кода, элементов системы и ее архитектуры. Чтобы разработчики работали продуктивней, возникла необходимость в более четкой постановке задач, в более тщательном их 
анализе и более тесном взаимодействии с заказчиками.
В результате сформировалось научно-практическое направление 
программная инженерия, которое охватывает все этапы, процессы, 
ресурсы и инструменты, необходимые для работы с программным 
продуктом.
В современном языке разработчиков программного обеспечения 
используется понятие «проект» для описания процесса разработки 
программной системы. Ввод этого понятия означает, что для написания программ недостаточно знания языка программирования 
и умения писать код программы, не меньшее значение имеет организационная составляющая процесса.
Данный учебник позволяет разобраться во всех аспектах применения инженерных подходов к разработке современного программного обеспечения. За основу взят свод знаний, предложенный Всемирным компьютерным сообществом IEEE (Computer Society of the 
3


Institute for Electrical and Electronic Engineers) и  называемый 
-
SWEBOK.
Содержание учебника охватывает все основные области знаний 
программной инженерии.
В главе 1 введены основные понятия программной инженерии, 
термины и определения.
В главе 2 достаточно подробно рассмотрено понятие жизненного 
цикла программного продукта, наиболее общие подходы к процессам его разработки, эксплуатации, сопровождения и вывода из эксплуатации.
Глава 3 посвящена вопросам управления процессом разработки 
программного обеспечения, в ней рассматриваются процессы управления программным проектом, инициации, планирования и мониторинга, исполнения и завершения проекта, управления рисками, 
а также основные существующие методики оценки стоимости проекта.
В главе 4 изложены общие вопросы, касающиеся определения 
и разработки требований к программным системам, а также вопросы работы с требованиями, формализации и управления требованиями.
Глава 5 посвящена проектированию программного обеспечения, 
в ней рассматриваются ключевые вопросы проектирования, основные архитектурные стили проектирования, используемые графические и программные средства, вопросы создания модели программного обеспечения с применением языка UML, приведен анализ качества и оценки программного дизайна.
Предметом рассмотрения главы 6 (конструирование программного обеспечения) являются вопросы реализации программного 
продукта в соответствии с проектной документацией, а также шаблоны проектирования, позволяющие использовать готовые программные конструкции и механизмы повторного использования 
кода.
В главе 7 излагаются основы тестирования программного обеспечения, рассматриваются различные виды тестирования, методики 
и программные средства идентификации и работы с ошибками.
В главе 8 рассматриваются важнейшие аспекты сопровождения 
программного обеспечения, в том числе базовые понятия и основы 
организации процессов, виды работ по сопровождению, методики 
оценки запроса на сопровождение.
Глава 9 посвящена основам качества программного обеспечения, 
в ней рассмотрены метрики и атрибуты качества, вопросы управ4


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


Глава 1
Основные понятия
1.1. Программная инженерия  
и программные инженеры
На современном этапе своего развития разработка программного 
обеспечения (ПО) превратилась в целую индустрию, охватывающую 
такие аспекты, как управление проектами и персоналом, работа 
с требованиями, проектирование программного обеспечения, непосредственно написание программного кода, его оптимизация, 
оценка качества выполняемых работ, дальнейшее сопровождение 
программного продукта. При этом следует также учитывать и состояние рынка, чтобы создаваемое программное обеспечение имело 
должный успех у потребителей. Следует отметить, что современные 
программные продукты обладают высокой степенью сложности и создать их под силу только специалистам, вернее даже группам специалистов.
Разработка программного обеспечения является достаточно молодой отраслью инженерной науки. С 90-х гг. XX в. Британское сообщество вычислительной техники (British Computer Society) стало 
присваивать разработчикам программ звание инженера, в США подобное звание появилось с 1998 г. И сегодня имеет смысл вести речь 
об инженерии программного обеспечения, или программной инженерии (научной дисциплине, охватывающей все аспекты жизненного 
цикла программного продукта), а также о специалистах в этой области — ​
программных инженерах.
С развитием языков программирования развивались и методики, 
применяемые для создания программного обеспечения, в результате 
чего в конце 90-х гг. XX в. появилось направление «программная инженерия» (Software Engineering). Компьютерное сообщество IEEE 
(Computer Society of the Institute for Electrical and Electronic Engineers) 
к 2004 г. сформировало Руководство к своду знаний по программной 
инженерии (Guide to the Software Engineering Body of Knowledge, 
SWEBOK).
Согласно SWEBOK программная инженерия включает в себя следующие десять областей знаний:
6


1)  требования (software requirements);
2)  проектирование (software design);
3)  конструирование (software construction);
4)  тестирование (software testing);
5)  поддержка и эксплуатация (software maintenance);
6)  конфигурационное управление (software configuration management);
7)  управление инженерной деятельностью (software engineering 
management);
8)  процессы инженерной деятельности (software engineering process);
9)  инженерные инструменты и методы (software engineering tools 
and methods);
10)  качество (software quality).
Следует отметить, что принятые разграничения между областями 
знаний, их компонентами (subareas) и другими элементами во многом условны.
Вся деятельность разработчиков программного обеспечения 
осуществляется в рамках соответствующего проекта. Как и любой 
проект, программный проект реализуется в условиях ограниченности ресурсов, в качестве которых выступают стоимость проекта 
и его длительность. При этом создаваемый программный продукт 
должен быть наделен заявленной функциональностью и отвечать 
требованиям качества. Исходя из  этого основная цель программных инженеров — ​
это создание качественного программного 
продукта в пределах установленных заранее временных и финансовых рамок.
Для обеспечения требуемого уровня качества программного продукта используются следующие методы.
Инспектирование — ​
команда разработчиков работает в направлении достижения качества на протяжении всего периода реализации 
проекта посредством коллективного рассмотрения разрабатываемого 
программного обеспечения и его составляющих на предмет соответствия заданным требованиям или показателям качества.
Формальные методы — ​
математические методики доказательства 
адекватности созданной программы установленным требованиям, 
применяемые выборочно.
Тестирование — ​
проверка соответствия функциональных возможностей программы заявленным требованиям, осуществляемая 
на уровне модуля и целого приложения, а также проверка корректной работы программы в различных условиях. Количественные 
7


характеристики качества отражаются в метриках, приведенных в соответствующих стандартах.
Специальные методы управления проектом — ​
методы, используемые в процессе разработки для контроля стоимость и сроков реализации проекта, а также для грамотного управления версиями, документацией, конфигурациями и прочими артефактами.
Качественный программный продукт должен быть не только 
функциональным, удобным и адекватно использующим ресурсы вычислительной системы, но и отвечать установленным требованиям 
качества.
Инженеры по программному обеспечению воспринимают вопросы качества программного обеспечения как часть своей профессиональной культуры. Этические аспекты играют значительную роль 
при достижении качества программного обеспечения. IEEE Computer Society и ACM (Association for Computing Machinery — ​
Ассоциация по вычислительной технике) разработали кодекс этики (моральный кодекс — ​
code of ethics) и профессиональной практики, основанный на восьми принципах, помогающих инженерам отстаивать 
свою независимую позицию в решении вопросов обеспечения достойного качества создаваемых программных продуктов.
Этика инженерной деятельности в программировании отличается 
от этики прикладных исследований, где исследователи работают 
в прикладной науке и направляют свои усилия на реализацию возможностей, отвечающих определенным требованиям. Инженерная 
деятельность в программной инженерии, кроме сказанного, включает в себя технические навыки и умение управлять и приводить 
к удачному завершению большие программные проекты. Программный инженер несет ответственность перед пользователями 
и должен хорошо знать, что можно сделать реализацию быстро, 
но с большим риском для качества или высококачественно, но с малым риском.
Кодекс состоит из преамбулы и восьми принципов, которых 
должны придерживаться профессионалы программной инженерии, 
где профессионал определяется как специалист, принимающий непосредственное участие в деятельности (или в обучении) по анализу, 
спецификации, проектированию, разработке, сертификации, сопровождению и тестированию программных систем.
Сформулированные принципы декларируют здоровье, безопасность и благосостояние общества как главные факторы, которые 
необходимо принимать во внимание при принятии решений в профессиональной деятельности программного инженера.
8


Моральный кодекс программного инженера декларирует:
1)  согласование профессиональной деятельности с интересами 
общества;
2)  определение взаимоотношений между клиентом, работодателем и исполнителем разработки;
3)  достижение соответствия качества продукта лучшим профессиональным стандартам;
4)  соблюдение честности и  независимости при профессиональных оценках;
5)  соблюдение этических норм в менеджменте и в сопровождении разработок;
6)  поддержка становления профессии в соответствии с кодексом 
этики;
7)  соблюдение этических норм во взаимоотношениях между коллегами;
8)  усовершенствование специальности.
1.2. Программный продукт
При разработке программного обеспечения под программным продуктом понимают не только программное приложение, но и все его 
артефакты (конфигурационные данные, планы, отчеты, диаграммы 
и прочую документацию). Примеры артефактов соответствующих 
составляющих приложения приведены в табл. 1.1.
Таблица 1.1
Артефакты программного продукта
Составляющие  
программного продукта
Артефакты
Требования
Спецификация требований к программному обеспечению
Программная архитектура
Проектная модель
Детальное проектирование
Исходный и объектный коды
Реализация
Тестирование
Тестовые процедуры и тестовые варианты
Создание программного продукта начинается с анализа требований, которые сформулированы в соответствующих документах, где 
перечислены основные возможности приложения. Иногда этот процесс нуждается в использовании формальных математических мето9


дов. Затем осуществляется выбор архитектуры (в том числе и на основе имеющихся образцов проектирования), производится детальное проектирование (создание формальной модели системы), 
непосредственно программирование, тестирование и дальнейшее 
сопровождение. При этом каждый этап должен подробно документироваться, пополняя базу артефактов.
Можно выделить две категории программных продуктов.
1.  Программные продукты общего назначения (так называемое 
тиражное, «коробочное программное обеспечение») — ​
автономные 
программные системы, созданные соответствующими компаниями 
для распространения на открытом рынке программных продуктов 
любому потребителю.
2.  Программные продукты, созданные на заказ. Такие программные системы создаются по заказу конкретного потребителя или 
целевой категории; они весьма специфичны и обладают узконаправленной функциональностью.
Основное отличие этих видов программных продуктов заключается в том, что в первом случае спецификация требований разрабатывается исключительно компанией-разработчиком, а во втором — 
​
обязательно с участием заказчика.
Разработка программного продукта подпадает под действие таких же экономических законов, как и любая другая сфера производства. Поэтому перед компанией-разработчиком стоит задача создания продукта, не только соответствующего определенным требованиям качества, но и отвечающего запросам конечного пользователя. 
Естественно, что эту задачу необходимо решить, затратив столько 
ресурсов, чтобы стоимость полученного программного продукта 
была конкурентоспособной. Поэтому у компаний-разработчиков 
возникают вопросы, связанные не только с самим процессом разработки, но и с маркетингом, оценкой стоимости разрабатываемого 
программного обеспечения.
Маркетинговые исследования важны, так как необходимо создать 
нужный конечному пользователю программный продукт, который 
позиционируется в определенной нише программного обеспечения, 
обладая при этом очевидными преимуществами перед аналогами. 
Это очень важно, поскольку данный продукт подлежит дальнейшей 
продаже (в большинстве случаев — ​
массовой).
Оценка стоимости разрабатываемого программного продукта 
также важна, поскольку она позволяет определить затраты, связанные со всеми этапами его жизненного цикла. Следует отметить, что 
это могут сделать на должном уровне только крупные компании.
10


Доступ онлайн
от 404 ₽
В корзину