Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
УМК по курсу ТРПС / ТРПС - Комплексное пособие.doc
Скачиваний:
194
Добавлен:
12.03.2015
Размер:
2.63 Mб
Скачать

Раздел5. Инженерия и инструментарий по

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

5.1. Инженерия по

Ряд направлений инженерии ПО представляет интерес с методологической и технологической точек зрения.

Стиль программирования– набор приёмов, методик и практик кодирования, которые используются, чтобы получить правильные, эффективные, простые для понимания и удобные для применения программы.

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

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

Защитное программирование– подход к программированию, при котором появляющиеся ошибки легко обнаруживаются и идентифицируются программистом. Существуют три основных принципа защитного программирования:

1. Общее недоверие: Для каждого модуля входные данные должны тщательно анализироваться в предположении, что они могут быть ошибочными.

2. Немедленное обнаружение: Каждая ошибка должна быть выявлена как можно раньше, это упрощает установление её причины.

3. Изолирование ошибки: Ошибки в одном модуле должны быть изолированы так, чтобы не допустить их влияние на другие модули.

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

К механизмам защитного программирования относят:

– директивы проверки – команды компилятору для использования встроенных средств генерации элементарных (но важных) проверок перед использованием некоторых операций;

– утверждения – логические операторы / подпрограммы для проверки правильности выполнения программы с помощью ограничений, наложенных на неё;

– исключения – представление ошибок или некорректных ситуаций для управления их обработкой в нужном месте программы;

– баррикады – изоляция повреждений путём организации проверок при передаче данных между определёнными программными модулями;

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

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

Одним из самых известных подходов, на основе которых можно эффективное защитное программирование, является проектирование по контракту.

Проектирование по контракту– подход к проектированию и программированию, основанный на документировании прав и обязанностей подпрограмм и программных модулей для обеспечения корректности программы. Предложен Бертраном Мейером и изложен им в 1997 г. в книге «Конструирование объектно-ориентированного ПО». Подход основывается на методологии ООП, хотя может быть построен и на основе других методологий. В подходе на основе методологии ООП модулем считается класс, подпрограммой – операция класса (метод).

Проектирование по контракту использует утверждения трёх видов: предусловия, постусловия и инварианты. Предусловие– утверждение о требовании для выполнения подпрограммы. Предусловие проверяется перед выполнением подпрограммы для обеспечения правильности исходных данных этой подпрограммы.Постусловие– утверждение о требовании к выполнению подпрограммы. Постусловие проверяется после выполнения подпрограммы для обеспечения правильности результатов этой подпрограммы.Инвариант– утверждение о требовании по выполнению программного модуля. Инвариант является истинным при взаимодействии модуля с другими модулями, но может быть ложным при выполнении подпрограммы этого модуля.

Перечисленные утверждения позволяют при грамотном использовании контролировать не только выполнение программы, но и её разработку. Проектирование по контракту оказывается эффективным при применении аспектного сборочного программирования.