
- •2. Основные характеристики программного модуля по г. Майерсу: размер, прочность, сцепление, рутинность
- •3. Общие принципы моделирования жизненного цикла программных средств…
- •5. Внешнее описание программного средства и процесс его разработки…
- •6. Структурное программирование и основные конструкции структурного программирования
- •7. Метод таблиц решений
- •8. Метод пошаговой детализации н. Вирта и понятие о псевдокоде
- •9. Пользовательский интерфейс с точки зрения разработчика и пользователя...
- •10. Методология функционального моделирования idef0. Основные элементы и понятия idef0. Принципы ограничения сложности idef0-диаграмм. Дисциплина групповой работы над разработкой idef0-модели
- •11. Основные принципы тестирования программных средств…
- •12. Основы методологии idef1x…
- •13. Основы методологии idef3. Назначение и два типа диаграмм в idef3
- •14. Оценка показателей качества программных средств в соответствии гост 28195-89
- •15. Диаграммы потоков данных. Нотации Йордона-Де Марко и Гейна-Сарсона. Понятие о мини-спецификациях и словарях данных
- •16. Надежность программных средств. Количественные показатели надежности. Оценка показателей надежности на основе различных моделей
- •17. Оценка размеров программных средств на начальных стадиях проектирования. Метрики количества строк исходного кода и функциональных точек. Метод функциональных точек
- •19. Оценка трудоемкости и сроков реализации программных проектов с помощью модели cocomo
- •20. Модель зрелости процессов разработки программных средств (смм). Уровни зрелости в соответствии с моделью смм. Сертификация на основе модели смм
- •Дополнение к 15 Мини-спецификация и словари данных
8. Метод пошаговой детализации н. Вирта и понятие о псевдокоде
В качестве основного метода построения текста модуля современная технология программирования рекомендует пошаговую детализацию, предложенную Н. Виртом. Сущность этого метода заключается в разбиении процесса разработки текста модуля на ряд шагов.
На первом шаге описывается общая схема работы модуля в обозримой линейной текстовой форме (т.е. с использованием очень крупных понятий), причем это описание не является полностью формализованным и ориентировано на восприятие его человеком. На каждом следующем шаге производится уточнение и детализация одного из понятий, в каком либо описании, разработанном на одном из предыдущих шагов. В результате такого шага создается описание выбранного уточняемого понятия либо в терминах базового языка программирования, либо в такой же форме, что и на первом шаге с использованием новых уточняемых понятий. Этот процесс завершается, когда все уточняемые понятия будут, в конечном счете, выражены на базовом языке программирования. Наконец, последним шагом будет получение окончательного текста модуля на базовом языке программирования путем замены всех вхождений уточняемых понятий заданными их описаниями и выражение всех вхождений конструкций структурного программирования средствами этого языка программирования.
Пошаговая детализация связана с использованием частично формализованного языка для представления указанных описаний, который получил название псевдокода. Этот язык позволяет использовать все конструкции структурного программирования, которые оформляются формализовано, вместе с неформальными фрагментами на естественном языке для представления обобщенных операторов и условий. В качестве обобщенных операторов и условий могут задаваться и соответствующие фрагменты на базовом ЯП.
Головным описанием на псевдокоде можно считать внешнее оформление модуля на базовом языке программирования, которое должно содержать:
начало модуля на базовом языке, т.е. первое предложение или заголовок (спецификацию) этого модуля;
раздел (совокупность) описаний на базовом языке, причем вместо описаний процедур и функций только их внешнее оформление;
неформальное обозначение последовательности операторов тела модуля как одного обобщенного оператора (см. ниже), а также неформальное обозначение тела каждого описания процедуры или функции как одного обобщенного оператора;
последнее предложение (конец) модуля на базовом языке.
Внешнее оформление описания процедуры или функции представляется аналогично. Впрочем, раздел описаний лучше также представить здесь неформальным обозначением, произведя его детализацию в виде отдельного описания.
Неформальное обозначение обобщенного оператора на псевдокоде производится на естественном языке произвольным предложением, раскрывающим в общих чертах его содержание. Единственным формальным требованием к оформлению такого обозначения является следующее: это предложение должно занимать целиком одно или несколько графических (печатных) строк и завершаться точкой (или каким-либо другим знаком, специально выделенным для этого).
Для каждого неформального обобщенного оператора должно быть создано отдельное описание, выражающее логику его работы (детализирующее его содержание) с помощью композиции основных конструкций структурного программирования и других обобщенных операторов. В качестве заголовка такого описания должно быть неформальное обозначение детализируемого обобщенного оператора. Основные конструкции структурного программирования могут быть представлены в псевдокоде след образом
Следование:
обобщенный_оператор
обобщенный_оператор
Разветвление:
ЕСЛИ условие
ТО
обобщенный_оператор
ИНАЧЕ
обобщенный_оператор
ВСЕ ЕСЛИ
Повторение:
ПОКА условие
ДЕЛАТЬ
обобщенный_оператор
ВСЕ ПОКА
В результате можно получить описание логики работы по наглядности вполне конкурентное со схемами алгоритмов, но обладающее существенным преимуществом сохраняется линейность описания.
УДАЛЕНИЕ В ФАЙЛЕ
ЗАПИСЕЙ ДО ПЕРВОЙ,
УДОВЛЕТВОРЯЮЩЕЙ
ЗАДАННОМУ ФИЛЬТРУ:
УСТАНОВИТЬ
НАЧАЛО ФАЙЛА.
ПОКА НЕ КОНЕЦ
ФАЙЛА ДЕЛАТЬ
ПРОЧИТАТЬ
ОЧЕРЕДНУЮ ЗАПИСЬ.
ЕСЛИ ОЧЕРЕДНАЯ
ЗАПИСЬ УДОВЛЕТВОРЯЕТ
ФИЛЬТРУ
ТО
ВЫЙТИ
ИНАЧЕ
УДАЛИТЬ
ОЧЕРЕДНУЮ ЗАПИСЬ ИЗ ФАЙЛА.
ВСЕ ЕСЛИ
ВСЕ ПОКА
ЕСЛИ ЗАПИСИ
НЕ УДАЛЕНЫ ТО
НАПЕЧАТАТЬ
"ЗАПИСИ НЕ УДАЛЕНЫ".
ИНАЧЕ
НАПЕЧАТАТЬ
"УДАЛЕНО н ЗАПИСЕЙ".
ВСЕ ЕСЛИ
Т.о., Э. Дейкстра предложил детализировать текст программы по горизонтальным слоям, что является перенесением его идеи о слоистых системах на уровень разработки модуля. Такой метод разработки кода поддерживается в настоящее время различными средствами ООП.