Технология программирования
Покупка
Тематика:
Программирование и алгоритмизация
Автор:
Иванова Галина Сергеевна
Год издания: 2006
Кол-во страниц: 336
Дополнительно
Вид издания:
Учебник
Уровень образования:
ВО - Бакалавриат
ISBN: 5-7038-2891-0
Артикул: 041027.04.99
Подробно рассмотрены основные методы и нотации, применяемые при разработке сложного программного обеспечения. Особое внимание уделено проектированию программных систем с использованием структурного, объектного и компонентного подходов. Детально разобраны основные приемы обеспечения требуемых технологических свойств. Приведена классификация и проанализированы принципы проектирования пользовательских интерфейсов программного обеспечения. Материал учебника проиллюстрирован большим количеством примеров и поясняющих рисунков.
В третьем издании (2-е — 2003 г.) переработан материал по оформлению текстовых документов в соответствии с ГОСТ 7.32-2001 и 7.1-2004, уточнены некоторые понятия, добавлены примеры разработки программных систем.
Содержание учебника соответствует курсу лекций, которые автор читает в МГТУ им. Н.Э. Баумана.
Для студентов вузов, обучающихся по специальностям, связанным с информатикой. Может быть полезен всем изучающим программирование самостоятельно.
Скопировать запись
Фрагмент текстового слоя документа размещен для индексирующих роботов
Информатика в техническом университете
Информатика в техническом университете Серия основана в 2000 году РЕДАКЦИОННАЯ КОЛЛЕГИЯ: чл.-кор. РАН И.Б. Федоров — главный редактор д-р техн. наук И.П. Норенков — зам. главного редактора д-р техн. наук Ю.М. Смирнов — зам. главного редактора д-р техн. наук В.В. Девятков д-р техн. наук В.В. Емельянов канд. техн. наук И.П. Иванов д-р техн. наук В.А. Матвеев канд. техн. наук Н.В. Медведев д-р техн. наук В.В. Сюзев д-р техн. наук Б.Г. Трусов д-р техн. наук В.М. Черненький д-р техн. наук В.А. Шахнов
Г.С. Иванова Технология программирования Издательство МГТУ имени Н.Э. Баумана Москва Издательство МГТУ им. Н.Э. Баумана 2006 Допущено Министерством образования Российской Федерации в качестве учебника для студентов высших учебных заведений, обучающихся по направлению «Информатика и вычислительная техника», специальностям: «Вычислительные машины, комплексы, системы и сети», Автоматизированные системы обработки информации и управления», «Программное обеспечение вычислительной техники и информационных систем» « Издание третье, переработанное и дополненное
УДК 681.3.06(075.8) ББК 32.973-018 И201 Рецензенты: кафедра «Компьютерные системы и технологии» Московского государственного инженерно-физического института (зав. кафедрой профессор Л.Д. Забродин); кафедра «ЭВМ, комплексы и сети» Московского государственного авиационного института (зав. кафедрой профессор О.М. Брехов) Иванова Г.С. И201 Подробно рассмотрены основные методы и нотации, применяемые при разработке сложного программного обеспечения. Особое внимание уделено проектированию программных систем с использованием структурного, объектного и компонентного подходов. Детально разобраны основные приемы обеспечения требуемых технологических свойств. Приведена классификация и проанализированы принципы проектирования пользовательских интерфейсов программного обеспечения. Материал учебника проиллюстрирован большим количеством примеров и поясняющих рисунков. В третьем издании ( 2-е – 2003 г.) переработан материал по оформлению текстовых документов в соответствии с ГОСТ 7.32 – 2001 и 7.1–2004, уточнены некоторые понятия, добавлены примеры разработки программных систем. Содержание учебника соответствует курсу лекций, которые автор читает в МГТУ им. Н.Э. Баумана. Для студентов вузов, обучающихся по специальностям, связанным с информатикой. Может быть полезен всем изучающим программирование самостоятельно. УДК 681.3.06(075.8) ББК 32.973-018 © Г.С. Иванова, 2003; 2006, с изменениями © Оформление. Издательство МГТУ ISBN 5-7038-2891-0 им. Н.Э. Баумана, 2003; 2006, с изменениями Технология программирования: Учебник для вузов. – 3-е изд., перераб. и доп. – М.: Изд-во МГТУ им. Н.Э. Баумана, 2006. – 336 с.: ил. (Сер. Информатика в техническом университете.) ISBN 5-7038-2891-0
Оглавление Предисловие . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 Введение . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10 1. Технология программирования. Основные понятия и подходы . . . . . . . . . 12 1.1. Технология программирования и основные этапы ее развития . . . . . . . . . . 12 1.2. Проблемы разработки сложных программных систем . . . . . . . . . . . . . . . . . 23 1.3. Блочно-иерархический подход к созданию сложных систем . . . . . . . . . . . . 24 1.4. Жизненный цикл и этапы разработки программного обеспечения . . . . . . . 27 1.5. Эволюция моделей жизненного цикла программного обеспечения . . . . . . 32 1.6. Ускорение разработки программного обеспечения. Технология RAD . . . . 37 1.7. Оценка качества процессов создания программного обеспечения . . . . . . . 40 2. Приемы обеспечения технологичности программных продуктов . . . . . . . . 45 2.1. Понятие технологичности программного обеспечения . . . . . . . . . . . . . . . . . 45 2.2. Модули и их свойства . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46 2.3. Нисходящая и восходящая разработка программного обеспечения . . . . . . 55 2.4. Структурное и «неструктурное» программирование. Средства описания структурных алгоритмов . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57 2.5. Стиль оформления программы . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65 2.6. Эффективность и технологичность . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68 2.7. Программирование «с защитой от ошибок» . . . . . . . . . . . . . . . . . . . . . . . . . . 70 2.8. Сквозной структурный контроль . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73 5
Содержание 3. Определение требований к программному обеспечению и исходных данных для его проектирования . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75 3.1. Классификация программных продуктов по функциональному признаку. . 75 3.2. Основные эксплуатационные требования к программным продуктам . . . . 78 3.3. Предпроектные исследования предметной области . . . . . . . . . . . . . . . . . . . . 81 3.4. Разработка технического задания . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82 3.5. Принципиальные решения начальных этапов проектирования . . . . . . . . . . 95 4. Анализ требований и определение спецификаций программного обеспечения при структурном подходе. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 103 4.1. Спецификации программного обеспечения при структурном подходе. . . . 103 4.2. Диаграммы переходов состояний . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 107 4.3. Функциональные диаграммы . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 109 4.4. Диаграммы потоков данных. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 114 4.5. Структуры данных и диаграммы отношений компонентов данных . . . . . . 123 4.6. Математические модели задач, разработка или выбор методов решения . 136 5. Проектирование программного обеспечения при структурном подходе . . 139 5.1. Разработка структурной и функциональной схем . . . . . . . . . . . . . . . . . . . . . 139 5.2. Использование метода пошаговой детализации для проектирования структуры программного обеспечения . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 143 5.3. Структурные карты Константайна . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 149 5.4. Проектирование структур данных. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 154 5.5. Проектирование программного обеспечения, основанное на декомпози ции данных . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 159 5.6. Case-технологии, основанные на структурных методологиях анализа и проектирования. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 164 6. Анализ требований и определение спецификаций программного обеспечения при объектном подходе . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 168
6.1. UML – стандартный язык описания разработки программных продуктов с использованием объектного подхода . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 168 6.2. Определение «вариантов использования» . . . . . . . . . . . . . . . . . . . . . . . . . . . 171 6.3. Построение концептуальной модели предметной области . . . . . . . . . . . . . 177 6.4. Описание поведения. Системные события и операции . . . . . . . . . . . . . . . . 183 7. Проектирование программного обеспечения при объектном подходе . . . 189 7.1. Разработка структуры программного обеспечения при объектном подходе . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 189 7.2. Определение отношений между объектами . . . . . . . . . . . . . . . . . . . . . . . . . 192 7.3. Уточнение отношений классов . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 198 7.4. Проектирование классов . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 202 7.5. Компоновка программных компонентов . . . . . . . . . . . . . . . . . . . . . . . . . . . . 209 7.6. Проектирование размещения программных компонентов для распределенных программных систем . . . . . . . . . . . . . . . . . . . . . . . . . . 212 7.7. Особенность спиральной модели разработки. Реорганизация проекта. . . . 213 8. Разработка пользовательских интерфейсов . . . . . . . . . . . . . . . . . . . . . . . . . . 215 8.1. Типы пользовательских интерфейсов и этапы их разработки . . . . . . . . . . . 215 8.2. Психофизические особенности человека, связанные с восприятием, запоминанием и обработкой информации . . . . . . . . . . . . . . . . . . . . . . . . . . . 225 8.3. Пользовательская и программная модели интерфейса . . . . . . . . . . . . . . . . . 228 8.4. Классификации диалогов и общие принципы их разработки . . . . . . . . . . . 231 8.5. Основные компоненты графических пользовательских интерфейсов . . . . 238 8.6. Реализация диалогов в графическом пользовательском интерфейсе. . . . . . 242 8.7. Пользовательские интерфейсы прямого манипулирования и их проектирование . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 251 8.8. Интеллектуальные элементы пользовательских интерфейсов . . . . . . . . . . . 259 9. Пример разработки приложения Windows «Записная книжка» . . . . . . . . . 263 9.1. Разработка технического задания . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 263 Оглавление 7
Оглавление 9.2. Анализ предметной области, уточнение спецификаций и разработка структурной схемы . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 265 9.3. Проектирование интерфейса пользователя . . . . . . . . . . . . . . . . . . . . . . . . . 270 9.4. Проектирование классов приложения . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 273 10. Тестирование программных продуктов . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 279 10.1. Виды контроля качества разрабатываемого программного обеспечения . 279 10.2. Ручной контроль программного обеспечения . . . . . . . . . . . . . . . . . . . . . . . 281 10.3. Структурное тестирование . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 285 10.4. Функциональное тестирование . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 289 10.5. Тестирования модулей и комплексное тестирование . . . . . . . . . . . . . . . . . 295 10.6. Оценочное тестирование . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 300 11. Отладка программного обеспечения . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 303 11.1. Классификация ошибок . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 303 11.2. Методы отладки программного обеспечения . . . . . . . . . . . . . . . . . . . . . . . 307 11.3. Методы и средства получения дополнительной информации . . . . . . . . . . 310 11.4. Общая методика отладки программного обеспечения . . . . . . . . . . . . . . . . 313 12. Составление программной документации . . . . . . . . . . . . . . . . . . . . . . . . . . . 316 12.1. Виды программных документов . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 316 12.2. Пояснительная записка . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 318 12.3. Руководство пользователя . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 319 12.4. Руководство системного программиста . . . . . . . . . . . . . . . . . . . . . . . . . . . . 320 12.5. Отчет по научно-исследовательской работе . . . . . . . . . . . . . . . . . . . . . . . . 321 12.6. Основные правила оформления текстовых документов . . . . . . . . . . . . . . . 323 Приложение. Система условных обозначений универсального языка моделирования UML . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 327 Список литературы . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 331 Предметный указатель . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 334
ПРЕДИСЛОВИЕ До последнего времени элементы технологии разработки программного обеспечения студенты изучали в таких курсах, как «Алгоритмические языки и программирование» и «Системное программирование», параллельно с основным материалом, что не позволяло сконцентрироваться на указанных вопросах. Однако сравнительно недавно в учебных планах специальностей, связанных с информатикой, появился курс «Технология программирования», полностью посвященный этой теме. В предлагаемом учебнике сделана попытка обобщения и методического осмысления опыта, накопленного специалистами в области разработки программного обеспечения на протяжении всей истории существования. Приведенные сведения могут быть полезны при выполнении учебных проектов и небольших программных продуктов. В создании данного учебника в той или иной степени участвовало много заинтересованных лиц. Хочется от души поблагодарить: заведующих кафедрами «Компьютерные системы и сети» Сюзева В.В. и «Программирование и информационные технологии» Трусова Б.Г. – за всестороннее содействие; моего мужа – профессора кафедры «Компьютерные системы и сети» Овчинникова В.А. – за помощь и поддержку; преподавателей университета: Борисова С.В., Курова А.В. – за предоставленную литературу изданий прошлых лет; Романову Т.Н., Пугачева Е.К., Ничушкину Т.Н., Волосатову Т.М. и Балдина А.В. – за материалы и советы по содержанию учебника. Автор также глубоко признательна рецензентам: коллективу кафедры «Компьютерные системы и технологии» МИФИ во главе с доктором технических наук, профессором Забродиным Л.Д. и коллективу кафедры «ЭВМ, комплексы и сети» МАИ во главе с доктором технических наук, профессором Бреховым О.М., чьи ценные замечания позволили улучшить качество книги.
ВВЕДЕНИЕ Создание программной системы – весьма трудоемкая задача, особенно в наше время, когда обычный объем программного обеспечения превышает сотни тысяч операторов. Будущий специалист в области разработки программного обеспечения должен иметь представление о методах анализа, проектирования, реализации и тестирования программных систем, а также ориентироваться в существующих подходах и технологиях. Изложение материала учебника строится в соответствии с основными этапами разработки программного обеспечения. Исключением являются первые главы, в которых рассмотрены общие вопросы технологии программирования. В первой главе проанализирована история развития технологии программирования, показано, что в основе разработки программного обеспечения лежит блочно-иерархический подход, рассмотрены особенности применения этого подхода к разработке программных продуктов. Вторая глава содержит описание приемов обеспечения качества программного обеспечения: основных положений структурного, модульного и защитного программирования. В ней также приведены некоторые рекомендации, например по стилю оформления программ. В третьей главе рассматриваются проблемы, связанные с постановкой задачи: от классификации программных продуктов до разработки технического задания и принятия основных решений начального этапа проектирования, например выбора подхода, среды и языка программирования. Четвертая и пятая главы посвящены особенностям разработки программного обеспечения при структурном подходе; четвертая – анализу различных моделей разрабатываемого программного обеспечения, используемых на этапе уточнения спецификаций, а пятая – методикам проектирования. Шестая и седьмая главы содержат аналогичный материал для объектного подхода. В качестве основного языка описания моделей анализа и проектирования при объектном подходе используется UML как мощное и практически стандартное средство описания объектных разработок.