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

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

Жизненный цикл программного обеспечения — это период времени, который начинается с момента принятия решения о необходимости создания программного продукта и заканчивается в момент его полного изъятия из эксплуатации. Этот цикл — процесс построения и развития программного обеспечения (ПО). Существует несколько моделей жизненного цикла.
Каскадная модель жизненного цикла (англ. 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

Интерпретатор Python

Среда программирования Python является кросс-платформенной (реализации Python есть для всех основных платформ), поэтому программа, написанная на этом языке будет одинаково запускаться на разных платформах: Windows, Unix или Unix-подобных. Вместе с тем, сохраняются возможности использования каких-либо особых системных свойств на отдельных платформах. Python является интерпретируемым языком, поэтому нет необходимости в сборке или компиляции под определенную платформу. Интерпретатор языка Python (CPython) не транслирует программу в бинарный файл. Вместо этого, готовый исходный код программы переводится в промежуточное представление называемое — байт-кодом (англ. bytecode). Байт-код — это компактное представление программы, уже прошедшей синтаксический и семантический анализ. Затем интерпретатор последовательно выполняет полученный промежуточный код. Интерпретация, по сравнению с компиляцией, имеет свои преимущества и недостатки.

Преимущества:

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

Недостатки:

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

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

Интерактивный режим Python в программе Терминал

Интерактивный режим Python в программе Терминал

Интерактивный режим полезен для тестирования фрагментов программного кода, на начальном этапе обучения программированию на языке Python и для использования среды Python как калькулятор. В интерактивном режиме можно работать непосредственно в консоли как в Linux (программа Терминал), так и в Windows (консоль можно вызвать из меню программы). В консоли Linux необходимо ввести команду python3. В интерактивном режиме каждому вводимому законченному предложению языка предшествует приглашение >>>. Если же предложение не закончено (а для перевода на новую строку нажата клавиша Enter), то последующему вводу будет предшествовать ... до тех пор, пока языковая конструкция не будет завершена (логическая строка, подробно освещена будет на следующем уроке).
Консоль, используемая в интерактивном режиме, не предоставляет никаких вспомогательных средств при кодировании, такие как подсветку синтаксиса, автозавершение, автотабуляция, работа с блоками кода и проч. Интерактивный режим также поддерживается и, в поставляемой с Python, интегрированной средой IDLE (окно Python Shell). Но, в отличие от консоли, IDLE предоставляет имеющийся функционал работы с кодом и для интерактивного режима.

IDLE: окно интерактивного режима, поверх него - окно запуска модулей и окно созданное модулем Turtle

IDLE: окно интерактивного режима, поверх него — окно запуска модулей и окно созданное модулем Turtle

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

Создадим первую программу на Python «Привет, Мир!» без использования какой-либо IDE. Для этого выполним следующий порядок действий:

  1. запустите простой текстовый редактор, например, KWrite. В этом редакторе наберите следующий код:
    #!/usr/bin/python3
    print("Привет, Мир!")
    

    Первая строка (называется shebang) говорит о том, что данная программа должна выполняться интерпретатором (указан полный путь к pythpn3 в Fedora Linux, в других системах может отличаться).

  2. сохраните файл с расширением .py (например, pro_1.py) в директории ваших проектов (которая должна быть создана, например, здесь: ~/py_pro/);
  3. запустите программу Терминал (например, Konsole в KDE) и перейдите в директорию программы (команда cd):
    [user@localhost ~]$ cd ~/py_pro
  4. в Linux (и прочих Unix-системах) файлу программы необходимо определить права на выполнение:
    [user@localhost py_pro]$ chmod +x pro_1.py
  5. запускается программа по имени:
    [user@localhost py_pro]$ ./pro_1.py
  6. Ниже появится результат работы программы — символьная строка «Привет, Мир!».
    Программу в консоли можно также запустить вызвав интерпретатор командой python3 с именем программы, через пробел:

    [user@localhost py_pro]$ python3 pro_1.py

    34

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

Интегрированные среды разработки предоставляют гораздо больше инструментов для написания программного кода, нежели простые текстовые редакторы. Они включают в себя, помимо редакторов кода, средства работы с компилятором и отладчиком, интеграцию с системами управления версиями, конструкторы GUI и многое другое. Редакторы IDE существенно облегчают программистам верстку программного кода, так как встроенные редакторы обладают возможностью подсветки синтаксиса, автодополнения, навигации и рефакторинга. Python, как уже было отмечено, поставляется с интегрированной средой IDLE. Это довольно простая среда с минимальным набором инструментов, созданная с помощью графической библиотеки TKinter. Эта среда обладает встроенной оболочкой для работы в интерактивном режиме (Python Shell), а также редактором программного кода, с упомянутыми ранее функциями, возможностью использования отладчика и запуска приложений (в режиме запуска модулей). Среди свободных и кроссплатформенных сред можно выделить следующие IDE: Geany, WingIDE 101, Spyder, Eric, Eclipse + PyDev. Возможной альтернативой IDLE можно рассматривать IDE Geany. Geany — свободная среда разработки программного обеспечения, написанная с использованием библиотеки GTK2. Доступна для следующих операционных систем: BSD, Linux, Mac OS X, Solaris и Windows. Geany распространяется согласно GNU GPL. Geany не включает в свой состав компилятор. Сайт программы: http://www.geany.org/. Внешний вид редактора:
Screenshot - 06_12
Русская документация к программе
Некоторые настройки программы для Linux

  • Замена интерпретатора python (2.x) на python3
  • По умолчанию будет использоваться интерпретатор python 2.x, чтобы использовался python3, необходимо изменить файл конфигурации находящийся здесь:

    /usr/share/geany/filetypes.python

    (для всех пользователей)
    или здесь:

    ~/.config/geany/filedefs/filetypes.python

    (для текущего пользователя)
    Найдите и закомментируйте (т. е., вначале каждой из строк поставьте символ "#") следующие строки:

    #compiler=python -m py_compile "%f"
    #run_cmd=python "%f"

    Ниже вставляем следующие строки:

    compiler=python3 -c "import py_compile; py_compile.compile('%f')"
    run_cmd=python3 "%f"

    Сохраняем файл настройки и перезапускаем Geany.

  • Замена терминала xterm на другой
  • Стандартный xterm можно заменить на родной терминал среды. В меню программы Правка > Настройки > Инструменты > Терминал заменяем строку на
    для gnome-terminal:

    gnome-terminal -x "/bin/sh" %c

    для Konsole:

    konsole -e sh -c

    или

    konsole --workdir . -e sh geany_run_script.sh

    Разумеется, Gnome-terminal или Konsole должны быть установлены в системе.

Домашняя работа

Используя методические рекомендации, установить на домашний компьютер среду программирования Python. Написать и запустить программу приветствия в IDLE.

Вопросы

  1. Почему каскадная модель разработки ПО не применяется в больших проектах?
  2. Опишите преимущества использования IDE по сравнению с обычным текстовым редактором и командной строкой
  3. Опишите преимущества и недостатки интерпретации
  4. В чем заключается различие между каскадной и итерационной моделями разработки?
  5. Перечислите стадии разработки ПО в методологии Rational Unified Process (RUP)

Темы сообщений

  • Спиральная модель жизненного цикла ПО
  • UML (англ. Unified Modeling Language — унифицированный язык моделирования)
  • Microsoft Solutions Framework
  • IDE для программирования на Python
  • Интерпретаторы Python
  • Создание консольного приложения в Windows

Литература

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


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