Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Обеспечение эффективности разработки программных продуктов

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

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

Технология (стиль) разработки программных продуктов – совокупность правил и приёмов, определяющих эффективный путь создания качественных интеллектуальных разработок решения задач пользователя.

Основные требования к качеству программного продукта – эффективность, универсальность, дружественность к пользователю.

Дружественность – свойства программного продукта, определяющие доступность, простоту, удобство составления, чтения и машинного выполнения.

Технология разработки программных продуктов универсальна. Её эффективность базируется на современных методах анализа и синтеза – системности подхода и структуризации разработок, оформленных в виде набора правил и приёмов.

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

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

Следовательно, в предмашинной подготовке задачи к решению дружественность желательно предусматривать начиная с первого этапа – постановки задачи.

Систематизируем элементы дружественности и эффективности по основным этапам подготовки задачи к решению.

Словесная формулировка задачи:

· полное описание необходимой и ликвидация избыточной информации;

· чёткое определение входных и выходных данных;

· именование данных в соответствии с их сущностью;

· задание значений входных данных не только фиксировано, но и диапазоном их возможного изменения;

· использование значений с указанной пользователем размерностью.

Формирование математической модели:

· блочность построения;

· оптимальная степень детализации (компромисс наглядности и объёма информации);

· универсальность обозначений данных;

· указание и проверка размерностей всех данных;

· универсальность модели для задач одного типа.

ü Внимание! Неполная (ошибочная) постановка задачи (математическая модель) – основная (главная) причина создания некачественного программного продукта.

Реализация рекомендаций по обеспечению дружественности первых этапов (постановке задачи и созданию модели) выполнена на рассмотренных ранее примерах 1.1 и 1.2.

Выбор метода решения:

· классификация методов решения задачи (общего – для всей задачи и частных – для её составляющих);

· универсальность выбранных методов (для общего – пригодность для решения множества однотипных задач, для частного – применимость для большинства составляющих задачи);

ü Внимание! Универсальность методов делает вашу задачу доступной (дружественной) другим пользователям.

Создание алгоритма решения.

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

· восходящее проектирование;

· нисходящее проектирование.

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

· нестыковка входных и выходных величин отдельных программных модулей;

· невозможность общей отладки всей программы, если отсутствует хотя бы один программный модуль.

Широкое распространение для создания программных продуктов получил метод структурного проектирования (программирования). Он базируется на принципах системного анализа, получившего в алгоритмизации (программировании) название метода нисходящего проектирования (программирования) или проектирования (программирования) сверху вниз.

Метод базируется на трёх принципах:

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

· алгоритм сложной задачи должен быть представлен совокупностью простых участков, каждый из которых имеет только 1 вход и 1 выход;

· каждый участок алгоритма должен реализовываться одной из базовых управляющих структур;

Базовые структуры делятся на основные и дополнительные.

В качестве основных базовых структур используют:

· последовательность;

· ветвление;

· повторение.

Схемы основных базовых структур имеют вид (рис. 2.9)

Рис. 1.9. Основные базовые структуры: а – последовательность; б – ветвление; в – повторение

Структура повторения представлена общим видом в двух вариантах – циклом с предусловием (левая схема) и цикл с постусловием (правая схема).

На схеме используются обозначения

P – проверяющий блок;

S – выполняемый блок

Проверяющий блок осуществляет анализ (проверку) записанного в нём условия. По результатам проверки истинности (ДА, НЕТ) выбирается один из путей решения – требуемый блок S.

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

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

Схемы модифицированных базовых структур имеют вид (рис. 2.10)

Рис. 1.10. Модификации базовых структур: а – неполное ветвление; б – множественный выбор; в – повторение; г – цикл с параметром

В структуре неполного ветвления при реальном использовании на каждой из выходных ветвей должны быть указаны условия выполнения (ДА, НЕТ). В общем виде это нежелательно, т.к. ограничивает универсальность структуры.

В структуре множественного выбора при реальном использовании на каждой из выходных ветвей должны быть указаны значения их выбора. Например, 2, 5, 7 и т.д.

Структура повторения представлена развёрнутым видом в двух вариантах – циклом с предусловием (левая схема) и циклом с постусловием (правая схема). Развёрнутый вид схем повторения облегчает понимание связей элементов в зависимости от проверки условия повторения. При реальном использовании на каждой из выходных ветвей, аналогично структуре неполного ветвления, должны быть указаны условия выполнения (ДА, НЕТ).

Дополнительно введена структура с параметром (два варианта). Левый вариант представлен в развёрнутом, а правый в общем виде.

Конечная цель структурного проектирования – представление схемы алгоритма в виде комбинации базовых структур, соединённых общей логикой выполнения.

ü Внимание! При составлении схем алгоритмов следует помнить, что улучшению качества программного продукта (его отладке) способствует максимальное количество выведенных данных (в принципе всех). В идеале точка вывода каждого данного должна непосредственно следовать за местом получения им значения (ввод или расчёт). Выполнение идеального принципа существенно увеличивает объём алгоритма и снижает его наглядность. Поэтому технология проектирования рекомендует осуществлять группировку выводимых данных в соответствии с логикой задачи и их количеством (не более 5-7 в одном блоке).

Пример структурированного алгоритма задачи о картофеле (пример 2.3) имеет вид (рис. 1.11).

На первом шаге выполнен укрупнённый алгоритм решения (что делать), на втором осуществлена детализация блоков 2,3,4 (как делать). Двойная нумерация блоков этого шага первой цифрой определяет принадлежность блоку первого шага, а второй задаёт порядковый номер в детализации.

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

Шаг 1 Шаг 2 Шаг 3

Рис. 1.11. Структурированный вариант алгоритма задачи о картофеле

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

Каждый из шагов представляет собой стандартную структуру – последовательность, выполненную с разной степенью детализации.

Программирование задачи.

В соответствии с общей концепцией системного анализа технология программирования определяет общие и частные закономерности создания программ.

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

· программирование выполнять блочно –идентификацией данных и программой;

· таблица идентификации данных определяет соответствие между физическими именами в алгоритме и будущими именами в программе;

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

· использовать комментарии для улучшения читаемости программ. В начале (шапке) программы комментариями расшифровывать название программы, назначение, метод решения, данные разработчика. В теле программы использовать комментарии наряду со структурированностью для облегчения понимания логики решения;

· осуществлять вывод всех введённых величин и максимально возможного количества промежуточных величин для облегчения отладки программы и анализа результатов. Вводимые величины должны оформляться в удобном пользователю виде (с наименованиями и размерностями или таблично).

С учётом рекомендаций выполним программирование алгоритма задачи о картофеле.

Идентификация переменных выполнена ранее (табл. 2.6).

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

/* Программа расчёта массы картофеля. */

/* Линейный вычислительный процесс. */

/* Учебная */

#include<stdio.h> /* включение */

#include<math.h> /* внешних файлов */

main() /* заголовок главной функции (программы) */

{ /* верхний ограничитель тела функции (программы) */

float pd, psh, ub, po, /* описатели */

k1, k2, k3, k4; /* локальных */

float pp, mv, mp, mt; /* переменных */

scanf("%3f%4f%4f%4f",&pd, &psh, &ub, &po); /* ввод */

fprintf(stdprn,"%3.1f %4.0f %4.0f %4.1f\n",pd,psh,ub,po); /* вывод */

scanf("%5f%5e%3f%4f",&k1, &k2, &k3, &k4); /* исходных */

fprintf(stdprn,"%5.0f %5.0e %3.1f %4.0f\n",k1, k2, k3, k4); /* данных */

pp=(pd*k1*psh)*k2; /* расчёт площади поля */

mv=ub*pp*k3; /* расчёт массы выращенного */

mp=mv*po/k4; /* расчёт массы потерь */

mt=mv-mp; /* расчёт массы товарной */

fprintf(stdprn,"%f %f %f %f\n",pp, mv, mp, mt); /* вывод результатов */

} /* нижний ограничитель тела функции (программы) */

1.2750.180.12.7

1000.1.e-40.1100.

Пояснения к программе.

Анализ представленной записи программы показывает, что организация дружественности достигнута использованием значительного объёма комментариев и структурированностью текста программы.

Признак комментария (поясняющего текста) – ограничители вида /* */.

Первые три строки (шапка программы) – комментарий, определяющий название, метод и назначение программы.

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

Структурированность записи текста выполнена сдвигом некоторых строк вправо от начальной, для выделения некоторых операций из основных. Операторы, выполняющие вспомогательные функции – описатели переменных, вывода исходных данных и расчёта вспомогательных величин, записаны со сдвигом вправо относительно основных для облегчения чтения программы.

 

<== предыдущая лекция | следующая лекция ==>
Полная обработки задачи пользователя | Вопросы для контроля
Поделиться с друзьями:


Дата добавления: 2014-01-07; Просмотров: 536; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.05 сек.