Б А К А Л А В Р И А Т
Г.С. Иванова
ТехнолоГИя
проГраммИрованИя
Допущено УМО
по университетскому политехническому образованию
в качестве учебника для студентов
высших учебных заведений, обучающихся по направлению
«Информатика и вычислительная техника»
Третье издание, стереотипное
КНОРУС • МОСКВА • 2013
УДК 681.3.06(075.8)
ББК 32.973-018я73
И21
рецензенты:
е.в. Юркевич, заведующий лабораторией Института проблем управления им. В.А. Трапезникова РАН, д-р техн. наук, проф., в.м. Черненький, заведующий кафедрой «Системы обработки информации и управления» МГТУ им. Н.Э. Баумана, д-р техн. наук, проф.
Иванова Г.С.
И21 Технология программирования : учебник / Г.С. Иванова. — 3-е изд., стер. — М. :
КНОРУС, 2013. — 336 с. — (Бакалавриат).
ISBN 978-5-406-03207- Подробно рассмотрены основные методы и нотации, применяемые при разработке сложного программного обеспечения. Особое внимание уделено проектированию программных систем с использованием структурного и объектного подходов. Детально разобраны основные приемы обеспечения требуемых технологических свойств. Приведена классификация и проанализированы принципы проектирования пользовательских интерфейсов программного обеспечения. Материал учебника проиллюстрирован большим количеством примеров, поясняющих рисунков и проектной документации.
Соответствует Федеральному государственному образовательному стандарту высшего профессионального образования третьего поколения.
Для студентов вузов, которые обучаются по направлениям, предполагающим изучение технологии программирования. Полезен при оформлении документации к курсовым и дипломным работам и проектам, связанным с разработкой программного обеспечения. Может быть интересен всем изучающим программирование самостоятельно.
УДК 681.3.06(075.8) ББК 32.973-018я Иванова Галина Сергеевна ТехнолоГИя проГраммИрованИя Сертификат соответствия № РОСС RU. АЕ51. Н 16208 от 04.06.2012.
Изд. № 6671. Подписано в печать 25.03.2013. Формат 70100/16.
Гарнитура «Times New Roman». Печать офсетная.
Усл. печ. л. 27,3. Уч.изд. л. 27,0. Тираж 1036 экз. Заказ №.
ООО «КноРус».
127015, Москва, ул. Новодмитровская, д. 5а, стр. 1.
Тел.: (495) 741-46-28.
E-mail: [email protected] http://www.knorus.ru Отпечатано в филиале «Чеховский Печатный Двор»
ОАО «Первая Образцовая типография»
142300, Московская область, г. Чехов, ул. Полиграфистов, д. 1.
© Иванова Г.С., ISBN 978-5-406-03207-7 © ООО «КноРус», Оглавление ПРЕДИСЛОВИЕ.................................................. ВВЕДЕНИЕ...................................................... ГЛАВА 1. Технология программирования. Основные понятия и подходы 1.1. Технология программирования и основные этапы ее развития...... 1.2. Проблемы разработки сложных программных систем............. 1.3. Блочно-иерархический подход к созданию сложных систем........ 1.4. Жизненный цикл и этапы разработки программного обеспечения.... 1.5. Эволюция моделей жизненного цикла программного обеспечения... 1.6. Ускорение разработки программного обеспечения.
Технология RAD........................................... 1.7. Оценка качества процессов создания программного обеспечения.... ГЛАВА 2. Приемы обеспечения технологичности программных продуктов 2.1. Понятие технологичности программного обеспечения............. 2.2. Модули и их свойства...................................... 2.3. Нисходящая и восходящая разработка программного обеспечения.... 2.4. Структурное и «неструктурное» программирование. Средства описания структурных алгоритмов............................. ГЛАВА 3. Определение требований к программному обеспечению и исходных данных для его проектирования 3.1. Классификация программных продуктов по функциональному 3.2. Основные эксплуатационные требования ГЛАВА 4. Анализ требований и определение спецификаций программного обеспечения при структурном подходе 4.6. Математические модели задач, разработка или выбор ГЛАВА 5. Проектирование программного обеспечения при структурном подходе 5.2. Использование метода пошаговой детализации для проектирования 5.5. Проектирование программного обеспечения, основанное 5.6. Case-технологии, основанные на структурных ГЛАВА 6. Анализ требований и определение спецификаций программного обеспечения при объектном подходе UML – стандартный язык описания разработки программных продуктов с использованием объектного подхода..... 6.2. Определение «вариантов использования»....................... 6.3. Построение концептуальной модели предметной области.......... 6.4. Описание поведения. Системные события и операции............ ГЛАВА 7. Проектирование программного обеспечения при объектном подходе 7.1. Разработка структуры программного обеспечения 7.6. Проектирование размещения программных компонентов 7.7. Особенность спиральной модели разработки.
ГЛАВА 8. Разработка пользовательских интерфейсов 8.2. Психофизические особенности человека, связанные 8.5. Основные компоненты графических пользовательских 8.6. Реализация диалогов в графическом пользовательском 8.7. Пользовательские интерфейсы прямого манипулирования ГЛАВА 9. Пример разработки приложения Windows «Записная книжка»
9.2. Анализ предметной области, уточнение спецификаций ГЛАВА 10. Тестирование программных продуктов 10.1. Виды контроля качества разрабатываемого ГЛАВА 11. Отладка программного обеспечения ГЛАВА 12. Составление программной документации ПРИЛОЖЕНИЕ. Система условных обозначений универсального
ПРЕДИСЛОВИЕ
До последнего времени элементы технологии разработки программного обеспечения студенты изучали в таких курсах, как «Алгоритмические языки и программирование» и «Системное программирование», параллельно с основным материалом, что не позволяло сконцентрироваться на указанных вопросах. Однако сравнительно недавно в учебных планах специальностей, связанных с информатикой, появился курс «Технология программирования», полностью посвященный этой теме.Такое внимание к этой теме вызвано тем, что современное программирование – сложный производственный процесс, в котором участвует целый коллектив разработчиков: математиков, программистов, тестеровщиков и других специалистов. Организация взаимодействия между всеми участниками проекта требует максимально точного планирования работы и наличия соответствующей документации. Таким образом, любой член коллектива разработчиков программного обеспечения должен владеть основными технологическими знаниями в этой области. И чем объемнее и сложнее разрабатываемое программное обеспечение, тем больше специалистов участвует в его разработке и тем большее значение имеет правильная организация технологического процесса его создания.
Существенную роль играет также знание основных технологических приемов, позволяющих существенно сократить время разработки, а также улучшить качество создаваемого программного обеспечения. Такие приемы существуют практически для всех этапов разработки: от составления технического задания до тестирования готового продукта, и знание их абсолютно необходимо будущим специалистам в области создания сложного программного обеспечения.
В предлагаемом учебнике сделана попытка обобщения и методического осмысления опыта, накопленного специалистами в области разработки программного обеспечения на протяжении всей истории существования.
Имеющийся опыт позволяет превратить плохо управляемый «творческий»
процесс создания программного обеспечения в хорошо организованное производство технологически качественных программных продуктов.
ВВЕДЕНИЕ
Создание программной системы – весьма трудоемкая задача, особенно в наше время, когда обычный объем программного обеспечения превышает сотни тысяч операторов. Будущий специалист в области разработки программного обеспечения должен иметь представление о методах анализа, проектирования, реализации и тестирования программных систем, а также ориентироваться в существующих подходах и технологиях.Изложение материала учебника строится в соответствии с основными этапами разработки программного обеспечения. Исключением являются первые главы, в которых рассмотрены общие вопросы технологии программирования.
В главе 1 проанализирована история развития технологии программирования, показано, что в основе разработки программного обеспечения лежит блочно-иерархический подход, рассмотрены особенности применения этого подхода к разработке программных продуктов.
Глава 2 содержит описание приемов обеспечения качества программного обеспечения: основных положений структурного, модульного и защитного программирования. В ней также приведены некоторые рекомендации, например по стилю оформления программ.
В главе 3 рассматриваются проблемы, связанные с постановкой задачи:
от классификации программных продуктов до разработки технического задания и принятия основных решений начального этапа проектирования, например выбора подхода, среды и языка программирования.
Главы 4, 5 посвящены особенностям разработки программного обеспечения при структурном подходе; четвертая – анализу различных моделей разрабатываемого программного обеспечения, используемых на этапе уточнения спецификаций, а пятая – методикам проектирования.
Главы 6, 7 содержат аналогичный материал для объектного подхода.
В качестве основного языка описания моделей анализа и проектирования при объектном подходе используется UML как мощное и практически стандартное средство описания объектных разработок.
В главе 8 подробно рассмотрены проблемы проектирования пользовательского интерфейса и предлагаются соответствующие модели.
В главе 9 описан пример проектирования небольшой программной системы Записная книжка. Этот пример может послужить основой для написания расчетно-пояснительной записки по курсовой или дипломной работам или проектам.
Глава 10 посвящена тестированию программных продуктов как по частям, так и в целом, одиннадцатая – методам, средствам и методикам отладки разрабатываемого программного обеспечения.
В главе 11 рассмотрены методы и приведена методика отладки программного обеспечения.
В главе 12 приведены сведения и рекомендации по разработке программной документации.
Материал сопровождается большим количеством сравнительно простых примеров, причем по возможности использованы три примера разработки, для которых рассмотрены различные аспекты проектирования.
Курс обучения целесообразно завершать курсовым проектом или курсовой работой, целью которых должно быть создание небольшого, но завершенного программного продукта (в отличие от небольших и, как правило, недокументированных программ, которые студенты пишут на лабораторных работах при изучении основ программирования и (или) конкретных языков). Проект должен начинаться с составления и утверждения технического задания и сопровождаться подготовкой необходимой программной документации.