АНОО ВПО

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

Систематический анализ начинают с отделения катионов 5 группы, действуя на исследуемый раствор раствором группового реагента (соляной кислотой), затем последовательно отделяются 4, 3 и 2 группы, и в маточном растворе остаются катионы только 1 группы.

Курс 5, группа 09-П

ЗИМНЕЙ СЕССИИ с “28” декабря 2013 г. по “11” января 2014 г.

УЧЕБНЫЙ ГРАФИК

АНОО ВПО

«Международный славянский институт» «УТВЕРЖДАЮ»

Калининградский филиалДиректор КФ МСИ, профессор, к.э.н

________________ В.Н. Марков

Факультет «Психологии»

Дисциплина Преподаватель Кол-во час сб вс пн вт ср чт пт сб вс пн вт ср чт пт сб
1. Физическая культура К.б.н. Ахмедова Н.Р.           1/2       1/2   3/4      
2. Дифференциальная психофизиология К.б.н. Савостин В.А.             3/4 3/4   3/4          
3. Психология рекламы Ст. преподаватель Моисеева В.Г.                         1/2 1/4  
4. Социальная психология личности К.псих.н. Кастерина Н.В.             1/2 1/2 1/2     1/2      

 

Будние дни: 30.12.2013; 31.12.2013; 9.01.14; 10.01.14 – ½ с 15-00 до 18-00, ¾ - с 18-00 до 21-00;Выходные дни:02.01.2014 - 08.01.2014 – ½ с 11-00 до 14-00, ¾ - с 14-00 до 17-00.

(28.12.2013, 29.12.2013, 11.01.2014 – ½ с 11-00 до 14-00, ¾ с 14-00 до 17-00)

 

 

Заместитель директора КФ МСИ, к.э.н., профессор _________________/И.А. Крамаренко/

 

Анализ таблицы 3: По кислотно-основной системе анализа катионов катионы металлов на основании их отношения к соляной и серной кислотам, к растворам едких щелочей и водного раствора аммиака делят на 6 аналитических групп.

При анализе этим методом, прежде всего действием карбоната натрия осаждают катионы 2-6 групп. В растворе определяют катионы 1 группы. Из новой порции исследуемого раствора действием соляной и серной кислот выделяют катионы 2 и 3 групп. Остальной раствор обрабатывают избытком гидроксида натрия. При этом в растворе остаются катионы 4 группы(образуются растворимые гидроксокомплексы), а в осадок переходят катионы 5 и 6 групп. Далее на полученный осадок действуют избытком аммиака. При этом катионы 6 группы переходят в раствор (образуются растворимые аммиачные комплексные соединения), катионы 5 группы остаются в осадке в виде гидроксидов.

Анализ таблицы 4: Аммиачно-фосфатная классификация основана на различной растворимости фосфатов катионов в кислотах, щелочах и водном растворе аммиака. При проведении систематического анализа по этой классификации, прежде всего действием азотной кислоты переводят поливалентные катионы в высшую степень окисления, затем отделяется катионы 5 группы. Действуя на фильтрат смесью азотной кислоты, гидрофосфата натрия и хлорида олова (IV) отделяют осадок содержащий катионы 4 группы. Из оставшегося маточного раствора действием гидрофосфата аммония в присутствии аммиака удаляются катионы 2 группы. Фильтрат содержит катионы 1 и 3 групп, которые не мешают обнаружению друг друга, при необходимости катионы 3 группы могут быть отделены действие карбоната натрия.

Использование любой из вышеприведенных классификаций должно сопровождаться предварительным обнаружением некоторых катионов дробными реакциями. Прежде всего должны быть обнаружены катионы, которые будут внесены в анализируемый раствор групповыми реагентами (NH4+, Na+), а также те катионы, которые подвергаются окислению в процессе обнаружения (Fe2+).

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

 

 

Таблица .

Классификация анионов

 

  группа  
 
    анионы  
SO42-, SO32-, S2O32-, C2O42-, CO32-, PO43-, AsO43-, AsO33-, SiO32-, B4O72-, F-, IO3-, IO4-, CrO42-, и др. Cl-, Br-, I-, CN-, SCN-, S2- , BrO3-, и др. NO3-, NO2-, ClO4-, CH3COO- и др.  
групповой реагент BaCl2 AgNO3 нет  
состав и свойства осадков Растворимые в кислотах соли бария (кроме BaSO4) Нерастворимые в присутствие разб. HNO3 соли серебра    

 

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

По окислительно-восстановительным свойствам анионы можно разделить на три группы. Первая группа - анионы-окислители: NO3-, NO2-, AsO43-, CrO42- Cr2O72-; вторая - анионы-восстановители: Cl-, Br-, I-, SO32-, S2O32-, C2O42-, AsO33-, S2-; третья – индифферентные анионы: SO42-, CO32-, PO43-, SiO32-, B4O72-, F-, CH3COO-. Если раствор содержит избыток окислителей, то в нем отсутствуют анионы-восстановители, которых не имеет смысла искать и наоборот, при наличии в растворе избытка анионов-восстановителей не имеет смысла обнаруживать анионы –окислители.

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

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

Требуется выяснить:

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

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

Этим задачам посвящена данная лекция.

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

Параллельное выполнение итераций

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

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

В рамках направления итеративного наращивания возможностей явно выделяется еще один вид технологического параллелизма: одновре­менная разработка нескольких итераций разными группами исполните­лей (словосочетание «разные группы» не надо понимать буквально — по существу, это групповые роли, и конкретная группа исполнителей вполне может одновременно отвечать за разработку сразу нескольких итераций). Однако из принципиальной осуществимости одновременной разработки нескольких итераций не следует разрешение их механического слияния. Причиной тому — зависимость работ последующей итерации от результа­тов предыдущей. К примеру, невозможно наращивание еще не построен­ной системы классов, нельзя использовать функцию с неизвестными ус­ловиями ее выполнения. Говоря о совмещении работ, нужно всегда пом­нить о подобных видах зависимости. Вопрос зависимости между работа ми в свое время мы еще рассмотрим, а пока ограничимся общими поло­жениями, достаточными для анализа возможностей параллельного вы­полнения итераций. Следует различать:

область недопустимого совмещения,когда выполнение одной работы непосредственно зависит от результатов другой;

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

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

Одновременность выполнения разных итераций можно представить в виде схем, показанных на рис. 10.1.

На рис. 10.1а приведена расшифровка этапов итераций. По сравнению с общей моделью (см. рис.9.1 и 9.2) здесь представлено более мелкое дроб­ление этапов: явно выделены планирование, которое для начальной итера­ции является частью общего этапа анализа осуществимости, и тестирование как перекрывающаяся часть общих этапов программирования и оценки.

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

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

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

Иллюстративные и инструментальные модели жизненного цикла

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

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

Однако реализация столь значительных требований к моделирова­нию жизненного цикла может приводить к потере наглядности модели. Это противоречие в принципе преодолимо в CASE-смете мах, если бы они строились с ориентацией на определенные типы моделей жизненного ци­кла. Но чаще всего их разработчики пытаются представлять системы для пользователей как универсальные, на все случаи жизни. А фиксирован­ный тип жизненного цикла препятствует универсальности. В результате обычно в CASE-системах модели жизненного цикла остаются иллюстра­тивными. Так, наиболее популярная сегодня методология RUP [30] (по данным статьи Р. Харитта, 51% программных систем разрабатываются в рамках использования этой методологии [35]) ориентируется исключи­тельно на иллюстративную модель, которая никак не связана с использо­ванием системы моделей UML. Подобное положение занимает и модель жизненного цикла MSF — шаблона проектирования, претендующего на универсальность. Мы еще будем иметь возможность в этом убедиться.

Инструментальность модели жизненного цикла — качество относи­тельное. Даже тогда, когда модель приспособлена для использования в ка­честве инструмента управления, менеджер не обязательно будет следовать деятельности, предписываемой инструментом. В результате инструмен­тальная модель используется как иллюстративная. С другой стороны, то, что для некоторой модели не разработаны CAS Е-средства, не означает, что они никогда не появятся и не обеспечат ее инструментального примене­ния. Поэтому имеет смысл рассматривать модели жизненного цикла с точ­ки зрения не реальной, а принципиальной возможности их инструмен­тального применения. Есть еще одна причина, из-за которой целесообраз­но такое рассмотрение: средства поддержки реального применения всегда выстраиваются вокруг конкретной методологии, предписывающей те или иные способы включения их в деятельность пользователя. В результате суть понятий заслоняется конкретными аспектами их воплощения.

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

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

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

3. Масштабируемость— возможность увидеть модель с разной степе­нью детализации, от охвата всего процесса и до конкретной работы.

4. Интегрированное™с другими инструментами поддержки. Это ка­чество не самой модели, а CASE-средств, совместно с которыми она используется. Мера, в которой модели обладают этими свойствами, может служить основой для сравнения их инструментальных возможностей.

Обсудим инструментальность ранее рассмотренных моделей (см. лекции 7—9). За исключением модифицированной модели фазы—функ­ции все они имеют отношение лишь к последовательному развитию про­ектов, а потому, в принципе, могут применяться в итеративных методоло­гиях лишь фрагментарно, т.е. на уровне отдельной итерации. Схемы, кото­рые мы обсуждали до каскадной модели, претендовали лишь на иллюстра­тивную роль. Поэтому заслуживают внимания лишь строгая каскадная модель и матрица фазы—функции. Обе они могут удовлетворить качеству расширяемости: блоки каскадной модели и линия жизненного цикла вполне пригодны для того, чтобы определять дополнительные самостоя­тельные и дополнительные вложенные этапы (этому вопросу мы еще уде­лим внимание). При этом, как было показано в лекции 8 и при построе­нии модифицированной модели Гантера в лекции 9. линия жизненного цикла может расщепляться, создавая основу для отражения технологиче­ского параллелизма (см. предыдущий раздел). Атрибутивность матрицы фазы—функции выше каскадной атрибутивности за счет явного выделе­ния функционального измерения. К тому же в каскадной модели не очень наглядно было бы показывать дополнительные атрибуты. Эта модель ориентирована на связи и контроль. Масштабируемость обеих моделей при­мерно одинакова, однако за счет того, что для каскадной модели сущест­вует достаточно много инструментов поддержки в рамках CASE-систем, пусть даже слабо интегрирующих ее с другим инструментарием, можно го­ворить о ее фактически более развитых средствах масштабирования.

Календарный план как модель жизненного цикла программного обеспечения

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

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

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

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

Распределение времени и контроль над ним — назначение столбцов 2 и 3. В них указываются календарные даты планируемого (столбец 2) и фактического (столбец 3) сроков выполнения работы, задачи или зада­ния. Планируемое начало работы — это самая ранняя дата, после которой можно приступать к выполнению; конец — это предельный срок отчета исполнителей перед менеджером. Иногда графа планируемых сроков до­полняется критическими и целесообразными сроками начала/конца ра­боты. Это позволяет менеджеру более внимательно следить за распреде­лением временных ресурсов.

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

Распределение технических ресурсов и задание сроков их предостав­ления — содержание столбца 5. Здесь указывается необходимая для выпол­нения задания техническая, а в ряде случаев и программная база. Иногда этот раздел дополняется сведениями о лицах, отвечающих за выполнение указываемых требований. Это удобно как для менеджера, так и для ответ­ственных исполнителей: наглядно видны нарушения поставок (несоответ­ствия между плановыми и фактическими сроками). Полезным расширени­ем состава сведений столбца 5 является включение в него информации о зависимости работ внутри проекта, т.е. перечисление заданий (в том числе ссылки на другие строки данного календарного плана), без выполнения ко­торых осуществимость планируемых работ нарушается. Отслеживание за­висимостей работ — это более содержательная задача выполнения проекта по сравнению с тем, что можно получить через только что указанное рас­ширение календарного плана, и ей в дальнейшем будет уделено внимание. Схема календарного плана пытается охватить все аспекты, которые нужно учитывать при выделении работ и отслеживании сроков их выпол­нения. Однако абсолютной точности здесь добиться не удается.

 


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

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

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

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

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

Атрибутивность календарного плана весьма относительна: если в календарный план кроме временных атрибутов и распределения кадро­вых ресурсов включать что-либо дополнительно, то он резко теряет на­глядность. Но для многих проектов этого достаточно. Его расширяе­мость — одно из основных преимуществ. Масштабируемость — слабое место этого инструмента. Интегрированность в принципе возможна, од­нако популярных систем, которые органично включают в себя календар­ные планы, нет.

Спираль развития

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

Теперь мы покажем, как этот недостаток можно исправить, причем почти без потери инструментальных качеств модели. Новая модель (см. рис. 10.3) исходит из ставшей классической спирали развития Буча, пред­ставленной еще в первом издании его книги в качестве иллюстративной модели [8]. Мы добавляем к ней систему координат «время—предостав­ляемые возможности», в которой размещаем итерации в виде горизон­тальных отрезков и переходы к следующим итерациям в виде вертикаль­но начинающихся линий итеративного зацикливания, которые ведут к началу очередной итерации. Линии, параллельные временной оси, ото­бражают уровни пользовательских возможностей, реализуемых на итера­циях (римскими цифрами обозначены номера итераций). У каждой ите­рации в новой модели указаны стандартные этапы, для обозначения ко­торых используются сокращения, принятые на рис. 10.1.

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

Спираль охвата предметной области

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

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

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

 

 

 

 

Модель расширения охвата прикладной области совсем не претен­дует на инструментальность. Поэтому обсуждать эти свойства для данной

модели мы не будем.

Инструментальная спиралевидная модель

Спираль, раскручивающаяся от центра, послужила основой для многочисленных вариаций на тему отражения в модели жизненного цик­ла итеративного развития проекта. По-видимому, первым предложил ее Боэм в [33]. В этой и в ряде последующих публикаций Боэм настоятельно рекомендует применять итеративное наращивание и использование прототипирования в качестве базовых методов развития программных про­ектов. По его мнению, эти методы успешно противостоят многим рискам при реализации программных проектов. Риски, итеративное наращива­ние и прототипирование — основа спиральной модели Боэма, один из ва­риантов которой мы приводим на рис. 10.5.

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

В квадрантах раскручивания спирали предусматриваются следую­щие действия (в описании их порядок соответствует движению по спира­ли от центра).

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

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

Оценка альтернативных вариантов, идентификация и разрешение рисков.

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

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

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

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

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

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

» Разработка и тестирование продукта на очередной итерации. В этом квадранте выполняются работы, которые имеют прямые ана­логи этапам традиционного последовательного развития проектов. Они могут быть разнесены по виткам спирали, если требуется про­вести исследование для некоторого аспекта проектируемой систе­мы. В этом случае рабочий продукт, который можно считать рели­зом, появляется, когда будут пройдены все витки, вложенные в ите­рацию (на рис. 10.5 показано, что выпуск релиза для данного проек­та запланирован на четвертом витке).

Принципиально, что работы в данном квадранте начинаются с ве­рификации и аттестации прототипных решений (сектор «Имита­ция, моделирование, аттестация»). Только после преодоления этого барьера разрешается дальнейшее движение по спирали. Это позво­ляет быть уверенным, что процесс организован должным образом и удастся избежать хаоса, что принимаемые решения удовлетворяют соответствующие потребности, что нет случайных решений. Результаты прототипирования на всех витках одной итерации вы­страивают продвижение разработки в направлении получения про­дукта, предъявляемого заказчику. Само предъявление может быть порционным, т.е. разбитым на части, относящиеся к виткам. На по­следнем витке итерации принимается решение о том, что релиз как продукт разработки готов к передаче в эксплуатацию.

Планирование следующей итерации.

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

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

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

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

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

 

 

Вариант 1

1. Виды параллелизма выполнения проекта, которые выра­жаются в развитых моделях жизненного цикла:

□ одновременное выполнение работ разными исполнителями

□ одновременное выполнение производственных функций

□ совместная работа на смежных этапах

□ частичное совмещение выполнения итераций

□ ролевое распределение работ

2. Модель жизненного цикла является инструментальной,

если:

□ она служит основой для организации проектных работ

□ она дает полную картину процесса разработки и развития проекта

□ имеется принципиальная возможность перехода от модели к

работам этапов

□ имеется принципиальная возможность с помощью модели от­слеживать историю развития проекта

□ инструментальные средства декомпозиции проекта согласова­ны с разбиением жизненного цикла на этапы

3. Основой спиральной модели Боэма является следующее:

□ выделение квадрантов плоскости, каждый из которых отвечает
за определенный круг проектных работ

□ распределение ресурсов проекта

□ прототипирование как способ решения проблем и выбора вариантов для минимизации рисков

□ анализ рисков как способ выявления проблем проекта, требу­ющих решения на основе прототипирования

□ привлечение заказчика к процедуре выбора перспектив разви­тия проекта

 

Вариант 2

1. Ограничение на совмещение выполнения итераций связано:

□ с ограниченностью ресурсов проекта

□ с планами, которые предписывают упорядоченность работ

□ с последовательным ростом понимания пользовательских по­требностей разработчиками

□ с трудностями контроля параллельно выполняемых работ

□ с зависимостями между итерациями

2. Почему CASE-системы обычно не поддерживают инструментальность моделей жизненного цикла?

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

□ сфера их применения не охватывает этапы жизненного цикла

□ они ориентируются на поддержку тех видов деятельности раз­работчиков проекта, для которых это не требуется

□ моделирование жизненного цикла в любом проекте нужно
только для демонстрации стратегии разработки

□ сочетание поддержки инструментальное™ моделей жизненно­
го цикла и конкретного производства программного обеспечения недостижимо

3. Оценка альтернативных вариантов, идентификация и раз­
решение рисков — это:

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

□ процедура выявления и ранжирования вариантов решений и
рискованных ситуаций

□ этапы жизненного цикла модели Боэма, связанные с задачами
анализа рисков и построением прототипов

□ метод выявления предпочтительных вариантов развития про­екта в модели Боэма

Q совокупность всех проектных работ, имеющих целью выявить предпочтительные варианты развития проекта в модели Боэма

 

«Международный славянский институт» «УТВЕРЖДАЮ»

Калининградский филиалДиректор КФ МСИ, профессор, к.э.н

________________ В.Н. Марков