Костерин В В
Шрифт:
• Согласно современным технологиям программирования, описания алгоритмов в словесно пошаговой и графической формах, в виде схем алгоритмов практически не используются. Их заменили самодокументированные тексты, состоящие из стандартных структур кодирования.
• Хорошим функциональным описанием является описание безошибочное, однозначное для читателя, краткое, суть которого понимается быстро. Согласно проектной процедуре, хорошее функциональное описание составляется от общего к частному с использованием особых конструкций предложений — типовых элементов (типовых структур или просто структур).
• Любые алгоритмы или эвроритмы должны состоять только из стандартных структур. Каждая стандартная структура строго имеет один информационный вход и один информационный выход. Использование иных (нестандартных) структур приводит либо к удлинению описания, либо к невозможности тестирования (из-за нереально огромного объема необходимых тестов), либо к потере понятности.
• При разработке эвроритмов входная, промежуточная и выходная информации обычно характеризуются наименованиями предметов, их состоянием, местоположением и временем.
• При разработке алгоритмов программ входная, промежуточная и выходная информации характеризуются именами и набором значений как простых, так и структурированных переменных (записей, массивов).
• Первоначально алгоритм или эвроритм должен представлять одну типовую структуру СЛЕДОВАНИЕ (одно действие со смыслом "выполнить все действия программы"). Далее до достижения элементарных действий (элементарных операторов языка программирования или элементарных операций) отдельные структуры СЛЕДОВАНИЕ декомпозируются с соблюдением принципа от общего к частному одной из трех стандартных структур: ЦЕПОЧКА СЛЕДОВАНИЙ; ЦЕПОЧКА АЛЬТЕРНАТИВ; ПОВТОРЕНИЕ.
• Переход на новый язык программирования рекомендуется начинать с разработки стандарта кодирования типовых вычислительных структур.
• Алгоритм во многом определяется структурой данных.
• Тесты — необходимый атрибут разработки алгоритма.
• Обобщающий тест или тесты — минимальный набор тестовых данных, охватывающих все возможные случаи вычислений.
• Алгоритмы из старых книг лучше понимаются после их рефакторинга.
КОНТРОЛЬНЫЕ ВОПРОСЫ
1. Перечислите основные недостатки каждого из способов описания алгоритмов.
2. Что такое функциональное описание?
3. Для чего предназначена проектная процедура разработки функциональных описаний?
4. Изложите требования к способу мышления пользователя проектной процедурой разработки функциональных описаний.
5. В каких случаях программисты могут применять проектную процедуру?
6. В каких случаях не программисты могут применять проектную процедуру?
7. Каковы основные характеристики структур СЛЕДОВАНИЕ, АЛЬТЕРНАТИВА и ПОВТОРЕНИЕ?
8. Каков порядок основных шагов (этапов) выполнения проектной процедуры?
9. Приведите пример описания внешних и внутренних данных программы.
10. Зачем нужна модель "черного ящика"?
11. Назовите тесты, разрабатываемые до программирования. Назначение. Содержание. Формы.
12. Назовите признаки структуры ЦЕПОЧКА СЛЕДОВАНИЙ.
13. Назовите порядок детализации одиночного СЛЕДОВАНИЯ.
14. Назовите порядок детализации ЦЕПОЧКИ СЛЕДОВАНИЙ.
15. Назовите признаки структур вида АЛЬТЕРНАТИВА.
16. Назовите порядок детализации ЦЕПОЧКИ АЛЬТЕРНАТИВ.
17. Запишите пример кодировки альтернатив с одним и двумя действиями.
18. Запишите пример кодировки альтернатив с тремя и более действиями.
19. Назовите признаки структуры ПОВТОРЕНИЕ.
20. Назовите порядок детализации структур универсальных циклов ДО и ПОКА.
21. Запишите пример кодировки структуры НЕУНИВЕРСАЛЬНЫЙ ЦИКЛ-ДО.
22. Запишите пример кодировки структур УНИВЕРСАЛЬНЫЕ ЦИКЛЫ ДО и ПОКА.
23. Как производится доказательство корректности алгоритмов при выполнении проектной процедуры.
24. Дополните описание процесса "Кипячение воды в чайнике" наглядными рисунками.
Глава 6
АРХИТЕКТУРА ПРОГРАММНЫХ СИСТЕМ
6.1. ПОНЯТИЕ АРХИТЕКТУРЫ ПРОГРАММНОЙ СИСТЕМЫ
Разработка архитектуры системы — это процесс разбиения большой системы на более мелкие части. Для обозначения этих частей придумано множество названий: программы, компоненты, подсистемы…
Процесс разработки архитектуры — этап, необходимый при проектировании систем или комплексов, но необязательный при создании программы. Если внешние спецификации (экранные формы, организация файлов и т. д.) описывают программную систему с точки зрения пользователя, то следующий шаг проектирования состоит в разработке архитектуры, а за ним следует проектирование структуры каждой программы.