§2 Жизненный цикл компьютерной программы. Первая программа. Интегрированные среды разработки

Модели жизненного цикла приложения

Жизненный цикл программного обеспечения — это период времени, который начинается с момента принятия решения о необходимости создания программного продукта и заканчивается в момент его полного изъятия из эксплуатации. Этот цикл — процесс построения и развития программного обеспечения (ПО). Существует несколько моделей жизненного цикла.
Каскадная модель жизненного цикла (англ. waterfall model) была предложена в 1970 г. Уинстоном Ройсом. Она предусматривает последовательное выполнение всех этапов проекта в строго фиксированном порядке. Переход на следующий этап означает полное завершение работ на предыдущем этапе. Требования, определенные на стадии формирования требований, строго документируются в виде технического задания и фиксируются на все время разработки проекта. Каждая стадия завершается выпуском полного комплекта документации, достаточной для того, чтобы разработка могла быть продолжена другой командой разработчиков.
Этапы проекта в соответствии с каскадной моделью:

  1. Формирование требований;
  2. Проектирование;
  3. Реализация;
  4. Тестирование;
  5. Внедрение;
  6. Эксплуатация и сопровождение.

В каскадной модели переход от одной фазы проекта к другой предполагает полную корректность результата предыдущей фазы. В больших проектах этого добиться практически невозможно. Поэтому такая модель пригодна только для разработки небольшого проекта. (Сам У. Ройс не придерживался данной модели и использовал модель итерационную).
Итерационная модель
Альтернативой каскадной модели является модель итеративной и инкрементальной разработки (англ. iterative and incremental development, IID), получившей от Т. Гилба в 70-е гг. название эволюционной модели. Модель IID предполагает разбиение жизненного цикла проекта на последовательность итераций, каждая из которых напоминает «мини-проект», включая все процессы разработки в применении к созданию меньших фрагментов функциональности, по сравнению с проектом в целом. Цель каждой итерации — получение работающей версии программной системы, включающей функциональность, определённую интегрированным содержанием всех предыдущих и текущей итерации. Результат финальной итерации содержит всю требуемую функциональность продукта. Таким образом, с завершением каждой итерации продукт получает приращение — инкремент — к его возможностям, которые, следовательно, развиваются эволюционно.
7
Стандартизация жизненного цикла приложения
Государственный стандарт подробно описывает жизненный цикл приложения в ГОСТ Р ИСО/МЭК 12207-2010 «Информационная технология. Системная и программная инженерия. Процессы жизненного цикла программных средств». Этот стандарт принят Федеральным агентством по техническому регулированию и метрологии РФ и аналогичен международному стандарту ISO/IEC 12207:2008. Данный стандарт, устанавливает общую структуру процессов жизненного цикла программных средств, на которую можно ориентироваться в программной индустрии. Стандарт не предлагает конкретную модель жизненного цикла. Его положения являются общими для любых моделей жизненного цикла, методов и технологий создания ПО. Он описывает структуру процессов жизненного цикла, не конкретизируя, как реализовать или выполнить действия и задачи, включенные в эти процессы.

Процесс разработки — Rational Unified Process (RUP)

Различные варианты итерационного подхода реализованы в большинстве современных методологий разработки:

Rational Unified Process (RUP) (рациональный унифицированный процесс) — методология разработки программного обеспечения, которая поддерживается компанией Rational Software (IBM). В методологии даются рекомендации по всем этапам разработки: от моделирования бизнеса до тестирования и сдачи в эксплуатацию готовой программы. В качестве языка моделирования используется язык Unified Modelling Language (UML).
Полный жизненный цикл разработки продукта состоит из четырех фаз, каждая из которых включает в себя одну или несколько итераций.

  • Начальная стадия (Inception)
  • Определение масштабов проекта и объема необходимых ресурсов. Определяются основные требования, ограничения и ключевая функциональность продукта. Оцениваются риски. Планирование действий. При завершении начальной фазы оценивается достижение этапа жизненного цикла цели (англ. Lifecycle Objective Milestone), которое предполагает соглашение заинтересованных сторон о продолжении проекта.

  • Уточнение (Elaboration)
  • Документирование требований. Проектирование, реализация и тестирование исполняемой архитектуры. Уточнение сроков и стоимости. Снижение основных рисков. Успешное выполнение фазы разработки означает достижение этапа жизненного цикла архитектуры (англ. Lifecycle Architecture Milestone).

  • Построение (Construction)
  • В фазе «Построение» происходит реализация большей части функциональности продукта: дизайн приложения завершен, исходный код написан. Фаза Построение завершается первым внешним релизом системы и вехой начальной функциональной готовности (Initial Operational Capability).

  • Внедрение (Transition)
  • В фазе «Внедрение» создается финальная версия продукта и передается от разработчика к заказчику. Это включает в себя программу бета-тестирования, обучение пользователей, а также определение качества продукта. В случае, если качество не соответствует ожиданиям пользователей или критериям, установленным в фазе Начало, фаза Внедрение повторяется снова. Выполнение всех целей означает достижение вехи готового продукта (Product Release) и завершение полного цикла разработки.

RUP_process

Порядок создания программы

  • Верстка исходного кода
  • Для написания исходного кода (текста) программы можно использовать обычные plain-text редакторы. Некоторые редакторы имеют возможность подсветки синтаксиса и дополнительные расширения, которые превращают их в компактные IDE (Geany, KWrite, Gedit, Notepad++). Но лучшим решением будет использовать полноценные интегрированные среды разработкиIDE (Integrated Development Environment) о которых речь пойдет ниже. Созданный в такой программе файл исходного кода должен иметь расширение .cpp.

  • Компиляция
  • Используемый компилятор транслирует исходный код программы в объектный, машинно-ориентированный, код. Созданный в результате компиляции исполняемый модуль привязан как к данной платформе, так и к типу процессора. Таким образом, программа, созданная в ОС Linux не будет работать в Windows (не смотря на то, что создана компилятором GCC одной и той же версии). Компиляция завершится успешно, если в программе не будут обнаружены синтаксические ошибки, в противном случае, компилятор выдаст сообщение об ошибке и остановит свою работу.

  • Компоновка
  • Компоновщик (он же линкер) завершает сборку программы объединяя (связывая) объектный код программы с объектным кодом библиотек в финальный продукт — исполняемый код. Такие IDE, как Eclipse, способны предупреждать о недоступности библиотек (которые намеревается использовать разработчик) на этапе верстки исходного кода программы, проверяя пути к соответствующим файлам. Компилятор GCC может объединить этапы компиляции и компоновки в единый процесс.
    4

  • Тестирование и отладка программы
  • На этом этапе готовая программа подвергается всестороннему анализу на предмет обнаружения неверных результатов — алгоритмических ошибок. Для этих целей в IDE применяется специальный программный модуль — отладчик. В связке с GCC используется GNU Debugger — переносимый отладчик проекта GNU (GDB)

Создание консольного приложения

Для создания небольшого приложения нам потребуется простой текстовый редактор и программа эмулятора терминал для ввода команды компилятору. Воспользуемся редактором KWrite окружения KDE, который умеет подсвечивать синтаксис C++. Наберем в этом редакторе код программы приветствия и сохраним этот файл с именем mypro1.cpp в директории ~/workspace/my_pro_1/
5
Для компиляции и линковки приложения необходимо ввести следующую команду в окне терминала Konsole:

g++ -o mypro1 mypro1.cpp

Данная команда состоит из следующих элементов: g++ — вызов программы-компилятора (GCC), флаг -o mypro1 говорит о том, что бинарный файл получит имя mypro1 и, собственно, имени компилируемого «исходника».
6
В результате выполнения этой команды в директории ~/workspace/my_pro_1/ появится исполняемый бинарный файл с именем mypro1. В окне терминала запустим эту программу обращаясь по имени файла: ./mypro1. Результат работы программы появится здесь же, в окне терминала — это символьная строка "!!!Hello World!!!".
В компиляторе GCC, по умолчанию, не включена поддержка стандарта C++11. Для включения поддержки этого стандарта в команду g++ необходимо добавить следующий флаг: -std=c++11. (Отметим еще раз, что программы нашего курса требуют включения поддержки данного стандарта).

Интегрированные среды разработки (IDE)

Интегрированные среды разработки включают в себя редакторы, средства работы с компилятором и отладчиком, интеграцию с системами управления версиями, конструкторы GUI. IDE существенно облегчают программистам верстку программного кода, так как встроенные редакторы обладают возможностью подсветки синтаксиса, автодополнения, навигации и рефакторинга. Существует большое семейство IDE для программирования на C/C++ как проприетарных, так и free software. Крупнейшие производители коммерческого ПО предлагают некоторые свои продукты, такие как IDE и компиляторы, совершенно свободно, но с весьма усеченным комплектованием, которое, на наш взгляд, будет препятствовать дальнейшему развитию. К этому можно добавить, что эти производители совершенно не заботятся о кроссплатформенной разработке ПО и развивают свои продукты только под определенную платформу или совместимую реализацию. Например, компания Microsoft предлагает бесплатную, но урезанную версию своей родной среды разработки Visual Studio Community для своей платформы, iOS, Android и Linux. Но, например, для платформы Linux она основана на свободной реализации (платформы .Net) Mono, а поддержка иных компиляторов не осуществляется. Аналогично, другой крупнейший разработчик, Embarcadero Technologies, также предлагает свободно свой компилятор Borland C++ Compiler и значительно урезанную среду разработки C++Builder Starter Edition, но только с поддержкой платформы Win32.
Однако, в настоящее время, разработчики обеспечены значительным количеством свободных IDE, которые имеют довольно мощные интерфейсы, ничем не уступающие интерфейсам коммерческих аналогов. Динамично развивающиеся проекты доступны на гораздо большем числе платформ, что позволяет свободно писать кроссплатформенные приложения. Ими поддерживается большой спектр компиляторов, включая Visual C++ и Borland C++. Среди крупнейших, из свободных IDE, можно отметить следующие:

  • Eclipse IDE for C/C++ Developers (Допускается к использованию на Всероссийской олимпиаде по информатике)
  • Code::Blocks (Допускается к использованию на Всероссийской олимпиаде по информатике)
  • QtCreator (это среда будет базовой в нашем курсе при изучении RAD и ООП)
  • NetBeans (языки Java, PHP, C/C++; разрабатывается под патронажем Oracle)
  • Geany
  • CodeLite
  • KDevelop (разрабатывается в рамках графического окружения рабочего стола KDE)
  • Anjuta DevStudio (разрабатывается в рамках графического окружения рабочего стола GNOME)
  • wxDev-C++ [для Windows]

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

  1. это свободное программное обеспечения
  2. версии сред доступны для ОС Windows и Linux.

IDE расположены в порядке увеличения функционала рабочей среды.

IDE Geany

geany
Geany — написана на Си с использованием библиотеки GTK2 и доступна для следующих операционных систем: BSD, Linux, Mac OS X, Solaris и Windows. Эта IDE скорее текстовый редактор, который имеет некоторые признаки IDE. Редактор осуществляет поддержку плагинов и приобрел популярность, прежде всего, своей легковесностью.

Возможности IDE
IDE Code::Blocks

code-blocks
Методичка: Установка и создание первого приложения в IDE Code::Blocks
Code::Blocks написана на С++ и использует библиотеку wxWidgets. Имея открытую архитектуру, может масштабироваться за счёт подключаемых модулей. Поддерживает языки программирования С, С++, D, Fortran. Code::Blocks разрабатывается для Windows, Linux и Mac OS X. Данная IDE является базовой в нашем курсе и должна быть установлена совместно с компилятором GCC.

Возможности IDE
IDE Eclipse

eclipse
Методичка: Установка компилятора GCC. Установка, локализация и настройка IDE Eclipse CDT (Luna)
Eclipse — свободная IDE модульных кроссплатформенных приложений. Развивается и поддерживается Eclipse Foundation. С 2006 года фонд Eclipse координирует ежегодный общий релиз (Simultaneous Release), который происходит в июне. Eclipse написана на Java, потому является платформо-независимым продуктом, за исключением библиотеки SWT. Гибкость Eclipse обеспечивается за счёт подключаемых модулей, благодаря чему возможна разработка не только на Java, но и на других языках, таких, как C/C++, Perl, Groovy, Ruby, Python, PHP, Erlang и прочих. Множество расширений дополняет среду Eclipse диспетчерами для работы с базами данных, серверами приложений и т.д. Начиная с версии 3.1.1, выпущен языковой пакет для русификации Eclipse. Переведены на русский язык как графический интерфейс, так и документация. Eclipse — один из самых популярных инструментариев среди разработчиков во всем мире. Eclipse CDT (C/C++ Development Tools)

Возможности IDE
Домашняя работа

Используя методические рекомендации, установить на домашний компьютер компилятор GCC (MinGW) и IDE Code::Blocks (и/или IDE Eclipse). Написать, откомпилировать и запустить программу приветствия в IDE Code::Blocks по образцу (см. изображение, выше).

Вопросы
  1. Почему каскадная модель разработки ПО не применяется в больших проектах?
  2. Почему программа собранная в среде Linux не будет работать в OS Windows?
  3. Опишите преимущества использования IDE по сравнению с обычным текстовым редактором и командной строкой
  4. В чем заключается различие между каскадной и итерационной моделями разработки?
  5. Перечислите стадии разработки ПО в методологии Rational Unified Process (RUP)
Темы сообщений
  • Спиральная модель жизненного цикла ПО
  • UML (англ. Unified Modeling Language — унифицированный язык моделирования)
  • Microsoft Solutions Framework
  • IDE для программирования на C/C++ в Windows
  • Компиляторы С/C++
  • Создание консольного приложения в Windows
Презентации

ODP
PDF

Литература
  1. Шауцукова Л. З. Информатика: Учеб. пособие для 10-11 кл. общеобразоват. учреждений / Л. З. Шауцукова. — 4-е изд. — М.: Просвещение, 2004 г.
  2. Жизненный цикл ПО (вики)
  3. Прата, Стивен. Язык программирования C++. Лекции и упражнения, 6-е изд.: Пер. с англ. — М.: ООО «И.Д. Вильяме», 2012
  4. Стенли Липпман, Жози Лажойе, Барбара Му. Язык программирования С++. Вводный курс. — Вильямс: 2007
  5. https://ru.wikipedia.org/wiki/Geany
  6. https://ru.wikipedia.org/wiki/Code::Blocks
  7. IDE Eclipse (вики)
  8. ГОСТ Р ИСО/МЭК 12207-2010. Информационная технология. Системная и программная инженерия. Процессы жизненного цикла программных средств
  9. Системная инженерия для «чайников»
  10. OpenUP — это просто
  11. Разработка программного обеспечения (вики)
  12. Стадии разработки программного обеспечения (вики)
  13. Каскадная модель (вики)
  14. Итеративная разработка


Добавить комментарий