- •Федеральное государственное учреждение
- •©Российская таможенная академия, 2008
- •Ростовский филиал
- •© Крицкий с.П.
- •Содержание
- •Введение
- •Основные понятия программирования
- •Классификация языков программирования
- •Характеристика систем программирования на языкахJavaScript/Jscript
- •Типы значений в языкеJavaScript
- •Числовые литералы и значения и их организация в памяти Литералы целых чисел
- •Литералы вещественных чисел (чисел с плавающей точкой)
- •Логические литералы и значения и их организация в памяти
- •Строковые литералы, значения и их организация в памяти
- •Массивы и их организация в памяти. Многомерные массивы, матрицы
- •Записи и их организация в памяти
- •Операции над различными типами данных
- •Арифметические операции
- •Строковые операции
- •Логические операции
- •Операции сравнения
- •Операции выборки
- •Переменные, выражения, условия Переменные
- •Выражения
- •Вызовы функций и методов
- •Порядок вычисления выражения
- •Операции присваивания
- •Автоматическое преобразование типов значений. Функции преобразования и проверки типов
- •Ввод и вывод значений
- •Понятие оператора. Простые и составные операторы. Блок-схемы программ и модулей Операторы и модули
- •Блок-схемы
- •Составные операторы (последовательность, условные). Их синтаксис, блок-схемы и правила выполнения Последовательность операторов
- •Условный операторif … else
- •Операторы цикла (while, do-while и for). Их синтаксис, блок-схемы и правила выполнения. Операторыbreakиcontinue Оператор циклаwhile
- •Операторbreak
- •Операторcontinue
- •Оператор циклаdo…while
- •Оператор циклаfor
- •Функции. Определение и вызов. Выход из функцииreturn. Массив аргументовarguments Определение функции – операторfunction
- •Выход из функции – операторreturn
- •Определение переменной – операторvar
- •Отладка программ. Трассировка, отладочная печать. Тестирование программы
- •Основные понятия объектного подхода
- •ОбъектMath, назначение, свойства, методы. Значения NaN, Infinity, null, undefined.
- •Свойства объектаMath– константы:
- •Методы объекта Math
- •Специальные константы
- •Массивы как объекты в языкеJavaScript. Конструкторы, свойства и методы массивов. Задача копирования массива вJavaScript
- •Конструктор объектов типаArray
- •Свойство объектов типаArray
- •Методы объектов типаArray
- •Типичные задачи с массивами: линейная алгебра
- •Скалярное произведение векторов
- •Произведение матриц
- •Транспонирование квадратной матрицы
- •Типичные задачи с массивами: сортировка. Сортировка вставками. Методsort
- •Сортировка вставками
- •Методsort
- •Типичные задачи с массивами: поиск. Двоичный поиск в упорядоченном массиве
- •Обработка строк. Конструкторы, свойства, методы строк
- •Конструктор объектов типаString
- •Свойство объектов типаString
- •Методы объектов типаString
- •Шаблоны и регулярные выражения. Их использование методами строк.
- •Простые шаблоны
- •Составные шаблоны
- •Пользовательский интерфейс программ. Общее понятие
- •Html-страница как средство интерфейса для программ на языкеJavaScript. Тэги и атрибутыHtml
- •ОбъектыHtml-страниц иWeb-браузера, их свойства и методы. События и их обработка Объектные модели
- •Объекты страницы
- •Объекты браузера
- •СтилиHtml-объектов. Свойства позиционирования объектов страницы
- •Таймеры, примеры использования
- •Понятие ссылочной структуры данных. Односвязный список. Запись списков с помощью литералов.
- •Понятие стека. Функции для стека
- •Двухсвязный список, его структура
- •Понятие очереди и дека, их организация
- •Понятие дерева как ссылочной структуры. Бинарные деревья. Представление дерева литералом
- •Обработка деревьев. Рекурсия
- •Обход дерева «в глубину»
- •Обход дерева «в ширину»
- •Файлы и файловая система
- •Работа с текстовыми файлами
- •Объекты типа TextStream
- •Управление файлами и папками
- •Коллекции дисков, папок и файлов
- •Технология и методология создания программ
- •Жизненный цикл программы
- •Организация процесса разработки
- •Методологии проектирования программ
- •Заключение
- •Приложение 1. Теги, атрибуты и соответствующие свойства Общая структура html-документа
- •Форматирование текста
- •Вставка графики
- •Гиперссылки и карты
- •Приложение 2. События вHtmLи их источники
- •Приложение 3. Атрибуты и свойства стилейCss
- •Приложение 4. Работа с файловой системой вJScript
- •Свойства, методы и коллекции объектов файловой системы
- •Список литературы
- •Словарь терминов
- •If (условие) оператор1 [else оператор2]
- •Основы программирования
Технология и методология создания программ
Как и в любой инженерной области, в программировании процесс решения задачи состоит из таких этапов, как постановка задачи, поиск метода решения, проектирование решающего устройства (системы, технологии), его конструирование, внедрение, эксплуатация и модернизация. Совокупность и последовательность этих этапов называется жизненным циклом (ЖЦ) системы (устройства, технологии). Реализация ЖЦ требует применения специальных технологий и методологий, возможно, различных для каждого этапа и для разных прикладных областей.
Спецификой программирования является то, что постановка задачи имеет целью создание обобщённой, приблизительной информационной модели этой задачи, методом решения должен быть алгоритм обработки или реализации модели задачи, а устройством, решающим задачу, должна быть программа для компьютера. Если разрабатывается программно-технический комплекс для автоматизации некоторой деятельности, то создаваемые программные элементы этого комплекса могут проектироваться совместно с его аппаратными, коммуникационными и организационными элементами.
Конечно, процесс и технология разработки небольшой программы для собственных нужд проще, чем создание сложного программного комплекса на заказ или для продажи, занимающие десятки, а то и сотни человеко-лет. Но основные этапы их ЖЦ, а также базовые принципы технологии проектирования одинаковы. Просто отступления от них в небольшом проекте не столь критически сказываются на результате. Далее рассматриваются методы технологии создания «больших» программ. Их применение при разработке и «больших», и «маленьких» программ требует творческого подхода и умелой организации.
Жизненный цикл программы
Жизненный цикл программы (ЖЦП) является ключевым понятием науки «технология программирования». Рассмотрим более детально этапы ЖЦП и их результаты.
Постановка задачи состоит из двух этапов:
Формулировка целей и предмета автоматизации. Здесь формулируется, какие виды деятельности нужно автоматизировать, какие цели должны быть достигнуты в результате автоматизации.
Обследование и формулирование требований. Обследуется предмет автоматизации и составляется список требований к разрабатываемой системе: описание автоматизируемых функций, основных действий программ и пользователей, сообщения и документы, которыми они должны обмениваться, и пожелания к пользовательскому интерфейсу (всё это входит в информационную модель задачи), описание условий эксплуатации и основных ресурсов проекта – времени и денег. Результатом этапа является техническое задание (ТЗ), календарный план работ и примерная смета расходов.
Проектирование также состоит из двух этапов:
Эскизное (предварительное) проектирование. На этом этапе происходит декомпозиция поставленной задачи на подзадачи, для которых методы решения (принципиальные алгоритмы и способы организации данных) либо известны, либо должны быть найдены в результате дополнительных исследований. На основе этой декомпозиции происходит разработка архитектуры программной системы, т.е. выделение основных структурных компонентов (подсистем), предназначенных для решения отдельных подзадач, и фиксация связей между ними. Результатом является спецификация программы: функциональное описание подсистем (с указанием базовых алгоритмов), их взаимодействия, интерфейса и алгоритмов действий пользователей и реакции системы на эти действия. Спецификация проверяется на соответствие техническому заданию.
Техническое (детальное) проектирование: декомпозиция программной подсистемы на функциональные модули в соответствии с выбранным алгоритмом (или его адаптацией к конкретным условиям), спецификация взаимодействия модулей друг с другом (порядок взаимодействия, обмен сообщениями и данными, их структура). Декомпозиция – процесс рекурсивный, т.е. с каждым модулем происходит то же самое – декомпозиция. Так выстраивается детализированный алгоритм и структуры данных. Каждый модуль получает спецификацию – описание входных и выходных структур данных, их функциональных связей. При его декомпозиции создаётся спецификация каждого подмодуля и описание алгоритма на псевдокоде, в виде блок-схем и т.п. Эти описания являются важнейшими компонентами проектной документации и должны составляться и редактироваться со всей тщательностью. Алгоритм модуля тщательно проверяется (аналитическими методами) на соответствие спецификации самого модуля и его подмодулей. Такая проверка называется верификацией. Чем раньше начинается верификация, тем меньше ошибок будет содержать готовый продукт. Для большей достоверности аналитические методы дополняются экспериментальными, т.е. отладкой, для чего по возможности проектирование модуля сразу совмещается с его кодированием (см. след. этап).
Конструирование состоит из трёх видов работы:
Кодирование – запись алгоритмов на языке программирования и отладка отдельных модулей (см. п. 20) с имитацией ещё не написанных модулей (в соответствии с их спецификацией). Как отмечалось в п. 15, кодирование программы сильно упрощается, если для декомпозиции модулей используются стандартные составные операторы языка.
Сборка и тестирование системы. По мере готовности модулей какой-то функциональной подсистемы их можно собирать в единый программный комплекс и проводить отладку комплекса в целом. При этом могут обнаруживаться как ошибки в отдельных модулях, так и в их сопряжении. Наиболее тяжёлыми оказываются ошибки в спецификации модулей, так как они приводят к полному перепроектированию подсистемы или системы. Это подчёркивает важность документирования и верификации спецификаций на этапе проектирования. Тестирование подсистем и системы в целом осуществляют с помощью специально подготовленных тестовых наборов, обеспечивающих, по мнению разработчиков и приёмщиков, достаточно полные гарантии работоспособности программного продукта и его соответствия требованиям технического задания. Такой способ тестирования иногда называют альфа-тестированием. Кроме того, при альфа-тестировании могут имитироваться реальные условия работы системы на оборудовании разработчика. Успешное альфа-тестирование служит основанием для начала эксплуатации в реальной среде заказчика.
Эксплуатация осуществляется реальными пользователями, в их производственных условиях и состоит из двух этапов:
Внедрение и опытная эксплуатация, когда происходит установка нового оборудования, программного и методического обеспечения, обучение пользователей и массовое тестирование системы в реальной среде реальными пользователями в реальных производственных условиях – так называемое бета-тестирование. Разработчики принимают участие в этом этапе, устраняя обнаруженные ошибки в проекте и его реализации. Однако наиболее тяжёлые ошибки могут оказаться в постановке задачи и техническом задании. Они связаны с невозможностью в начале работы над системой во всех существенных деталях сформулировать требования к системе, которая должна вступить в строй через несколько месяцев или даже лет. Методы предотвращения таких ошибок будут рассмотрены ниже.
Эксплуатация (штатная) и сопровождение. На этом этапе в процессе эксплуатации происходит обнаружение и устранение сравнительно редко появляющихся ошибок, а также модернизация системы, необходимость которой вызвана изменившимися задачами системы и условиями её функционирования. Этот этап завершается ликвидацией данной системы в связи с её ненужностью или невозможностью модернизации. Чтобы продлить срок жизни системы, на этапе проектирования необходимо заложить возможность модернизации.
