- •Введение
- •От издательства
- •ГЛАВА 1. Организация процесса конструирования
- •Определение технологии конструирования программного обеспечения
- •Классический жизненный цикл
- •Макетирование
- •Стратегии конструирования ПО
- •Инкрементная модель
- •Быстрая разработка приложений
- •Спиральная модель
- •Компонентно-ориентированная модель
- •Тяжеловесные и облегченные процессы
- •ХР-процесс
- •Модели качества процессов конструирования
- •Контрольные вопросы
- •ГЛАВА 2. Руководство программным проектом
- •Процесс руководства проектом
- •Начало проекта
- •Измерения, меры и метрики
- •Процесс оценки
- •Анализ риска
- •Планирование
- •Трассировка и контроль
- •Планирование проектных задач
- •Размерно-ориентированные метрики
- •Функционально-ориентированные метрики
- •Выполнение оценки в ходе руководства проектом
- •Выполнение оценки проекта на основе LOC- и FP-метрик
- •Конструктивная модель стоимости
- •Модель композиции приложения
- •Модель раннего этапа проектирования
- •Модель этапа постархитектуры
- •Предварительная оценка программного проекта
- •Анализ чувствительности программного проекта
- •Сценарий понижения зарплаты
- •Сценарий наращивания памяти
- •Сценарий использования нового микропроцессора
- •Сценарий уменьшения средств на завершение проекта
- •Контрольные вопросы
- •Ошибки
- •Стоимость
- •Выполнение операции не изменяет состояния объекта
- •Проблема
- •Читать карту клиента
- •ГЛАВА 3. Классические методы анализа
- •Структурный анализ
- •Диаграммы потоков данных
- •Описание потоков данных и процессов
- •Расширения для систем реального времени
- •Расширение возможностей управления
- •Модель системы регулирования давления космического корабля
- •Методы анализа, ориентированные на структуры данных
- •Метод анализа Джексона
- •Методика Джексона
- •Шаг объект-действие
- •Шаг объект-структура
- •Шаг начального моделирования
- •Контрольные вопросы
- •ГЛАВА 4. Основы проектирования программных систем
- •Особенности процесса синтеза программных систем
- •Особенности этапа проектирования
- •Структурирование системы
- •Моделирование управления
- •Декомпозиция подсистем на модули
- •Модульность
- •Информационная закрытость
- •Связность модуля
- •Функциональная связность
- •Информационная связность
- •Коммуникативная связность
- •Процедурная связность
- •Временная связность
- •Логическая связность
- •Связность по совпадению
- •Определение связности модуля
- •Сцепление модулей
- •Сложность программной системы
- •Характеристики иерархической структуры программной системы
- •Контрольные вопросы
- •ГЛАВА 5. Классические методы проектирования
- •Метод структурного проектирования
- •Типы информационных потоков
- •Проектирование для потока данных типа «преобразование»
- •Проектирование для потока данных типа «запрос»
- •Диаграмма потоков данных
- •Метод проектирования Джексона
- •Доопределение функций
- •Учет системного времени
- •Контрольные вопросы
- •ГЛАВА 6. Структурное тестирование программного обеспечения
- •Основные понятия и принципы тестирования ПО
- •Тестирование «черного ящика»
- •Тестирование «белого ящика»
- •Особенности тестирования «белого ящика»
- •Способ тестирования базового пути
- •Потоковый граф
- •Цикломатическая сложность
- •Шаги способа тестирования базового пути
- •Способы тестирования условий
- •Тестирование ветвей и операторов отношений
- •Способ тестирования потоков данных
- •Тестирование циклов
- •Простые циклы
- •Вложенные циклы
- •Объединенные циклы
- •Неструктурированные циклы
- •Контрольные вопросы
- •ГЛАВА 7. Функциональное тестирование программного обеспечения
- •Особенности тестирования «черного ящика»
- •Способ разбиения по эквивалентности
- •Способ анализа граничных значений
- •Способ диаграмм причин-следствий
- •Контрольные вопросы
- •ГЛАВА 8. Организация процесса тестирования программного обеспечения
- •Методика тестирования программных систем
- •Тестирование элементов
- •Тестирование интеграции
- •Нисходящее тестирование интеграции
- •Восходящее тестирование интеграции
- •Сравнение нисходящего и восходящего тестирования интеграции
- •Тестирование правильности
- •Системное тестирование
- •Тестирование восстановления
- •Тестирование безопасности
- •Стрессовое тестирование
- •Тестирование производительности
- •Искусство отладки
- •Контрольные вопросы
- •ГЛАВА 9. Основы объектно-ориентированного представления программных систем
- •Принципы объектно-ориентированного представления программных систем
- •Абстрагирование
- •Инкапсуляция
- •Модульность
- •Иерархическая организация
- •Объекты
- •Общая характеристика объектов
- •Виды отношений между объектами
- •Связи
- •Видимость объектов
- •Агрегация
- •Классы
- •Общая характеристика классов
- •ПРИМЕЧАНИЕ
- •Виды отношений между классами
- •Ассоциации классов
- •Наследование
- •Полиморфизм
- •Агрегация
- •Зависимость
- •Конкретизация
- •Контрольные вопросы
- •ГЛАВА 10. Базис языка визуального моделирования
- •Унифицированный язык моделирования
- •Предметы в UML
- •Отношения в UML
- •Диаграммы в UML
- •Механизмы расширения в UML
- •Контрольные вопросы
- •ГЛАВА 11. Статические модели объектно-ориентированных программных систем
- •Вершины в диаграммах классов
- •Свойства
- •ПРИМЕЧАНИЕ
- •Операции
- •Организация свойств и операций
- •Множественность
- •Отношения в диаграммах классов
- •Деревья наследования
- •Примеры диаграмм классов
- •Контрольные вопросы
- •Моделирование поведения программной системы
- •Диаграммы схем состояний
- •Действия в состояниях
- •Условные переходы
- •Вложенные состояния
- •Диаграммы деятельности
- •Диаграммы взаимодействия
- •Диаграммы сотрудничества
- •Диаграммы последовательности
- •Диаграммы Use Case
- •Актеры и элементы Use Case
- •Отношения в диаграммах Use Case
- •Работа с элементами Use Case
- •Спецификация элементов Use Case
- •Главный поток
- •Подпотоки
- •Альтернативные потоки
- •Пример диаграммы Use Case
- •Построение модели требований
- •Расширение функциональных возможностей
- •Кооперации и паттерны
- •Паттерн Наблюдатель
- •Паттерн Компоновщик
- •Паттерн Команда
- •Бизнес-модели
- •Контрольные вопросы
- •ГЛАВА 13. Модели реализации объектно-ориентированных программных систем
- •Компонентные диаграммы
- •Компоненты
- •Интерфейсы
- •Компоновка системы
- •Разновидности компонентов
- •Использование компонентных диаграмм
- •Моделирование программного текста системы
- •Моделирование реализации системы
- •Основы компонентной объектной модели
- •Организация интерфейса СОМ
- •Unknown — базовый интерфейс COM
- •Серверы СОМ-объектов
- •Преимущества COM
- •Работа с СОМ-объектами
- •Создание СОМ-объектов
- •Повторное использование СОМ-объектов
- •Маршалинг
- •IDL-описаниеи библиотека типа
- •Диаграммы размещения
- •Узлы
- •Использование диаграмм размещения
- •Контрольные вопросы
- •ГЛАВА 14. Метрики объектно-ориентированных программных систем
- •Метрические особенности объектно-ориентированных программных систем
- •Локализация
- •Инкапсуляция
- •Информационная закрытость
- •Наследование
- •Абстракция
- •Эволюция мер связи для объектно-ориентированных программных систем
- •Связность объектов
- •TCC(Stack)=7/10=0,7
- •Сцепление объектов
- •Набор метрик Чидамбера и Кемерера
- •Использование метрик Чидамбера-Кемерера
- •Метрики Лоренца и Кидда
- •Метрики, ориентированные на классы
- •Операционно-ориентированные метрики
- •Метрики для ОО-проектов
- •Набор метрик Фернандо Абреу
- •Метрики для объектно-ориентированного тестирования
- •Метрики инкапсуляции
- •Метрики наследования
- •Метрики полиморфизма
- •Контрольные вопросы
- •Эволюционно-инкрементная организация жизненного цикла разработки
- •Этапы и итерации
- •Рабочие потоки процесса
- •Модели
- •Технические артефакты
- •Управление риском
- •Первые три действия относят к этапу оценивания риска, последние три действия — к этапу контроля риска [20].
- •Идентификация риска
- •Анализ риска
- •Ранжирование риска
- •Планирование управления риском
- •Разрешение и наблюдение риска
- •Этапы унифицированного процесса разработки
- •Этап НАЧАЛО (Inception)
- •Этап РАЗВИТИЕ (Elaboration)
- •Этап КОНСТРУИРОВАНИЕ (Construction)
- •Этап ПЕРЕХОД (Transition)
- •Оценка качества проектирования
- •Пример объектно-ориентированной разработки
- •Этап НАЧАЛО
- •Этап РАЗВИТИЕ
- •Этап КОНСТРУИРОВАНИЕ
- •Разработка в стиле экстремального программирования
- •ХР-реализация
- •ХР-итерация
- •Элемент ХР-разработки
- •Коллективное владение кодом
- •Взаимодействие с заказчиком
- •Стоимость изменения и проектирование
- •Контрольные вопросы
- •ГЛАВА 16. Объектно-ориентированное тестирование
- •Расширение области применения объектно-ориентированного тестирования
- •Изменение методики при объектно-ориентированном тестировании
- •Особенности тестирования объектно-ориентированных «модулей»
- •Тестирование объектно-ориентированной интеграции
- •Объектно-ориентированное тестирование правильности
- •Проектирование объектно-ориентированных тестовых вариантов
- •Инкапсуляция
- •Полиморфизм
- •Тестирование, основанное на ошибках
- •Тестирование, основанное на сценариях
- •Тестирование поверхностной и глубинной структуры
- •Способы тестирования содержания класса
- •Стохастическое тестирование класса
- •Тестирование разбиений на уровне классов
- •Способы тестирования взаимодействия классов
- •Стохастическое тестирование
- •Тестирование разбиений
- •Тестирование на основе состояний
- •Предваряющее тестирование при экстремальной разработке
- •Контрольные вопросы
- •ГЛАВА 17. Автоматизация конструирования визуальной модели программной системы
- •Общая характеристика CASE-системы Rational Rose
- •Создание диаграммы Use Case
- •Создание диаграммы последовательности
- •Создание диаграммы классов
- •ПРИМЕЧАНИЕ
- •ПРИМЕЧАНИЕ
- •Создание компонентной диаграммы
- •Генерация программного кода
- •Заключение
- •Приложение А.
- •Факторы затрат постархитектурной модели СОСОМО II
- •Факторы персонала
- •Низкий
- •Ada.Text_IO
- •Любой целый тип со знаком
- •Приложение Б.Терминология языка UML и унифицированного процесса
- •Приложение В. Основные средства языка программирования Ada 95
- •Список литературы
Факторы персонала
Таблица А. 10. Возможности аналитика (Analyst Capability) ACAP
Фактор Очень низкий |
Низкий |
Номинальный |
Высокий |
Очень высокий Сверхвысокий |
|
|
|
|
|
|
|
АСАР |
15% |
35% |
55% |
75% |
90% |
Таблица А.11. Возможности программиста (Programmer Capability) PCAP
Фактор |
Очень низкий |
Низкий |
Номинальный |
Высокий |
Очень высокий Сверхвысокий |
|
|
|
|
|
|
РСАР |
15% |
35% |
55% |
75% |
90% |
Таблица А. 12. |
Опыт работы с приложением (Applications Experience) AEXP |
|
|||||
Фактор |
Очень низкий |
Низкий |
Номинальный |
Высокий |
Очень высокий |
Сверхвысокий |
|
|
|
|
|
|
|
|
|
АЕХР |
2 месяца |
6 месяцев |
1 год |
3 года |
6 лет |
|
|
Таблица А. 13. |
Опыт работы с платформой (Platform Experience) PEXP |
|
|||||
Фактор |
Очень низкий |
Низкий |
Номинальный |
Высокий |
Очень высокий |
Сверхвысокий |
|
|
|
|
|
|
|
|
|
РЕХР |
2 месяца |
6 месяцев |
1 год |
3 года |
6 лет |
|
|
Таблица А. 14. |
Опыт работы с языком и утилитами (Language and Tool Experience) LTEX |
||||||
Фактор |
Очень низкий |
Низкий |
Номинальный |
Высокий |
Очень высокий |
Сверхвысокий |
|
|
|
|
|
|
|
|
|
LTEX |
2 месяца |
6 месяцев |
1 год |
Згода |
6 лет |
|
|
Таблица А. 15. |
Непрерывность персонала (Personnel Continuity) PCON |
|
|||||
Фактор |
Очень низкий |
Низкий |
Номинальный |
Высокий |
Очень высокий |
Сверхвысокий |
|
|
|
|
|
|
|
|
|
PCON |
48%/год |
24%/год |
12%/год |
6%/год |
3%/год |
|
ПРИМЕЧАНИЕ
С помощью фактора PCON учитывается процент смены персонала.
Факторы проекта
Таблица А. 16. Использование программных утилит (Use of Software Tools) TOOL
Фактор Очень низкий |
Низкий |
Номинальный |
Высокий |
Очень высокий |
Сверхвысокий |
|||
|
|
|
|
|
|
|||
TOOL |
Редактирование, |
Простая |
Базовые утилиты Развитые |
Развитые |
|
|||
|
кодирование, |
входная, |
жизненного |
утилиты |
утилиты |
|
||
|
отладка |
выходная |
цикла, |
жизненного |
жизненного |
|
||
|
|
CASE-утилита, |
умеренная |
цикла, |
цикла, |
хорошо |
|
|
|
|
малая |
интеграция |
умеренная |
интегрированные |
|
||
|
|
интеграция |
|
интеграция |
с |
процессами, |
|
|
|
|
|
|
|
методами, |
|
||
|
|
|
|
|
повторным |
|
||
|
|
|
|
|
использованием |
|
||
Таблица А. 17. Мультисетевая разработка (Multisite Development) SITE |
|
|
||||||
Фактор Очень низкий |
Низкий |
Номинальный |
Высокий |
Очень высокий |
Сверхвысокий |
|||
|
|
|
|
|
||||
SITE: |
Один телефон, Индивидуаль- |
Узкополосный e- Широкопо- |
Широкополо- |
Интерактивные |
||||
комму- |
почта |
ные телефоны, mail |
лосные |
сные |
|
мультимедиа |
||
никации |
|
FAX |
|
электронные |
электронные |
|
||
|
|
|
|
коммуника- |
коммуникации, |
|
||
|
|
|
|
ции |
видеоконференц |
|
||
|
|
|
|
|
ии |
от |
случая к |
|
295
случаю
Таблица А. 18. Требуемый график разработки (Required Development Schedule) SCED
Фактор Очень низкий |
Низкий |
Номинальный |
Высокий |
Очень высокий Сверхвысокий |
|
|
|
|
|
SCED 75% от |
85% |
100% |
130% |
160% |
номинального |
|
|
|
|
срока |
|
|
|
|
Таблица А. 19. Числовые значения множителей затрат
Фактор Очень низкий |
Низкий |
|
Номинальный |
Высокий |
Очень высокий Сверхвысокий |
||
|
|
|
|
|
|
|
|
RELY |
Легкое |
Низкая, |
легко Умеренная, |
Высокая, |
Риск для |
|
|
|
беспокойство |
восстанавливае |
легко |
финансовые |
человеческой |
|
|
|
0,75 |
мые |
потери восстанавливаем |
потери 1,15 |
жизни 1,39 |
|
|
|
|
0,88 |
|
ые потери 1,00 |
|
|
|
DATA |
|
байты БД/LOС 10 ≤D/P<100 |
100 ≤D/P< |
D/P ≥1000 1,19 |
|
||
|
|
прогр. <10 0,93 |
1,00 |
<1000 1,09 |
|
|
|
CPLX |
0,75 |
0,88 |
|
1,00 |
1,15 |
1,30 |
1,66 |
RUSE |
|
Нет |
|
На уровне |
На уровне |
На уровне |
На уровне |
|
|
0,91 |
|
проекта |
программы |
семейства |
нескольких |
|
|
|
|
1,00 |
1,14 |
продуктов |
семейств |
|
|
|
|
|
|
1,29 |
продуктов |
DOCU |
Многие |
Некоторые |
Оптимизирова- |
Избыточны |
Очень |
1,49 |
|
|
|||||||
|
требования |
требования |
ны |
по |
избыточны |
|
|
|
жизненного |
жизненного |
к требованиям |
отношению к |
по отношению |
|
|
|
цикла |
цикла |
|
жизненного |
требованиям |
к требованиям |
|
|
не учтены |
не учтены |
цикла |
жизненного |
жизненного |
|
|
|
0,89 |
0,95 |
|
1,00 |
цикла |
цикла |
|
TIME |
|
|
|
|
1,06 |
1,13 |
|
|
|
|
Используется |
70% |
85% |
95% |
|
|
|
|
|
< 50% |
1,11 |
1,31 |
1,67 |
|
|
|
|
возможного |
|
|
|
|
|
|
|
времени |
|
|
|
|
|
|
|
выполнения |
|
|
|
STOR |
|
|
|
1,00 |
|
|
|
|
|
|
Используется |
70% |
85% |
95% |
|
|
|
|
|
< 50% |
1,06 |
1,21 |
1,57 |
|
|
|
|
доступной |
|
|
|
|
|
|
|
памяти |
|
|
|
PVOL |
|
|
|
1,00 |
|
|
|
|
Значительные |
Значительные— Значительные Значтельные — |
|
||||
|
|
изменения — |
через 6 мес.; |
—через 2 |
через 2 нед. |
|
|
|
|
через 1 год; |
незначительные |
мес.; незначинезначительные |
|
||
|
|
незначитель |
— через |
тельные — |
— через 2 дня |
|
|
|
|
ные — |
|
2 недели |
через 1 |
1,30 |
|
|
|
через 1 мес. |
1,00 |
неделю |
|
|
|
ACAP |
|
0,87 |
|
|
1,15 |
|
|
15% |
35% |
|
55% |
75% |
90% |
|
|
PCAP |
1,50 |
1,22 |
|
1,00 |
0,83 |
0,67 |
|
15% |
35% |
|
55% |
75% |
90% |
|
|
PCON |
1,37 |
1,16 |
|
1,00 |
0,87 |
0,74 |
|
48%/год |
24%/год |
|
12%/год |
6%/год |
3%/год |
|
|
AEXP |
1,24 |
1,10 |
|
1,00 |
0,92 |
0,84 |
|
≤2 месяцев |
6 месяцев |
1 год |
3 года |
6 лет |
|
||
|
1,22 |
1,10 |
|
1,00 |
0,89 |
0,81 |
|
296