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

 

Прежде чем приступить к описанию составных частей Microsoft Visual Studio 2008, необходимо рассмотреть последовательность действий, приводящих к готовому программному продукту. С точки зрения разработчика-программиста жизненный цикл любой программы состоит из следующих этапов:

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

2. Анализ исходных данных и выбор методов решения, моделирование.

3. Разработка алгоритма решения задачи.

4. Перевод алгоритма на язык программирования.

5. Компиляция и поиск синтаксических ошибок.

6. Тестирование и поиск логических ошибок.

7. Сдача заказчику и ввод в эксплуатацию.

8. Поддержка функционирования.

Разберём более подробно каждый из этапов на примере задачи решения квадратного уравнения.

1. Постановка задачи выглядит следующим образом: написать программу, решающую квадратное уравнение. Даны вещественные числа a, b и c, необходимо найти все существующие действительные x, удовлетворяющие уравнению .

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

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

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

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

Ввод a,b,c
начало
a!=0
Расчет D
Расчёт х1, х2
Расчет х
конец
да
да
да
Действительных решений нет
Два корня х1=…и х2=…
Один действит. корень х=…
нет
нет
нет
а не должно быть 0
D<0
D=0

Рис. 2. Блок-схема алгоритма решения квадратного уравнения

 

Словесный алгоритм (инструкция по выполнению) может выглядеть следующим образом. Начало. Ввести с клавиатуры три действительных числа, соответствующих коэффициентам уравнения a, b, c. Если , прекратить выполнение программы сообщением «а не должно быть 0», иначе вычислить дискриминант по форме . Если , прекратить выполнение программы сообщением «Действительных решений нет». Если D=0, то вычислить один корень по формуле и прекратить выполнение программы сообщением «Один действительный корень х=… ». Если , то вычислить оба корня по формулам и прекратить выполнение программы сообщением «Два действительных корня х1= … и х2=…». При выводе результатов работы программы на месте многоточий должны стоять вычисленные значения. Конец.

4. Далее полученный алгоритм необходимо перевести на какой-либо язык программирования, в нашем случае это язык С. Результатом этого этапа будет текстовый файл. Текст программы наиболее удобно набирать во встроенном редакторе MS VS 2008, в этом случае файл будет иметь расширение .cpp и называться файлом исходного кода.

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

6. Процесс тестирования необходим для того, чтобы убедиться в правильности работы программы, отследить все возможные ветви решений. Тестирование проходит при помощи проверки тестовых примеров, когда на вход программе подаются начальные значения, для которых известен результат решения поставленной задачи. Они должны быть подобраны таким образом, чтобы отследить все возможные варианты решений. Для рассматриваемой задачи такими тестовыми значениями могут быть наборы: 0, 2, 3 (отслеживается выход если a=0); 2, 1, 1 (дискриминант <0); 1, 2, 1 (дискриминант =0, х должно равняться -1); и наконец 1, 0, -4 (дискриминант >0 и х1=2, х2=-2). Если ожидаемый результат не совпадает с полученным программой, необходимо локализовать логические ошибки. Для этой цели очень подойдет отладка. Если ошибок в программе не выявлено, можно переходить к следующему этапу.

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

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

В предложенной схеме не рассматривалась командная работа и оформление всей сопроводительной документации, создаваемой в процессе разработки, и на сам программный продукт. Дополнительные сведения можно подчерпнуть в курсе «Технологии программирования».

Составные элементы Microsoft Visual Studio 2008

Интегрированная среда разработки (Integrated Development Environment – IDE), которая поставляется вместе с MS VS 2008 – это среда, предназначенная для создания, компиляции, компоновки и тестирования программ на C++ и других языках. Т. к. нас интересует работа с языком С++, поэтому возможность использования других языков программирования в дальнейшем упоминаться не будет. MS VS 2008 включает в себя множество полностью интегрированных инструментов, предназначенных для облегчения написания программ на С++.

Компоненты системы

Перечень фундаментальных составляющих MS VS 2008, поставляемых как части IDE, включает в себя (рис. 3):

- редактор;

- компилятор;

- библиотеки;

- компоновщик.

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

 

Редактор
IDE
Библиотеки
Компоновщик
Компилятор
Создание исходного текста программы .cpp/.h
Перевод программы на машинный язык .оbj
Добавление к машинному коду библиотек .exe
Файлы с написанными функциями .lib

Рис. 3. Взаимодействие компонентов MS VS 2008 при создании исполняемой программы

Редактор представляет собой интерактивную среду, в которой можно создавать и редактировать исходный код программы. Наряду с обычными средствами редактирования вроде вырезания и вставки фрагментов текста, аналогичных любому текстовому редактору, редактор MS VS 2008 также обеспечивает цветовое выделение различных элементов языка С. Он автоматически распознает ключевые слова и конструкции языка и окрашивает их в соответствии с их назначением. Это помогает не только сделать код более читабельным, но также явно указывает на ошибки при вводе ключевых слов.

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

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

Библиотеки (library) – это коллекция предварительно написанных процедур, которые поддерживают и расширяют язык C++, предоставляя в распоряжение программиста стандартные, профессионально разработанные единицы кода, которые можно включать в свои программы для выполнения стандартных часто встречающихся операций. Операции, реализованные процедурами из различных библиотек MS VS С ++ 2008, значительно повышают продуктивность работы программиста за счет экономии усилий, которые потребовалось бы приложить для их самостоятельной разработки и тестирования. Кроме библиотеки .NET Framework существует множество других, перечисление полного перечня которых в данном учебном пособии представляется не целесообразным. Упомянем лишь наиболее полезные и часто используемые.

Стандартная библиотека C++ определяет базовый набор процедур, общий для всех компиляторов ISO/ANSI C++. Она содержит широкий диапазон подпрограмм, включая числовые функции, такие как вычисление квадратного корня, тригонометрические функции, процедуры обработки символов и строк наподобие классификации символов и сравнения символьных строк, а также многие другие. Существуют также библиотеки, поддерживающие расширение C++/CLI стандартного ISO/ANSI C++.

«Родные» оконные приложения поддерживаются библиотекой, называемой Microsoft Foundation Classes (MFC). MFC позволяет значительно сократить усилия, необходимые для построения графического пользовательского интерфейса приложений.

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

Использование IDE

 

Вся разработка и выполнение программ, представленных в учебном пособии, будет осуществляться при помощи IDE. При запуске MS VS 2008 появляется окно приложения, подобное тому, что показано на рис. 4.

Рис. 4. Внешний вид среды MS VS 2008

На рис. 4 представлены окна MS VS 2008, использующие классическую (Classic) тему. Часть окна слева называется окном обозревателя решений (1 – Solution Explorer для не русифицированной версии программы), правое верхнее окно, содержащее начальную страницу (Start page) – это окно редактора (2 – Editor), а окно в нижней части экрана – окно вывода (3 – Output) содержит вкладки с дополнительной информацией о выполняемой программе.

Окно обозревателя решений позволяет осуществлять навигацию по программным файлам, отображать их содержимое в окне редактора, а также добавлять новые файлы к программе. Оно содержит две дополнительные вкладки: окно классов (Class View), диспетчер свойств (Preperty Manager), для некоторых видов проектов состав вкладок может быть другим. Окно редактора – это окно, с помощью которого вводится и модифицируется исходный код. Окно вывода используется в процессе создания программы и содержит информацию о выполняемом проекте (сообщения, полученные при компиляции и компоновке программы (вкладка Вывод – Output), схему вызовов функций (вкладка Обозреватель вызовов – Call Browser). В режиме отладки приложения именно в этом окне будет располагаться информация о текущих значениях переменных.