- •Предисловие
- •Оглавление
- •Глава 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. Методы оценки технико-экономических показателей программных средств на различных этапах их жизненного цикла
- •Контрольные вопросы
- •Список литературы
Ростовский-на-Дону электротехнический колледж
(филиал) Государственного образовательного учреждения высшего профессионального образования «Южно-Российский государственный университет экономики и сервиса»
_______________________________________________________________________________
УЧЕБНОЕ ПОСОБИЕ
по дисциплине
ТЕХНОЛОГИЯ РАЗРАБОТКИ
ПРОГРАММНЫХ ПРОДУКТОВ
Специальность 230105 «Программное обеспечение вычислительной техники и автоматизированных систем»
Автор И.И. АЛЕКСАНДРОВА,
преподаватель Ростовского-на-Дону электротехнического колледжа
Ростов-на-Дону, 2011г.
Предисловие
В условиях стремительно развивающихся компьютерных и информационных технологий все более актуальным становится развитие и совершенствование программной инженерии, поскольку создание программных продуктов принимает индустриальный характер. Создание надежного качественного программного обеспечения в настоящее время невозможно без знания основных принципов анализа, проектирования, реализации, тестирования и сопровождения ПП, без знания технология разработки ПП. Все более совершенной становится и инструментальная среда создания ПП, включая не только этап кодирования, но и проектирования. Широкое распространение приобрели такие технологии, как CASE - средства, различные пакеты прикладных программ, модели повторного использования компонентов и пр. Все чаще используются методы коллективной разработки ПП, что нашло свое отражение в таких моделях проектирования, как RAD-подход, XP-программирование.
Учебная дисциплина «Технология разработки программных продуктов» относится к специальным предметам специальности. Знания и умения, полученные при изучении данной дисциплины, способствуют в дальнейшем качественному дипломному проектированию, являются востребованными в дальнейшей профессиональной деятельности.
Серьезной проблемой при изучении данной дисциплины в среднем специальном учебном заведении является сложность обеспечения необходимой учебной литературой. С одной стороны, имеющаяся литература достаточно часто ориентирована на подготовку специалистов в высших учебных заведениях, что предполагает и иной уровень подготовки студентов, и иные требования к знаниям и умениям. Более того, даже подобной учебной литературы явно недостаточно. С другой стороны, в ряде изданий специальной литературы по технологии разработки программного обеспечения доминантный акцент ставится на теоретический материал с большим количеством справочной информации, различных классификаций, подробным изложением современных стандартов и пр., что требует от студентов скорее зубрежки, чем приобретения реальных практических навыков. В условиях среднего специального учебного заведения целесообразным выходом из создавшейся ситуации видится создание специализированного оригинального учебника, создающего возможность реализации требований к подготовке специалиста в соответствии с Государственным образовательным стандартом и соответствующей Рабочей программой. Настоящее учебное пособие является пробной сокращенной версией подобного учебника.
Прежде чем приступить к оформлению учебного пособия, в течение нескольких лет был накоплен соответствующий материал и совершенствована его структура. В содержании учебного пособия прослеживается следующая взаимосвязь информации, объединенной понятием «жизненный цикл программного обеспечения»:
Дается понятие общих основ конструирования программного обеспечения, парадигм конструирования, жизненного цикла ПО, стратегий, моделей конструирования, моделей качества.
Рассматриваются различные методы и модели анализа предметной области, основы проектирования программного обеспечения, прежде всего предварительное проектирование – структурирование системы на подсистемы, моделирование управления, модульность ПО. Исследуются обоснование модульности и такие главные свойства модуля, как информационная закрытость модуля, связность и сцепления.
Большое внимание уделяется объектно-ориентированному представлению программного обеспечения; рассматриваются принципы ООП, характеристика объектов, классов и отношений, существующих как между объектами, так и между классами.
Рассматриваются вопросы информационного моделирования, создания инфологических моделей, проектирования интерфейсов.
Уделяется внимание такому современному инструментарию исследования, проектирования и реализации объектно-ориентированных систем, как визуальный унифицированный язык моделирования UML. Прежде всего, рассматриваются модели анализа предметной области в виде диаграмм вариантов использования – диаграммы Use Case. Кроме того, предлагается знакомство с диаграммами реализации – компонентными диаграммами на UML. Опыт показал, что другие виды диаграмм оказались чрезвычайно сложными и в изучении и, тем более, в практическом применении. По-видимому, для хорошего знакомства с UML требуется значительно больше учебного времени, чем то, что может быть выделено в рамках данного курса.
Чрезвычайно важное и особое место в содержании учебника занимают главы, касающиеся тестирования программного обеспечения – структурного, функционального, комплексного. Этот материал, безусловно, имеет самое прямое практическое значение, тем более важное, что прежде этот вопрос ни в одном предмете не рассматривался так всесторонне и глубоко. Рассматриваются самые различные методики тестирования.
Особое место в информационной структуре учебника занимают вопросы, связанные с измерением программного обеспечения – а именно, различные метрики: размерно-ориентированные, функционально-ориентированные, объектно-ориентированные. Введение метрик наглядно доказывает инженерный характер процессов разработки программного обеспечения.
Дается понятие стиля программирования, парадигмы программирования, инструментария программирования, рассматриваются особенности коллективной разработки программного обеспечения.
Важным представляется знакомство с современными инженерными технологиями создания ПО с использованием самого современного инструментария – Case- средств; отмечаются особенности, характеристики, состав, классификация современных Case-технологий.
При создании учебного пособия было учтено, что в рамках изучения дисциплины «Технология разработки программных продуктов» в Ростовском-на-Дону электротехническом колледже в соответствии с учебным планом предполагается учебная практика в течение одной недели (36 часов). Теоретическое и методологическое обоснование и обеспечение этой практики является отдельной проблемой и уже реализовано не только в текстовом, но и в электронном варианте.
В настоящее время учебное пособие по дисциплине «Технология разработки программных продуктов» подготовлено в текстовой форме и в электронной форме - в виде простой электронной оболочки, позволившей представить структурированный материал и организовать простой удобный интерфейс. Однако предполагается развитие учебного пособия – создание глоссария, контрольных вопросов, а также создание мини-версии, что может заменить конспект. Электронный вариант также предполагает развитие.
Накопленный значительный опыт в преподавании данной дисциплины в Ростовском электротехническом колледже, опыт реализации курсового проектирования в рамках дисциплины «Технология разработка программных продуктов», а также опыт руководства дипломном проектированием позволяют надеяться, что подготовленный материал окажется востребованным и полезным в процессе подготовки специалистов в области программного обеспечения. Анализ ФГОС 3-го поколения по родственной специальности 230115 «Программирование в компьютерных системах» позволяют сделать вывод о востребованности подобного учебного пособия и в дальнейшем, поскольку дисциплина «Технология разработки программного обеспечения» становится определяющей в одном из профессиональных модулей и обеспечивает важную профессиональную компетенцию.