И. Соммервилл - Инженерия программного обеспечения (1133538), страница 4
Текст из файла (страница 4)
ведущих к созданию или раз- витию программного обеспечения Этот раздел построен в виде ответов на некоторые основные вопросы, касающисся ниже. иерни программного обеспечения и отображающие мой собственный взгляд на эту дисциплину. Я использовал формат "списка РАЯ" (Ггеоцепг)у Айссч) 11цезйопз — часто задаваемые вопро. сы). Такой формат обычно применяется в группах новостей 1псегпец предлагая новичкам ответы на часто задаваемые вопросы.
Надеюсь, что подобный подход будет эффективен в качестве краткого введения в предмет инженерии программного обеспечения. Вопросы и ответы, подробно рассматриваемые в этом разделе, компактно представлены в табл. 1.1. 20 Часть 1. Инженерия программного обеспечения: обзор Окаичанне табл. 1.1 Ответ Вопрос Формализованноеупрощенное представлениетехнологи- ческого процесса создания ПО Что такое модель тех ноло- гического процесса созда- ния ПО? Примерно 609~а от общих затрат на создание ПО занимают затраты непосредственно на разработку ПО и 40% — на его тестирование и отладку. Для программных продуктов, раз- рабатываемых по заказу, стоимость тестирования и отлад- ки часто превышает стоимость разработки продукта Зто структурные решения, предназначенные для разработ- ки ПО и включающие системные модели, формализован- ные нотацию и правила проектирования, а также способы управления процессом создания ПО Зто программные системы, предназначенные для автома.
тизацин процесса создания ПО. САБЕ средства часто ис- пользуются в качестве основы методов инженерии про. граммного обеспечения Программные продукты должны удовлетворять требова- ниям функциональности и эффективности (с точки зрения пользователя), а также быть надежными, удобными в экс- плуатации и иметь возможности для модернизации Проблема наследования ранее созданного ПО. проблема все возрастающей разнородности программных систем и проблема, порожденная требованием уменьшения времени на создание ПО Какова структура затрат на создание ПО? Что такое методы инжене- рии программного обеспе- чения? Что такое САБЕ (СотршегАЫег) Бо(гнаге Епя(пеег(пк— автоматизированное проектирование и создание ПО)? Каковы признаки качественного ПОР Какие основныс проблемы стоят перед специалистами по программному обеспечению? 1.1.1.
Что такое программное обеспечение Е Общие программкам я?мдукти. Это автономные программные системы, которые созданы компанией по производству ПО и продаются на открытом рынке программных продуктов любому потребителю, способному их купить, Иногда их называют "коробочным ПО". Примерами этого типа программных продуктов могут служить системы управления базами данных, текстовые процессоры, графические пакеты и средства управления проектами. Многие отождествляют термин я~юзриммног эбзсяечение с компьютерными программами. Это весьма ограниченное представление. Программное обеспечение — это не только программы, но и вся сопутствующая документация, а также конфигурационные данные, необходимые для корректной работы программ.
Программные системы состоят из совокупности программ, файлов конфигурации, необходимых для установки этих программ, и документации, которая описывает структуру системы, а также содержит инструкции лля пользователей, обьясняющие работу с системой, и часто адрес ЮеЬузла, где пользователь может найти самую последнюю информацию о данном программном продукте.
Специалисты по проЧшммиому обеспечению разрабатывают программные продукты, т.е. такое ПО, которое можно продать потребителю. Программные продукты делятся надва типа. 1, Введение 21 2. эероа~ииамные прод>пот, аидоннме ял эокоэ. Это программные системы, которые создаются по заказу определенною потребителя. Такое ПО разрабатывается специально для данного потребителя согласно заключенному контракту.
Программные продукты этого типа включают системы управления для электронных устройств, системы поддержки определенных производственных или бизнес-процессов, сис. темы управления воздушным транспортом и т.п. Важное отличие между этими типами программных продуктов заключается в том, что при создании общих программных продуктов спецификация требований на них разрабатывается компанией-производителем.
Для заказных программных продуктов специфика. ция обычно разрабатывается организацией, покупающей данный продукт. Спецификация необходима разработчикам ПО для создания любого программного продукта. 1.1.2. Что такое инженерия программного обеспечения Инженерия программного обеспечения — это инженернал дисциплина, которая охватывает все аспекты создания ПО от начальной стадии разработки системных требований через соз. дание ПО до его использованил.
В этом определении присугсгвуст две ключевые фразы. 1. "Инженерная дисциплина". Инженеры — это те специалисты, которые выполняют практическую работу. Они применяют теоретические построенил, методы и средства там, где это необходимо, но делают зто выборочно и всегда пытаются найти решение задачи, даже если не существует подходящей теории илн методов реше. ния. Специалисты-инженеры также всегда понимают, что опи должны работать в организационных и финансовых рамках заключенных контрактов, т.е. ищут реши ние поставленной перед ними задачи с учетом условий контракта.
2. "Все аспекты создания программного обеспечения". Инженерия программного обеспечения ие рассматривает жехнк иохие аспекты созданил ПΠ— в ес ведении такис вопросы, как управление проектом создания ПО и разработка средств, методов и теорий, необходимых для создания программных систем. Можно сказать, что специалисты (инженеры) по программному обеспечению адаптируют существующие методы инженерии ПО к решению своих задач, и зачастую это оказывается наиболсс эффективным способом построения высококачественных программных систем. Инженерия программного обеспечения предоставляет всю необходимую информацию для выбора наиболес подходящего метода для множества практических задач.
Вместе с тем творческий нсформальный подход в определенных обспэлтельствах также мо. жет быть эффективным. Например, при разработке программных систем электронной коммерции в 1пгегпсг требуется неформальный подход в сочсгапии ПО и графического эскизного проектирования. 1.1.3. Различие между инженерией программного обеспечения и компьютерной наукой Существенное различие заключается в том, что компьютерная наука (сопзршег эс1епсс) охватывает теорию и методы построения вычислительных и программных систем, тогда как инженерия программного обеспечения акцентирует внимание на практических проблемах разработки ПО. Знание компьютерной науки необходимо специалистам по программному обеспечению так же, как знание физики — инженерам-электронщикам.
22 'Часть |. Инженерия программного обеспечения: обзор В идеале вся инженерия программного обеспечения должна основываться на фундаменте компьютерной науки, но на самом деле это нс так. Часто специалисты по программному обеспечению используют подходы, применимые для рсшсния только конкретной задачи (бсз обобщснил на класс подобных задач). Элсгэнтныс методы компьютерной науки нс всегда можно применить к реальным сложным ээдачам, требующим программного решения.
1.1.4. Различие между инженерией программного обеспечения и системотехникои Систсмотсхника (гуэгсш спя1пссг(пя) или, точнее, технология создания вычислительных систем охватываст все аспекты создания и модернизации сложных вычислительных систем, где программное обеспечение играет ведущую раль. Сюда можно отнести техно. лаппо разработки аппаратных срсдств, внутренних вычислительных процессов и развертывания всей системы, а также технологию создания ПО. Инжснсрысистсмотсхники на основе спецификации системы (тсхничсских требований) опрсдсляют сс архитектуру и затсм, собрав воедино сс отдельные части, создают законченную систему.
Оци рассматривают систему преимущественно как составной объект с заданными компонентами и уделяют сравнительно мало внимания самим систсиным компонентам (конкрстным аппаратным сродствам, соответствующему и рограми ному обеспечению и т.д.). Систсмотсхника более старая дисциплина, чем инженерия программного обеспечения.
Человечество создает сложные индустриальные системы (такис, как жслсэныс доро. ги и хииичсскис заводы) ужо более 100 лет. Вмсстс с тсм по мере увсличспия в системах роли программного компонснта методы инженерии программного обеспечения, напримср автоматизированное моделирование систем, управление разработкой спсцификацнй и т.п., все шире используются в процессе создания самых разнообразных систем. Более подробно вопросы систсмотсхники рассматриваются в главе 2. 1.1.5. Процесс создания программного обеспечения Создэнис ПΠ— это совокупность процессов, приводящих к созданию программного продукта. Эти процессы основываются главным образом на технологиях инженерии программного обеспечения. Существует четыре фундаментальных процесса (более подробно описанных далее в книге), которые присущи любому проекту создания ПО. 1.
)эпг(гпботкп епевификпгбии ш)эгбаеппий нп прог(игммиае обеспечение 'Требования определяют функциональные характеристики системы и обязательны для выполнения. 2. Соэдппие прогрггммэгого абегпечеиил. Разработка и создание ПО согласно спецификации на него. 3. Логвигвгпдгия програимного обкпечеиия. Созданное ПО должно пройти аттестацию для подтверждения соответствия требованиям заказчика. 4. Совгригенгигвовпггие (ггодг)эииэпвия) прогрпиггиого обгепеип~ия. ПО должно быгь таким, чтобы сто можно было иодсрнизировать согласно измененным требованиям потребителя.
При выполнснни разнообразных программных проектов эти процессы могут быть ор. гаиизованы различными способами и описаны на разных )ровнял детализации. Длитсльность реализации этих процессов также далеко нс всегда одинакова. И вообще, различные органиэации, занимающиеся производством ПО. зачастую используют разные процессы для созданил програггыиых продукгов даже одного типа. С другой стороны, опрсдслсииыс процсссы бааса подходят для создания программных пролуктов одного типа и мснсс — для 1. Введение 23 другого типа программных приложений.
Если использовать неподходящий процесс, это может привести к снижению качества н функциональности разрабатываемого программного продукта. Процессы создания ПО подробно описаны в главе 3, а крайне важная тема усовершенствования технологии создания программных продуктов рассматривается в главе 25. 1.1.6. Модель процесса создания ПО Такая модель представляет собой упрощенное описание процесса создания ПΠ— по. следовательность практических этапов, необходимых для разработки создаваемого про.