И. Соммервилл - Инженерия программного обеспечения (1133538), страница 2
Текст из файла (страница 2)
Создание спецификации требований, разработ. ка, модификация и сопровождение таких систем ПО составляет сугь технической дисцип. лины инженеупя я)>ог)>пммяого о>уеспеченкя (м>Ватаге епк>пее>'!пя). Даже простые системы ПО обладают высокой степенью сложности, поэтому при их разработке приходится использовать весь арсенал технических и инженерных методов.
Таким образом, инженерия программного обеспечения — это инженерная дисциплина, где разработчики ПО используют теорию и методы компьютерных наук для успешного решения различных нетривиальных задач (но, конечно, не кажлый проект ПО в силу различных причин успешно завер>пается). Большинство современных программ предлагают пользователям большие сервисные возможности для работы с ними — нельзя не заметить реального прогресса в развитии технологии создания ПО за последние 30 лет. Инженерия программного обеспечения развивается а основном в соответствии с по.
становкой новых задач построения больших пользовательских систем ПО для промышленности, правительства и оборонного ведомства. С другой стороны, в настоящее время сфера программного обеспечения чрезвычайно широка: от пгр иа специализированных игровых консолях, а также программных продуктов для персональных компьютеров и '»>еЬ-ориентированных программных систем до очень больших мас>птабирусмых распределенных систем. Хотя некоторые технологии, применясмыс лля построения пользова.
тельских программных систем, универсальны (например, обьектно.ориентированные мс" тоды), новые технологии создания программного обеспечения развиваются с учетом раз. личных типов ПО. Невозможно охватить в одной книге все технологии создания ПО, поэтому я сконцентрировал основное внимание не на методах разработки отдельных программных продуктов, а на универсальных технологиях и методах проектирования и построения больших масштабируемых программных систем.
Хотя данная книга запланирована как общее введение в инженерию программного обеспечепил, в ней отражены мои собственные интересы к критическим системам и процессу разработки требований для программных систем. Я думаю, что зги вопросы имеют практическую важность в преддверии 21-го столетия, так как Г>лаголаря нх решению современное ПО сможе г удовлетворить реальные нужды пользователей следу>ощсго века. В этой книге я старался дать широкую панораму инженерии программного обсспсчс. ния без концентрации внимания на каких-либо специальных методах илн средггвах, Я шпытываю стойкую неприязнь к фанатикам любого р<>да, будь то академический проповедник, рекламирующий формальные методы и подкопы, или продавец ПО, пытая>щийся убедить меня, что именно его программное срслство или метод рспщт всс проблемы соз.
лаиия программного обеспечения. Нс существует простых решений задач гоздюшя ПО; для этого необходим широкий спектр средств, методов н тсхпола ий. Книги псизГ>ежно отражают мнения и предпочтения заторов. 11скоторые читатели ко. печно же ис согласятся с >юим мнением нлп выбором матсри.щз для книги.
Такое несогласие, т,е. здоровая реакция, вызванная множественностью подходов к инженерии программного обеспечения, и являетсл залогом сс дальней>него развития. Вместе с тем я издеюс>ь что все разработчики программного обеспечения, а также студенты, изучакнцие дпсцш>лину "Инженерия программного обеспечения", нейдут а атой книге что то ш перегное для себя. 12 Предисловие Отличия от пятого издания Подобно многим системам программного обсспсчспия, зта книга растет и изменяется начиная с первого издания, опубликоваююго в 1982 году.
Одлюй из целей при подготовке настоящего издания было сокращснис объема книги. Это привело к определенной реорганизации сс содержания и к глубоким раздуиьям о том, какой матсриал можно удалить для тога, чтобы включить новый. В результате объси книги уменьшился на 10% по сравнению с пятым изданием. ° Теперь книга содсржлп семь частей, а нс восемь, как было в предыдущем издании. В них представлено введение в инженерию программного обеспечения, темы разработки требований для ПО, собственно создания программного продукта, разработки критических систем, проверки и аттестации ПО, управлснил ПО, а тюскс эволюции программ. ных систем. ° Добавлспы новые главы, описывающие процесс созданил и эксплуатации программного обеспечения, архитектуру распрсдслснных систем, проблсмы надежности н наследования ПО.
Тсмс формальной спецификации ПО теперь посвящена толька одна глава. Материал по САБЕ-технологиям сокращен и распределен по нескольким главам. Материал по функционзлыюму проектированию ПО теперь содержит новую главу по наследуемым системам (!еяасу зуисщз). Главы, описывающие верификацию и аттестацию ПО, объединены в отдельную часть. ° Во всс главы внесены изменения, а некоторые существенно переработаны.
Повторное использование программных коллпопснтов в настоящси издании расслютривастся как тема разработки ПО с повторным использованием програмлщых продуктов аэвмсстно с матсриалом о патгсриах и темой разработки ПО, основанной на покомпонснтном подходе. Главы по разработке трсбованийлыдслсны в отдельную часть книги.
° Вводная часть книги содержит четыре главы. В них собран вводный материал, ко. тарый в пятом издании был разбросан по всей книге. Глава 1 полностью переписана и построена в форме вопросов и ответов, касающихся инженерии программного обеспечения. ° Материал по критическим системам рсструктуризирован и объединен таким абра. зом, чтобы темы надежности, безопасности и работоспособности ПО теперь ис выделялись как отдельные. Добавлен также небольшой материал о защищенности ПО как атрибуте критических систем. ° В дюпюм издании примеры программ написаны на языке!ало, а модели объектов — на 13МГ- Примеры программ на языках Ааа и Слл лдалены из книги, на доступны на моем ЖсЬуэлс.
Круг читателей книги Книга предназначена лля студентов, изучающих технологии созданил ПО, н специалистов по программному обеспечению, работающих в различных областях индустрии разработки программных систем. Ес можно использовать кзк основу базового курса по ипжснс. рии программного обеспечения или в качестве материала лля таких лурсов, как углубленныс технологии программирования, спецификации ПО, разработка и управление программными системами. Программисты-практики нс только найдуг в кингс много полезного в аспекте общих копцспэ !альных вопросов, по и освежат" знания по таким прак- Использование книги как учебного пособия 13 тическим тслгам, иак разработка требований, предъявляемых к ПО, разработка архитектуры программных систем, конструирование надежных систем и управление процессом создания ПО. Кроме того, практические примеры, сопровождающие изложение материала, дадут представление о тех типах программных приложений, с которыми специалист по программному обеспечению может столинугься в практической деятельности.
Я предполагаю, что читатель имеет базовые знания по программированию н современным компьютерным систеиам, а также знаком с такими основными струатурами данных,яаи стехн,списки и очереди. Использование книги как учебного пособия Материал книги может служить основой для трех курсов по технологии создания программного обеспечения. 1.
Болевые вводный хфс по ипжмиугии пучироммного обеспечения. Для этага можно использо. вать материал первой части, затем выбрать отдельные главы из остальных частей книги. Это даст студентам общее представление об инженерии программного обеспс. чения и позволит в дальнейшем подробнее изучить темы, которые нх интересуют. 2. Вводпьм или углубленные пурги ио отделыгым вимом иггжегггугии ггугогугольч ного обтпечепик На базе материала хппгн можно создать курсы по спецификации ПО, методам разработки ПО, управлению процессом создания ПО.
разработке падежнь~х шитом н эволюции ПО. Каждая часть книги может служить основой вводного или углубленного курса по этим темам. 3. Баиеуглублеппые и)уиы по оидельггым ггилим инженерии гг)зогупашггого обггичмиос Главы хиппи могут составить основу таких курсов, но необходимо лопалппть их материалом пз других источников. До пол интел ьныс материалы можно найти на моей 1чсЬ.странице. Достоинство настоящей книги состоит в том, что ее можно псггользовать югк основу для многих различных взаимосвязанных курсов. Например, в унипсрситстс Ланкастера мы используем материал этой книги для вводного курса по инженерии программного обеспеченил, для курса по спецификации ПО, курса по разработхс критических систем и для курса по управлению разработкой ПО, дополняя его при необходимости материалом из других источников.