Студопедия.Орг Главная | Случайная страница | Контакты | Мы поможем в написании вашей работы!  
 

Разработка прикладного программного обеспечения



Процесс разработки программы для решения конкретной задачи разбивается на следующие задачи:

1 Постановка задачи.

2. Выбор метода решения задачи и разработка алгоритма.

3. Программирование.

4. Отладка программы и создание загрузочного (исполняемого) модуля для решения задачи.

5. Анализ результатов и созданных программ.

3.1 Постановка задачи

Прежде чем создать программу для решения задачи на ЭВМ необходимо выполнить постановку этой задачи. Часто под постановкой задачи понимается только представление ее в виде математических формул или последовательности логических операций.

При постановке задачи необходимо прежде всего определить роль, отведенную ЭВМ, и сделать хотя бы грубую оценку целесообразности ее применения. Кроме того, определяют класс к которому принадлежит задача. Например, задача может заключаться в выработке рекомендаций при принятии человеком окончательного решения (задача принятия решений). Либо задача может заключаться в многократном выполнении сложных математических операций при различных исходных данных (вычислительная задача) и т.п.

Чтобы облегчить дальнейший процесс разработки и отладки программы, при постановке задачи необходимо четко определить какие данные могут меняться в процессе решения задачи, какие будут постоянными, какие будут использоваться в качестве справочных. Это позволит избежать внесения изменений в программу и повторной ее отладки. Кроме того, это дает возможность правильно организовать исходные данные и их хранение.

Итак, при постановке задачи необходимо:

- Определить исходные данные, поделить их на два класса: переменные (меняющиеся при повторном решении) и постоянные.

- Задать вид, свойства и ограничения на исходные данные.

- Определить выходные данные и требования к ним (вид, точность и т.п.).

- Определить требования к разрабатываемой программе.

Пример. Рассмотрим следующую задачу: создание программы для вычисления интеграла:

J=

При постановке этой задачи необходимо отразить следующие моменты:

Исходные данные - границы интегрирования и параметры, определяющие вид подынтегральной функции. Перечень параметров подынтегральной функции определяется классом к которому принадлежит функция. Предположим подынтегральная функция - это полином пятой степени: а0х51х42х3+ а3х24х+а5. Поэтому кроме границ интегрирования исходными данными будут коэффициенты полинома: а0, а1, а2, а3, а4 , а5. Все исходные данные являются переменными параметрами.

Вид исходных данных - целые, действительные или комплексные переменные.

Результатом выполнения программы является значение интеграла. Необходимо задать точность вычисления интеграла.

Определить способ ввода исходных данных (с клавиатуры, с дискеты из другой программы и т.п.). Определить форму выходных данных и путь (принтер, файл на гибком или жестком диске).

3.2 Выбор метода

Для решения одних и тех же задач можно выбрать различные методы. Для примера рассмотренного в предыдущем разделе можно предложить методы приближенного вычисления интегралов:

- метод прямоугольников;

- метод Cимпсона;

- метод трапеций

и другие.

При выборе метода учитывают:

- точность (точность получения результатов);

- быстродействие (время решения задачи с заданной точностью);

- необходимый объем внешней памяти;

- необходимый объем оперативной памяти.

Могут быть и другие критерии выбора метода решения задачи. Поэтому при решении задачи необходимо придерживаться следующих правил:

Если методов решения задачи несколько, то выбор должен быть обоснованным.

Для обоснования метода необходимо ввести критерии выбора.

Критерии выбора должны быть построены на основе исходных требований к решению задачи.

Для задачи, описанной в параграфе 3.1, могут быть использованы все вышеперечисленные методы. Каждый метод может вычислить интеграл с любой точностью. Естественно, что точность вычисления будет взаимосвязана с быстродействием: чем выше точность, тем больше времени необходимо для вычислений. Метод прямоугольников дает более простой алгоритм и, следовательно, менее сложную программу (т.е. для хранения созданной программы необходим меньший объем памяти).

3.3 Разработка алгоритма

Предположим для решения задачи выбран метод прямоугольников. Изложим этот метод с помощью рис.4.2. Идея метода заключается в следующем. Промежуток интегрирования (а,в) разделим на n равных частей. В результате на оси хобразуются точки x0=a, х1, х2,...,хn=b. Строим на полученных отрезках прямоугольники покрывающие площадь фигуры образованной кривой f(x), осью х, и прямыми параллельными оси у, проведенными в точках x01,...,хn. Прямоугольники могут быть вписанными, как на нашем рисунке, либо описывающими вычисляемую площадь. Ведем следующие обозначения: y0=f(x0), y1=(x1),...,yn=f(xn), h=(b-a)/n. Тогда интеграл вычисляется по следующей формуле:

Jn=h(y0+y1+...+yn-1).


Рис.4.2..Вычисление интеграла методом прямоугольников

Точность метода определяется количеством интервалов на которое разбивается промежуток интегрирования. Чтобы добиться заданной точности, например e, поступают следующим образом:

Разбивают промежуток интегрирования на n интервалов.

Вычисляют значение интеграла Jn.

Увеличивают число интервалов в 2 раза.

Вычисляют значение интеграла J2n

Если |J2n - Jn|£e, то заданная точность достигнута, в противном случае продолжают процесс, увеличения числа отрезков.

После выбора метода необходимо разбить его на самые элементарные шаги так, чтобы в результате получился алгоритм.

АлгоритмÌ- это четкая последовательность действий, определяющих порядок преобразования исходных данных к искомому результату.

Процесс разработки алгоритма называется алгоритмизациейÌ.

Каждый алгоритм должен удовлетворять следующим свойствам:

- Массовость. Это означает что алгоритм должен позволять решать не одну конкретную задачу, а множество задач этого класса. Для нашего примера алгоритм должен быть составлен так, что изменив подинтегральную функцию, либо границы интегрирования, по предложенному алгоритму можно было вычислить другой интеграл.

- Однозначность (детерминированность). Это означает что алгоритм при одних и тех же данных должен приводить к одному и тому же результату.

- Конечность. За конечное число шагов алгоритма должен быть получен результат либо выдано сообщение о невозможности его получения.

Алгоритм может быть описан словесно, в виде дерева либо с помощью блок схем.

Блок-схемаÌ - это подробное графическое представление алгоритма: порядка решения задачи, конкретных действий в виде набора определенных блоков, соединенных совокупностью направленных связей. Блоки представляют собой геометрические фигуры различных форм, каждая из которых характеризует особенности выполняемых действий и принимаемых решений (рис.4.3). Связи показывают переходы от одних блоков к другим. Форма для описания действий внутри блоков произвольная.

Блоки алгоритма могут быть в большей или меньшей степени детализированы. Если программист начинающий, то блоки должны быть более детализированы и только квалифицированный программист может позволить себе обобщенные блоки.

Итак при разработке алгоритма необходимо придерживаться следующих правил:

1) Первоначально необходимо представить алгоритм из укрупненных блоков. Укрупненные блоки обычно нумеруются, так как в дальнейшем они будут представлены с помощью более детализированных блок схем. В нашем случае (рис.4.4) это блоки ввода вывода и вычисления интеграла.

Рис.4.3. Основные блоки: а) начало; б) конец; в) ввод данных; г) вывод данных; д) вычислительный блок; е) условный блок.

2) На втором шаге необходимо расписать алгоритмы для укрупненных блоков. Для нашей задачи более детализированная блок-схема дана для блока 2 (рис.4.5).

3) При решении больших задач уровней детализации может быть несколько. Это позволяет привлечь к составлению программ несколько программистов и быстрее справиться с решением задачи.

В заключении отметим, что специалист любой области должен овладеть процессом алгоритмизации, не зависимо от того будет ли он в дальнейшем на основе разработанного алгоритма писать программу либо нет. Процессу алгоритмизации можно обучаться на примерах решения различных бытовых задач (алгоритм выбора различной аппаратуры, с учетом таких факторов как качество, ограничение на цену, местонахождение магазина и.т.п.). Необходимо научиться любую ситуацию и ваше поведение в ней представлять в виде алгоритма, и записывать его с помощью блок схем либо дерева.

Рис.4.4. Блок-схема алгоритма вычисления интеграла.

3.4. Программирование

Чтобы алгоритм был понятен ЭВМ он должен быть представлен на машинном языке. ЭВМ понимает только язык машинных команд. Последовательность машинных команд, выполняемых на ЭВМ называется программойÌ. Процесс создания программы называется программированием Ì.

На машинном языке все команды представляются в двоичных кодах. Соответственно созданная программа представляет собой последовательность нулей и единиц.

Первые программы для ЭВМ создавались на языке машинных команд. Процесс был утомительным, а созданные программы громоздкими. Так выглядела команда загрузки для ЭВМ ЕС-1022 на машинном языке.

Данная команда занимает четыре байта, первый байт содержит код операции, определяющий конкретное действие по преобразованию исходных данных. Остальные байты являются адресной частью команды, представляемой в виде операндов.

Процесс написания программы на языке машинных команд достаточно трудоемок, поэтому для повышения производительности труда программистов созданы машинно-ориентированные языки программирования называемые также языками символьного кодирования. В этих языках используется кодирование операций и операндов с помощью определенных символов.

Самым распространенным языком этого класса является ассемблер. Естественно, что при написании программы значительно легче записывать команды в виде символов, а не последовательности нулей и единиц, но программы все равно получаются громоздкими.

Рассмотрим блок схему показанную на рис.4.5. Например, чтобы вычислить значение переменной h необходимо выполнить следующие две операции 1) операцию вычитания, над содержимым ячеек в которые вы предварительно поместили значения исходных данных а и b; 2) операцию деления содержимого ячейки, в которой находится предыдущий результат, на значение переменной n. Далее необходимо выполнить три операции присваивания: i:=0; J:=0; xi:=a (в результате выполнения этих операций в ячейки отведенные для переменных i, J, xi будут засланы значения соответственно 0, 0, а). Вычисление подынтегральной функции сведется к выполнению простейших арифметических операций. Причем, чем сложнее подынтегральная функция, тем больше команд будет использовано для программирования этого блока. Рассмотрев только часть блоков алгоритма, показанного на рис.4.5, можно сделать вывод, что программа будет громоздкой.

На смену машинно-ориентированным языкам (языкам низкого уровня) пришли языки высокого уровня - алгоритмические языки. Эти языки предназначены для того чтобы избежать утомительного и чреватого ошибками программирования на языке ассемблер. Языки высокого уровня это языки Фортран, Бейсик, Алгол, Кобол, Паскаль, Си и другие. Посмотрите как будет выглядеть программа блока 2 алгоритма показанного на рис.4.5, записанная на языке Паскаль.

h:=(b-a)/n; J:=0; x[0]:=a;

FOR i:=0 TO n-1 DO

BEGIN

J:=J+h*f(x[i]); x[i+1]:=x[i]+h;

END;

Из этого примера видно, что языки высокого уровня близки к естественному и позволяют на основе блок-схем легко создавать программы.

В настоящее время на смену алгоритмическим языкам пришли языки объектно-визуального программирования и языки четвертого уровня. Эти языки мы рассмотрим в следующих параграфах.

3.5 Создание загрузочного модуля программы

Напомним что ЭВМ понимает только язык машинных команд, поэтому если программа написана на языке ассемблер или алгоритмическом языке она должна быть переведена на язык машины. Этот процесс перевода чисто техническая работа и выполняется с помощью специальных программ, написанных для этих целей.

Процесс перевода программ на язык машинных команд называется трансляциейÌ, в результате выполнения этого процесса создается объектный код (модуль) программыÌ ..

Трансляторы с языков высокого уровня обычно называются компиляторамиÌ.

Далее на основе объектных модулей создается загрузочный (исполняемый) модуль программы Ì - готовый к исполнению программный модуль. Загрузочный модуль создается в процессе компоновки объектных модулей.

Процесс создания программного продукта необходимо завершить его оценкой и анализом получаемых результатов. Оценка программного продукта заключается в определении необходимой внешней и оперативной памяти и анализе быстродействия решения задачи при заданных характеристиках ЭВМ. Анализ результатов - проверка на соответствие исходным требованиям.





Дата публикования: 2014-11-18; Прочитано: 727 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!



studopedia.org - Студопедия.Орг - 2014-2024 год. Студопедия не является автором материалов, которые размещены. Но предоставляет возможность бесплатного использования (0.01 с)...