к библиотеке   к курсу Жоголева   к оглавлению   к высокоуровн. языкам - 3GL   к визуальным средам - 4GL

Технологии программирования (Software Engineering)

Donald Ervin Knuth
Donald Ervin Knuth

Введение в технологии программирования

1.1. Основные понятия и определения

Жизненный цикл программы - это весь период ее разработки и эксплуатации, начиная с момента возникновения замысла и заканчивая прекращением всех видов ее использования.

Технология программирования изучает технологические процессы и порядок их прохождения - стадии (с использованием знаний, методов и средств). Знания, методы и средства могут использоваться в разных процессах и, следовательно, технологиях.

Технологии удобно характеризовать в двух измерениях - вертикальном (представляющем процессы) и горизонтальном (представляющем стадии).

Процесс - совокупность взаимосвязанных действий, преобразующих некоторые входные данные в выходные. Процессы состоят из набора действий, а каждое действие из набора задач. Вертикальное измерение отражает статические аспекты процессов и оперирует такими понятиями, как рабочие процессы, действия, задачи, результаты деятельности и исполнители.

Стадия - часть действий по созданию программного обеспечения, ограниченная некоторыми временными рамками и заканчивающаяся выпуском конкретного продукта, определяемого заданными для данной стадии требованиями. Стадии состоят из этапов, которые обычно имеют итерационный характер. Иногда стадии объединяют в более крупные временные рамки, называемые фазами. Итак, горизонтальное измерение представляет время, отражает динамические аспекты процессов и оперирует такими понятиями, как фазы, стадии, этапы, итерации и контрольные точки.

Технологический подход определяется спецификой комбинации стадий и процессов, ориентированной на разные классы программного обеспечения и на особенности коллектива разработчиков.

Простейшее представление жизненного цикла программы представлено на рис. 3.1.

Фактически, в данном случае на каждой стадии выполняется единственный процесс. Конечно, при разработке и создании больших программ такая схема недостаточно корректна (да и просто нереалистична). Однако мы можем взять ее за основу для многих других технологических подходов к ведению жизненного цикла.

1.2. История и эволюция

История учит тому, что из истории мы ничему не учимся.
Б. Шоу

В истории технологии программирования можно выделить три этапа.

1.3. Классификации

1.3.1. Классификация технологических подходов

Выделим основные группы технологических подходов и укажем подходы для каждой из них.

Подходы со слабой формализацией

Эти подходы не используют явных технологий и их можно применять только для очень маленьких проектов, как правило, завершающихся созданием демонстрационного прототипа. К подходам со слабой формализацией относятся так называемые ранние технологические подходы, например подход "кодирование и исправление" (см. разд. 3.5.1.1).

Строгие (классические, жесткие, предсказуемые) подходы

Данную группу подходов рекомендуется применять для средних, крупномасштабных и гигантских проектов с фиксированным объемом работ. Одно из основных требований к таким проектам - предсказуемость. В эту группу входят подходы, перечисленные ниже.

Гибкие (адаптивные, легкие) подходы

Подходы этой группы рекомендуется применять для небольших или средних проектов в случае неясных или изменяющихся требований к системе. Команда разработчиков должна быть ответственной и квалифицированной, а заказчики должны быть согласны принимать участие в разработке. В данную группу входят подходы, перечисленные ниже.

1.3.2. Классификация технологических процессов

Мы будем рассматривать два набора (множества) технологических процессов. Первый набор - классический, включающий основные процессы, сложившиеся исторически в результате практического опыта разработки программного обеспечения. Второй набор - стандартный, т. е. основанный на стандарте ISO 12207:1995. Процессы классического набора фактически являются подмножеством стандартного, выступая там как процессы или действия процессов.

В классическом наборе выделим девять технологических процессов.

Процессы жизненного цикла, определяемые международным стандартом

ISO 12207 [ISO/IEC 12207:1995], делятся натри группы.

1.3.3. Классификация технологических стадий

Технологические стадии выделяются исходя из соображений разумного и рационального планирования и организации работ. Существует два основных варианта формирования промежутков времени, поддерживаемых технологическими подходами. В первом - формируются фазы, отражающие крупные временные этапы. Например, начальная фаза, середина, кризис, окончание. Во втором варианте - определяются стадии, отражающие названия классических процессов (или их подмножества или надмножества), большая часть времени которых проходит в данной стадии. Пример взаимосвязи между стандартными процессами и стадиями показан на рис. 3.2.

1.4. Проблемы и перспективы развития

Кто хочет обрести счастье или мудрость, тот должен искать перемен.
Конфуций

В настоящее время развитие и совершенствование технологических подходов ведется по двум направлениям, которые достаточно сильно отличаются друг от друга своими задачами.

Еще одно важное перспективное направление, связанное с технологией программирования - исследование человеческих и социальных факторов в информатике и программировании.

Предполагается, что в ближайшее время основные усилия в исследовании разработки программного обеспечения будут направлены на процесс проектирования. Это объясняется тем, что в больших проектах основной объем работ приходится на проектирование, которое должны выполнять талантливые творческие специалисты.

1.5. Рекомендации по литературе

Книги банальны. Гениальна только жизнь.
Томас Карлейль

По технологии программирования издано очень большое количество книг. Особого внимания заслуживают пять.

Часть работы "Методология программирования" [Турский 1981] посвящена проектированию программ.

Классическим учебником по технологии программирования считается книга "Software Engineering" [Sommerville 1992]. Рекомендации по управлению разработкой программного продукта подробно изложены в работе "The New Software Engenering" [Conger 1994].

к библиотеке   к курсу Жоголева   к оглавлению   к высокоуровн. языкам - 3GL   к визуальным средам - 4GL

Знаете ли Вы, что инкапсуляция, Encapsulation - От лат.In - в + Capsula - это ящичек, в объектно-ориентированном программировании - сокрытие внутренней структуры данных и реализации методов объекта от остальной программы. Другим объектам доступен только интерфейс объекта, через который осуществляется все взаимодействие с ним.

Bourabai Research Institution home page

Боровское исследовательское учреждение - Bourabai Research Bourabai Research Institution