Алгоритмизация - это сложный творческий процесс. В основу процесса алгоритмизации положено фундаментальное понятие математики и программирования - алгоритм. Название "алгоритм" (правильнее "алгорифм") происходит от латинизированного воспроизведения арабского имени узбекского математика Аль-Хорезми, жившего в конце VIII - начале IX в., который первым сформулировал правила, позволяющие систематически составлять и решать квадратные уравнения.
Наряду с трактовкой алгоритма в соответствии с принятым стандартом (по ГОСТ 19.004-80 "алгоритм - это точное предписание, определяющее вычислительный процесс, ведущий от варьируемых начальных данных к искомому результату ") термин "алгоритм" может быть представлен более развернутым определением как конечный набор правил, однозначно раскрывающих содержание и последовательность выполнения операций для систематического решения определенного класса задач за конечное число.
Любой алгоритм обладает следующими свойствами: детерминированностью, массовостью, результативностью и дискретностью.
Детерминированность (определенность, однозначность) означает, что набор указаний алгоритма должен быть однозначно и точно понят любым исполнителем. Это свойство определяет однозначность результата работы алгоритма при одних и тех же исходных данных.
Массовость алгоритма предполагает возможность варьирования исходных данных в определенных пределах. Это свойство определяет пригодность использования алгоритма для решения множества задач данного класса. Свойство массовости алгоритма является определяющим фактором, обеспечивающим экономическую эффективность решения задач на ЭВМ, так как для задач, решение которых осуществляется один раз, целесообразность использования ЭВМ, как правило, диктуется внеэкономическими категориями.
|
Результативность алгоритма означает, что для любых допустимых исходных данных он должен через конечное число шагов (или итераций) завершить работу.
Дискретность алгоритма - это возможность разбиения алгоритмического процесса на отдельные элементарные действия, возможность реализации которых человеком или ЭВМ не вызывает сомнения, а результат их выполнения вполне определен и понятен.
Таким образом, алгоритм дает возможность чисто механически решать любую задачу из некоторого класса однотипных задач. Сложность и ответственность реализации этапа алгоритмизации объясняются тем, что для решения одной и той же задачи, как правило, существует несколько различных алгоритмов, отличающихся друг от друга уровнем сложности, объемами вычислительных и логических операций, составом необходимой исходной и промежуточной информации, точностью получаемых результатов и другими факторами, которые могут оказать существенное влияние на эффективность выбранного способа решения задачи.
Процесс алгоритмизации решения задачи обычно реализуется по следующей схеме:
* выделение автономных этапов процесса решения задачи (как правило, с одним входом и выходом);
* формализованное описание содержания работ, выполняемых на каждом выделенном этапе;
* проверка правильности реализации выбранного алгоритма на различных примерах решения задачи.
Существует несколько способов описания алгоритмов: словесный, формульно-словесный, графический, средствами языка операторных схем, с помощью таблиц решений и др. Помимо требования обеспечения наглядности выбор конкретного способа диктуется рядом факторов, из которых определяющими являются: степень необходимой детализации представления алгоритма, уровень логической сложности задачи и т.п.
|
Изображение схем алгоритмов при этом осуществляется по определенным правилам, ГОСТам и ОСТам, которые повышают их наглядность и однозначность восприятия, что облегчает обнаружение логических ошибок в процессе отладки программ.
Операторный способ записи алгоритма - это изображение последовательности операций процесса обработки данных с помощью заданного набора буквенных символов, обозначающих ту или иную типовую операцию. Последовательность выполнения операций алгоритма определяется расположением операторов в схеме (при чтении слева направо в соответствии с цифровой индексацией). Передача управления от оператора к оператору осуществляется в порядке следования в символической записи алгоритма, в случае отсутствия передачи управления от очередного оператора к последующему оператору записи между ними ставится признак завершения ветви алгоритма - символ точка с запятой.
Нарушение естественного порядка выполнения операторов отражается с помощью символов передачи управления (стрелок), которые используются: для указания перехода от условного оператора при разветвлении алгоритма; в случае отражения безусловного перехода; от последнего оператора, завершающего одну из ветвей алгоритма.
|
Использование операторного способа представления алгоритма значительно упрощает процесс его записи, так как каждому оператору схемы обычно соответствует определенная совокупность достаточно простых операций обработки информации.
Однако из-за малой наглядности и информативности отображения процесса решения задачи использование языка операторных схем не нашло широкого практического использования для разработки и отражения алгоритмов решения задач экономического характера.
Перечисленные способы описания алгоритмов имеют существенный недостаток, они не обеспечивают наглядности представления многовариантных вычислительных процессов, что характерно для алгоритмов решения сложных задач с разветвленной логикой. Особенно остро эти недостатки проявляются, когда возникает потребность внесения изменений и дополнений в логическую схему решения задачи.
Для разработки алгоритмов решения многовариантных расчетов с большим количеством проверок условий, определяющих выбор той или иной ветви процесса обработки информации, целесообразно использовать изобразительные средства в виде таблиц решений.
Таблицы решений, возникшие в обычной деловой практике, зарекомендовали себя как удобное средство, позволяющее четко, быстро и просто описывать достаточно сложные ситуации в задачах управления.
Описывая саму задачу и необходимые для ее решения действия, таблицы решений в наглядной форме определяют, какие условия должны быть выполнены, прежде чем можно будет переходить к тому или иному действию.
Легкость освоения специалистами любой области (профессии), простота модификации, компактность и, главное, более общая по сравнению с блок-схемами форма и более строгая логичность представления исходных условий и получаемой конечной информации, необходимой для программирования задач, - вот основные причины широкого использования таблиц решений.
Кроме того, таблицы решений пригодны для описания параллельных процессов (которые невозможно в удобной форме представить с помощью блок-схем), удобны для описания логики при построении сложных моделей ситуационного управления.
Сравнение изобразительных возможностей таблиц решений и блок-схем можно проиллюстрировать на задаче определения стажа работы на основе дат зачисления и увольнения работника.
Составление (адаптация) программ (кодирование) является завершающим этапом технологического процесса разработки программных средств, предшествующим началу непосредственно машинной реализации алгоритма решения задачи. Процесс кодирования заключается в переводе описания алгоритма на один из доступных для ЭВМ языков программирования. В процессе составления программы для ЭВМ конкретизируются тип и структура используемых данных, а последовательность действий, реализующих алгоритм, отражается посредством конкретного языка программирования.
Тестирование и отладка составляют заключительный этап разработки программы решения задач. Оба эти процесса функционально связаны между собой, хотя их цели несколько отличаются друг от друга. Тестирование представляет собой совокупность действий, предназначенных для демонстрации правильности работы программы в заданных диапазонах изменения внешних условий и режимов эксплуатации программы. Цель тестирования заключается в демонстрации отсутствия (или выявлении) ошибок в разработанных программах на заранее подготовленном наборе контрольных примеров. Процессу тестирования сопутствует понятие "отладка", которое подразумевает совокупность действий, направленных на устранение ошибок в программах, начиная с момента обнаружения фактов ошибочной работы программы и завершая устранением причин их возникновения.
По своему характеру (причине возникновения) ошибки в программах делятся на синтаксические и логические. Синтаксические ошибки в программе представляют собой некорректную запись отдельных языковых конструкций с точки зрения правил их представления для выбранного языка программирования. Эти ошибки выявляются автоматически при трансляции исходной программы (т.е. в процессе ее перевода с исходного языка программирования во внутренние коды машины) до ее выполнения.
После устранения синтаксических ошибок проверяется логика работы программы на исходных данных. При этом возможны следующие основные формы проявления логических ошибок:
* в какой-то момент программа не может продолжать работу (возникает программное прерывание, обычно сопровождающееся указанием места в программе, где оно произошло);
* программа работает, но не выдает всех запланированных результатов и не выходит на останов (происходит ее "зацикливание");
* программа выдает результаты и завершает свою работу, но они полностью или частично не совпадают с контрольными.
После выявления логических ошибок и устранения причин их возникновения в программу вносятся соответствующие исправления, и ее отладка продолжается.
Программа считается отлаженной, если она безошибочно выполняется на достаточно представительном наборе тестовых данных, обеспечивающих проверку всех ее участков (ветвей). Процесс тестирования и отладки программ носит итерационный характер и считается одним из наиболее трудоемких этапов процесса разработки программ. По оценкам специалистов, он может составлять от 30 до 50% в общей структуре затрат времени на разработку проектов и зависит от объема и логической сложности разрабатываемых программных комплексов.
Важность процессов тестирования качества программных средств, с одной стороны, и сложность самой методологии и многообразие применяемых методов тестирования', с другой стороны, обусловили появление специализированных фирм, обладающих дорогостоящими инструментами тестирования и квалифицированным персоналом, предлагающих платные услуги подобного рода.
В настоящее время лидирующее положение на мировом рынке автоматизированных средств контроля качества ПО занимают три компании: Rational Software (27%), Intersolv (11%), Mercury Interactive (11%), тогда как на долю компании Microsoft приходится только 5% мирового рынка соответствующей продукции.
Оценивая возрастание роли независимого тестирования программных средств информационных систем, в нашей стране также стали появляться специализированные центры тестирования программных продуктов. Если до недавнего времени такие работы осуществлялись только в Лаборатории оптимизации серверных приложений (в московском представительстве Intel) и только для платформ этой корпорации, то в 1999 г. компания «АйТи» открыла свой Центр тестирования, который на коммерческой основе оказывает услуги любым компаниям в проведении полномасштабного тестирования информационных систем (как готовящихся к внедрению, так и уже находящихся в эксплуатации).
В качестве испытательных стендов при этом используются серверы и рабочие станции Hewlett-Packard, Sun, Compag, работающие под управлением Unix и Windows NT. На их платформах установлены СУБД Oracle, Microsoft SQL Server, Informix и Sybase. При этом клиентские места могут быть реализованы и на компьютерах отечественной сборки. В качестве основных инструментов тестирования работоспособности и производительности в Центре применяются программные продукты мирового лидера в этой сфере софтверного бизнеса - компании Rational Software Corp. Используемые передовые технологии обеспечивают автоматизированное тестирование приложений архитектуры клиент-сервер как в режиме стабильной, так и стрессовой нагрузки системы (эмулируя произвольное число ее пользователей).
Еще один фундаментальный аспект тестирования состоит в том, что оно должно вписываться в общую инфраструктуру автоматизированных средств контроля качества ПО, используемых на протяжении всего жизненного цикла программного продукта.
После завершения процесса тестирования и отладки программные средства вместе с сопроводительной документацией передаются пользователю для эксплуатации. Основное назначение сопроводительной документации - обеспечить пользователя необходимыми инструктивными материалами по работе с программными средствами. Состав сопроводительной документации обычно оговаривается заказчиком (пользователем) и разработчиком на этапе подготовки технического задания на программное средство.
Как правило, это документы, регламентирующие работу пользователя в процессе эксплуатации программы, а также содержащие информацию о программе, необходимую в случае возникновения потребности внесения изменений и дополнений в нее. Сопроводительная документация призвана также облегчить процесс выявления причин возникновения ошибок в работе программы, которые могут быть обнаружены уже в ходе ее эксплуатации пользователем.