Студопедия — Этапы разработки программы
Студопедия Главная Случайная страница Обратная связь

Разделы: Автомобили Астрономия Биология География Дом и сад Другие языки Другое Информатика История Культура Литература Логика Математика Медицина Металлургия Механика Образование Охрана труда Педагогика Политика Право Психология Религия Риторика Социология Спорт Строительство Технология Туризм Физика Философия Финансы Химия Черчение Экология Экономика Электроника

Этапы разработки программы






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

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

1. Спецификация (определение, формулирование требований к программе).

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

3. Кодирование (запись алгоритма на языке программирования).

4. Отладка.

5. Тестирование.

6. Создание справочной системы.

7. Создание установочного диска (CD-ROM).

Жизненный цикл ПО
Из каких этапов складывается процесс создания и использования ПО?
Программное обеспечение, независимо от его размеров и сложности, имеет жизненный цикл, в
котором выделяют следующие этапы:

 

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

 

2. Этап проектирования Проектирование можно разбить на более мелкие этапы:
• анализ технического задания;
• определение структур данных;
• разработка или адаптация алгоритмов обработки данных;
• структурная декомпозиция (разбиение исходной задачи на относительно независимые мелкие подзадачи);
• описание программы в виде схем, блок-схем или другим способом;
• выбор языка программирования (или нескольких языков) для достижения наилучших
результатов;
На этапе проектирования следует учитывать возможность будущих модификаций программы и
стремиться к тому, чтобы вносить эти изменения было бы просто.

 

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

 

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

 

5. Этап сдачи заказчику в эксплуатацию и сопровождение После получения исполняемых модулей и успешного тестирования программа передается заказчику для эксплуатации, в сопровождении с комплектом необходимой документации. Сопровождение программы заключается в устранении выявленных в течении работы ошибок (пропущенных на этапе отладки), своевременном их устранении и выпуске новых версий. Необходимо сделать несколько замечаний в связи с процессом разработки и сопровождения ПО. Наиболее распространенной ошибкой программистов является пренебрежение этапами технического
задания и проектирования. В этом случае программа сразу начинает кодироваться, а все исправления вносятся прямо по ходу кодирования. Такой подход совершенно неприемлем при разработке больших программ, так как ведет к потерям времени на многочисленные исправления, чреват многочисленными ошибками в программе. И совершенно невозможно в таком случае организовать деятельность коллектива программистов, работающих над одним проектом. Кроме того, разработка структуры программы должно предшествовать процессу написания исходного кода. Тогда процесс кодирования будет непродолжительным, а текcт программы - эффективным. Распространенной ошибкой является нерациональное тестирование программы, обусловленное плохим знанием ее слабых мест. Очевидно, что в первую очередь необходимо обратить внимание на те места, которые могут стать причиной программных и аппаратных сбоев (возможное деление на ноль, обращение к дисководу без дискеты и т.д.) Недопустимо выпускать программу без документации (пусть даже в виде одной страницы текста), с непонятным и недружественным пользователю интерфейсом. Интерфейс, или процесс взаимодействия программы с пользователем должен соответствовать международным стандартам и быть легко осваиваемым. И, наконец, несколько слов об оформлении исходного кода программы. Для того, чтобы работать в коллективе, необходимо уважать своих коллег, которые имеют отношение к разрабатываемой программе (неважно, работаете вы одновременно, или с разницей во времени). Очень часто программы пишутся как бы “для себя“ и об оформлении исходного кода не особенно заботятся. Это может сослужить плохую службу разработчику, так как способствует его дурной славе, делает текст программы недоступной как для собственного, так и для чужого понимания, мешает повторному его (текста) использованию.

 

1.6. Восходящее и нисходящее проектирование ПО
Существуют два основных вида проектирования программ - нисходящее (“сверху-вниз“ - ВН) и восходящее (“снизу-вверх“ - НВ). Суть восходящей технологии заключается в том, что сначала решаются более частные и понятные задачи (реализация алгоритма сортировки, обработка строки, ввод данных) и только потом приступают к построению большой программы из готовых мелких частей. Можно сказать, что суть НВ - “ОТ
ЧАСТНОГО К ОБЩЕМУ“. Нисходящая технология состоит в первоначальной разработке скелета программы, определению процедур и связей между ними, и лишь потом проектировщик определяет содержимое процедур и структур данных. В этом случае активно используются т.н. “заглушки“ - процедуры-пустышки, не выполняющие пока никакой полезной работы, но имеющие заголовок с параметрами и использующиеся
для предварительной отладки программы. В основном, программы создаются с использованием смешанных технологий, то есть на разных участках могут использоваться как НВ, так и ВН. В процессе проектирования активно используется модель “черного ящика“, в которой процедура или участок программы представляются блоком, имеющим несколько входов и выходов, внутренняя структура которого несущественна на данном этапе проектирования.

На этом шаге мы рассмотрим методы восходящего и нисходящего проектирования.

Другой метод улучшения качества программирования заключается в применении нисходящего проектирования (Top-Down Programming - программирование "сверху вниз").

 

 

В методе нисходящего проектирования Вы вначале пишете основную программу, используя средства вызова подпрограмм, причем в качестве подпрограмм вначале Вы вводите "заглушки" вида:

Вызвали подпрограмму номер....

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

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

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

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

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

Метод "снизу вверх", хотя и требует большого труда, бывает очень полезен на первых порах. Пусть даже половину составленных Вами подпрограмм придется потом "выбросить", но зато Вы хорошо почувствуете, какие подпрограммы для исходной задачи необходимы. Да и отлаживать каждую написанную подпрограмму можно сразу: ведь все, что "под ней", уже описано (а обычно и отлажено). Словом, любишь кататься "сверху вниз" - люби и саночки возить (в обратном направлении). Опытные программисты иногда применяют метод "снизу вверх" для того, чтобы заранее заготовить для новой задачи набор подпрограмм, которые могут понадобиться в различных случаях. Так что "возить саночки" приходится не только новичкам!

 

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

Автор предлагает следующую совокупность критериев.

1. Работоспособность.

2. Правильность.(программа должна решать именно поставленную, а не более широкую, более узкую или измененную задачу).

3. Надежность (программа должна работать при любых исходных данных – анализировать их правильность и выдавать результаты или диагностику ошибок).

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

5. Легкость отладки и тестирования.

6. Модифицируемость (возможность внесения изменений в программу).

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

8. Простота пользования, наличие сервиса.

9. эффективность применительно к компьютеру (использование минимума машинных ресурсов – памяти и времени выполнения).

Видно, например, что критерии 4, 6, 7 взаимосвязаны, критерий 5 ими определяется; критерии 3 – 8 противоречат 9-му, и сам он внутренне противоречив. Делать акцент на тех или иных критериях следует в зависимости от реальной ситуации. Так, мощность современных компьютеров в большинстве случаев позволяет не слишком учитывать ресурсы. Однако если речь идет о специальных расчетных инженерных задачах, время решения которых объективно велико, на первый план выступают ресурсы.

 

Цикл. Виды Циклов. Циклом называется многократное повторение однотипных действий. Телом же цикла будем называть те самые действия, которые нужно многократно повторять. Как вы понимаете, повторять одни и те же действия можно и при помощи оператора безусловного перехода. Если записать эти действия в программе одно за другим, а в конце поставить оператор перехода к началу этого блока. Однако таким образом можно получить только программу, которая работает вечно (зацикливается). Этого можно избежать, используя совместно с оператором перехода условный оператор, поставив выполнение перехода в зависимость от выполнения некого условия. Таким образом, мы получим структуру условного перехода и возможность организации конечного цикла. Вообще говоря, так мы можем решить практически любую задачу, требующую реализации циклического алгоритма. Конечно же, при помощи одного только топора можно построить дом. Поставим перед собой вопросы: "А будет ли этот дом красив? Сколько времени и сил можно сэкономить, используя всевозможные специальные инструменты?". Создатель языка Паскаль Никлаус Вирт также задался этими вопросами и решил их в пользу расширения языка тремя специальными возможностями организации циклов. Для чего? - Для удобства, краткости, простоты чтения программы и, не побоюсь этого слова, красоты. Итак, существует три вида цикла, имеющих собственные операторы на языке Паскаль для их записи. Эти виды имеют собственные условные названия: "Пока", "До", "С параметром". Друг от друга они несколько отличаются и используются каждый для своего класса задач. Цикл "ПОКА" Группа операторов, называемая "телом цикла", судя по этой схеме, будет выполняться пока истинно условие цикла. Выход из цикла произойдет, когда условие перестанет выполняться. Если условие ложно изначально, то тело цикла не будет выполнено ни разу. Если условие изначально истинно и в теле цикла нет действий, влияющих на истинность этого условия, то тело цикла будет выполняться бесконечное количество раз. Такая ситуация называется "зацикливанием". Прервать зациклившуюся программу может либо оператор (нажав Ctrl+C), либо аварийный останов самой программы, в случае переполнения переменной, деления на ноль и т.п., поэтому использовать структуру цикла следует с осторожностью, хорошо понимая, что многократное выполнение должно когда-нибудь заканчиваться. На языке Pascal структура цикла "Пока" записывается следующим образом: While <условие> Do <оператор>; Правда, лаконично? По-русски можно прочитать так: "Пока истинно условие, выполнять оператор". Здесь, так же как в формате условного оператора, подразумевается выполнение только одного оператора. Если необходимо выполнить несколько действий, то может быть использован составной оператор. Тогда формат оператора принимает такой вид: While <условие> DoBegin <оператор #1>;<оператор #2>;<оператор #3>;... End; Цикл "ДО" Этот вид цикла отличается от предыдущего в основном тем, что проверка условия повторения тела цикла находится не перед ним, а после. Поэтому цикл "До" называют циклом "с постусловием", а "Пока" - "с предусловием". Обратите также внимание на то, что новая итерация (повторное выполнение тела цикла) происходит не тогда, когда условие справедливо, а как раз тогда, когда оно ложно. Поэтому цикл и получил свое название (выполнять тело цикла до выполнения соответствующего условия). Интересно, что в случае, когда условие цикла изначально истинно, тело цикла все равно будет выполнено хотя бы один раз. Именно это отличие "до" от "пока" привело к тому, что в программировании они не подменяют друг друга, а используются для решения задач, к которым они более подходят. Формат цикла на языке Pascal:Repeat<оператор #1>; <оператор #2>; <оператор #3>;... Until <условие>; Читается так: "Выполнять оператор #1, оператор #2.: до выполнения условия". Здесь не требуется использование составного оператора, потому, что сами слова Repeat и Until являются операторными скобками. Цикл "С параметром". В данном случае параметром будет являться целочисленная переменная, которая будет изменяться на единицу при каждой итерации цикла. Таким образом, задав начальное и конечное значения для такой переменной, можно точно установить количество выполнений тела цикла. Нарисовать блок-схему такой структуры вы сможете сами после некоторых пояснений. Форматов у этого вида цикла предусмотрено два: For <И.П.>:=<Н.З.> To <К.З.> Do <оператор>; For <И.П.>:=<Н.З.> Downto <К.З.> Do <оператор>; Здесь И.П. - имя переменной-параметра, Н.З. - его начальное значение,К.З. - соответственно конечное значение параметра. В качестве начального и конечного значений Читается данная структура так: "Для переменной (далее следует ее имя) от начального значения до конечного выполнять оператор (являющийся телом цикла)". Иногда цикл с параметром даже называют "Для" или "For". В первом случае параметр с каждой итерацией увеличивается на единицу, во втором - уменьшается. Выполняется этот цикл по следующему алгоритму:1. переменной-параметру присваивается начальное значение;2. выполняется тело цикла;3. переменная-параметр автоматически увеличивается на 1 (в первом случае формата); 4. если параметр превышает конечное значение, то происходит выход из цикла, иначе - переход к пункту 2. Примечание: при использовании Downto параметр автоматически уменьшается на 1, а выход из цикла происходит тогда, когда параметр становится меньше конечного значения. Таким образом, в отличие от первых двух видов цикла, этот цикл используется тогда, когда известно необходимое количество выполнений тела цикла. | Вообще говоря, цикл "Пока" является универсальным, то есть любая задача, требующая использования цикла, может быть решена с применением этой структуры. Циклы "До" и "С параметром" созданы для удобства программирования.

Итерационный цикл - оператор цикла, для которого число повторений тела цикла заранее неизвестно. В итерационных циклах на каждом шаге вычислений происходит последовательное приближение и проверка…

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

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







Дата добавления: 2015-04-19; просмотров: 998. Нарушение авторских прав; Мы поможем в написании вашей работы!



Практические расчеты на срез и смятие При изучении темы обратите внимание на основные расчетные предпосылки и условности расчета...

Функция спроса населения на данный товар Функция спроса населения на данный товар: Qd=7-Р. Функция предложения: Qs= -5+2Р,где...

Аальтернативная стоимость. Кривая производственных возможностей В экономике Буридании есть 100 ед. труда с производительностью 4 м ткани или 2 кг мяса...

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

Основные структурные физиотерапевтические подразделения Физиотерапевтическое подразделение является одним из структурных подразделений лечебно-профилактического учреждения, которое предназначено для оказания физиотерапевтической помощи...

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

Тема 2: Анатомо-топографическое строение полостей зубов верхней и нижней челюстей. Полость зуба — это сложная система разветвлений, имеющая разнообразную конфигурацию...

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

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

Сравнительно-исторический метод в языкознании сравнительно-исторический метод в языкознании является одним из основных и представляет собой совокупность приёмов...

Studopedia.info - Студопедия - 2014-2024 год . (0.055 сек.) русская версия | украинская версия