Глава 5. Основы объектно-ориентированного представления УЧЕБНОЕ ПОСОБИЕ
по дисциплине
ТЕХНОЛОГИЯ РАЗРАБОТКИ
ПРОГРАММНЫХ ПРОДУКТОВ
Специальность 230105 «программное обеспечение вычислительной техники и автоматизированных систем»
Автор И.И. АЛЕКСАНДРОВА,
преподаватель Ростовского-на-Дону электротехнического колледжа
Ростов-на-Дону
2011г.
Предисловие
В условиях стремительно развивающихся компьютерных и информационных технологий все более актуальным становится развитие и совершенствование программной инженерии, поскольку создание программных продуктов принимает индустриальный характер. Создание надежного качественного программного обеспечения в настоящее время невозможно без знания основных принципов анализа, проектирования, реализации, тестирования и сопровождения ПП, без знания технология разработки ПП. Все более совершенной становится и инструментальная среда создания ПП, включая не только этап кодирования, но и проектирования. Широкое распространение приобрели такие технологии, как CASE - средства, различные пакеты прикладных программ, модели повторного использования компонентов и пр. Все чаще используются методы коллективной разработки ПП, что нашло свое отражение в таких моделях проектирования, как RAD-подход, XP-программирование.
Учебная дисциплина «Технология разработки программных продуктов» относится к специальным предметам специальности. Знания и умения, полученные при изучении данной дисциплины, способствуют в дальнейшем качественному дипломному проектированию, являются востребованными в дальнейшей профессиональной деятельности.
Серьезной проблемой при изучении данной дисциплины в среднем специальном учебном заведении является сложность обеспечения необходимой учебной литературой. С одной стороны, имеющаяся литература достаточно часто ориентирована на подготовку специалистов в высших учебных заведениях, что предполагает и иной уровень подготовки студентов, и иные требования к знаниям и умениям. Более того, даже подобной учебной литературы явно недостаточно. С другой стороны, в ряде изданий специальной литературы по технологии разработки программного обеспечения доминантный акцент ставится на теоретический материал с большим количеством справочной информации, различных классификаций, подробным изложением современных стандартов и пр., что требует от студентов скорее зубрежки, чем приобретения реальных практических навыков. В условиях среднего специального учебного заведения целесообразным выходом из создавшейся ситуации видится создание специализированного оригинального учебника, создающего возможность реализации требований к подготовке специалиста в соответствии с Государственным образовательным стандартом и соответствующей Рабочей программой. Настоящее учебное пособие является пробной сокращенной версией подобного учебника.
Прежде чем приступить к оформлению учебного пособия, в течение нескольких лет был накоплен соответствующий материал и совершенствована его структура. В содержании учебного пособия прослеживается следующая взаимосвязь информации, объединенной понятием «жизненный цикл программного обеспечения»:
• Дается понятие общих основ конструирования программного обеспечения, парадигм конструирования, жизненного цикла ПО, стратегий, моделей конструирования, моделей качества.
• Рассматриваются различные методы и модели анализа предметной области, основы проектирования программного обеспечения, прежде всего предварительное проектирование – структурирование системы на подсистемы, моделирование управления, модульность ПО. Исследуются обоснование модульности и такие главные свойства модуля, как информационная закрытость модуля, связность и сцепления.
• Большое внимание уделяется объектно-ориентированному представлению программного обеспечения; рассматриваются принципы ООП, характеристика объектов, классов и отношений, существующих как между объектами, так и между классами.
• Рассматриваются вопросы информационного моделирования, создания инфологических моделей, проектирования интерфейсов.
• Уделяется внимание такому современному инструментарию исследования, проектирования и реализации объектно-ориентированных систем, как визуальный унифицированный язык моделирования UML. Прежде всего, рассматриваются модели анализа предметной области в виде диаграмм вариантов использования – диаграммы Use Case. Кроме того, предлагается знакомство с диаграммами реализации – компонентными диаграммами на UML. Опыт показал, что другие виды диаграмм оказались чрезвычайно сложными и в изучении и, тем более, в практическом применении. По-видимому, для хорошего знакомства с UML требуется значительно больше учебного времени, чем то, что может быть выделено в рамках данного курса.
• Чрезвычайно важное и особое место в содержании учебника занимают главы, касающиеся тестирования программного обеспечения – структурного, функционального, комплексного. Этот материал, безусловно, имеет самое прямое практическое значение, тем более важное, что прежде этот вопрос ни в одном предмете не рассматривался так всесторонне и глубоко. Рассматриваются самые различные методики тестирования.
• Особое место в информационной структуре учебника занимают вопросы, связанные с измерением программного обеспечения – а именно, различные метрики: размерно-ориентированные, функционально-ориентированные, объектно-ориентированные. Введение метрик наглядно доказывает инженерный характер процессов разработки программного обеспечения.
• Дается понятие стиля программирования, парадигмы программирования, инструментария программирования, рассматриваются особенности коллективной разработки программного обеспечения.
• Важным представляется знакомство с современными инженерными технологиями создания ПО с использованием самого современного инструментария – Case- средств; отмечаются особенности, характеристики, состав, классификация современных Case-технологий.
При создании учебного пособия было учтено, что в рамках изучения дисциплины «Технология разработки программных продуктов» в Ростовском-на-Дону электротехническом колледже в соответствии с учебным планом предполагается учебная практика в течение одной недели (36 часов). Теоретическое и методологическое обоснование и обеспечение этой практики является отдельной проблемой и уже реализовано не только в текстовом, но и в электронном варианте.
В настоящее время учебное пособие по дисциплине «Технология разработки программных продуктов» подготовлено в текстовой форме и в электронной форме - в виде простой электронной оболочки, позволившей представить структурированный материал и организовать простой удобный интерфейс. Однако предполагается развитие учебного пособия – создание глоссария, контрольных вопросов, а также создание мини-версии, что может заменить конспект. Электронный вариант также предполагает развитие.
Накопленный значительный опыт в преподавании данной дисциплины в Ростовском электротехническом колледже, опыт реализации курсового проектирования в рамках дисциплины «Технология разработка программных продуктов», а также опыт руководства дипломном проектированием позволяют надеяться, что подготовленный материал окажется востребованным и полезным в процессе подготовки специалистов в области программного обеспечения. Анализ ФГОС 3-го поколения по родственной специальности 230115 «Программирование в компьютерных системах» позволяют сделать вывод о востребованности подобного учебного пособия и в дальнейшем, поскольку дисциплина «Технология разработки программного обеспечения» становится определяющей в одном из профессиональных модулей и обеспечивает важную профессиональную компетенцию.
ОГЛАВЛЕНИЕ
Глава 1. Программные продукты, характеристика, классификация.............8-16
1.Основные определения, характеристики …………………………………………………..8
2.Классификация ПО по праву владения, использования, распространения …………….9
3 Пакеты прикладных программ ……………………………………………………………..13
Контрольные вопросы ………………………………………………………………………..16
Глава 2. Жизненный цикл. Стратегии и модели конструирования ПО……..17-30
1. Технология конструирования программного обеспечения– определение ……………..17
1.1 Классический жизненный цикл …………………………………………………………17
1.2 Макетирование ……………………………………………………………………………19
2. Стратегии конструирования ПО …………………………………………………………..20
3. Модели конструирования ………………………………………………………………….21
3.1 Инкрементная модель ……………………………………………………………………..21
3.2 Модель RAD - Быстрая разработка приложений ………………………………………22
3.3 Спиральная модель ………………………………………………………………………..23
3.4 Компонентно-ориентированная модель ………………………………………………....24
4. Прогнозирующие и адаптивные процессы ………………………………………………25
5. XP-процесс ………………………………………………………………………………….26
6. Модели качества процессов конструирования …………………………………………...29
Контрольные вопросы ………………………………………………………………………..30
Глава 3.Руководство проектом. Метрики………………………………………31-41
1. Процесс руководства проектом ……………………………………………………………31
2. Метрики ……………………………………………………………………………………..33
2.1 Размерно-ориентированные метрики ……………………………………………………33
2.2 Функционально-ориентированные метрики …………………………………………….34
3. Выполнение оценки в ходе руководства проектом ………………………………………39
3.1.Оценка проекта на основе LOC- И FP-метрик ………………………………………...39
3.2.Конструктивная модель стоимости COCOMO …………………………………………40.
Контрольные вопросы ………………………………………………………………………..41
Глава 4. Структурное проектирование………………………………………....42-58
1. Классические методы анализа. Структурный анализ ……………………………………42
1.1 Диаграммы потоков данных ……………………………………………………………...42
1.2 .Методы анализа, ориентированные на структуры данных ……………………………43
2. Основы проектирования программных систем …………………………………………..45
2.1 Этапы проектирования …………………………………………………………………..45
2.2 Структурирование системы ………………………………………………………………46
2.3 Моделирование управления ………………………………………………………………47
2.4 Декомпозиция подсистем на модули …………………………………………………….49
3. Модульность ………………………………………………………………………………..49
3.1. Свойства, обоснование …………………………………………………………………..49
3.2 Информационная закрытость …………………………………………………………….49
3.3 Связность модуля …………………………………………………………………………50
3.5. Сцепление модулей ………………………………………………………………………54
4. Сложность программной системы ………………………………………………………..56
5. Характеристики иерархической структуры программной системы ……………………56
Контрольные вопросы ………………………………………………………………………..57
Глава 5. Основы объектно-ориентированного представления
программных систем. Метрики………………………………………………….59-72
1. Принципы объектно-ориентированного представления программных систем ………..59
2. Объекты ……………………………………………………………………………………..60
2.1 Определение, характеристика объектов …………………………………………………60
2.2 Виды отношений между объектами …………………………………………………….62
3. Классы ………………………………………………………………………………………64
3.1 Понятие, характеристика …………………………………………………………………64
4. Метрики объектно-ориентированных программных систем ……………………………66
4.1 Метрические особенности объектно-ориентированных систем ………………………67
4. 2.Эволюция мер связи для объектно-ориентированных систем ……………………….68
4.3. Набор метрик Чидамбера И Кемерера …………………………………………………69
Контрольные вопросы ………………………………………………………………………..72
Глава 6. Язык визуального моделирования UML…………………………....73-89
1. Базис UML …………………………………………………………………………………..73
1.1.Предметы в UML ………………………………………………………………………….73
1.2.Отношения в UML ………………………………………………………………………..76
1.3.Диаграммы в UML ………………………………………………………………………..77
2. Диаграммы USE CASE …………………………………………………………………….78
2.1 Особенности диаграмм Use Case …………………………………….…………………..78
2.2 Актеры и элементы Use Case …………………………………………………………….79
2.3 Отношения в диаграммах Use Case ………………………………………………………80
2.4 Примеры диаграмм USE CASE …………………………………………………………..81
3. Модели реализации объектно-ориентированных программных систем в UML ……...83
3.1.Компонентные диаграммы ……………………………………………………………….83
3.2. Использование компонентных диаграмм ……………………………………………....86
Контрольные вопросы ………………………………………………………………………..89
Глава 7. Проектирование интерфейса пользователя ………………………..90-99
1. Принципы организации интерфейса пользователя ………………………………………90
2. Требования к пользовательскому интерфейсу …………………………………………..93
3. Типы пользовательского интерфейса ……………………………………………………..94
4. Стандарты пользовательского интерфейса информационных технологий …………….95
4.1. Стандартизация в области информационных технологий …………………………….95
4.2 Проектирование пользовательского интерфейса ……………………………………….96
Контрольные вопросы ………………………………………………………………………..99
Глава 8. Информационное моделирование……………………………………………..100
1. Этапы проектирования баз данных ………………………………………………………100
2. Классификация и характеристика моделей данных …………………………………....105
3. Типы и структуры данных ………………………………………………………………...107
Контрольные вопросы ………………………………………………………………………110
Глава 9. Модель "Сущность-связь"(ER - Entity Relationship)…………….111-124
1. Базовые понятия ER-модели ……………………………………………………………..111
2. Пример построения ER-модели ………………………………………………………….114
Контрольные вопросы ………………………………………………………………………117
Глава 10. Стиль программирования …………………………………………………….118
1. Три подхода к программированию ………………………………………………….......118
2. Стиль структу́рного программи́рования ………………………………………………..120
3. Общие положения стандарта оформления кода ………………………………………...122
Контрольные вопросы ………………………………………………………………………124
Глава 11. Парадигмы программирования………………………………….125-138
1. Процедурное программирование …………………………………………………………125
2. Функциональное программирование …………………………………………………….126
3. Логическое программирование ……………………………………………………..……126
4. Автоматное программирование …………………………………………………………..127
5. Объектно-ориентированное программирование ………………………………………...127
5.1 История ООП ……………………………………………………………………………..128
5.2 Главные понятия и разновидности ООП ……………………………………………….128
5.3 Подходы ООП к проектированию программ в целом ………………………………..132
5.4 Родственные методологии ……………………………………………………………….133
5.5 Производительность объектных программ ……………………………………………..134
5.6 Критика ООП ……………………………………………………………………………..135
5.7 Объектно-ориентированные языки – характеристика …………………………………136
6. Аспектно-ориентированное программирование ………………………………………...137
Контрольные вопросы ……………………………………………………………………….138
Глава 12. Эффективность и оптимизация программ…………………..139-152
1. Общие понятия эффективности …………………………………………………………..139
2. Оптимизирующие компиляторы ………………………………………………………….140
3. Оптимизация программ……………………………………………………………………141
4. Эффективность выполнения программ…………………………………………………...143
5. Оптимизация использования памяти …………………………………………………….145
6. Некоторые приёмы повышения эффективности программ …………………………….146
7. Советы программисту по оптимизации программ ……………………………………...151
Контрольные вопросы ……………………………………………………………………….151
Глава 13. Структурное тестирование ПО………………………............153-159.
1.Основные понятия и принципы тестирования ПО ………………………………………153
2.Тестирование «черного ящика» …………………………………………………………..154
3.Тестирование «белого ящика» …………………………………………………………….154
Контрольные вопросы ……………………………………………………………………….159
Глава 14. Функциональное тестирование ПО…………………………..160-169
1. Особенности тестирования «чёрного ящика» ……………………………………………160
2. Способ разбиения по эквивалентности …………………………………………………..161
3. Способ анализа граничных значений ……………………………………………………162
4. Способ диаграмм причин-следствий …………………………………………………….164
Контрольные вопросы ……………………………………………………………………….168
Глава 15. Комплексное тестирование. Отладка…………………………170-181
1. Методика комплексного тестирования ПС ………………………………………………170
2.Тестирование элементов …………………………………………………………………..171
3.Тестирование интеграции ………………………………………………………………....173
3.1.Нисходящее тестирование интеграции …………………………………………………174
3.2 Восходящее тестирование интеграции …………………………………………………175
4.Тестирование правильности ………………………………………………………………177
5.Системное тестирование …………………………………………………………………..178
5.1.Тестирование восстановления …………………………………………………………..178
5.2.Тестирование безопасности ……………………………………………………………..178
5.3.Стрессовое тестирование ………………………………………………………………..179
5.4. Тестирование производительности ……………………………………………………179
6. Искусство отладки …………………………………………………………………………179
Контрольные вопросы …………………………………………………………………..…...181
|