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

6-е издание
Иан Соммервилл

Software Engineering, 6th Edition
Ian Sommerville
книга Инженерия программного обеспечения. 6-е издание

Тираж данной книги закончился.
Оглавление
Введение
Рецензии на книгу

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

624 стр., с ил.; ISBN 5-8459-0330-0, 0-2013-9815-X; формат 70x100/16; твердый переплетофсетная2002, 3 кв.; Вильямс.



Понравилась книга? Порекомендуйте её друзьям и коллегам:







Книги, рекомендуемые вместе с этой книгой:

Раздел каталога:



Оглавление книги "Инженерия программного обеспечения"

Предисловие 11
Часть I. Инженерия программного обеспечения: обзор 15
1. Введение 17
2. Системотехника вычислительных систем 33
3. Процесс создания программного обеспечения 53
4. Управление проектами 81
Часть II. Требования 103
5. Требования к программному обеспечению 105
6. Разработка требований 127
7. Модели систем 149
8. Прототипирование программных систем 169
9. Формальные спецификации ПО 187
Часть III. Проектирование 203
10. Архитектурное проектирование 205
11. Архитектура распределенных систем 225
12. Объектно-ориентированное проектирование 243
13. Проектирование систем реального времени 265
14. Проектирование с повторным использованием компонентов 283
15. Проектирование интерфейса пользователя 303
Часть IV. Критические системы 325
16. Надежность систем 327
17. Спецификация критических систем 343
18. Разработка критических систем 361
Часть V. Верификация и аттестация 383
19. Верификация и аттестация ПО 385
20. Тестирование программного обеспечения 403
21. Аттестация критических систем 427
Часть VI. Управление 445
22. Управление персоналом 447
23. Оценка стоимости программного продукта 469
24. Управление качеством 493
25. Совершенствование производства ПО 513
Часть VII. Эволюция программного обеспечения 531
26. Наследуемые системы 533
27. Модернизация программного обеспечения 551
28. Реинжениринг программного обеспечения 569
29. Управление конфигурациями 585
Литература 603
Предметный указатель 618


Предисловие

Программные системы ныне присутствуют повсеместно: практически любые электронные устройства содержат программное обеспечение (ПО) того или иного вида. Без соответствующего программного обеспечения в современном мире невозможно представить индустриальное производство, школы и университеты, систему здравоохранения, финансовые и правительственные учреждения. Многие используют ПО для самообразования или различного рода развлечений. Создание спецификации требований, разработка, модификация и сопровождение таких систем ПО составляет суть технической дисциплины инженерия программного обеспечения (software engineering).

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

Инженерия программного обеспечения развивается в основном в соответствии с постановкой новых задач построения больших пользовательских систем ПО для промышленности, правительства и оборонного ведомства. С другой стороны, в настоящее время сфера программного обеспечения чрезвычайно широка: от игр на специализированных игровых консолях, а также программных продуктов для персональных компьютеров и Web-ориентированных программных систем до очень больших масштабируемых распределенных систем. Хотя некоторые технологии, применяемые для построения пользовательских программных систем, универсальны (например, объектно-ориентированные методы), новые технологии создания программного обеспечения развиваются с учетом различных типов ПО. Невозможно охватить в одной книге все технологии создания ПО, поэтому я сконцентрировал основное внимание не на методах разработки отдельных программных продуктов, а на универсальных технологиях и методах проектирования и построения больших масштабируемых программных систем.

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

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

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

Отличия от пятого издания

Подобно многим системам программного обеспечения, эта книга растет и изменяется начиная с первого издания, опубликованного в 1982 году. Одной из целей при подготовке настоящего издания было сокращение объема книги. Это привело к определенной реорганизации ее содержания и к глубоким раздумьям о том, какой материал можно удалить для того, чтобы включить новый. В результате объем книги уменьшился на 10% по сравнению с пятым изданием.

  • Теперь книга содержит семь частей, а не восемь, как было в предыдущем издании. В них представлено введение в инженерию программного обеспечения, темы разработки требований для ПО, собственно создания программного продукта, разработки критических систем, проверки и аттестации ПО, управления ПО, а также эволюции программных систем.
  • Добавлены новые главы, описывающие процесс создания и эксплуатации программного обеспечения, архитектуру распределенных систем, проблемы надежности и наследования ПО. Теме формальной спецификации ПО теперь посвящена только одна глава. Материал по CASE-технологиям сокращен и распределен по нескольким главам. Материал по функциональному проектированию ПО теперь содержит новую главу по наследуемым системам (legacy systems). Главы, описывающие верификацию и аттестацию ПО, объединены в отдельную часть.
  • Во все главы внесены изменения, а некоторые существенно переработаны. Повторное использование программных компонентов в настоящем издании рассматривается как тема разработки ПО с повторным использованием программных продуктов совместно с материалом о паттернах и темой разработки ПО, основанной на покомпонентном подходе. Главы по разработке требований выделены в отдельную часть книги.
  • Вводная часть книги содержит четыре главы. В них собран вводный материал, который в пятом издании был разбросан по всей книге. Глава 1 полностью переписана и построена в форме вопросов и ответов, касающихся инженерии программного обеспечения.
  • Материал по критическим системам реструктуризирован и объединен таким образом, чтобы темы надежности, безопасности и работоспособности ПО теперь не выделялись как отдельные. Добавлен также небольшой материал о защищенности ПО как атрибуте критических систем.
  • В данном издании примеры программ написаны на языке Java, а модели объектов - на UML. Примеры программ на языках Ada и C++ удалены из книги, но доступны на моем Web-узле.

Круг читателей книги

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

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

Использование книги как учебного пособия

Материал книги может служить основой для трех курсов по технологии создания программного обеспечения.

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

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

3. Более углубленные курсы по отдельным темам инженерии программного обеспечения. Главы книги могут составить основу таких курсов, но необходимо дополнить их материалом из других источников. Дополнительные материалы можно найти на моей Web-странице.

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

Книга содержит весь материал, рекомендованный Ассоциацией по вычислительной технике и Институтом инженеров по электротехнике и электронике (ACM и IEEE) в документе Computing Curricula 2001 (Учебный план по компьютерным дисциплинам 2001), по компоненту Software Engineering (Инженерия программного обеспечения) базового набора дисциплин, составляющих основу компьютерных наук. Материал книги также соответствует документу Software Engineering Body of Knowledge (Совокупность знаний по инженерии программного обеспечения), который должен был быть опубликован ACM/IEEE в 2001 году.

Web-страница

Моя Web-страница (http://www.software-engin.com) содержит ссылки на материал, который используется в этой книге и будет полезен как преподавателям, так и изучающим инженерию программного обеспечения самостоятельно. Для загрузки доступны отмеченные ниже материалы.

  • Руководство для преподавателей, включающее советы по использованию данной книги, рекомендации по аудиторной работе, задания для самостоятельного изучения, решения некоторых примеров из книги. Весь материал представлен в формате Adobe PDF.
  • Иллюстративный материал для каждой главы в формате Adobe PDF и Microsoft PowerPoint. Преподаватели могут адаптировать и изменять этот материал в соответствии со своими потребностями.
  • Исходные коды программ на языке Java для всех основных примеров из книги, включая дополнительный код, необходимый для компиляции.
  • Дополнительный материал, используемый в предыдущих изданиях книги. Также доступны программные примеры на языках Ada и С++, которые иллюстрировали пятое издание.

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

Я всегда рад получить отклики на мои книги; вы можете писать мне по адресу электронной почты [email protected]. Но я заранее приношу свои извинения за то, что из-за отсутствия времени не смогу ответить студентам на вопросы их домашних заданий.

Благодарности

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

Прежде всего за отмеченные недостатки и полезные рекомендации я хочу поблагодарить Энди и Линдсея Гиллесов (Andy Gillies и Lindsey Gillies) из университета Восточной Англии, Джоя Ламберта (Joe Lambert) из университета шт. Пенсильвания, Франка Меддикса (Frank Maddix) из университета Восточной Англии, Нэнси Мед (Nancy Mead) из Института инженерии программного обеспечения (Software Engineering Institute), г. Питтсбург, Крис Прайс (Chris Price) из университета Уэльса, г. Аберистуит, Грегга Ротермела (Gregg Rothermel) из университета шт. Орегон и Гууса Шрейбера (Guus Schreiber) из университета Амстердама. Особую благодарность хочу выразить моим друзьям Рону Моррисону (Ron Morrison) из университета Св. Андрея и Рею Велланду (Ray Welland) из университета Глазго, которые рецензировали предыдущие издания книги и вновь добровольно прочитали текст этого издания.

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

Иан Соммервилл

Ланкастер, февраль 2000 г.


Copyright © 1992-2019 Издательская группа "Диалектика-Вильямс"

Rambler  Top100