
- •Предисловие
- •Оглавление
- •Глава 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. Методы оценки технико-экономических показателей программных средств на различных этапах их жизненного цикла
- •Контрольные вопросы
- •Список литературы
3. Модели реализации объектно-ориентированных программных систем в uml
3.1.Компонентные диаграммы
Компонентная диаграмма — первая из двух разновидностей диаграмм реализации, моделирующая физические аспекты объектно-ориентированных систем. Компонентная диаграмма показывает организацию набора компонентов и зависимости между компонентами. Элементами компонентных диаграмм являются компоненты и интерфейсы, а также отношения зависимости и реализации. Как и другие диаграммы, компонентные диаграммы могут включать примечания и ограничения. Кроме того, компонентные диаграммы могут содержать пакеты или подсистемы, используемые для группировки элементов модели в крупные фрагменты. Компоненты .По своей сути компонент является физическим фрагментом реализации системы , который заключает в себе программный код (исходный, двоичный, исполняемый) сценарные описания или наборы команд операционной системы (имеются в виду командные файлы). Язык UML. дает следующее определение. Компонент — физическая и заменяемая часть системы, которая соответствует набору интерфейсов и обеспечивает реализацию этого набора интерфейсов.
Интерфейс — очень важная часть понятия «компонент». Графически компонент изображается как прямоугольник с вкладками, обычно включающий имя (рис. 17).
Рис.17.Обозначение компонента
Компонент — базисный строительный блок физического представления ПО, поэтому интересно сравнить его с базисным строительным блоком логического представления ПО — классом. Сходные характеристики компонента и класса: наличие имени; реализация набора интерфейсов; участие в отношениях зависимости; возможность быть вложенным ; наличие экземпляров (экземпляры компонентов можно использовать только в диаграммах размещения). И, тем не менее, между компонентами и классами есть существенная разница:
Классы — логические абстракции, компоненты — физические предметы, которые живут в мире битов. В частности, компоненты могут жить в физических узлах, а классы лишены такой возможности |
Компоненты являются физическими упаковками, контейнерами, инкапсулирующими в себе различные логические элементы. Они — элементы абстракций другого уровня |
Классы имеют свойства и операции. Компоненты имеют только операции, которые доступны через их интерфейсы |
Рис..18. Классы в компоненте
Итак, в компоненте — физической реализации — располагается набор логики. Как показано на рис. 18, с помощью отношения зависимости можно явно отобразить отношение между компонентом и классами, которые он реализует.
Интерфейсы
Интерфейс — список операций, которые определяют услуги класса или компонента. С помощью интерфейсов компоненты стыкуются друг с другом, объединяясь в систему. Все операции интерфейса открыты и видимы клиенту (в противном случае они потеряли бы всякий смысл). Итак, операции интерфейса только именуют предлагаемые услуги, не более того. Очень важна взаимосвязь между компонентом и интерфейсом. Возможны два способа отображения взаимосвязи между компонентом и его интерфейсами. В первом, свернутом способе, как показано на рис. 19, интерфейс изображается в форме пиктограммы. Компонент Образ.java, который реализует интерфейс, соединяется со значком интерфейса (кружком). Наблюдатель Образа простой линией. Компонент РыцарьПечальногоОбраза.java, который использует интерфейс, связан с ним отношением зависимости.
Рис. 19. Представление интерфейса в форме пиктограммы
Второй способ представления интерфейса иллюстрирует рис. 20. Здесь используется развернутая форма изображения интерфейса, в которой могут показываться его операции. Компонент, который реализует интерфейс, подключается к нему отношением реализации. Компонент, который получает доступ к услугам другого компонента через интерфейс, по-прежнему подключается к интерфейсу интерфейсом зависимости.
Рис.20 Развёрнутая форма представления интерфейса.
Компоновка системы
За последние полвека разработчики аппаратуры прошли путь от компьютеров размером с комнату до крошечных «ноутбуков», обеспечивших возросшие функциональные возможности. За те же полвека разработчики программного обеспечения прошли путь от больших систем на Ассемблере и Фортране до еще больших систем на С++ и.jаvа, но программный инструментарий развивается медленнее, чем аппаратный инструментарий. В чем главный секрет аппаратчиков? Этот секрет — компоненты. Разработчик аппаратуры создает систему из готовых аппаратных компонентов (микросхем), выполняющих определенные функции и предоставляющих набор услуг через ясные интерфейсы, Задача конструкторов упрощается за счет повторного использования результатов, полученных другими. Повторное использование — магистральный путь развития программного инструментария. Создание нового ПО из существующих, работоспособных программных компонентов приводит к более надежному и дешевому коду. При этом сроки разработки существенно сокращаются. Основная цель программных компонентов — допускать сборку системы из двоичных заменяемых частей. Они должны обеспечить начальное создание системы из компонентов, а затем и ее развитие — добавление новых компонентов и замену некоторых старых компонентов без перестройки системы в целом. Ключ к воплощению такой возможности – интерфейсы. После того как интерфейс определён, к выполняемой системе можно подключить любой компонент, который удовлетворяет ему или обеспечивает этот интерфейс. Для расширения системы производятся компоненты, которые обеспечивают дополнительные услуги через новые интерфейсы. Такой подход основывается на особенностях перечисленных в табл. 2
Таблица 2.
Компонент физичен. Он живет в мире битов, а не логических понятий и не зависит от языка программирования |
Компонент — заменяемый элемент. Свойство заменяемости позволяет заменить один компонент другим компонентом, который удовлетворяет тем же интерфейсам. Механизм замены оговорен современными компонентными моделями (СОМ, СОМ+, СОRВА, Java Beans), требующими незначительных преобразований или предоставляющими утилиты, которые автоматизируют механизм |
Компонент является частью системы, он редко автономен. Чаще компонент сотрудничает с другими компонентами и существует в архитектурной или технологической среде, предназначенной для его использования. Компонент связан и физически, и логически, он обозначает фрагмент большой системы |
Компонент соответствует набору интерфейсов и обеспечивает реализацию этого набора интерфейсов
|
Вывод: компоненты — базисные строительные блоки, из которых может проектироваться и составляться система, Компонент может появляться на различных уровнях иерархии представления сложной системы. Система на одном уровне абстракции может стать простым компонентом на более высоком фоне абстракции.
Разновидности компонентов
Мир современных компонентов достаточно широк и разнообразен. В языке UML для обозначения новых разновидностей компонентов используют механизм стереотипов. Стандартные стереотипы, предусмотренные в UML для компонентов, представлены в таблице 3
Таблица 3 - Разновидности компонентов
Стереотип |
Описание |
« executable» |
Компонент, который может выполняться в физическом узле(имеет расширение/ exe) |
«library» |
Статическая или динамическая объектная библиотека (имеет расширение .dll) |
«file» |
Компонент, который представляет файл, содержащий исходный код или данные(имеет расширение.ini) |
«table» |
Компонент, который представляет таблицу базы данных(имеет расширение .tbl) |
«document» |
компонент, который представляет документ (имеет расширение .htp) |
В языке UML неопределенны пиктограммы для перечисленных стереотипов, применяемые на практике пиктограммы компонентов показаны ниже: