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

Программная инженерия. Часть 1. Проектирование систем

Покупка
Артикул: 782403.01.99
Доступ онлайн
400 ₽
В корзину
Изложены теоретические основы и практические методы инженерии программного обеспечения для начальных этапов разработки (анализ требований, архитектурное проектирование и планирование) программных систем. Пособие предназначено для студентов, обучающихся по направлению «Прикладная информатика».
Абдулаев, В. И. Программная инженерия : учебное пособие : в 2 частях. Часть 1. Проектирование систем / В. И. Абдулаев. - Йошкар-Ола : Поволжский государственный технологический университет, 2016. - 168 с. - ISBN 978-5-8158-1767-8. - Текст : электронный. - URL: https://znanium.com/catalog/product/1876101 (дата обращения: 24.04.2024). – Режим доступа: по подписке.
Фрагмент текстового слоя документа размещен для индексирующих роботов. Для полноценной работы с документом, пожалуйста, перейдите в ридер.
 
 
 
 
 
 

 
 
 
 

В. И. Абдулаев 

 
 
 

Программная инженерия 

 

Часть 1. Проектирование систем 

 
 

Учебное пособие 

 
 
 
 
 
 
 
 

 

Йошкар-Ола 

2016 

УДК 004.41(075.8) 
ББК  32.97 

А 13 

 
 

 

Рецензенты: 

кандидат физико-математических наук, профессор кафедры  

«Информационные системы в экономике» ПГТУ А. В. Бородин; 

кандидат физико-математических наук, доцент кафедры  

«Информационные системы в экономике» ПГТУ Л. В. Петрова 
 
 
 

Печатается по решению 

редакционно-издательского совета ПГТУ 

 
 
 
 
 
 
Абдулаев, В. И. 

А 13        Программная инженерия: учебное пособие: в 2 ч.  / В. И. Аб
дулаев. – Йошкар-Ола: Поволжский государственный технологический университет, 2016. 
ISBN 978-5-8158-1766-1 
Ч. 1. Проектирование систем – 168 с. – ISBN 978-5-8158-1767-8 
 

Изложены теоретические основы и практические методы инженерии 

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

Пособие предназначено для студентов, обучающихся по направле
нию «Прикладная информатика». 

 

 УДК 004.41(075.8) 

ББК 32.97 

 

ISBN 978-5-8158- 1767-8 (ч. 1) 
© Абдулаев В. И., 2016 

ISBN 978-5-8158- 1766-1 
© Поволжский государственный  

 
технологический университет, 2016 

ОГЛАВЛЕНИЕ 

 

Введение .............................................................................................. 5 

1. ПРОБЛЕМЫ РАЗРАБОТКИ ПРОГРАММНОГО               
ОБЕСПЕЧЕНИЯ ................................................................................. 9 

1.1. Природа программного обеспечения ................................ 9 
1.2. Области приложений программного обеспечения .......... 14 
1.3. Ключевые проблемы программной инженерии .............. 16 
1.4. Затраты, сроки и качество ................................................ 17 
1.5. Масштаб и изменения ...................................................... 23 
1.6. Выводы по разделу .......................................................... 26 
Вопросы для самопроверки ..................................................... 27 

2. ПРОЦЕССЫ РАЗРАБОТКИ ПРОГРАММНОГО  
ОБЕСПЕЧЕНИЯ ............................................................................... 28 

2.1. Процесс и проект ............................................................. 30 
2.2. Компонентные процессы производства программного 
продукта .................................................................................. 31 
2.3. Модели процесса разработки программного  
обеспечения ............................................................................ 35 
2.4. Процесс проектного управления. .................................... 63 
2.5. Выводы по разделу .......................................................... 64 
Вопросы для самопроверки ....................................................... 67 

3. АНАЛИЗ И СПЕЦИФИКАЦИЯ ТРЕБОВАНИЙ  
К ПРОГРАММНОМУ ОБЕСПЕЧЕНИЮ ........................................ 69 

3.1. Ценность хороших SRS ................................................... 70 
3.2. Процесс разработки требований. ..................................... 71 
3.3. Спецификация требований .............................................. 72 
3.4. Другие подходы к анализу требований  
к программному обеспечени. ................................................. 99 
3.5. Валидация требований ................................................... 103 
3.6. Выводы по разделу ........................................................ 106 
Вопросы для самопроверки ................................................... 107 

4. ПРОЕКТНОЕ ПЛАНИРОВАНИЕ .............................................. 108 

4.1. Оценка трудозатрат ........................................................ 109 
4.2. Календарный график и штатная численность проекта . 116 
4.3. Планирование качества .................................................. 118 
4.4. Планирование управления рисками .............................. 121 
4.5. План мониторинга проекта ............................................ 124 
4.6. Детальный план-график ................................................. 127 
4.7. Выводы по разделу ........................................................ 130 
Вопросы для самопроверки ................................................... 132 

5. АРХИТЕКТУРА ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ ............ 134 

5.1. Роль архитектуры программного обеспечения ............. 134 
5.2. Архитектурные представления системы                          
(Architecture Views)............................................................... 137 
5.3. Представление «Компоненты и коннекторы» ............... 140 
5.4. Архитектурные стили для C&C представления. ........... 148 
5.5. Документирование процесса архитектурного                    
проектирования ..................................................................... 155 
5.6. Оценивание архитектур ................................................. 158 
5.7. Выводы по разделу ........................................................ 159 
Вопросы для самопроверки ................................................... 161 

Глоссарий ........................................................................................ 162 

Список литературы ......................................................................... 167 

 
 
 

ВВЕДЕНИЕ 

 
Программное обеспечение компьютеров продолжает оставаться 

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

Действительно, в середине ХХ века никто не мог предсказать, 

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

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

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

Термин software engineering был впервые предложен в 1968 году 

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

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

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

Стоимость аппаратных средств постепенно снижалась, тогда как 

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

По мере быстрого роста многообразия требуемых программных 

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

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

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

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

Возникла новая отрасль экономики, по исторической традиции 

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

Однако какие бы продукты не производились индустрией ПО, 

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

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

В заключение отметим, что при написании данного пособия был 

использован материал книги Pankaj Jalote «A Concise Introduction to 

Software Engineering» [1], в которой, в противовес многим учебникам, стремящимся «объять необъятное» и потому страдающим поверхностным изложением данной предметной области, основной 
акцент сделан на основных практических задачах программной инженерии и методах их решения. Трудно не согласится с автором этого, возможно, лучшего на сегодня учебника, что «в конце концов 
программная инженерия – это о приложении концепций для эффективного получения хороших инженерных решений в области программного обеспечения». 

  

1. Проблемы разработки 

программного обеспечения

 
 
 

1.1. Природа программного обеспечения 

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

 

1.1.1. Определение программного обеспечения 

 
Многие отождествляют термин программное обеспечение с 

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

Специалисты по программному обеспечению разрабатывают 

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

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

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

Важное отличие между этими типами программных продуктов 

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

Определение программного обеспечения. Под программным 

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

Логические предписания – это не только сами программы, но и 

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

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

 

1.1.2. Роль программного обеспечения 

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

Программное обеспечение предоставляет людям самый важный 

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

 

1.1.3. Проблемность программного обеспечения 

 
Сегодня мощная индустрия программного обеспечения стала 

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

• Почему требуется так много времени, чтобы закончить про
грамму? 

• Почему разработка требует таких больших затрат? 
• Почему мы не можем найти в программе все ошибки до ее пе
редачи заказчикам? 

• Почему мы тратим так много времени и усилий на поддержа
ние существующих программ? 

• Почему мы продолжаем испытывать трудности в измерении 

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

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

 

1.1.4. Сравнение характера отказов программного обеспечения  

и технических устройств 

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

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

На рис. 1 изображена кривая отказов для сложных технических 

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

 

Рис. 1. Кривая отказов для технических устройств [2] 

 

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