24.3.1. Модель сосомо
Существует целый ряд алгоритмических моделей для прогнозирования затрат и себестоимости, а также создания графика работ для программных проектов. Принципиально они между собой не отличаются, хотя используют значения разных параметров. Модель СОСОМО (Constructive COst MOdel - конструктивная стоимостная модель) - основана на опыте реализации многих программных проектов. Она создана путем сбора данных о большом количестве проектов и анализа этой информации, в результате чего получены формулы, наилучшим образом аппроксимирующие имеющиеся данные.
1. Эта модель имеет хорошую техническую документацию, общедоступна, существуют коммерческие программные средства ее поддержки.
2. Модель популярна и ценится среди широкого круга пользователей.
3. Она прошла достаточно долгий путь развития со времени первого появления в 1981 году, была усовершенствована для разработки ПО на языке Ada, последняя версия модели опубликована в 2000 году.
Модель СОСОМО в первом варианте (известном сейчас как СОСОМО 81) имела трехуровневую структуру, где уровни определяли сложность анализа себестоимости. На первом (или базовом) уровне проводилась начальная грубая оценка, на втором уровне эта оценка уточнялась путем применения различных множителей, учитывающих особенности проекта и технологии разработки ПО, самый сложный уровень дает возможность рассчитать себестоимость для разных стадий проекта. В табл. 24.5 показаны основные формулы модели СОСОМО для проектов с различной степенью сложности. Здесь множитель М идентичен тому, который будет описан далее для СОСОМО 2.
Моделью СОСОМО 81 предусмотрена разработка программного обеспечения в соответствии с каскадной моделью, причем предполагается, что большая часть системы разрабатывается "с нуля". Однако со времени первой версии данной модели было сделано несколько фундаментальных изменений в целях ее усовершенствования. Теперь модель допускает производство ПО путем компоновки повторно используемых компонентов, связывая их между собой с помощью какого-либо языка сценариев. Сегодня прототипирование и пошаговая разработка – наиболее распространенные модели создания программного продукта. Во многих случаях используются серийные компоненты, доступные на рынке программных продуктов. Кроме того, существующие программы модифицируются в целях создания нового программного обеспечения. Поддержка CASE-средств уже стала доступной для многих видов работ по созданию ПО.
Таблица 24.5. Модель СОСОМО 81
Сложность проекта | Формула* | Описание |
Простой проект | РМ = 2.4 (KDSI)1.05 х М | Простые проекты для небольших команд разработчиков |
Средней сложности | РМ = 3.0 (KDSI)1.12 х М | Более сложные проекты, при разработке которых члены команды могут ощущать нехватку опыта и знаний соответствующих систем |
Проект встроенной системы | РМ = 3.6 (KDSI)1.20 х М | Сложные проекты, где ПО является частью комплекса аппаратных и программных средств, других технических механизмов и устройств |
* В этих формулах РМ (от Person-Months) обозначает человеко-месяцы, KDSI (от thousand (Kilo-) of Delivered Source Instructions) - количество инструкций (в тысячах) в конечной программе (общепринятая единица измерения объема работ по программированию).
Принимая во внимание все эти изменения, модель СОСОМО 2 допускает самые разнообразные подходы к процессу разработки программных продуктов: прототипирование, сборку систем из отдельных компонентов, использование языков программирования четвертого поколения и т.д. Но теперь уровни модели не только отображают возрастающую сложность определения себестоимости разработки ПО, но и учитывают этапы работы над программой, что позволяет провести предварительную оценку себестоимости на ранних этапах выполнения проекта с последующей ее детализацией после определения архитектуры системы.
Модель СОСОМО 2 охватывает три описанных ниже уровня:
1. Уровень предварительного прототипирования. Для определения необходимых затрат осуществляется оценка размера системы на основе объектных точек прототипа с помощью простой формулы "размер-производительность".
2. Уровень предварительного проектирования. Этот уровень предусматривает окончание работы над системными требованиями и, возможно, над начальным проектом архитектуры программы. Оценка затрат на этом уровне основана на функциональных точках, которые затем пересчитываются в количество строк кода программ. Здесь используются формулы, подобные описанным выше, с соответствующим набором множителей.
3. Постархитектурный уровень. После разработки архитектуры системы существует реальная возможность достаточно точно оценить размер программы. Однако оценка на этом уровне уже будет включать более расширенный ассортимент множителей, которые должны отражать возможности персонала, а также характеристики создаваемого программного продукта и проекта в целом.
Уровень предварительного прототипирования
Этот уровень был введен в модель СОСОМО для оценки затрат на прототипирование проектов, а также для тех проектов, в которых программное обеспечение разрабатывалось путем сборки уже существующих компонентов. Здесь оценка затрат основана на подсчете взвешенных объектных точек, деленных на стандартное значение производительности. Производительность зависит от опыта и способностей разработчика, а также от возможностей CASE-средств, используемых для поддержки процесса разработки. В табл. 24.6. показаны различные уровни производительности, которые были предложены разработчиками модели.
Таблица 24.6. Производительность, выраженная в объектных точках
Опыт и возможности программиста | Очень низкие | Низкие | Средние | Высокие | Очень высокие |
Уровень и возможности CASE-средств
| Очень низкие | Низкие | Средние | Высокие | Очень высокие |
Производительность (количество объектных точек в месяц) | 4 | 7 | 13 | 25 | 50 |
На этом уровне повторное использование компонентов не редкость, поэтому прогнозируемое количество объектных точек должно учитывать процентное соотношение (долю) повторного использования компонентов (далее обозначено как % многократного использования). Таким образом, формула для предварительного определения объема работ будет выглядеть следующим образом:
РМ = (NOP х (1 – % многократного использования/100))/ PROD.
Здесь РМ – это затраты, выраженные в человеко-месяцах, NOP – количество объектных точек, a PROD – производительность, как показано в табл. 24.6.
Уровень предварительного проектирования
На этом этапе оценка основана на стандартной формуле алгоритмических моделей, а именно:
затраты = А х размер 8 х М.
Основываясь на собственном банке данных, Боэм (Boehm) предложил значение коэффициента А принять равным 2.5, если оценка осуществляется на этом уровне. Размер системы выражается в KSLOC, что означает количество строк программного кода в тысячах. Он определяется путем подсчета количества функциональных точек в программе и перевода их в KSLOC с помощью стандартных таблиц, которые определяют соотношение размера программы с функциональными точками для различных языков программирования. Эта оценка размера применима скорее к кодам, написанным вручную, нежели к генерированным или повторно используемым.
Показатель степени В отражает затраты, которые увеличиваются по мере увеличения размера проекта. Это не постоянная величина, как в предыдущей версии модели СОСОМО, она изменяется от 1.1 до 1.24, что зависит от того, насколько новаторским является данный проект, от гибкости процесса разработки ПО, от применяемых процессов управления рисками, сплоченности команды программистов и уровня управления организацией-разработчиком.
Множитель М является произведением семи показателей, характеризующих проект и процесс создания ПО, а именно: надежность и уровень сложности разрабатываемой системы (RCPX), повторное использование компонентов (RUSE), сложность платформы разработки (PDIF), возможности персонала (PERS), опыт персонала (PREX), график работ (SCED) и средства поддержки (FCIL). Это позволяет провести оценивание по шестибалльной шкале, где число 1 будет соответствовать самым малым значениям этих показателей, а число 6 - самым высоким значениям. С другой стороны, их можно вычислить путем комбинирования значений более детализированных показателей, которые используются на постархитектурном уровне.
Таким образом, оценка затрат вычисляется по следующей формуле:
РМ = А х размер 8 х М + РМm,
где М = PERS x RCPX x RUSE x PDIF x PREX x FCIL x SCED.
Последнее слагаемое в формуле (PMm) обозначает фактор, используемый в случаях, когда значительная часть кода генерируется автоматически. При этом часть кода всегда требуется вводить вручную, но уровень производительности все равно будет выше, чем при полностью ручном вводе. Затраты РМm рассчитываются отдельно по приведенной ниже формуле, а затем добавляются к оценке затрат на введенный вручную код.
PMm = (ASLOC x (AT/100))/ ATPROD,
где ASLOC- это количество строк кода, произведенных автоматическим способом, ATPROD - уровень производительности автоматической генерации кода. Однако следует заметить, что требуется также выполнение определенных работ для согласования сгенерированного кода с остальной частью системы. Объем этих работ зависит от процента автоматически сгенерированного кода во всей системе (коэффициент AT). Фактически производительность зависит от количества созданных программных модулей. Чем меньше объем сгенерированного кода, тем больший объем работ необходим для интеграции его с другими кодами системы.
Постархитектурный уровень
Для получения оценки на постархитектурном уровне используется такая же формула, как и для оценки на уровне предварительного проектирования. На этом уровне оценка будет более точной, для предварительной оценки затрат будут использоваться уже не семь, а семнадцать показателей.
Здесь при оценке количества строк программного кода учитываются два важных фактора.
• Возможность изменения системных требований. Следует учитывать повторные работы, которые необходимо выполнить вследствие изменения системных требований. Оценка этих работ выражается в количестве строк программного кода, которое необходимо изменить, и затем прибавляется к предварительной оценке размера системы.
• Степень повторного использования компонентов. Если степень повторного использования программных компонентов значительна, в оценку количества строк разрабатываемого кода необходимо внести поправки. Однако в [309] показано, что расходы на повторное использование компонентов не всегда линейно зависят от размера этих компонентов, так как требуют затрат на их подбор и на то, чтобы разобраться с их возможностями и интерфейсами; кроме того, могут потребоваться затраты на внесение изменений в эти компоненты.
Оценка затрат на повторное использование компонентов в модели СОСОМО 2 рассчитывается по следующей формуле:
ESLOC = ASLOC (АА + SU + 0.4 DM + 0.3 СМ + 0.3 1М)/100.
Здесь ESLOC – количество строк нового кода, ASLOC – количество строк повторно используемого кода, требующего изменений, DM – процент изменений в архитектуре системы, СМ – процент измененного кода, a IM – процент затрат на интеграцию повторно используемого программного обеспечения. Коэффициент SU зависит от затрат на адаптацию повторно используемых программных компонентов и колеблется в пределах от 50 (для сложного неструктурированного кода) до 10 (для грамотно написанного объектно-ориентированного кода). Коэффициент АА отображает затраты на начальную оценку возможности повторного использования компонентов. Его значение колеблется от 0 до 8. Показатель степени в формуле расчета затрат в модели СОСОМО 1 имеет три возможных значения, которые соотносятся с различными уровнями сложности проекта. С возрастанием уровня сложности проекта увеличивается значимость размера системы. Однако отрицательный эффект размера системы можно нивелировать с помощью организационных мероприятий, что учтено в модели СОСОМО 2. Здесь показатель степени рассчитывается с учетом пяти показателей, которые описаны в табл. 24.7. Они отсчитываются по шестибалльной шкале от низшего (5 баллов) до наивысшего (0 баллов) уровня. Значения показателей суммируются, сумма делится на 100, результат прибавляется к числу 1.01, после чего получается значение показателя степени.
Таблица 24.7. Показатели, используемые при расчете показателя степени в модели СОСОМО 2
Показатель | Пояснение |
Новизна проекта | Отображает предыдущий опыт организации в реализации проектов данного типа. Очень низкий уровень этого показателя означает отсутствие опыта, наивысший уровень указывает на компетентность организации-разработчика в данной области ПО |
Гибкость процесса разработки | Отображает возможность изменения процесса разработки ПО. Очень низкий уровень этого показателя означает, что процесс определен заказчиком заранее, наивысший – заказчик определил лишь общие задачи без указания конкретной технологии процесса разработки ПО |
Анализ архитектуры системы и рисков | Отображает степень детализации анализа рисков, основанного на анализе архитектуры системы. Очень низкий уровень данного показателя соответствует поверхностному анализу рисков, наивысший уровень означает, что был проведен тщательный и полный анализ всевозможных рисков |
Сплоченность команды | Отображает степень сплоченности команды и их способность работать совместно. Очень низкий уровень этого показателя означает, что взаимоотношения в команде сложные, а наивысший – что команда сплоченная и эффективная в работе, не имеет проблем во взаимоотношениях |
Уровень развития процесса разработки | Отображает уровень развития процесса создания ПО в организации-разработчике. Оценка этого показателя основывается на вопроснике модели СММ |
Приведем пример. Предположим, организация-разработчик выполняет программный проект в той области, в которой у нее мало опыта разработок. Заказчик ПО не определил технологический процесс, который будет использовать при создании программного продукта, а также не выделил в плане работ времени на анализ возможных рисков. Для создания программной системы необходимо сформировать новую команду специалистов. Организация-разработчик недавно привела в действие программу усовершенствования технологического процесса разработки ПО и может котироваться как организация второго уровня в соответствии с моделью оценки уровня развития СММ.
Для оценки показателя степени используются перечисленные ниже показатели проекта.
1. Новизна проекта. Это новый проект для организации, данный показатель имеет низкий уровень (оценивается в 4 балла).
2. Гибкость процесса разработки. Нет вмешательства заказчика – уровень показателя очень высокий (оценивается в 1 балл).
3. Анализ архитектуры системы и рисков. Анализ не был проведен – уровень данного показателя очень низкий (оценивается в 5 баллов).
4. Сплоченность команды. Команда разработчиков новая, информация о ней отсутствует – уровень этого показателя оценивается как обычный (3 балла).
5. Уровень развития процесса разработки. Определенное управление проектом имеет место – показатель оценивается как обычный (3 балла).
Сумма значений всех этих показателей составляет 16 баллов, поэтому значение показателя степени будет равно 1.17.
Проектные характеристики, используемые для уточнения предварительной оценки затрат на постархитектурном уровне (табл. 24.8), разбиваются на четыре группы.
1. Характеристики программного продукта, которые определяются системными требованиями.
2. Характеристики аппаратных средств, представляющие собой ограничения, накладываемые на разрабатываемое ПО выбранной платформой вычислительных средств.
3. Характеристики персонала, которые учитывают опыт и возможности специалистов, работающих над проектом.
4. Характеристики проекта, учитывающие определенные параметры и показатели проекта разработки ПО.
Таблица 24.8. Проектные характеристики, формирующие стоимость проекта
Характеристики программного продукта | |
RELY | Требуемая надежность системы |
CPLX | Сложность системных модулей |
DOCU | Объем необходимой документации |
DATA | Размер используемой базы данных |
RUSE | Процент повторного использования компонентов |
Характеристики аппаратных средств | |
TIME | Показатели, ограничивающие время исполнения |
PVOL | Возможность изменения платформы разработки |
STOR | Ограничение объема памяти |
Характеристики персонала | |
АСАР | Способности лиц, выполняющих анализ проекта |
PCON | Сплоченность команды разработчиков |
РЕХР | Опыт программирования в данной области ПО |
РСАР | Способности программистов |
АЕХР | Опыт аналитика проекта в данной области ПО |
LTEX | Опыт применения данного языка программирования и средств разработки |
Характеристики проекта | |
TOOL | Использование вспомогательных программных средств |
SCED | Уплотнение графика работ |
SITE | Количество работ, выполняемых в разных местах, и качество коммуникаций |
В табл. 24.9 показан пример того, каким образом эти характеристики влияют на предварительную оценку затрат. Показатель степени 1.17, полученный в предыдущем примере, RELY, CPLX, STOR, TOOL и SCED являются основными характеристиками, формирующими стоимость проекта. Все другие характеристики имеют значение 1, поэтому не влияют на оценку затрат.
Таблица 24.9. Расчет оценки затрат
Значение показателя степени | 1.17 |
Размер системы (с учетом повторного использования компонентов и возможного изменения требований) | 128 000 DSI* |
Начальная оценка по модели СОСОМО без учета проектных характеристик | 730 человеко-месяцев |
Надежность системы | Очень высокая, множитель 1.39 |
Сложность системных модулей | Очень высокая, множитель 1.3 |
Ограничение объема памяти | Высокое, множитель 1.21 |
Использование вспомогательных средств | Низкое, множитель 1.12 |
График работ | Ускоренный, множитель 1.29 |
Уточненная оценка по модели СОСОМО | 2306 человеко-месяцев |
Надежность системы | Очень низкая, множитель 0.75 |
Сложность системных модулей | Очень низкая, множитель 0.75 |
Ограничение объема памяти | Нет, множитель 1 |
Использование вспомогательных средств | Очень высокое, множитель 0.72 |
График работ | Нормальный, множитель 1 |
Уточненная оценка по модели СОСОМО | 295 человеко-месяцев |
* DSI (Delivered Source Instructions) - количество инструкций в конечной программе.
В этом примере присваивается максимальные и минимальные значения ключевым характеристикам с тем, чтобы показать, каким образом они влияют на оценку затрат. Значения были взяты из руководства по модели СОСОМО 2. Высокие значения для характеристик, влияющих на формирование стоимости, привели к увеличению оценки затрат более чем в три раза, тогда как при низких значениях оценка затрат была снижена почти в три раза по сравнению с начальной. Этот пример показывает отличия разных типов проектов, а также трудности переноса опыта разработок из одной области ПО в другую.
Хотя формула, предложенная разработчиками модели СОСОМО, отображает их опыт разработчиков и основана на большой базе данных, что эта модель излишне сложна для практического использования. Слишком много показателей необходимо учитывать и слишком широкие рамки для определения их значений. Таким образом, каждый, кто хочет воспользоваться этой моделью, должен выверить и приспособить ее к своим данным, накопленным при реализации предыдущих проектов, так как именно они дадут информацию о тех частных обстоятельствах, которые могут оказать влияние на ход выполнения данного проекта. Некоторые организации накопили достаточно информации о прошлых проектах в той форме, которая способна проверить и настроить модель СОСОМО.
- З курсу
- З курсу
- Содержание
- Часть I. Инженерные основы программного обеспечения 10
- Часть II. Требования к программному обеспечению 33
- Часть III. Моделирование программного обеспечения 52
- Часть IV. Технологии разработки программного обеспечения 124
- Часть V. Письменная коммуникация. Документирование проекта Программного обеспечения 145
- Часть VI. Управление проектом программного обеспечения 192
- Предисловие
- Часть I. Инженерные основы программного обеспечения
- 1. Введение в программную инженерию
- 1.1. Вопросы и ответы об инженерии программного обеспечения
- 1.2. Профессиональные и этические требования к специалистам по программному обеспечению
- 2. Системотехника вычислительных систем
- 2.1. Интеграционные свойства систем
- 2.2. Система и ее окружение
- 2.3. Моделирование систем
- 2.4. Процесс создания систем
- 2.5. Приобретение систем
- 3. Процесс создания программного обеспечения
- 3.1. Модели процесса создания программного обеспечения
- 3.2. Итерационные модели разработки программного обеспечения
- 3.3. Спецификация программного обеспечения
- 3.4. Проектирование и реализация программного обеспечения
- 3.5. Эволюция программных систем
- 3.6. Автоматизированные средства разработки программного обеспечения
- 4. Технологии производства программного обеспечения
- Часть II. Требования к программному обеспечению
- 5. Требования к программному обеспечению
- 5.1. Функциональные и нефункциональные требования
- 5.2. Пользовательские требования
- 5.3. Системные требования
- 5.4. Документирование системных требований
- 6. Разработка требований
- 6.1. Анализ осуществимости
- 6.2. Формирование и анализ требований
- 6.3. Аттестация требований
- 6.4. Управление требованиям
- 7. Матрица требований. Разработка матрицы требований
- Часть III. Моделирование программного обеспечения
- 8. Архитектурное проектирование
- 8.1. Структурирование системы
- 8.2. Модели управления
- 8.3. Модульная декомпозиция
- 8.4. Проблемно-зависимые архитектуры
- 9. Архитектура распределенных систем
- 9.1. Многопроцессорная архитектура
- 9.2. Архитектура клиент/сервер
- 9.3. Архитектура распределенных объектов
- 9.4. Corba
- 10. Объектно-ориентированное проектирование
- 10.1. Объекты и классы объектов
- 10.2. Процесс объектно-ориентированного проектирования
- 10.2.1. Окружение системы и модели ее использования
- 10.2.2. Проектирование архитектуры
- 10.2.3. Определение объектов
- 10.2.4. Модели архитектуры
- 10.2.5. Специфицирование интерфейсов объектов
- 10.3. Модификация системной архитектуры
- 11. Проектирование систем реального времени
- 11.1. Проектирование систем реального времени
- 11.2. Управляющие программы
- 11.3. Системы наблюдения и управления
- 11.4. Системы сбора данных
- 12. Проектирование с повторным использованием компонентов
- 12.1. Покомпонентная разработка
- 12.2. Семейства приложений
- 12.3. Проектные паттерны
- 13. Проектирование интерфейса пользователя
- 13.1. Принципы проектирования интерфейсов пользователя
- 13.2. Взаимодействие с пользователем
- 13.3. Представление информации
- 13.4. Средства поддержки пользователя
- 13.5. Оценивание интерфейса
- Часть IV. Технологии разработки программного обеспечения
- 14. Жизненный цикл программного обеспечения: модели и их особенности
- 14.1. Каскадная модель жизненного цикла
- 14.2. Эволюционная модель жизненного цикла
- 14.2.1. Формальная разработка систем
- 14.2.2. Разработка программного обеспечения на основе ранее созданных компонентов
- 14.3. Итерационные модели жизненного цикла
- 14.3.1 Модель пошаговой разработки
- 14.3.2 Спиральная модель разработки
- 15. Методологические основы технологий разработки программного обеспечения
- 16. Методы структурного анализа и проектирования программного обеспечения
- 17. Методы объектно-ориентированного анализа и проектирования программного обеспечения. Язык моделирования uml
- Часть V. Письменная коммуникация. Документирование проекта Программного обеспечения
- 18. Документирование этапов разработки программного обеспечения
- 19. Планирование проекта
- 19.1 Уточнение содержания и состава работ
- 19.2 Планирование управления содержанием
- 19.3 Планирование организационной структуры
- 19.4 Планирование управления конфигурациями
- 19.5 Планирование управления качеством
- 19.6 Базовое расписание проекта
- 20. Верификация и аттестация программного обеспечения
- 20.1. Планирование верификации и аттестации
- 20.2. Инспектирование программных систем
- 20.3. Автоматический статический анализ программ
- 20.4. Метод "чистая комната"
- 21. Тестирование программного обеспечения
- 21.1. Тестирование дефектов
- 21.1.1. Тестирование методом черного ящика
- 21.1.2. Области эквивалентности
- 21.1.3. Структурное тестирование
- 21.1.4. Тестирование ветвей
- 21.2. Тестирование сборки
- 21.2.1. Нисходящее и восходящее тестирование
- 21.2.2. Тестирование интерфейсов
- 21.2.3. Тестирование с нагрузкой
- 21.3. Тестирование объектно-ориентированных систем
- 21.3.1. Тестирование классов объектов
- 21.3.2. Интеграция объектов
- 21.4. Инструментальные средства тестирования
- Часть VI. Управление проектом программного обеспечения
- 22. Управление проектами
- 22.1. Процессы управления
- 22.2. Планирование проекта
- 22.3. График работ
- 22.4. Управление рисками
- 23. Управление персоналом
- 23.1. Пределы мышления
- 23.1.1. Организация человеческой памяти
- 23.1.2. Решение задач
- 23.1.3. Мотивация
- 23.2. Групповая работа
- 23.2.1. Создание команды
- 23.2.2. Сплоченность команды
- 23.2.3. Общение в группе
- 23.2.4. Организация группы
- 23.3. Подбор и сохранение персонала
- 23.3.1. Рабочая среда
- 23.4. Модель оценки уровня развития персонала
- 24. Оценка стоимости программного продукта
- 24.1. Производительность
- 24.2. Методы оценивания
- 24.3. Алгоритмическое моделирование стоимости
- 24.3.1. Модель сосомо
- 24.3.2. Алгоритмические модели стоимости в планировании проекта
- 24.4. Продолжительность проекта и наем персонала
- 25. Управление качеством
- 25.1. Обеспечение качества и стандарты
- 25.1.1. Стандарты на техническую документацию
- 25.1.2. Качество процесса создания программного обеспечения и качество программного продукта
- 25.2. Планирование качества
- 25.3. Контроль качества
- 25.3.1. Проверки качества
- 25.4. Измерение показателей программного обеспечения
- 25.4.1. Процесс измерения
- 25.4.2. Показатели программного продукта
- 26. Надежность программного обеспечения
- 26.1. Обеспечение надежности программного обеспечения
- 26.1.1 Критические системы
- 26.1.2. Работоспособность и безотказность
- 26.1.3. Безопасность
- 26.1.4. Защищенность
- 26.2. Аттестация безотказности
- 26.3. Гарантии безопасности
- 26.4. Оценивание защищенности программного обеспечения
- 27. Совершенствование производства программного обеспечения
- 27.1. Качество продукта и производства
- 27.2. Анализ и моделирование производства
- 27.2.1. Исключения в процессе создания по
- 27.3. Измерение производственного процесса
- 27.4. Модель оценки уровня развития
- 27.4.1. Оценивание уровня развития
- 27.5. Классификация процессов совершенствования