Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

1vendrov_a_m_proektirovanie_programmnogo_obespecheniya_ekonom

.pdf
Скачиваний:
114
Добавлен:
14.05.2016
Размер:
14.05 Mб
Скачать

Введение

31

СОВРЕМЕННЫЕ ТЕНДЕНЦИИ В ПРОГРАММНОЙ ИНЖЕНЕРИИ (ПРИНЦИПЫ «БЫСТРОЙ РАЗРАБОТКИ ПО»)

В начале 2001 г. ряд ведущих специалистов в области профаммной инженерии (Алистер Коберн, Мартин Фаулер, Джим Хайсмит, Кент Бек и др.) сформировали группу под назва­ нием Agile Alliance. Слово agile (быстрый, ловкий, стремитель­ ный) отражало в целом их подход к разработке ПО, основанный на богатом опыте участия в разнообразных проектах в течение многих лет. Этот подход под названием «Быстрая разработка ПО» (Agile software development) базируется на четырех идеях, сфор­ мулированных ими в документе «Манифест быстрой разра­ ботки ПО» (Agile Alliance's Manifesto) и заключающихся в следующем^*

индивидуумы и взаимодействия между ними ценятся выше процессов и инструментов;

работающее ПО ценится выше всеобъемлющей документа­ ции;

сотрудничество с заказчиками ценится выше формальных договоров;

реагирование на изменения ценится выше строгого следо­

вания плану Центральными для быстрой разработки ПО являются прос­

тые, но достаточные правила выполнения проекта, а также ори­ ентация на людей и коммуникацию.

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

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

^ Коберн А. Быстрая разработка профаммного обеспечения: Пер. с англ. М.: ЛОРИ, 2002.

32

Введение

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

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

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

когда она облегчает общение между людьми. В среде расп­ ределенной разработки ПО все виды инструментов обмена информацией помогают команде работать.

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

При этом следует четко понимать: при всех достоинствах быстрой разработки ПО этот подход не является универсальным и применим только в проектах определенного класса. Для характе­ ристики таких проектов Алистер Коберн ввел два параметра — критичность и масштаб. Критичность определяется последстви­ ями, вызываемыми дефектами в ПО, и может иметь один из че­ тырех уровней:

С — дефекты вызывают потерю удобства;

D — дефекты вызывают потерю возместимых средств (мате­ риальных или финансовых);

Е - дефекты вызывают потерю невозместимых средств;

L — дефекты создают уфозу человеческой жизни. Масштаб определяется количеством разработчиков, участву­

ющих в проекте:

от 1 до 6 человек — малый масштаб;

от 6 до 20 человек — средний масштаб;

свыше 20 человек — большой масштаб.

По оценке Коберна, быстрая разработка ПО применима

только в проектах малого и среднего масштаба с низкой критич­ ностью (С или D). Общие принципы оценки технологий в таких проектах заключаются в следующем:

Введение

33

интерактивное общение лицом к лицу — это самый дешевый и быстрый способ обмена информацией;

избыточная «тяжесть» технологии стоит дорого;

более многочисленные команды требуют более «тяжелых» и формальных технологий;

большая формальность подходит для проектов с большей критичностью;

возрастание обратной связи и коммуникации сокращает потребность в промежуточных и конечных продуктах;

дисциплина, умение и понимание противостоят процессу, формальности и документированию;

потеря эффективности в некритических видах деятельности вполне допустима.

Одним из наиболее известных примеров практической реали­ зации подхода быстрой разработки ПО является «Экстремальное программирование» (Extreme Programming — ХР^). Далее приве­ дено краткое изложение этого метода.

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

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

3.Единицей собираемых требований к ПО является «пользо­ вательская история» (user story), описывающая с точки зрения пользователя функциональность, которая может быть разработа­ на за одну итерацию. Заказчики записывают истории на простых индексных карточках. Заказчики и профаммисты договаривают­ ся о планах на следующую итерацию таким образом:

профаммисты оценивают время для завершения работы с каждой карточкой;

^Бек К. Экстремальное программирование: Пер. с англ. - СПб.: Питер,

2002.

34

Введение

• заказчики расставляют приоритеты, изменяют и пересмат­ ривают их при необходимости, чтобы самые ценные исто­ рии с наибольшей вероятностью были выполнены в выде­ ленный период времени.

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

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

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

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

6.В то время как программисты работают, заказчики занима­ ются тремя вещами: они посещают программистов, чтобы прояс­ нять идеи, пишут приемочные тесты системы для прогона во вре­ мя итерации и в ее конце выбирают истории для реализации в следующей итерации. По своему решению они могут участвовать

впроекте полное рабочее время или только часть времени.

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

Введение

35

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

8. Один человек в команде назначается «наставником». Вмес­ те с участниками команды он оценивает использование ими ос­ новных приемов: парного программирования и тестирования, ротации пар, поддержания простоты проектных решений, ком­ муникации и т.д.

Одно из несомненных достоинств ХР заключается в обратной связи, которая возникает достаточно быстро. Заказчики получа­ ют ее в отношении последствий реализации их требований, представленных в ходе сеанса планирования. Через несколько дней они видят работающий код и могут соответственно скоррек­ тировать свои представления о том, что в действительности сле­ дует программировать. Изменяя проект, профаммисты получают быструю обратную связь благодаря модульному и приемочному тестированию. Они получают реакцию на процесс разработки каждые несколько недель, благодаря итерационным циклам.

ХР использует общение — сильную сторону людей. Парная работа и быстрая ответная реакция компенсирует склонность лю­ дей к совершению ошибок.

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

В своем определении ХР включает набор приемов и методик, которые команде нужно освоить: ифу планирования, ежеднев­ ное оперативное совещание, реорганизацию и опережающюю разработку тестов.

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

!Следует запомнить

1.Методологическую основу проектирования ПО составляет системный подход. Он реализует представление сложного объек-

36

Введение

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

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

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

4.Неотъемлемыми свойствами ПО являются сложность, сог­ ласованность, изменяемость и незримость.

5.Объективная потребность контролировать процесс разра­ ботки сложных систем ПО, прогнозировать и гарантировать сто­ имость разработки, сроки и качество результатов привела к необ­ ходимости перехода от кустарных к индустриальным способам создания ПО и появлению совокупности инженерных методов

исредств создания ПО, объединенных общим названием «про­ граммная инженерия».

v^ Основные понятия

Информационная система, программное обеспечение, про­ ект, проектирование, программная инженерия, «быстрая разра­ ботка ПО».

? Вопросы для самоконтроля

1.В чем состоит цель проектирования ПО?

2.Каковы основные особенности и проблемы современных крупномасштабных проектов программных систем?

3.В чем заключаются основные причины неудач проектов и каким представляется выход из положения?

4.Что означает «быстрая разработка ПО»?

f&?SS!®5SHiS.<S.Vs^ -«-ylis^-* *r^^^.^^\^.\^:•

ЖИЗНЕННЫЙ ЦИКЛ ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ

Прочитав эту главу, вы узнаете:

Что представляет собой жизненный цикл программного обеспеч ния (ЖЦ ПО) и какие процессы входят в его состав.

Что такое модель ЖЦ ПО.

Какие стадии включает в себя жизненный цикл любого ПО.

В чем заключаются каскадная и итерационная модели ЖЦ ПО.

Какие требования предъявляются к уровню зрелости организаций

— разработчиков ПО.

1.1. НОРМАТИВНО-МЕТОДИЧЕСКОЕ ОБЕСПЕЧЕНИЕ СОЗДАНИЯ ПО

Разработка больших проектов, связанная с работой коллекти­ вов размером в несколько десятков и даже сотен человек из нес­ кольких организаций, немыслима без совокупности нормативнометодических документов, регламентирующих различные аспек­ ты процессов деятельности разработчиков^ Комплекс таких до­ кументов называют нормативно-методическим обеспечением (HMD). Эти документы регламентируют:

порядок разработки, внедрения и сопровождения ПО;

общие требования к составу ПО и связям между его компо­ нентами, а также к его качеству;

виды, состав и содержание проектной и программной доку­ ментации.

^ Более подробно нормативно-методические документы (стандарты) рассматриваются в учебном пособии: Благодатских В.Л., Волнин В.А., Поска калов К.Ф. Стандартизация разработки программных средств. — М.: Финан­ сы и статистика, 2003.

38

Глава 1

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

В состав НМО входят стандарты и руководящие документы, методики выполнения сложных операций, шаблоны проектных и программных документов. Все входящие в состав НМО докумен­ ты классифицируются по следующим признакам:

виду регламентации (стандарт, руководящий документ, по­ ложение, инструкция и т.п.);

статусу регламентирующего документа (международный, отраслевой, предприятия);

области действия документа (заказчик, подрядчик, проект);

объекту регламентации или методического обеспечения. Нормативной базой НМО являются международные и отече­

ственные стандарты в области информационных технологий и прежде всего:

международные стандарты ISO/IEC (ISO - International Organization of Standardization - Международная организа­ ция по стандартизации, IEC — International Electrotechnical Commission — Международная комиссия по электротех­ нике);

стандарты Российской Федерации ГОСТ Р;

стандарты организации-заказчика.

В СССР в 70-е годы прошлого века процесс создания ПО рег­ ламентировался стандартами ГОСТ ЕСПД (Единой Системы Программной Документации — серия ГОСТ 19.ХХХ), которые были ориентированы на класс относительно простых профамм небольшого объема, создаваемых отдельными программистами. В настоящее время эти стандарты устарели концептуально и по форме, их сроки действия закончились и использование нецеле­ сообразно. Процессы создания автоматизированных систем (АС), частью которых является ПО АС, регламентированы стан­ дартами ГОСТ 34.601-90 «Информационная технология. Комп­ лекс стандартов на автоматизированные системы. Автоматизиро­ ванные системы. Стадии создания»; ГОСТ 34.602-89 «Информа­ ционная технология. Комплекс стандартов на автоматизирован­ ные системы. Техническое задание на создание автоматизиро­ ванной системы» и ГОСТ 34.603-92 «Информационная техноло­ гия. Виды испытаний автоматизированных систем». Однако про­ цессы создания ПО для современных распределенных систем.

Жизненный цикл программного обеспечения

39

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

1.2. СТАНДАРТ ЖИЗНЕННОГО ЦИКЛА ПО

Понятие жизненного цикла ПО (ЖЦ ПО) является одним из базовых понятий программной инженерии. ЖЦПО определяется

как период времени, который начинается с момента приняти шения о необходимости создания ПО и заканчивается в момен полного изъятия из эксплуатации^

Основным нормативным документом, регламентирующим состав процессов ЖЦ ПО, является международный стандарт ISO/IEC 12207: 1995 «Information Technology - Software Life Cycle Processes». Он определяет структуру ЖЦ, содержащую процессы, действия и задачи, которые должны быть выполнены во время создания ПО (его российский аналог ГОСТ Р ИСО/МЭК 12207-99 введен в действие в июле 2000 г). В данном стандарте процесс определяется как совокупность взаимосвязанных действий, преобразующих некоторые входные данные в выход­ ные. Каждый процесс характеризуется определенными задачами и методами их решения, исходными данными, полученными от других процессов, и результатами.

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

В соответствии со стандартом ГОСТ Р ИСО/МЭК 12207-99 все процессы ЖЦ ПО разделены на три группы (рис. 1.1):

^ ШЕЕ Std 610.12 - 1990. IEEE Standard Glossary of Software Engineering Tenninology.

40

Глава 1

Основные процессы

Приобретение

Поставка

Эксплуа- 1 тация 1

Разра­

ботка

Сопровож- 1 дение 1

Вспомогательные

процессы

Документирование

Управление

конфигурацией

Обеспечение

качества

Верификация

Аттестация

Совместная

оценка

Аудит

Разрешение

проблем

Организационные процессы

Управление Создание инфраструктуры

Усовершенствование Обучение

Рис. 1.1. Процессы ГОСТ Р ИСО/МЭК 12207-99