Стадии разработки программного продукта

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

Стадии Beta и Alpha не являются показателями нестабильности, так как присваиваются программе один раз или один раз за серию (серией, в данном случае, считается число до первой точки), в зависимости от системы разработки. Они могут присваиваться нескольким выпускаемым версиям подряд.

Содержание

История [ править | править код ]

Терминология тестирования «альфа/бета» впервые появилась в IBM. Подобные термины для разработки программного обеспечения использовались людьми, связанными с IBM, по крайней мере, с 1950-х годов, а возможно и раньше. Тест «A» представлял собой проверку нового продукта перед публичным объявлением. Тест «B» был проверкой перед выпуском продукта в производство. Тест «C» являлся окончательным испытанием перед общей доступностью продукта. Поскольку программное обеспечение стало важной частью продукции IBM, для обозначения теста перед объявлением использовалась терминология альфа-тестирования, а бета-тест — для демонстрации готовности продукта к общей доступности. Мартин Бельский, менеджер некоторых ранних программных проектов IBM, утверждал, что он является автором данной терминологии. IBM отказалась от терминологии Альфа/Бета в 1960-х годах, но к тому времени она получила довольно широкое распространение. Термин «бета-тест» как обозначение тестирования, выполняемого пользователями, появился не в IBM. Вместо этого IBM использовала термин «полевой тест» (англ. field test ).

Этапы разработки [ править | править код ]

Pre-Alpha — начальная разработка [ править | править код ]

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

Alpha — внутренняя разработка [ править | править код ]

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

Как правило, альфа-тестирование заканчивается заморозкой свойств и переходит в бета-тестирование.

Beta — общественная разработка [ править | править код ]

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

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

Release candidate / предварительная версия [ править | править код ]

Стадия-кандидат на то, чтобы стать стабильной. Программы этой стадии прошли комплексное тестирование, благодаря чему были исправлены все найденные критические ошибки. Но в то же время существует вероятность выявления ещё некоторого числа ошибок, не замеченных при тестировании. Если в течение установленного времени не будет найдено крупных недоработок — становится RTM-версией. Пример: Windows 7 RC 7100.

Выпуск [ править | править код ]

После выпуска программное обеспечение обычно называется «стабильным выпуском» (stable release). Формальный термин часто зависит от способа выпуска: физический носитель, онлайн-выпуск или веб-приложение.

Release to manufacturing / выпуск в производство [ править | править код ]

Обозначение готовности программного продукта к тиражированию [1] . Это стабильная версия программы, прошедшая все предыдущие стадии, в которых исправлены основные ошибки. RTM предшествует общей доступности (GA), когда продукт выпущен для общественности.

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

Читайте также:  Швейная машинка janome для начинающих

General availability / общедоступность [ править | править код ]

Общедоступность (англ. general availability ) или общепринятость (англ. general acceptance , GA ) — стадия маркетинга, на которой завершены все необходимые мероприятия по коммерциализации и доступен для покупки программный продукт, в зависимости, однако, от языка, региона, электронной или медийной доступности. Деятельность по коммерциализации может включать проверку безопасности и соответствия требованиям, а также локализацию и продвижение по всему миру. Время между выпуском в производство и общедоступностью может составлять от недели до нескольких месяцев. Это время необходимо для завершения всех мероприятий по коммерциализации, требуемых GA. На данном этапе программное обеспечение «вышло в жизнь» (gone live).

Release to web / веб-релиз [ править | править код ]

Выпуск в интернет (RTW) или веб-релиз является средством доставки программного обеспечения, которое использует интернет для его распространения. При этом изготовитель не задействует никакие физические носители. Веб-релизы становятся все более распространенными по мере роста использования интернета.

Поддержка [ править | править код ]

В течение поддерживаемого срока службы программное обеспечение к нему выпускаются сервисные выпуски (service releases), патчи или пакеты обновления, иногда также называемые «промежуточными выпусками» (interim releases).

Например, в операционных системах Windows основная фаза поддержки длится 5-6 лет с момента общедоступности. [2] В ОС типа Ubuntu существуют специальные версии LTS (Long Time Support), срок поддержки которых составляет 5 лет против 1 года у обычных. [3]

Прекращение поддержки [ править | править код ]

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

Этапы разработки программного обеспечения

Процесс разработки программного обеспечения можно разбить на этапы (фазы):

– содержательная постановка задачи;

– разработка модели и выбор метода решения;

– разработка алгоритма решения задачи;

– сопровождение и эксплуатация.

Содержательная постановка задачи. Постановка задачи – это точная формулировка решения задачи на компьютере с описанием входной и выходной информации.

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

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

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

– управление режимами работы программы. Формулируются основные требования к способу взаимодействия пользователя с программой (интерфейс пользователь-компьютер).

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

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

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

– пример работы программного комплекса. Приводится один или несколько примеров работы программного ком­плекса, на которых в простейших случаях проводится его отладка и тести­рование.

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

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

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

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

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

Читайте также:  Спектральная плотность излучения абсолютно черного тела равна

Компиляция программы. После того как закончено кодирование (написание программы на языке программирования) и исходный текст программы введен в память компьютера, производят компилирование программы, т.е. перевод исходного текста в машинный код. Этот процесс осуществляется специальной программой – компилятором. На рисунке 1 представлена схема подготовки исполняемой программы.

Сначала программа передается препроцессору, который выполняет директивы, содержащиеся в ее тексте (например, #include – включение файла в текст программы).

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

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

Тестирование программы. Различается два вида тестирования: автономное и комплексное. При автономном тестированию подвергаются отдельные программные модули, из которых состоит программный комплекс. Комплексное тестирование заключается в проверке всего программного комплекса. Для тестирования подбираются такие исходные данные, для которых результат выполнения программы заранее известен.

Создание документации. Документация классифицируется по своему назначению и может быть разбита на несколько групп: описание применения, руководство пользователя, руководство программиста.

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

Руководство пользователя – детальное описание функциональных возможностей и технологии работы с программным продуктом для конечного пользователя. Документы данного вида могут офор­мляться в печатном виде и (или) "встраиваться" в программный комплекс (в последнем случае помощь в виде подсказки вызывается самим пользо­вателем в процессе работы программного комплекса).

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

– задание на разработку программного обеспечения (техническое зада­ние);

– прокомментированные исходные тексты (листинги) модулей програм­мы и управляющего модуля;

– схема разбиения программного комплекса на программные модули;

– схема потоков данных программного комплекса;

– схема взаимодействия программных модулей;

– планы и данные для тестирования программного комплекса;

– другие материалы, иллюстрирующие проект, например: блок-схемы программного комплекса и программных модулей.

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

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

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

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

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

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

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

Можно выделить следующие этапы:

– Постановка и анализ задачи, определение требований;

– Разработка, написание кода;

и оценка качества;

– внедрение и сопровождение.

Результатом обычно является документ, называемый в нашей стране техническим заданием (ГОСТ 19.201-78) и содержащий сведения о назначении продукта, набор требований к нему и описание границ проекта.

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

Принято различать логическое и физическое проектирование.

Логическое проектирование не учитывает особенностей среды, в которой будет выполняться программа (технические и программные средства компьютера).

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

Логическое проектирование при процедурном подходе предполагает детальную проработку последовательности действий будущей программы.

Определяется структура программы (программ) и разрабатывается алгоритм.

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

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

Читайте также:  Ютуб без гугл сервисов 4pda

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

Детерминированность. Способ решения задачи однозначно определен в виде последовательности шагов.

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

Результативность. Содержательная определенность результата каждого шага и алгоритма в целом.

Свойство результативности содержит в себе свойство конечности — завершение работы алгоритма за конечное число шагов.

Массовость. Алгоритм пригоден для решения любой задачи из некоторого класса задач.

При изучении алгоритмов важно разделять два понятия: запись алгоритма и выполнение алгоритма. В учебно-научной литературе термин «алгоритм» используется как в первом, так и во втором значении. Для более четкого изложения нужно конкретизировать употребление этого термина!

Различают последовательности действий

– и циклической структуры.

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

Разветвленная структура процесса вычислений предполагает, что конкретная последовательность операций зависит от значений одного или нескольких

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

Процессы вычислений циклической структуры в свою очередь можно разделить на три группы:

• циклические процессы, для которых количество повторений известно счетные циклы или циклы с заданным количеством повторений

• циклические процессы, завершающиеся по достижении или нарушении некоторых условий – итерационные циклы;

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

– текстовая форма записи;

– запись в виде блок-схемы;

– запись алгоритма на каком-либо алгоритмическом языке;

– представление алгоритма в виде машины Тьюринга или машины Поста.

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

В 1969 году Эдсгер В. Дейкстра в статье «Структуры данных и алгоритмы» доказал, что для записи любого алгоритма достаточно трех основных алгоритмических конструкций: последовательных, ветвящихся, циклических.

Блок-схема алгоритма(ГОСТ 19.701-90)

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

Терминатор. Показывает начальную и конечную точки программы. Терминатор соединен с другими фигурами только одной линией: из начальной точки линия со стрелкой выходит, а в конечную — входит.

Ввод и вывод данных. Фрагмент программы, в котором пользователь вводит данные или программа выводит результаты на экран.

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

Структура принятия решения. Фрагмент программы, в котором принимается решение о направлении вычислительного процесса. В ромб всегда входит одна линия, а выходят две. Одна из выходящих линий отмечается словом "Да", а другая — "Нет".

Предопределенный процесс. Эта фигура отображает группу операций, например вычисление факториала.

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

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

Перечисленные структуры были положены в основу структурного программирования

Состоит из комбинации операторов языка высокого уровня и фраз на английском или русском языке. Стандартов на составление псевдокодов не существует.

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

Для разработки алгоритмов более сложных программ целесообразно использовать метод пошаговой детализации

С использованием данного метода разработку алгоритмов

На первом этапе описывают решение поставленной задачи, выделяя подзадачи и считая их решенными.

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

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

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

– Разработанные алгоритмы реализуют, составляя по ним текст программы с использованием конкретного языка программирования.

– На этапе собственно разработки создается код приложения в соответствии с техническим проектом.

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

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

Трансляторы реализуются в виде компиляторов или интерпретаторов.

Интерпретатор (англ. interpreter — истолкователь, устный переводчик) переводит и выполняет программу строка за строкой.

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

Оцените статью
Добавить комментарий

Adblock
detector