
- •Предисловие
- •Оглавление
- •Глава 1. Программные продукты, характеристика, классификация .........................8
- •Глава 2. Жизненный цикл. Стратегии и модели конструирования по ……………..17
- •Глава 3.Руководство проектом. Метрики ………………………………………………..31
- •Глава 4. Структурное проектирование ………………………………………..................42
- •Глава 5. Основы объектно-ориентированного представления
- •Глава 6. Язык визуального моделирования uml …………………………....................73
- •Глава 7. Проектирование интерфейса пользователя …………………………………..90
- •Глава 12. Эффективность и оптимизация программ ………………………………….139
- •Глава 13. Структурное тестирование по ………………………...................................153
- •Глава 14. Функциональное тестирование по ………………………………………….160
- •Глава 15. Комплексное тестирование. Отладка ………………………………………...170
- •Глава 16. Сопровождение программного обеспечения.
- •Глава 17. Защита программ ……………………………………………………………...187
- •Глава 18. Инструментарий технологии программирования.
- •Глава 19. Коллективная разработка по ………………………………………………..215
- •Глава 20 Стандартизация по.
- •Глава 1. Программные продукты, характеристика, классификация
- •1.Основные определения, характеристики
- •2.Классификация по по праву владения, использования, распространения
- •3 Пакеты прикладных программ
- •Контрольные вопросы
- •Глава 2. Жизненный цикл. Стратегии и модели конструирования по
- •1. Технология конструирования программного обеспечения– определение, парадигмы
- •1.1 Классический жизненный цикл
- •Проектирование
- •Кодирование
- •1.2 Макетирование
- •2. Стратегии конструирования по
- •3. Модели конструирования
- •3.1 Инкрементная модель
- •3.2 Модель rad - Быстрая разработка приложений
- •3.3 Спиральная модель
- •3.4 Компонентно-ориентированная модель
- •4. Прогнозирующие и адаптивные процессы
- •6. Модели качества процессов конструирования
- •Контрольные вопросы
- •Глава 3.Руководство проектом. Метрики
- •1. Процесс руководства проектом
- •2. Метрики
- •2.1 Размерно-ориентированные метрики
- •2.2 Функционально-ориентированные метрики
- •3. Выполнение оценки в ходе руководства проектом
- •3.1.Оценка проекта на основе loc- и fp-метрик
- •3.2.Конструктивная модель стоимости cocomo
- •Контрольные вопросы
- •Глава 4. Структурное проектирование
- •1.1 Диаграммы потоков данных
- •1.2 .Методы анализа, ориентированные на структуры данных
- •2. Основы проектирования программных систем
- •Этапы проектирования
- •2.2 Структурирование системы
- •2.3 Моделирование управления
- •2.4 Декомпозиция подсистем на модули
- •3. Модульность
- •3.1. Свойства, обоснование
- •3.2 Информационная закрытость
- •3.3 Связность модуля
- •3.4. Алгоритм определения связности модуля
- •3.5. Сцепление модулей
- •4. Сложность программной системы
- •5. Характеристики иерархической структуры программной системы
- •Контрольные вопросы
- •Глава 5. Основы объектно-ориентированного представления программных систем. Метрики
- •1. Принципы объектно-ориентированного
- •Представления программных систем
- •2. Объекты
- •2.1 Определение, характеристика объектов
- •2.2 Виды отношений между объектами
- •1.Связи
- •2.Агрегация
- •3. Классы
- •3.1 Понятие, характеристика
- •3.2 Виды отношений между классами
- •1).Ассоциации классов
- •4).Зависимость
- •4. Метрики объектно-ориентированных программных систем
- •4.1 Метрические особенности объектно-ориентированных систем
- •4. 2.Эволюция мер связи для объектно-ориентированных систем
- •4.3. Набор метрик Чидамбера и Кемерера
- •Контрольные вопросы
- •Глава 6. Язык визуального моделирования uml
- •1. Базис uml
- •1.1.Предметы в uml
- •1.1.Структурные предметы
- •1.2.Предметы поведения
- •1.3.Группирующие предметы
- •1.4.Поясняющие предметы
- •1.2.Отношения в uml
- •1.3.Диаграммы в uml
- •2. Диаграммы use case
- •2.1 Особенности диаграмм Use Case
- •2.2 Актеры и элементы Use Case
- •2.3 Отношения в диаграммах Use Case
- •2.4 Примеры диаграмм use case
- •3. Модели реализации объектно-ориентированных программных систем в uml
- •3.1.Компонентные диаграммы
- •3.2. Использование компонентных диаграмм
- •Контрольные вопросы
- •Глава 7. Проектирование интерфейса пользователя
- •Принципы организации интерфейса пользователя
- •2. Требования к пользовательскому интерфейсу
- •3. Типы пользовательского интерфейса
- •4. Стандарты пользовательского интерфейса информационных технологий
- •4.1. Стандартизация в области информационных технологий
- •4.2 Проектирование пользовательского интерфейса
- •Контрольные вопросы
- •Глава 8. Информационное моделирование
- •1. Этапы проектирования баз данных
- •2. Классификация и характеристика моделей данных
- •3. Типы и структуры данных
- •Контрольные вопросы
- •Глава 9. Модель "Сущность-связь"(er - Entity Relationship)
- •Базовые понятия er-модели
- •2. Пример построения er-модели
- •Контрольные вопросы
- •Глава 10. Стиль программирования
- •1. Три подхода к программированию
- •2. Стиль структу́рного программи́рования
- •3. Общие положения стандарта оформления кода
- •Необходимо
- •Контрольные вопросы
- •Глава 11. Парадигмы программирования
- •1. Процедурное программирование
- •2. Функциональное программирование
- •3. Логическое программирование
- •4. Автоматное программирование
- •5. Объектно-ориентированное программирование
- •5.1 История ооп
- •5.2 Главные понятия и разновидности ооп
- •5.2.1 Основные понятия
- •5.2.2 Сложности определения
- •5.2.3 Определение ооп
- •5.2.3 Концепции
- •5.2.4 Особенности реализации
- •5.3 Подходы ооп к проектированию программ в целом
- •5.4 Родственные методологии
- •5.4.1 Компонентное программирование
- •5.4.2 Прототипное программирование
- •5.5 Производительность объектных программ
- •5.6 Критика ооп
- •5.7 Объектно-ориентированные языки - характеристика
- •6. Аспектно-ориентированное программирование
- •Контрольные вопросы
- •Глава 12. Эффективность и оптимизация программ
- •1. Общие понятия эффективности
- •2. Оптимизирующие компиляторы
- •3. Оптимизация программ
- •4. Эффективность выполнения программ
- •5. Оптимизация использования памяти
- •6. Некоторые приёмы повышения эффективности программ
- •1.Вычисление констант
- •2.Инициирование переменных
- •3.Арифметические операции
- •4. Арифметика с фиксированной точкой
- •5. Смешанные типы данных
- •6. Способ устранения ошибок
- •7. Выравнивание десятичных чисел
- •8. Упорядочивание памяти
- •9. Группировка
- •10. Исключение циклов
- •11. Организация циклов
- •12. Условные и логические выражения
- •13. Ввод-вывод
- •14. Использование сведения о машине и компиляторе
- •7. Советы программисту по оптимизации программ
- •Контрольные вопросы
- •Глава 13. Структурное тестирование по
- •1.Основные понятия и принципы тестирования по
- •2.Тестирование «черного ящика»
- •3.Тестирование «белого ящика»
- •Контрольные вопросы
- •Глава 14. Функциональное тестирование по
- •1. Особенности тестирования «чёрного ящика»
- •2. Способ разбиения по эквивалентности
- •3. Способ анализа граничных значений
- •4. Способ диаграмм причин-следствий
- •Глава 15. Комплексное тестирование. Отладка
- •1. Методика комплексного тестирования пс
- •2.Тестирование элементов
- •3.Тестирование интеграции
- •3.1.Нисходящее тестирование интеграции
- •3.2 Восходящее тестирование интеграции
- •4.Тестирование правильности
- •5.Системное тестирование
- •5.1.Тестирование восстановления
- •5.2.Тестирование безопасности
- •5.3.Стрессовое тестирование
- •5.4. Тестирование производительности
- •6. Искусство отладки
- •Контрольные вопросы
- •Глава 16. Сопровождение программного обеспечения. Документирование результатов и хода разработки
- •1. Проблемы документирования
- •2. Виды документации
- •3. Средства автоматизации документирования
- •Контрольные вопросы
- •Глава 17. Защита программ
- •1. Концептуальные основы защиты информации
- •2. Организационно-правовое обеспечение защиты информации Организационные мероприятия и процедуры по обеспечению защиты информации
- •3. Защита информации от несанкционированного доступа
- •3.1. Основные понятия защиты от нсд
- •3.2. Формальные модели защиты
- •3 3. Системы разграничения доступа
- •4 Защита информации в каналах связи
- •4. 1. Основные понятия и определения
- •4.2. Криптоалгоритмы и протоколы шифрования
- •4. 3. Алгоритмы и протоколы реализации функции цифровой подписи
- •5.2. Сигнатурные методы защиты от несанкционированного копирования
- •5. 3. Аппаратные методы защиты от несанкционированного копирования
- •6 Компьютерная вирусология
- •Контрольные вопросы
- •Глава 18. Инструментарий технологии программирования. Case - технологии
- •Классификация инструментальных средств
- •2. Общая характеристика case- средств
- •3. Классификация case-средств
- •4.Технология внедрения case-средств
- •Контрольные вопросы
- •Глава 19. Коллективная разработка по
- •1. Особенности больших программных проектов
- •2. Коллективный характер разработки программного обеспечения. Бригада главного программиста
- •3. Психологические факторы при формировании программистских коллективов
- •4. Коллективная разработка программ - «Коллективная игра»
- •Инженерная модель программирования не оправдывает себя
- •Модель коллективной игры Виды игр, коллективные игры, последовательность игр
- •Кооперация и коммуникация
- •Изобретательность
- •Контрольные вопросы
- •Глава 20 Стандартизация по. Экономические аспекты создания по
- •1.Краткая характеристика программных средств как объекта разработки и стандартизации
- •2. Основные понятия и положения технологии разработки программных средств
- •2) Проблемы технологии разработки пс, включающие:
- •3. Критерии оценки технологий проектирования программных средств
- •4.Общие сведения о сертификации информационных систем и программных средств
- •1) Количественные пк:
- •2) Качественные пк:
- •5. Методы оценки технико-экономических показателей программных средств на различных этапах их жизненного цикла
- •Контрольные вопросы
- •Список литературы
4.3. Набор метрик Чидамбера и Кемерера
В 1994 году С. Чидамбер и Л. Кемерер предложили 6 проектных метрик, ориентированных на классы. Класс - фундаментальный элемент О-О системы. Поэтому измерения и метрики для отдельного класса, иерархии классов бесценны для программного инженера, который должен оценить качество проекта.
Набор Чидамбера – Кемерера наиболее часто цитируется в программной индустрии и научных исследованиях. Рассмотрим каждую из метрик набора.
Метрика 1: ВЗВЕШЕННЫЕ МЕТОДЫ НА КЛАСС WMC (Weughted Methods Per Class)
Допустим, что в классе С определенны n методов со сложностью с1,с2,…сn.Для оценки сложности может быть выбрана любая метрика сложности (например, цикломатическая сложность). Главное - нормализовать эту метрику так, чтобы номинальная сложность для метода принимала значение 1. В этом случае
n
WMC=∑Ci.
i=1
Количество методов и их сложность являются индикатором затрат на реализацию и тестирование классов. Кроме того, чем больше методов, тем сложнее дерево наследования(все подклассы наследуют методы их родителей).С ростом количества методов в классе его применение становится все более специфическим, тем самым ограничивается возможность многократного использования. По этим причинам метрика WMC должна иметь разумно низкое значение. Очень часто применяют упрощенную версию метрики. При этом полагают Ci=1, и тогда WMC-количество методов в классе.
Оказывается, что подсчитывать количество методов в классе достаточно сложно.
Возможно 2 противоположных варианта учета.
Подсчитываются только методы текущего класса. Унаследованные методы игнорируются. Обоснование - унаследованные методы уже подсчитаны в тех классах, где они определялись.
Подсчитываются методы, определенные в текущем классе, и все унаследованные методы. Этот подход подчеркивает важность пространства состояний в понимании класса.
На практике приемлем любой из описанных вариантов. Главное - не менять вариант учета от проекта к проекту. Только в этом случае обеспечивается корректный сбор метрических данных.
Метрика WMC дает относительную меру сложности класса. Если считать, что все методы имеют одинаковую сложность, то это будет просто количество методов в классе. Существуют рекомендации по сложности методов. Например, М. Лоренц считает, средняя длина метода должна ограничиваться 8 строками для Smalltalk и 24 строками для С++. Вообще, класс, имеющий максимальное количество методов среди классов одного с ним уровня, является наиболее сложным; скорее всего, он специфичен для данного приложения и содержит наибольшее количество ошибок.
Метрика 2: ВЫСОТА ДЕРЕВА НАСЛЕДОВАНИЯ DIT (Depth of inheritance Tree).
DIT определяется как длина пути от листа до корня дерева наследования классов. Для показанной на рис.1 иерархии классов метрика DIT равна 3.
Рис.1 Дерево наследования классов.
Соответственно, для отдельного класса DIT , это длина максимального пути от данного класса до корневого класса в иерархии классов.
ПО мере роста DIT вероятно, что классы нижнего уровня будут наследовать много методов. Это приводит к трудностям в предсказании поведения класса. Вместе с тем, большое значение DIT подразумевает , что многие методы могут использоваться многократно.
Метрика 3: КОЛИЧЕСТВО ДЕТЕЙ NOC ( NUMBER OF CHILDREN)
Подклассы которые непосредственно подчинены суперклассу, называются его детьми. Значение NOC равно количеству детей, то есть количеству непосредственных наследников класса в иерархии классов. На рис.1 класс С2 имеет двух детей-подклассы С21 и С22. С увеличением NOC возрастает многократность использования, так как наследование-это форма повторного использования. Однако при возрастании NOC ослабляется абстракция родительского класса. Это означает, что в действительности некоторые из детей уже не являются членами родительского класса и могут быть неправильно использованы. Кроме того, количество детей характеризует потенциальное влияние класса на проект. По мере роста NOC возрастает количество тестов, необходимых для проверки каждого ребенка.
Метрики DIT и NOC - количественные характеристики формы и размера структуры классов. Хорошо структурированная О-О система чаще бывает организованна как лес классов, чем как сверхвысокое дерево. По мнению Г. Буча, следует строить сбалансированные по высоте и ширине структуры наследования: обычно не выше, чем 7+-2 уровня, и не шире, чем 7+-2 ветви.
Метрика 4: СЦЕПЛЕНИЕ МЕЖДУ КЛАССАМИ ОБЪЕКТОВ СВО (Cjupling between object classes)
CВО - это количество сотрудников, предусмотренных для класса, то есть количество классов, с которыми он соединен. Соединение означает, что методы данного класса используют методы или экземплярные переменные другого класса.
Другое определение метрики имеет следующий вид: СВО равно количеству сцеплений класса; сцепление образует вызов метода и его свойства в другом классе. Данная метрика характеризует статическую составляющую внешних связей классов.С ростом СВО многократность использования класса, вероятно, уменьшается. Очевидно, что чем больше независимость класса, тем легче его повторно использовать в другом приложении.
Высокое значение СВО усложняет модификацию и тестирование, которое следует за выполнением модификаций. Понятно, что , чем больше количество сцеплений , тем выше чувствительность всего проекта к изменениям в отдельных его частях. Минимизация меж-объектных сцеплений улучшает модульность и содействует инкапсуляции проекта. СВО для каждого класса должно иметь разумно низкое значение. Это согласуется с рекомендациями по уменьшению сцепления стандартного программного обеспечения.
Метрика 5: ОТКЛИК ДЛЯ КЛАССА RFC (Response For a Class)
Введем вспомогательное определение. Множество отклика класса RS-это множество методов, которые могут выполнять в ответ на прибытие сообщение в объект этого класса. Формула для определения RS имеет вид:
RS={M}Uall-i{R},
где{Ri}-множество методов, вызываемых методом i, {M}-множество всех методов в классе. Метрика RFC равна количеству методов во множестве отклика, то есть равна мощности этого множества:
RFC=card{RS}.
Данная метрика характеризует динамическую составляющую внешних связей классов. Если в ответ на сообщение может быть вызвано большое количество методов, то усложняются тестирование и отладка класса, так как разработчика тестов требуется больший уровень понимания класса, растет длина тестовой последовательности.
С ростом RFC увеличивается сложность класса. Наихудшая величина отклика может использоваться при определении времени тестирования.
Метрика 6: НЕДОСТАТОК СВЯЗНОСТИ В МЕТОДАХ LCOM(Lack of Cohesion in Methods)
Каждый метод внутри класса обращается к одному или нескольким свойствам (экземплярным переменным).Метрика LCOM показывает, насколько методы не связаны друг с другом через свойства .Введём обозначения:
НЕ СВЯЗАНЫ- количество пар методов без общих экземплярных переменных;
СВЯЗАНЫ- количество пар методов с общими экземплярными переменными.
Ij-набор экземплярных переменных, используемых методом Mj.
Очевидно, что НЕ СВЯЗАНЫ=card{Iy|Ii∩Ij=0},
СВЯЗАНЫ=card{Iy|Ii∩Ij≠0}.
Тогда формула для вычисления недостатка связности методах примет вид
LCOM={ НЕ СВЯЗАНЫ - СВЯЗАНЫ, если (НЕ СВЯЗАНЫ>СВЯЗАНЫ)
0 в противном случае.
Можно определить метрику по-другому: LCOM - это количество пар методов, не связанных по свойствам класса, минус количество пар методов, имеющих такую связь.
Рассмотрим примеры применения метрики LCOM.
Пример 1:В классе имеются методы:М1,М2,М3,М4.Каждый метод работает со своим набором экземплярных переменных:
I1={a,b}; I2={a,c}; I3={x,y}; I4={m,n}.
В этом случае
НЕ СВЯЗАНЫ=card(I13, I14,I23,I24,I34,)=5; СВЯЗАНЫ=card(I12)=1.
LCOM=5-1=4
Пример 2:Вклассе используются методы:М1,М2,М3.
Для каждого метода задан свой набор экземплярных переменных:
I1={a,b}; I2={a,c}; I3={x,y},
НЕ СВЯЗАНЫ=card(I13,I23)=2; СВЯЗАНЫ=card(I12)=1
LCOM=2-1=1
Cвязность методов внутри класса должна быть высокой, так как это содействует инкапсуляции. Если LCOM имеет высокое значение, то методы слабо связаны друг с другом через свойства. Это увеличивает сложность, в связи с чем возрастает вероятность ошибок при проектировании. Высокие значения LCOM означают, что класс. вероятно, надо спроектировать лучше (разбиение на 2 или более отдельных класса).Любое вычисление LCOM помогает определить недостатки в проектировании классов, так как эта метрика характеризует качество упаковки данных и методов в оболочку класса. Вывод: связность в классе желательно сохранять высокой, то есть стоит добиваться низкого значения LCOM.
Поскольку основу логического представления ПО образует структура классов, для оценки ее качества удобно использовать метрики Чидамбера-Кемерера.
Набор метрик Чидамбера – Кемерера - одна из пионерских работ по комплексной оценке качества О-О-проектирование. В настоящее время известны многочисленные предложения по усовершенствованию, развитию данного набора.