Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
trpp.doc
Скачиваний:
2
Добавлен:
22.09.2019
Размер:
414.72 Кб
Скачать

Сквозной структурный контроль.

Развитием методов ручной проверки является разработанный и широко применяющийся фирмой IBM способ организации коллективной проверки получившей название сквозного структурного контроля.

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

Пример: рассмотрим организацию сессии по проверке результатов работы программиста.

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

Основные задачи контролеров состоят в том, чтобы найти ошибки упущенные отклонениями. Проверяющие ведут работы по накоплению и систематизации ошибок во время сессии по всему пакету.

Эта работа служит двум целям:

  1. Позволяет совершенствовать работу контролеров;

  2. Дает хороший материал для повышения квалификации программиста.

Стиль программирования и качества программ.

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

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

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

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

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

Комментарий должен содержать максимум информации. Также целесообразно помечать цель использованных переходов и каждую ветвь в разветвлении вычислительного процесса.

  1. Графическая иерархическая документация. Наглядная таблица содержания. Обзорные диаграммы. Детальные диаграммы. Верификация программ. Последовательность этапов верификации. Выводы.

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

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

Один из вариантов подобного инструмента является ГИД, применяемая фирмой IBM. Методика ГИД позволяет документировать именно функции системы. Полный комплект ГИД состоит из последовательности диаграмм, описывающих в текстово-графической форме функции системы, начиная о самых общих и заканчивая весьма детальными.

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

Типичный пакет ГИД содержит три вида документов:

наглядная таблица содержания (рис.1);

обзорная диаграмма (рис.2);

детальная диаграмма (рис.3).

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

Рис.1.

2. обзорная диаграмма – это диаграмма высокого уровня, описывающая важнейшие функции и ссылающиеся на диаграммы более низкого уровня – детальные диаграммы, необходимые для описания функции до нужной степени подробности. На обзорной диаграмме в обобщённой форме показаны разделы «Вход», «Обработка», «Выход».

Раздел «Обработка» представляет собой последовательность пронумерованных шагов, описывающих реализуемые функции.

Раздел «Вход» содержит элементы данных, используемых в процессе обработки. Элементы входных (выходных) данных и шаги обработки, на которых эти данные используются, соединяются стрелками.

Вход

Обработка

Выход

1

2

3

4

5

6

7

8

4.0

3.0

2.0

Рис.2.

3. детальная диаграмма – это вид документов, представляющих собой информацию об основных базовых элементах всего пакета ГИД. Детальная диаграмма содержит раздел «Расширенное описание», который уточняет, детализирует шаги раздела «Обработка» и ссылается на программы, связанные с шагами обработки.

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

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

Верификация – идея математического доказательства корректности программ.

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

Наиболее известный метод называется методом индуктивных утверждений.

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

Если они оказываются истинными, то программа корректна относительно входных и выходных данных.

Если доказать истинность условий невозможно, то либо в программе есть ошибки, либо ошибки есть в процедуре доказательства (например, неверное утверждение в некоторой точке разреза).

Если программист хочет написать правильную программу, ему необходимо выполнить следующие этапы:

  1. написать программу;

  2. определить входные и выходные условия для этой программы;

  3. разрезать циклы и снабдить каждую точку разреза индуктивным утверждением;

  4. получить верификационные условия;

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

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

Выводы:

  1. Использование в практике программирования систем доказательства правильности программ эффективно лишь при помощи ЭВМ.

  2. Методы математического доказательства теорем в настоящее время интенсивно развиваются и совершенствуются. Их применение в программировании способствует дальнейшему прогрессу в этой области.

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

  1. Структурное программирование. Понятие, основные положения. Фундамент структурного программирования. Терминология и математические обозначения, используемые в структурном программировании. Функция состояния программы.

В настоящее время структурное программирование – это целая дисциплина, объединяющая несколько взаимосвязанных способов создания ясных, лёгких для понимания программ. Другое направления совершенствования процесса разработки программ – развитие программно-инструментальных средств программирования (СУБД, Excel).

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]