Книга: Технологии программирования
5.1. ОБЩИЕ СВЕДЕНИЯ О ПРОЕКТНОЙ ПРОЦЕДУРЕ
5.1. ОБЩИЕ СВЕДЕНИЯ О ПРОЕКТНОЙ ПРОЦЕДУРЕ
Развитие отдельных направлений программирования, филологии, психологии, теории проектирования и искусственного интеллекта подошло к точке, когда ощущается настоятельная необходимость интеграции накопленных результатов. Попытка такой интеграции воплотилась в излагаемой далее проектной процедуре (методике), которая может быть применена для составления функциональных описаний (структурированных описаний процессов). Инструкция пользования каким-либо устройством, инструкция вообще или алгоритм программы являются описаниями функционирования. Описания функционирования могут быть как структурированными в соответствии с излагаемым подходом к структурированию, так и неструктурированными. Таким образом, в данной главе рассматривается именно проектная процедура (методика) разработки функциональных описаний функционирования систем, отличающаяся использованием особого структурирования.
Программисты могут применять проектную процедуру при написании:
— документальных описаний вычислительных и иных алгоритмов, предназначенных для тиражирования;
— инструкций работы пользователя в системе организации (учреждения) с использованием ЭВМ и разрабатываемой программы;
— описаний внешнего функционирования программы в форме сценария работы программы (такие описания предшествуют внутреннему проектированию программы);
— внутренних спецификаций функционирования программы (метода решения задачи, алгоритма программы в целом);
— исходных текстов модулей программы при использовании технологии структурного программирования;
— кода методов объектов при использовании технологии объектно-ориентированного программирования;
— текстов помощи по использованию программы.
Умение применять проектную процедуру полезно и непрограммистам. При помощи данной проектной процедуры можно составлять:
• короткие и понятные описания любых процессов;
• приказы и распоряжения на выполнение работ;
• инструкции пользования изделиями;
• описания принципов функционирования изделий;
• описания бизнес-процессов;
• бухгалтерские инструкции по проведению расчетов;
• тексты должностных инструкций организационного обеспечения.
Данный список не является исчерпывающим и возможны все новые применения.
Более подробно актуальность разработки функциональных описаний вне сферы программирования характеризуется следующими примерами.
"Копать траншею от забора до обеда" — неудачное распоряжение (недостаточно полно выявлена и указана входная и выходная информация, а также отсутствует цель).
Предположим, что в конце июня некий отечественный бухгалтер обратился с просьбой об отпуске. Главный бухгалтер, вероятнее всего, даст примерно такой ответ: "Не дам никакого отпуска до сдачи полугодового отчета". Представим себе, что имеется набор ежедневных детально исчерпывающих инструкций по работе данного бухгалтера. Набор таких инструкций называется описанием бизнес-процессов. В этом случае да и в случае болезни работа бухгалтера передается резервному специалисту. Предположим, что сверху спущен какой-то документ, согласно которому надо представить какие-то ранее не рассчитываемые данные. Скорее всего, данный документ представляет собой запутанную инструкцию, допускающую разночтение или даже содержащую ошибки для применения в некоторых особых случаях. Источником таких ошибок может являться не злой умысел составителя инструкции, а неспособность ее составителя охватить все особые случаи в силу огромного (астрономического!) количества путей выполнения инструкции, разработанной по традиционной операционной методике. Теперь главный бухгалтер начинает обзванивать коллег и инстанции в надежде получить разъяснения. Пусть он разобрался в инструкции. Теперь перед ним встает задача по отдаче распоряжений работникам бухгалтерии как работать при изменившихся условиях. Многие бухгалтеры, не зная основ современной алгоритмизации, скорее всего, обратятся к хорошо оплачиваемым программистам для избежания затруднений в отдаче распоряжений.
В отличие от бухгалтера, документально фиксирующего все свои действия, прораб на стройке свои распоряжения по производству работ готовит и отдает устно. Это объясняется традиционным уходом от ответственности в случае травматизма рабочих. Устная подготовка распоряжений приводит к таким ошибкам, как что-то не удается разместить в уже построенной части здания. Таким образом, строительство ведется циклическим процессом: строить — ломать — строить и т. д., что ведет к удорожанию строительства.
Продажа и даже перепродажа готовых технических изделий по действующему законодательству предполагает наличие инструкции пользования изделия на русском языке. Однако часто оказывается, что инженеры составляют такие длинные и запутанные инструкции пользования объектами техники, что потребители начинают эксплуатацию изделия с недопустимых действий, которые могут привести изделие даже к неремонтно-пригодному состоянию.
Помимо апробации в области программирования авторы учебника провели апробацию изложенных в нем методик при обучении непрограммирующих специальностей. Оказалось, что обучение методике разработки функциональных описаний (на примерах составления инструкций вообще, описаний бизнес-процессов) вполне доступно студентам второго курса специальности бухгалтерский учет, даже если они не изучали эту методику в курсе программирования. Более того, половина учеников девятого класса обычной школы вполне способна полностью освоить данный материал. Следует отметить такой факт: до обучения лишь несколько учеников класса реально могли написать план, а потом сочинение. После обучения практически три четверти обучаемых могли написать план, а затем его развить в сочинение, т. е. школьники реально освоили элементы дедуктивного мышления! Затраты на освоение материала составили 8 ч лекционных и 16 ч практических занятий. Таким образом, у обучаемых всего за 24 ч учебных занятий удается развить первичные навыки дедуктивного мышления и владение начальными методами системного подхода.
Написание технической документации — особый жанр писательского искусства. В настоящее время в развитых странах появляется новая специальность Technical Writer — технический писатель. Вероятно, одна из сфер применения проектной процедуры заключается в ее использовании такими специалистами.
Хорошим функциональным описанием является описание безошибочное, однозначное для читателя, краткое, суть которого понимается быстро. Согласно проектной процедуре хорошее функциональное описание составляется от общего к частному с использованием особых конструкций предложений — типовых элементов (типовых структур или просто структур), составляющих семантический скелет будущих инструкций.
Обычно человек мыслит предложениями естественного языка. Если научиться упорядочивать мысли в процессе мышления, то можно научиться получать алгоритмы и иные функциональные описания со скоростью не только не меньшей, чем до обучения, но даже большей. Опытный программист пишет текст на языке программирования со скоростью, с которой он думает, а в случае простых алгоритмов — со скоростью набора текста на клавиатуре. Инструкции, предназначенные для исполнения людьми, могут содержать как алгоритмы, так и эвроритмы.
Одно из преимуществ применения проектной процедуры заключается в снижении умственной усталости программиста или составителя инструкций за счет исключения необходимости неоднократного повторения мыслительного процесса для получения одной и той же забываемой идеи.
Главное преимущество состоит в однозначности соответствия функционального описания замыслу, что достигается исчерпывающим тестированием. При операционном подходе к составлению описаний функционирования исчерпывающее тестирование принципиально невозможно в силу сложности решаемой задачи (требуется сразу оттестировать большую и сложную структуру — всю программу или инструкцию).
Еще одно преимущество состоит в получении самодокументированных текстов программ. Самодокументированные программы получаются путем применения особого стандартизированного способа оформления текстов программ с использования комментариев и стандартных типовых структур кодирования.
Использование стандартных типовых структур предполагает особую декомпозицию алгоритма программы или эвроритма инструкции по принципу "от общего к частному", что требует от разработчика владения дедуктивным мышлением.
- 5.1. ОБЩИЕ СВЕДЕНИЯ О ПРОЕКТНОЙ ПРОЦЕДУРЕ
- 5.2. ИСТОРИЯ ВОЗНИКНОВЕНИЯ ПРОЕКТНОЙ ПРОЦЕДУРЫ
- 5.3. ОБЩЕЕ ОПИСАНИЕ ПРОЕКТНОЙ ПРОЦЕДУРЫ
- 5.4. РЕКОМЕНДАЦИИ НАЧИНАЮЩИМ ПО СОСТАВЛЕНИЮ ОПИСАНИЙ АЛГОРИТМОВ И ЭВРОРИТМОВ
- 5.5. ПРИМЕР РАЗРАБОТКИ ОПИСАНИЯ ПРОЦЕССА "КИПЯЧЕНИЕ ВОДЫ В ЧАЙНИКЕ"
- 5.6. ПРИМЕР ОПИСАНИЯ ПРОГРАММЫ "РЕДАКТОР ТЕКСТОВ"
- 5.7. РЕФАКТОРИНГ АЛГОРИТМОВ И ЭВРОРИТМОВ
- 5.8. КОДИРОВАНИЕ ТИПОВЫХ СТРУКТУР НА ЯЗЫКАХ ПРОГРАММИРОВАНИЯ
- 5.9. МЕТОДИКА РАЗРАБОТКИ АЛГОРИТМОВ ПРОГРАММ
- 5.10. ПРИМЕР ВЫПОЛНЕНИЯ УЧЕБНОЙ РАБОТЫ "РАЗРАБОТКА АЛГОРИТМА УМНОЖЕНИЯ"
- 5.11. ПРИМЕР ПРИМЕНЕНИЯ ПРОЕКТНОЙ ПРОЦЕДУРЫ ДЛЯ КОДИРОВАНИЯ ПРОГРАММЫ ПЕЧАТИ КАЛЕНДАРЯ НА ПРИНТЕРЕ
- Глава 5 ПРОЕКТНАЯ ПРОЦЕДУРА РАЗРАБОТКИ ФУНКЦИОНАЛЬНЫХ ОПИСАНИЙ
- От составителя
- Общие рекомендации по безопасности
- Общие принципы моделирования
- Общие сведения
- Общие рекомендации поиска неисправностей
- 2.3. Общие требования к рекламе
- 2.3. Общие законы кибернетики
- Общие команды isql
- Общие сведения о Проводнике Windows Vista
- Общие сведения о поиске и индексировании
- Общие сведения о веб-ресурсах Интернета