Майлингова О.Л., Манжелей С.Г., Соловская Л.Б. - Прототипирование программ на языке Scheme (1108536)
Текст из файла
МОСКОВСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТим. M. B. ЛомоносоваФакультет вычислительной математики и кибернетикиМайлингова О. Л., Манжелей С. Г., Соловская Л. Б.Прототипирование программ на языке Scheme(методическое пособие по практикуму)Москва2001УДК 681.142ББК 22.18М14Майлингова О.Л., Манжелей С.Г., Соловская Л.Б. Прототипированиепрограмм на языке Scheme (методическое пособие по практикуму).Издательский отдел факультета ВМиК МГУ (лицензия ЛР№ 040777от 23.07.96), 2001. - 83 с.Рецензенты:доцент Пильщиков В.Н., к.ф.-м.н.доцент Мансуров Н.Н., к.ф.-м.н.Печатается по решению Редакционно-издательского Совета факультетавычислительной математики и кибернетики МГУ им.
М.В. ЛомоносоваПособие содержит необходимую информацию по языку Scheme и приемамфункционального программирования. Предлагаются методическиеуказания по быстрой разработке прототипов программ, их пошаговойдоработке и документированию. Приведены примеры заданий практикумаи рекомендации по их выполнению. Методическое пособие предназначенодля студентов 3-го курса факультета ВМиК.ISBN 5-89407-004-Х© Издательский отдел факультетавычислительной математики икибернетики МГУ им. М.В.Ломоносова,2001ВведениеПредлагаемое методическое пособие предназначено для студентов 3-гокурса факультета ВМиК в поддержку практикума, проводимого кафедройсистемного программирования. Целью практикума является знакомствостудентов с функциональным подходом в программировании на примереязыка Scheme (современного диалекта Lisp), приобретение навыковбыстрого прототипирования при создании программ, разработкабиблиотек функций и их использование при решении конкретных задач.Язык Scheme включает многие элементы логического и функциональногопрограммирования.
Уступая в эффективности таким языкам, как C++,Scheme отличается простотой и обладает богатыми встроеннымивозможностями манипулирования сложными структурами данных, такимикак списки, векторы, деревья, что позволяет минимизировать затраты насоздание программ. Легко расширяемый язык, Scheme дает возможностьбыстро создавать работающие прототипы программ, позволяющие оценитьстепень удачности того или иного решения, уточнить требованиязаказчика.
Будучи интерпретируемым языком, Scheme позволяет работатьсо структурами данных в интерактивном режиме, используя окноинтерпретатора, и как следствие, исключительно удобен дляэкспериментов со сложными структурами данных и проверке новыхподходов к их анализу.
Поэтому изучение возможностей языкацелесообразно проводить на примере задач, связанных с обработкойданных, имеющих достаточно сложную структуру, с одной стороны, ииспользующих нетрадиционные методы решения, с другой. Именно кэтому классу относятся задачи, решаемые с использованием новыханалитических методов, основанных на эволюционных процессах, иметодов анализа графов.Задание практикума состоит из двух частей: разработки библиотеки(генетического алгоритма или работы с графами) и решения с помощьюбиблиотеки одной из предложенных задач.
Выполнение заданияпрактикума предполагает использование современных подходов втехнологии программирования, а именно создание повторно используемыхкомпонент и пошаговое уточнение программ с построениемпоследовательности прототипов.Разработка библиотеки на Scheme воплощает концепцию созданияповторно используемого кода. Будучи расширяемым языком (это значит,что пользовательские функции ничем существенно не отличаются отвстроенных), Scheme как нельзя лучше подходит для создания ииспользования библиотек.
Хороший стиль программирования на Schemeкак раз и состоит в создании многократно используемых пользовательских3функций, объединенных в библиотеки. Обладая достаточно сложнойфункциональностью, библиотека может иметь очень простой внешний(пользовательский) интерфейс. При проектировании сложных библиотекне менее важен внутренний интерфейс, определяющий структуру,модульность самой библиотеки. В частности, хорошо продуманнаявнутренняя структура должна позволять легко заменять (перегружать)внутренние функции, допускающие различную реализацию (например,различные алгоритмы сортировки массивов, различные моделиестественного отбора).Решение конкретной задачи - это пример создания собственногонебольшого приложения, демонстрирующего функциональность, гибкостьи удобство использования библиотеки.
В соответствии со «спиральной»моделью жизненного цикла программы, проектирование приложенияцелесообразно осуществлять поэтапно по мере уточнения (усложнения)задачи. При этом на каждом шаге создается работающий прототиппрограммы, который затем может быть расширен. Постановкапредлагаемых задач уже включает элементы последовательногоуточнения.Пособие содержит необходимую информацию о языке Scheme и приемахфункционального программирования. Предлагаются методическиеуказания по быстрой разработке прототипов программ, их пошаговойдоработке и документированию. В пособии приводятся примеры заданийпрактикума и рекомендации по их выполнению.Пособие состоит из четырех глав. Первая глава посвящена описаниюмоделей разработки программного обеспечения, их анализу и сравнению.Основное внимание уделено моделям, использующим прототипирование.Вторая глава содержит необходимую информацию о языке Scheme иприемах функционального программирования.
В третьей главе даныметодические указания по быстрой разработке прототипов программ,использующих генетические алгоритмы и графы, их пошаговой доработкеи документированию. В четвертой главе приведены примеры заданийпрактикума и рекомендации по их выполнению.Глава 1Модели процессаобеспеченияразработкипрограммногоОсновной задачей моделирования процесса разработки программногообеспечения или программной системы является определениепоследовательности этапов разработки и определение критериев переходаот одного этапа к другому. Модель процесса не полностью описывает вседействия, которые моделирует. Модели процессов разработки важны,прежде всего, потому, что они определяют стратегию выполненияосновных задач, возникающих при реализации некоторого проекта, такихкак разбиение на этапы, развитие системы, прототипирование,верификация.
Существуют различные модели, которые могут бытьиспользованы разработчиками программного обеспечения для создания ихсистем эффективно и квалифицированно. Рассмотрим некоторые из них.Кодирование и использованиеОдна из первых моделей, которая использовалась на ранних этапахразработки программ, состояла из двух фаз: написание некоторого кода иего внедрение.
Основные проблемы этой модели очевидны:• после некоторого количества модификаций код становился стольнеструктурированным, что дальнейшее его сопровождение становилосьневозможным. Это определило необходимость включение в процессразработки до начала кодирования фазы проектирования;• часто оказывалось, что даже хорошо спроектированный программныйпродукт слабо удовлетворял потребности пользователя, что приводилолибо к полному отказу от продукта, либо к его дорогостоящеймодификации. Это потребовало включения в процесс разработки фазыопределения требований еще до начала проектирования;• как правило, оказывалось сложно использовать код из-за того, что онбыл недостаточно хорошо протестирован, и не предусматривалвозможность дальнейшей модификации.
Поэтому возникла потребностьявно разделить фазы кодирования и тестирования, и планироватьтестирование, развитие и сопровождение системы еще на раннихэтапах ее разработки.Пошаговая разработкаУже в 1956 году, опыт разработки больших программных систем привел косознанию существовавших проблем и к разработке пошаговой модели дляих решения. Модель определяла процесс создания программных продуктовкак выполнение последовательности шагов, таких как общеепроектирование, детальное проектирование, спецификация кода,кодирование, тестирование, общее тестирование, оценка системы.Водопадная модельВ 60-е годы был констатирован «кризис программного обеспечения», чтоподтолкнуло к внимательному исследованию причин "неудачной жизнипрограмм".
Наиболее важной причиной оказалась недооценка важностиэтапа формулирования требований. Ошибки, связанные с несоответствиемсистемы требованиям заказчиков, оказались самыми дорогими иприводящими к нежизнеспособности разработанного продукта. Для тогочтобы решать многочисленные проблемы, возникающие при разработкебольших программных систем, была определена в 1970 году и уточнена в1976 году классическая водопадная модель разработки программногообеспечения (Рис. 1). Эта модель учитывает существование обратной связимежду фазами разработки, определяет способы описания результатов фазразработки.Рис.
Характеристики
Тип файла PDF
PDF-формат наиболее широко используется для просмотра любого типа файлов на любом устройстве. В него можно сохранить документ, таблицы, презентацию, текст, чертежи, вычисления, графики и всё остальное, что можно показать на экране любого устройства. Именно его лучше всего использовать для печати.
Например, если Вам нужно распечатать чертёж из автокада, Вы сохраните чертёж на флешку, но будет ли автокад в пункте печати? А если будет, то нужная версия с нужными библиотеками? Именно для этого и нужен формат PDF - в нём точно будет показано верно вне зависимости от того, в какой программе создали PDF-файл и есть ли нужная программа для его просмотра.