Управление выполнением программы


Управление выполнением программы в VBA

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

Оператор условного перехода — это инструкции, которые определяют ход выполнения других операторов программы в зависимости от результатов анализа некоторых условий. Управляющие оператор позволяют выполнять или пропускать определенные оператор выражений. К операторам условного перехода относятся оператор ветвления IF. Then и выбора Select Case. Существует краткая (IF. Then) и полная форма (IF. Then. Else. End If) операторов ветвления. Необходимо отметить, что при записи инструкции в одну строку ключевые слова End If не применяется.

Общий вид краткой формы оператора ветвления и одну строку:

Краткая форма оператора ветвления для блока операторов имеет следующий вид:

Когда условие истинно (т.е. результатом условия является true), то выполняется инструкция, или группа инструкций, следующая за ключевым словом «Then».

Полная форма оператора условного перехода IF. Then. Else. End If, который имеет две альтернативные ветви процедуры:

Если условие соблюдается (условие истинно), выполняется инструкция 1 (оператор или группа операторов), расположенная между ключевыми словами Then и Else, а если условие не соблюдается (ложно), то выполняется альтернативная инструкция 2, расположенная между ключевыми словами Else и End if.

Необходимо отметить, что оператор могут быть вложенными. Если требуется проверить условие2 при выполненном (истинном) условии1, то следует применять вложенные оператор, т.е. внутри оператора IF. Then. End If надо поместить IF. Then. Else. End If.

Синтаксис оператора условного перехода IF. Then. End If, который имеет вложенный оператор IF. Then. Else. End If имеет вид:

Первый оператор IF проверяет условие1. Если условие1 истинно, то выполняется второй оператор IF. Если условие2 истинно, то выполняется оператор1, если ложно — оператор2. В этой конструкции проверяется условие2 при выполненном условии1, если условие1 ложно, выполняется оператор, следующий за ключевым словом End If.

Если выбирается одно из нескольких значений, то проверяется не одно, а несколько условий. В этом случае следует применить конструкции с несколькими операторами IF. Then. ElseIF, т.е. внутри оператора IF. Then. Else. End If поместить ветви операторов ElseIf. Then.

Форма условного перехода IF. Then. ElseIF имеет следующий синтаксис:

Если условие1 истинно, то выполняется оператор1, а затем первый, из операторов следующий за ключевым словом End if. Если условие1 ложно, то выполняются операторы ElseIf в порядке их следования, чтобы проверить их условия. Если обнаружится, что одно из условий имеет значение True, то выполняется оператор, который следуют непосредственно за соответствующим ключевым словом Then.

Если все условия ложны, то выполняется альтернативный «операторМ», следующий за ключевым словом Else. Таким образом, если первое условие ложно, операторы ElseIf обеспечивают проверку дополнительных условий с целью выбора одного из нескольких значений.

В VBA применяется еще один оператор условного перехода типа Select Case. Этот оператор позволяет осуществить выбор альтернативного варианта, сравнивая значение с различными выражениями.

Синтаксис оператора условного перехода Select Case имеет вид:

Select Case значение

В этом условном операторе значение переменной сравнивается с каждым из значений, которые хранятся в выражениях каждого из условий. Если значение переменной удовлетворяет одному из значений условия, будут выполняться оператор, следующие за этим условием. Затем будет выполняться оператор, следующий за ключевым словом End Select. Если значение переменной не удовлетворяет ни одному из значений условий, то выполняется «операторМ», следующий за оператором Case Else.

ВЫПОЛНЕНИЕ ПРОГРАММ

В результате изучения материала данной главы студент должен: знать

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

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

Управление государственной и муниципальной программой

Системная модель управления программой

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

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

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

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

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

Структура системной модели управления программой включает три блока: субъект управления; объект управления; процесс управления осуществлением программы.

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

Объектами управления могут быть: программы (подпрограммы); мероприятия, реализуемые в организациях или на предприятиях; фазы жизненного цикла программы: концепция, разработка, реализация, завершение.

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

В свою очередь уровни управления включают:

весь жизненный цикл нроіраммьі (стратегический уровень);

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

работы, выполнение которых запланировано в течение текущего времени (оперативный уровень).

Функции управления содержат управление:

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

Стадии процесса управления охватывают:

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

Управление выполнением программы на Прологе

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

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

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

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

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

В качестве внешней цели, после запуска программы зададим вопрос об именах всех бабушек и внучек (grandmother(B,V)) .

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

Для выполнения цели grandmother(B,V) должны быть удовлетворены две подцели: mother(B,Z) и mother(Z,V) . Первая подцель унифицируется с первым предложением, описывающим отношение «быть мамой». При этом переменная B конкретизируется именем «Даша» , а переменная Z — «Маша» . В окне трассировки в этот момент результат вычисления текущей подцели (mother(«Даша»,»Маша»)) , выводящийся после слова RETURN, сопровождается звездочкой (*), которая показывает, что у подцели есть альтернативные решения. Это то самое место , указатель на которое Пролог заносит в стек точек возврата для возможного последующего возвращения.

Затем делается попытка удовлетворить вторую подцель mother(Z,V) , причем переменная Z означена именем «Маша» . Попытка унифицировать эту подцель с одним из фактов, имеющих отношение к предикату mother , оказывается неудачной. Это происходит потому, что в нашей базе знаний нет никакой информации о детях Маши. О неуспехе говорит слово FAIL в окне трассировки. Происходит откат до места, сохраненного в стеке точек возврата. При этом переменные B и Z , означенные к моменту отката , вновь становятся свободными.

Выбирается вторая альтернатива . Переменная B при этом становится равной имени «Наташа» , а переменная Z получает значение «Даша» . Звездочка в окне трассировки, как и при первом проходе этой точки, показывает нам, что исчерпаны еще не все из имеющихся альтернатив, удовлетворяющих нашей подцели.

Делается попытка найти решение для второй подцели mother(Z,V) (при Z = «Даша» ). Первое же предложение в процедуре, реализующей предикат mother , унифицируется с текущей подцелью, переменная V получает значение «Маша» . Очередная звездочка в окне трассировки отмечает, что указатель на это место помещен в стек точек возврата, для того чтобы вернуться сюда, и что возможны другие означивания для переменной V , приводящие текущую подцель к успеху.

Получаем, что ответ на наш вопрос возможен при следующих значениях переменных: B=Наташа , V=Маша . Этот ответ отображается в окне диалога, после чего осуществляется откат к последнему месту, записанному в стек точек возврата. При этом освобождается переменная V , которая уже была означена именем «Маша» . Подцель mother(Даша,V) унифицируется с заголовком последнего предложения процедуры, определяющей предикат mother . Переменная V означивается именем «Саша» . В диалоговом окне выводится второй возможный ответ на заданный нами в качестве внешней цели вопрос: B=Наташа , V=Саша .

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


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

Первая подцель сопоставляется с третьим фактом mother( «Наташа»,»Глаша» ). В окне трассировки видим уже знакомый символ звездочки, который свидетельствует о том, что испробованы еще не все возможные варианты для текущей подцели mother(B,Z) . Делаются последовательные попытки сопоставить подцель mother(«Глаша»,V) с одним из фактов, имеющихся в базе знаний. Однако эти попытки заканчиваются неудачей, поскольку наша программа не содержит информации о детях Глаши. В окне трассировки отображается слово FAIL, информирующее нас об этой неудаче.

Процесс выполнения программы в очередной, последний, раз откатывается к тому месту, где можно выбрать решение для первой подцели. Подцель унифицируется с последним предложением в процедуре, описывающей знания, касающиеся мам. Переменная B конкретизируется именем «Даша» , а переменная Z — «Cаша» . Других вариантов для сопоставления первой подцели не остается. Стек точек возврата пуст. В окне трассировки нет индикатора, сообщающего об альтернативных решениях, к которым возможно возвращение. Пролог -система пытается сопоставить с чем-нибудь вторую подцель mother(«Саша»,V) , однако ей не удается этого сделать. Ни один из фактов не содержит в качестве первого аргумента имя «Саша» . Очередная неудача в попытке найти внуков для Даши.

Программа завершается. В диалоговом окне — два найденных в процессе работы решения:

Теперь посмотрим, какие имеются у программиста возможности по управлению откатом .

Управление выполнением программы

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

УПРАВЛЕНИЕ — функция организованных систем, возникших естественным (эволюционным) или искусственным (креационным) путем. Различают У. в биологических, социальных, экономических, политических, технических, кибернетических и др. системах. Наиболее общими… … Философская энциклопедия

Управление записями — (англ. Records Management) практика ведения записей организации с момента их создания до окончательного уничтожения. Данная практика включает в себя классификацию записей, их хранение, защиту и уничтожение (либо, в некоторых случаях … … Википедия

Управление — 2 Управление Совокупность целенаправленных действий, включающая оценку ситуации и состояние объекта управления Выбор управляющих воздействий и их реализация (ГОСТ 34.003 90). Применительно к персоналу (как объекту управления) под управлением… … Словарь-справочник терминов нормативно-технической документации

Управление — I Управление элемент, функция организованных систем различной природы (биологических, социальных, технических), обеспечивающая сохранение их определённой структуры, поддержание режима деятельности, реализацию программы, цели деятельности … Большая советская энциклопедия

Управление проектами — (англ. project management) в соответствии с определением международного стандарта ISO 21500, принятого правительствами США, странами Евросоюза и правительством России в сентябре 2012 год … Википедия

ИСО 9004-1-94: Управление качеством и элементы системы качества. Часть 1. Руководящие указания — Терминология ИСО 9004 1 94: Управление качеством и элементы системы качества. Часть 1. Руководящие указания: 8.7. Анализ готовности продукций к реализации Следует определить возможности организации для поставки новой или модернизированной… … Словарь-справочник терминов нормативно-технической документации

ВЫСШЕЕ УПРАВЛЕНИЕ ПОМЕСТНОЙ ЦЕРКВИ — Канонические принципы устройства В. у. определены 34 м Апостольским правилом: «Епископам всякаго народа подобает знати перваго в них, и признавати его яко главу, и ничего превышающего их власть не творити без его разсуждения: творити же каждому… … Православная энциклопедия

СОЦИАЛЬНОЕ УПРАВЛЕНИЕ — основанное на достоверном знании систематическое воздействие субъекта управления (управляющей подсистемы) на социальный объект (управляемую подсистему), в качестве какового может выступать общество в целом и его отдельные сферы экономическая,… … Социология: Энциклопедия

Женевская инициатива — «Женевская инициатива» (известна также, как «Geneva Accord» англ. и «יוזמת ז נבה» ивр.Yozmat Jeneva) проект соглашения о постоянном урегулировании между Государством Израиль и Организацией освобождения Палестины подготовленный группой… … Википедия

Университет — (от лат. universitas совокупность). В настоящее время с понятием У. соединяют представление о высшем учебном заведении, которое, имея целью свободное преподавание и развитие всех отраслей науки (universitas litterarum), независимо от их… … Энциклопедический словарь Ф.А. Брокгауза и И.А. Ефрона

Урок №63. Операторы управления потоком выполнения программ

Обновл. 25 Апр 2020 |

При запуске программы, центральный процессор (ЦП) начинает выполнение кода с первой строчки функции main(), выполняя определённое количество стейтментов, а затем завершает выполнение при завершении блока main(). Последовательность стейтментов, которые выполняет ЦП, называется порядком выполнения программы (или ещё «потоком выполнения программы»).

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

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

Но на практике это не всегда может быть то, что нам нужно. Например, если мы попросим пользователя сделать выбор между + и / , а пользователь введёт некорректный символ (например, * ), то, в идеале, нам нужно было бы попросить его ввести символ ещё раз. Но это невозможно в линейной программе. Кроме того, бывают случаи, когда нужно выполнить что-то несколько раз, но количество этих повторений наперёд неизвестно. Например, если бы мы хотели вывести все целые числа от 0 до числа, которое введёт пользователь, то, в линейной программе, мы бы не смогли это сделать, не зная наперёд число, которое введёт пользователь.

К счастью, в C++ есть операторы управления порядком выполнения программы, которые позволяют программисту изменить поток выполнения программы центральным процессором.

Остановка

Самый простой оператор управления порядком выполнения программы — это остановка, которая сообщает программе немедленно прекратить своё выполнение. В C++ остановка осуществляется с помощью функции exit(), которая определена в заголовочном файле cstdlib. Функция exit() принимает целочисленный параметр, который затем возвращает обратно в операционную систему в качестве кода выхода. Например:

Управление выполнением программы с помощью структур

Структуры важный тип узла данных управляют выполнением ВП аналогично операто­рам обычных языков программирования. В этой главе вы познакомитесь с четырьмя ос­новными структурами LabVIEW: циклами по условию и фиксированным числом итераций, структурами варианта и последовательности. Также вы научитесь вычислению длинных формул при помощи узла Формула, вызову всплывающего окна, содержащего сообще­ние, и нескольким основным приемам управления длительностью выполнения программ. Если хотите, можете посмотреть несколько примеров ВП, созданных на основе структур и расположенных в библиотеке LabVIEW EXAMPLES \ GENERAL \ STRUCTS. LLB.

■ Научиться использовать цикл по условию и цикл ^фиксированным числом итераций и понять различие между ними

■ Осознать необходимость использования сдвиговых регистров в графическом программировании

■ Понять различные типы структур варианта — числовую, строковую и логическую

■ Научиться управлять порядком выполнения ВП при помощи структуры последовательности

■ Использовать узел Формула для введения длинных математических выражений

■ Создать всплывающие диалоговые окна, которые говорили бы то, что вы им задали

■ Научиться использованию некоторых функций управления временем выполнения программы

■ Цикл с фиксированным числом итераций (For Loop) ■ Точка приведения типов

■ Цикл по условию (While Loop) ■ Сдвиговый регистр (Shift register)

■ Терминал счетчика итераций (Iteration terminal) ■ Структура варианта (Case Structure)

■ Терминал условия выхода из цикла ■ Терминал селектора структуры варианта

(Conditional terminal) (Selector terminal)

■ Терминал числа итераций ■ Диалоговое окно (Dialog box)

■ Точка входа/выхода в структуру (Tunnel) ■ Структура последовательности

■ Узел Формула (Formula Node)

6 УПРАВЛЕНИЕ ВЫПОЛНЕНИЕМ ПРОГРАММЫ

Если вы уже программировали на каком-либо языке, то вам, возможно, приходилось использовать повторение выполнения части кода. LabVIEW предлагает две структу­ры циклов для облегчения реализации этого процесса: цикл с фиксированным числом итераций (For Loop) и цикл по условию (While Loop) для управления повторяющи­мися операциями в виртуальном приборе. Цикл с фиксированным числом итераций выполняется определенное количество раз, а цикл по условию выполняется до тех пор, пока определенное условие больше не будет являться истинным. Вы можете най­ти оба цикла в подпалитре Структуры (Structures) палитры Функции.

Цикл с фиксированным числом итераций (For Loop) выполняет код внутри его гра­ниц (поддиаграмму) некоторое число итераций (count). Это число равно величи­не, введенной в терминал числа итераций (count terminal). Число отсчетов вы мо­жете установить, подавая определенное значение извне цикла на терминал числа итераций. Если вы подключите к этому терминалу значение 0, цикл не будет вы­полняться.

Терминал счетчика итераций (iteration terminal) содержит текущее число завершенных Итераций цикла; 0 — во время первой итерации, 1 — во время второй и т. д. до N-1, где N — Количество выполнений цикла, которое вы задали.

Цикл с фиксированным числом итераций эквивалентен следующему псевдокоду:

Цикл по условию (While Loop) выполняет код внутри его границ до тех пор, пока логическое значение (Boolean value), подключенное к терминалу условия выхода из цикла (conditional terminal) не перейдет в состояние ЛОЖЬ (False). LabVIEW проверяет терминал условия выхода по окончании каждой итерации. Если значе­ние соответствует ИСТИНА (True), то выполняется следующая итерация. По умолчанию терминал условия выхода находится в состоянии ЛОЖЬ. Если вы ос­тавите его неподключенным, цикл выполняться не будет (хотя в предыдущих вер­сиях LabVIEW цикл выполнялся бы только один раз).

Терминал счетчика итераций (iteration terminal) цикла по условию ведет себя точно так же, как и в случае с циклом с фиксированным числом итераций.

Цикл по условию эквивалентен следующему псевдокоду:

While condition is TRUE

Вы можете изменить состояние, которое проверяет терминал условия выхода из цикла. Если раньше цикл выполнялся, пока на вход терминала поступало зна­чение ИСТИНА (while true), теперь цикл остановится, если на вход поступит зна­чение ИСТИНА (unless it’s true). Чтобы этого добиться, щелкните правой кноп­кой мыши по терминалу условия и выберите опцию Остановить, если Истина (Stop if True). Цикл по условию будет выглядеть, как показано на рис. 6.3.

Здесь цикл эквивалентен следующему псевдокоду:

While condition is NOT TRUE

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

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

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

Если во время перемещения структура накла­дывается на другой объект, перекрываемый объект отобразится над ее краем. Если перемещаемая

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


Терминалы внутри циклов

Данные поступают в цикл и выходят из него через маленькое окно на границе цикла, называемое точкой входа/выхода в структуру (tunnel); Поскольку Lab-VIEW работает в соответствии с принципом потока данных, то прежде чем цикл начнет выполняться, входные точки должны передать в него свои данные. Выход­ные точки цикла выводят данные лишь после завершения всех итераций.

Также в соответствии с принципом потока данных, для того чтобы терминал обновлял свои значения на каждой итерации цикла, вы должны поместить его внутрь цикла. Например, цикл по условию, показанный на рис. 6.5а, проверяет со­стояние логического элемента управления на каждой итерации. Если с элемента считывается значение ЛОЖЬ, то цикл завершает работу.

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

Точно так же числовой индикатор (Digital Indicator) в цикле на рис. 6.6 будет об­новляться во время каждой итерации. Числовой индикатор на рис. 6.7 обновится только один раз после завершения цикла. Он будет содержать случайное число, появившееся при последней итерации.

Если вы хотите удалить цикл, не удаляя его содержимого, щелкните правой кнопкой мыши по его границе и выберите опцию Удалить цикл по условию (Remove While Loop) или Удалить цикл с фиксированным числом итераций (Remove For Loop) соответственно. Если вы просто выделите цикл инструментом перемещения и удалите его, то все объекты внутри будут также удалены.

Вы можете создать массивы данных, используя цикл, и сохранить их на его гра­ницах с помощью функции Lab VIEW автоматическая индексация (auto-indexing). Мы поговорим о массивах данных и индексировании в следующей главе.

В этом упражнении вы создадите цикл с фиксированным числом итераций, кото­рый отобразит значение счетчика на развертке осциллограммы лицевой панели. Выберите число итераций (опция Number of Iterations), и цикл начнет отсчет от нуля до этого числа минус 1 (поскольку отсчет начинается с нуля). Затем создай­те цикл по условию, который будет считать до тех пор, пока вы не остановите его переключателем логических значений (Boolean switch). Вы также увидите эффект, который возникает при помещении элементов управления и отображения за пре­делами цикла по условию.

1. Создайте новую лицевую панель, выбрав опцию Новый ВП (New VI) в меню Файл или щелкнув мышью по кнопке Новый ВП в первоначаль­ном диалоговом окне Lab VIEW.

2. Постройте лицевую панель и блок-диаграмму, показанную на рис. 6.8 и 6.9. Цикл с фиксированным числом итераций располагается в подпалитре Структуры палитры Функции. Команда Разместить слева и спра­ва (Tile Left and Right) из меню Окно позволит вам увидеть одновре­менно лицевую и диаграммную панели.

Поместите развертку осциллограммы (Waveform Chart) из подпалитры Графики (Graph) палитры Элементы управления (Controls) на ли­цевую панель ВП. Назовите ее Счетчик числа итераций. Более подроб­но мы поговорим о диаграммах и графиках в главе 8. Используйте цифровой элемент управления из подпалитры Числовые (Numeric) для управления значением Число итераций.

3. Щелкните правой кнопкой мыши по развертке осциллограммы и выбе­рите опцию Автомасштабирование по оси Y (AutoScale Y) в меню Шкала Y (Y Scale), чтобы график автоматически подстраивал масштаб для отображения возрастающего значения счетчика цикла. Снова щелк­ните правой кнопкой мыши по развертке осциллограммы и выберите Видимые элементы =* Цифровой дисплей (Visible Items => Digital Display). Теперь введите значение в элемент управления Число итера­ций и запустите ВП. Обратите внимание, что цифровой элемент отобра­жения считает от 0 до N-1 (где N — введенное вами число). Каждый раз, когда цикл выполняется, на графике по оси Y отображается значение счетчика цикла относительно времени по оси X. В этом случае каждый отсчет времени индицирует выполнение одной итерации цикла.

4. Обратите внимание на наличие маленькой серой точки в месте соединения терминала числа итераций и проводника числа итераций. Она называется точкой приведения типов, и мы поговорим о ней позднее. Щелкните пра­вой кнопкой мыши по элементу управления числа итераций и выберите оп­цию 132 Long в меню Представление (Representation) для ее устранения.

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

6. Постройте ВП, изображенный на рис. 6.11. Помните, что логические эле­менты появляются на лицевой панели в состоянии ЛОЖЬ.

7. Переведите переключатель в положение ИСТИНА, щелкнув по нему инструментом управления («палец»), и запустите ВП. Для того чтобы L остановить выполнение, переведите переключатель в положение

ЛОЖЬ. Значение элемента отображения Счетчик цикла будет обнов­ляться во время каждой итерации.

8. Когда переключатель находится в положении ЛОЖЬ, снова запустите ВП. Отметьте, что цикл по условию выполняется только один раз. По­мните, что цикл проверяет состояние терминала условия выхода в кон­це повторения.

9. Теперь перейдите к диаграммной панели и переместите элемент отоб­ражения счетчика числа итераций за пределы цикла, как показано на рис. 6.12. Вам придется вновь соеди­нять элемент отображения, а точка вы­хода создается автоматически во время выведения проводника из цикла.

10. Убедитесь, что переключатель находится в положении ИСТИНА, и запу­стите ВП. Обратите внимание, что значение элемента отображения об­новляется лишь после того, как цикл

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

11. Сохраните виртуальный прибор. Поместите его в директорию MYWORK и назовите Loop count.vi.

12. Теперь, чтобы показать, чего делать не следует, выведите логический переключатель из цикла (но оставьте подключенным). Убедитесь, что пе­реключатель находится в положении ИСТИНА, и запустите виртуаль­ный прибор, затем остановите его выполнение. Он не останавливается? Как только LabVIEW входит в цикл, он не будет проверять значение элементов управления за пределами цикла (точно так же, как он не об­новлял элемент отображения счетчика итераций, пока цикл не завер­шился). Нажмите кнопку Прервать (Abort) на инструментальной пане­ли для остановки выполнения. Если переключатель при запуске цикла находился в положении ЛОЖЬ, то цикл выполнится только один раз. Закройте ВП без сохранения изменений.

Помните маленькую серую точку в месте соединения терминала числа итераций и проводника Число итераций в последнем упражнении? Это точка приведения типов (coercion dot). Она названа так потому, что LabVIEW приводит (преобра­зует) одно числовое представление к другому. Если соединить два терминала различных числовых представлений, то LabVIEW преобразует одно из них в другое, которое имеет другой терминал. В предыдущем упражнении терминал числа итераций имел представление 32-битовых целых чисел, тогда как элемент управления числом итераций представляет собой (по умолчанию) число удво­енной точности с плавающей запятой. В этом случае LabVIEW преобразует чис­ло удвоенной точности с плавающей запятой в длинное целое число. Выполняя эту операцию, LabVIEW создает в памяти новую копию числа уже в соответству­ющем представлении. Такая копия занимает определенный объем памяти. Не­смотря на то что дополнительные затраты памяти для скалярных чисел прене­брежимо малы, этот объем быстро увеличивается при использовании массивов данных. Попытайтесь свести к минимуму появление точки приведения типов в больших массивах данных путем изменения представления ваших элементов управления и отображения, чтобы оно точно совпадало с представлением проходящих по ним данных.

Когда ВП преобразует числа с плавающей точкой в целые, то он округляет их до ближайшего целого числа. Число с десятичным значением «.5» округляется до ближайшего четного целого числа.

Сдвиговые регистры (shift regisers), применяемые в цикле по условию и в цикле

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

границе цикла и выбором опции Добавить сдвиговый регистр (Add Shift Register)

Илон Маск рекомендует:  Информационная безопасность

в контекстном меню.

Сдвиговый регистр состоит из пары терминалов, расположенных друг напротив друга на вертикальных сторонах границы цикла. В правом терминале хранятся данные, полученные при завершении итерации цикла. Эти данные «сдвигаются» в конце итерации и появляются в ле­вом терминале в начале следующей итерации (рис. 6.13). Сдвиговый регистр может содержать любой тип данных — числовой, логический, строковый, массива и т. п. Сдвиговый регистр автоматически подстраивается к типу данных первого объекта, к которому вы его подсоедините. После создания регистра он окрашен в черный цвет, но затем присваи­вает себе цвет типа данных, к источнику которых он подсоединен.

Вы можете сконфигурировать сдвиговый регистр для запоминания значений, полученных во время нескольких предыдущих итераций, как показано на рис. 6.14. Это весьма полезная функция для усреднения величин данных, полученных при различных итерациях. Чтобы обеспечить доступ к данным от предыдущих итера­ций, создайте дополнительные терминалы, щелкнув правой кнопкой мыши по левому терминалу регистра и выбрав опцию Добавить элемент (Add Element) в контекстном меню.

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

Не делайте распространенной ошибки — не путайте большого числа перемен­ных, находящихся в памяти многочисленных сдвиговых регистров, с единствен­ной переменной, полученной в результате многочисленных предыдущих итераций и находящейся в памяти одного регистра. На рис. 6.15 показано это различие.

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

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

1. Откройте прибор Shift Register Example.vi, расположенный в директо­рии EVERYONE\СНВ. LLB.

На лицевой панели имеется четыре числовых индикатора. Индикатор Текущий отсчет будет показывать текущее значение счетчика цикла (он соединен с терминалом счетчика итераций). Индикатор Предыдущий отсчет будет показывать предыдущее значение счетчика цикла. Элемент отображения Отсчет две итерации назад будет показывать значение счетчика две итерации назад и т. д.

2. Откройте окно блок-диаграммы, выбрав опцию Показать диаграммную панель (Show Diagram) в меню Окно.

Нулевое значение, соединенное с терминалами левого регистра, записы­вает ноль в эти регистры в начале выполнения программы. На следую­щей итерации старое значение счетчика итераций (Текущий отсчет) пе­реместится в левый верхний терминал и станет предыдущим отсчетом. Затем значение предыдущего отсчета перейдет в терминал Отсчет две итерации назад и т. д.

3. После просмотра диаграммной панели сделайте одновременно видимы­ми лицевую панель и диаграмму, выбрав опцию Разместить слева и справа (Tile Left and Right) в меню Окна.

4. Включите подсветку выполнения, щелкнув мышью по кнопке Подсвет­ка хода выполнения (Execution Highlighting).

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

Обратите внимание, что на каждой итерации цикла по условию ВП «проталкивает» предыдущие значения через левые терминалы сдвиго­вого регистра, используя алгоритм последовательного обслуживания FIFO («первым поступил — первым выводится»). Каждое повторение цикла увеличивает значение счетчика итераций Текущий отсчет, соеди­ненного с терминалом правого сдвигового регистра. Это значение пере­ходит в левый терминал, Предыдущий отсчет, в начале следующего по­вторения цикла: Остальные величины регистра в левом терминале сдвигаются вниз. В этом примере ВП сохраняет только три последние величины. Для сохранения большего числа величин добавьте больше элементов в правый терминал сдвигового регистра, щелкнув правой кнопкой мыши по этому терминалу с последующим выбором опции До­бавить элемент.

Остановите выполнение ВП, нажав кнопку Стоп на лицевой панели. Если вы находитесь в пошаговом режиме, то удерживайте кнопку пошагового выполнения нажатой до тех пор, пока выполнение не завершится. 6. Закройте ВП. Не сохраняйте никаких изменений. Вы хорошо порабо­тали!

Посмотрите на пример, изображенный на рис. 6.19. В цикле (А) вы создаете воз­растающую сумму значений счетчика итераций. Каждый раз новая сумма сохра­няется в сдвиговом регистре. В конце цикла общая сумма поступает на индика­тор. В цикле (В) нет сдвигового регистра, поэтому вы не сможете сохранить данные между итерациями. Вместо этого вы всякий раз добавляете нуль к теку­щему значению «i», и лишь последнее значение 9 выйдет из цикла.

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

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

запусков прибора регистр будет содержать данные, оставшиеся от предыдущих запусков программы.

Например, если в регистре сдвига находятся логические данные, то во время первоначального запуска значение будет ЛОЖЬ. Если же в регистре сдвига име­ются числовые данные, то первоначальным значением будет нуль. Во время вто­рого запуска ВП неинициализированный регистр будет содержать значения, ос­тавшиеся от первоначального запуска. Изучите показанное на рис. 6.20, чтобы понять необходимость инициализации сдвиговых регистров. Два цикла в левой колонке показывают, что происходит при повторном запуске программы, содер­жащей инициализированный сдвиговый регистр. Правая колонка демонстрирует, что происходит, когда вы запускаете программу, содержащую неинициализиро­ванный регистр два раза. Обратите внимание на начальные величины сдвиговых регистров в двух нижних циклах.

Достаточно пока о циклах — давайте перейдем к другой, не менее мощной структуре. Структура варианта (Case Structure) является методов выполнения текста, содержащего условие, то есть аналогом оператора импликации (if-then-else). Вы можете найти эту структуру в подпалитре Структуры палитры Функции. Структура варианта, показанная на рис. 6.21, имеет две или более поддиаграммы или варианта. Лишь одна из них выполняется в зависимости от логического, числового или стро­кового значения, которое вы подаете на терминал селектора структу­ры варианта.

Если к терминалу селектора структуры варианта подключено логическое зна­чение, то структура будет иметь два варианта: ЛОЖЬ и ИСТИНА.

Если к терминалу селектора подключены числовые или строковые данные, то структура может иметь почти неограниченное количество вариантов, начиная с Нулевого. Первоначально существует лишь два варианта, но вы легко увеличите их количество. Допустимо использовать несколько значений для одного вариан­та, отделяя их запятыми, как показано на рис. 6.21. Кроме того, вы всегда можете выбрать вариант По умолчанию (Default), который будет выполняться, если ве­личина, подаваемая на терминал селектора структуры, не соответствует никакому Другому варианту. Это весьма удобно в том случае, если вы не хотите думать о ка­ком-либо возможном варианте, но хотите использовать общий (подходящий для любых случаев) вариант.

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

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

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

Вы можете поместить терминал селектора структуры варианта в любом месте вдоль левой границы. Этот терминал всегда должен быть подключенным. Когда вы сделаете это, селектор автоматически присвоит себе тип подводимых данных. Если вы измените тип данных, подаваемых на терминал селектора, с числовых на логические, то варианты 0 и 1 изменятся на ЛОЖЬ и ИСТИНА. Если же имеют­ся другие варианты (от 2 до п), то LabVIEW не сбросит их — вдруг изменение в типе данных было случайным. Тем не менее вы должны удалить лишние вариан­ты, прежде чем структура начнет выполняться.

Для строковых типов данных, подаваемых на терминал селектора, нужно точно определить величины, что достигается помещением строковых данных в кавычки. Единственным исключением является слово Default, которое в кавычки никог­да не заключается.

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

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

Если вы щелкнете правой кнопкой мыши по границе структуры варианта, то по­явившееся меню предложит опции Создать вариант после (Add Case After) и Создать вариант перед (Add Case Before) текущим вариантом. Вы также можете ско­пировать текущий вариант, выбрав опцию Скопировать вариант (Duplicate Case). Уда­лить текущий вариант (и все, что в нем на­ходится) легко с помощью опции Удалить вариант (Delete This Case).


Отвлечемся ненадолго от структур, чтобы по­говорить о диалоговых окнах. Функции Однокнопочный диалог (One Button Dialogue) и Двухкнопочный диалог (Two Button Dia­logue), изображенные на рис. 6.23 и 6.24, вызывают диалоговое окно, содержащее введенную вами информацию. Вы можете найти эти функции в подпалитре Вре­мя и диалоги (Time & Dialogue) палитры Функции. Диалоговое окно функции Однокнопочный диалог будет оставаться открытым до тех пор, пока вы не нажме­те кнопку ОК, а окно функции Двухкнопочный диалог будет открытым, пока вы. не щелкнете по кнопке ОК или Cancel. Разрешается переименовать эти кнопки, подав на соответствующие вводы функций строковые данные «имя кнопки» (button name). Эти диалоговые окна являются модальными: вы не сможете акти­визировать другое окно LabVIEW, пока они открыты. Диалоговые окна весьма по­лезны для запрашивания или сообщения данных оператору вашего ВП.

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

1. Откройте новую панель.

2. Создайте лицевую панель, изображенную на рис. 6.25.

С помощью числового элемента управления будет вводиться Число. Индикатор Величина квадратного корня покажет квадратный корень

3. Откройте окно блок-диаграммы. Создайте код, изображенный на рис. 6.26

4. Поместите структуру варианта (под-палитра Структуры) в окно блок-диаграммы. Как и в случае с циклом с фиксированным числом итераций и циклом по условию, щелкните кур­сором выбранной структуры и, переме­щая его, определите нужные границы.

Функция Больше или равно? (Greater or Equal?) возвращает логическое значение, поэтому структуру варианта нужно оставить в форме m умолчанию, то есть в логической.

Помните, что варианты отображаются только по одному. Для изменение вариантов щелкните кнопкой мыши по стрелкам селектора структуры варианта. Обратите внимание, что рис. 6.26 и 6.27 показывают оба вари анта структуры. Таким образом, вы знаете, что создавать. Не создавайте две различные структуры в этом упражнении!

5. Выберите другие объекты диаграммы и соедините их так, как показано на рис. 6.26 и 6.27. Используйте окно контекстной помощи для отобра­жения вводов и выводов различных функций.

Функция Больше или равно? из подпалитры Сравнение (Comparison) определяет, является вводимое число большим или равным нулю.

Функция Квадратный корень (Square Root) из подпалитры Числовые

(Numeric) вычисляет квадратный корень вводимого числа.

Функция Числовая константа (Numeric Constant) из подпалитры Числовые используется для вывода числа -99999.0 в случае ошибки, а кон­станта 0 определяет, является ли вводимое число отрицательным.

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

Функция Строковая константа (String Constant) из подпалитры Строка (String) используется для ввода текста в диалоговое окно. Текст мож­но добавить с помощью инструментов управления или ввода текста.

В данном упражнении ВП будет выполнять вариант ИСТИНА либо вариант ЛОЖЬ структуры варианта. Если вводимое число больше или равно нулю, то ВП будет выполнять вариант ИСТИНА, который вычисляет квадратный корень от этого числа. Если число меньше нуля, то исполнение варианта ЛОЖЬ приводит к выходному числу -99999.0 и открытию диалогового окна с сообщением «Ошиб­ка. Отрицательное число».

6. Вернитесь к лицевой панели и запустите ВП. Попробуйте ввести одно число больше нуля, а другое — меньше нуля.

7. Сохраните и закройте ВП. Назовите его Square Root.vi и поместите в директории MYWORK или библиотеке виртуальных приборов.

Логика виртуального прибора, вычисляющего квадратный корень, такова:

If (Число >= 0) then

Величина квадратного корня = SQRT (Число)

Величина квадратного корня = -99999.0

Display Message «Ошибка. Отрицательное число»

В простых случаях применения логики if-then-else иногда более удобно I Пользоваться функцией LabVIEW Выбор (Select), которая работает так же, как

и структура варианта.

Функция Выбор, находящаяся в подпалитре Сравнение палитры Функции,

возвращает значение t, если входное значение ИСТИНА, и значение f, если на

вход подается ЛОЖЬ. С помощью этой функции можно сделать то же самое, что и в случае структуры варианта в последнем упражнении — за исключением вызо­ва диалогового окна.

6.4. Структуры последовательности

Определение порядка выполнения программы путем организации ее элементов в определенную последовательность называется управлением потоком данных. В обычных языках программирования, таких как Basic или С, всегда присутству­ет управление потоком, так как операторы выполняются в том порядке, в каком они написаны в программе. Для осуществления управления потоком при обработ­ке данных в Lab VIEW используется структура последовательности (Sequence Structure). Структура последовательности выполняет кадр 0, за которым следует кадр 1, затем кадр 2 и т. д., пока не выполнится последний кадр. И лишь после это­го данные покидают структуру.

Структура последовательности, показанная на рис. 6.30, весьма похожа на кадр кинопленки. Ее можно найти в подпалитре Структуры палитры Функции. Так же как и в структуре варианта, единовременно здесь отображается только один кадр. Чтобы увидеть другие кадры, нужно нажимать на стрелки селектора в верхней ча­сти структуры. Также можно щелкнуть кнопкой мыши по селектору, чтобы по­смотреть существующие кадры, а затем выбрать нужный, либо щелкнуть правой

кнопкой мыши по границе структуры и выбрать опцию Показать кадр (Show Frame). Когда вы в первый раз по­мещаете структуру последовательности на блок-диа­грамму, она будет иметь только один кадр; следовательно, нет ни стрелок, ни номеров в верхней части структуры, чтобы показать, какой кадр следует. Создайте новые кад­ры, щелкнув правой кнопкой мыши по границе структу­ры и выбрав опцию Создать кадр после (Add Frame After) или Создать кадр перед (Add Frame Before) теку­щим кадром.

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

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

Чтобы передать данные из одного кадра в любой последующий, вы должны вос­пользоваться так называемым терминалом локальной переменной (sequence local). Для создания терминала локальной переменной выберите опцию Создать локаль­ную переменную (Add Sequence Local) из контекстного меню границы структу­ры. Эта опция будет недоступна, если вы щелкнете правой кнопкой мыши слиш­ком близко от другого терминала локальной переменной или над окном дисплея поддиаграммы. Вы можете переместить терминал локальной переменной в любое свободное место на границе структуры. Используйте команду Удалить (Remove) из контекстного меню терминала локальной переменной для удаления терминала либо выделите, а затем удалите его.

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

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

Функция Задержка (мс) — Wait (ms) — заставляет ВП ждать определенное чис­ло миллисекунд, прежде чем продолжить выполнение (рис. 6.35).

Функция Задержка до следующего кратного интервала мс (Wait Until Next ms Multiple) заставляет LabVIEW ожидать, пока показания внутренних часов не сравняются или не превысят кратного количества миллисекунд, поданных на вход функции, прежде чем возобновить выполнение ВП (рис. 6.36). Эта функция за­ставляет циклы выполняться через определенные интервалы времени и позволя­ет синхронизировать работу. Две названные функции похожи, но не идентичны. Например, задержка выполнения с помощью функции Задержка до следующего кратного интервала мс, возможно, будет меньше заданного числа миллисекунд при первой итерации, поскольку зависит от значения часов во время упорядочи­вания (то есть от того, сколько времени потребуется для перехода к следующей итерации и возобновления работы ВП). Кроме того, если цикл все еще выполня­ется, а часы уже прошли кратный миллисекундный интервал, то ВП будет ждать до тех пор, пока часы достигнут следующего кратного миллисекундного интерва­ла. Таким образом, ВП может выйти из синхронизации и замедлиться. Убедитесь, что вы все учли при использовании этих функций.

Функция Счетчик времени (мс) — Tick Count (ms) — возвращает значение внутренних часов операционной системы в миллисекундах (рис. 6.37). Она в ос­новном используется для подсчета про— шедшего времени. Имейте в виду, что внутренние часы не всегда имеют боль­шую разрешающую способность: один от­счет часов может составлять до 55 мс в Windows 95/98, 10 мс в Windows 2000/ NT, 17 мс в Linux, Solaris и MacOS.

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

1. Откройте новую лицевую панель.

2. Создайте лицевую панель, как показано на рис. 6.38.

3. Уменьшите точность элементов управления и отображения Число для совпадения, Текущее число и Число итераций до нуля, выбрав опцию Формат и точность (Format & Precision)

в их контекстных меню. Введите 0 для оп­ции Разряды точности (Digits of Precision), так чтобы справа от десятичной запятой не появилось ни одной цифры.

4. Откройте окно диаграммы и постройте диа­грамму, как показано на рис. 6.39-6.41.

5. Разместите структуру последовательности (палитра Структуры) в окне диаграммы.

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

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

4. Создайте терминал локальной переменной, щелкнув правой кнопкой мыши по нижней границе нулевого кадра и выбрав пункт Создать локальную переменную в контекстном меню. Терминал локальной переменной отобразится в виде пустого квадрата. Стрелка внутри квадрата появится автоматически, когда вы подключитесь к локаль­ной переменной.

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

Функция Счетчик времени (мс) находится в палитре Время и диалоги; она возвращает показания внутренних часов.

Функция Случайное число (0-1) — Random Number (0-1) — в палитре Числовые возвращает случайное число в диапазоне от 0 до 1.

Функция Умножить (Multiply) в палитре Числовые умножает случай­ное число на 100, так что в результате возвращается случайное число в диапазоне от 0.0 до 100.0.

Функция Округлить до ближайшего (Round to Nearest) в палитре Сравнение округляет случайное число до ближайшего целого числа.

Функция Не равно? (Not Equal?) в палитре Сравнение сравнивает случайное число с числом, введенным на лицевой панели, и возвращает значение ИСТИНА, если числа не равны; в противном случае функция возвращает значение ЛОЖЬ.

Функция Инкремент (Increment) в палитре Числовые добавляет еди­ницу к значению счетчика цикла для отображения величины Число итераций, чтобы компенсировать индексацию, начинающуюся с нуля. При выполнении нулевого кадра функция Счетчик времени (мс) воз­вращает показания внутренних часов в миллисекундах. Это значение подается на терминал локальной переменной, поэтому оно будет доступ­ным в последующих кадрах. В кадре 1 ВП выполняет цикл по условию до тех пор, пока введенное число не совпадет с числом, возвращенным функцией Случайное число (0-1). В кадре 2 функция Счетчик времени (мс) возвращает новый отсчет времени в миллисекундах. Виртуальный прибор вычитает старый отсчет времени (полученный в нулевом кадре и переданный через терминал локальной переменной) из нового для вычисления прошедшего времени, а затем делит на 1000 для перевода единиц измерения из миллисекунд в секунды.

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

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


9. Введите число в элемент управления Число для совпадения и запусти­те ВП. Для ускорения выполнения выключите подсветку.

10. Используйте команду Сохранить для сохранения ВП в директории MYWORK или библиотеке виртуальных приборов с именем Time to Match. vi, затем закройте его.

Теперь, когда вы познакомились с четырьмя основными структурами управления потоками данных LabVIEW, мы представим структуру, которая не влияет на по­ток данных программы. Узел Формула является окном с изменяемыми размера­ми для ввода алгебраических формул непосредственно в блок-диаграмму. Эта осо­бенность особенно полезна, когда для вычисления необходимо использовать длинную формулу. Например, рассмотрим простое уравнение у = х2 + х +1. Если вы напишете код с использованием арифметических функций LabVIEW на блок-диаграмме для вычисления даже такой простой формулы, он будет достаточно сложным для понимания по сравнению с текстовыми уравнениями.

Вы можете ввести то же выражение в узел Формула, как это показано на рис. 6.43 (В ранних версиях LabVIEW оператор возведения в степень для узла Формула был символом ^. В LabVIEW 6.0 и более поздних версиях символ ^ означает Исключающее ИЛИ, а символ * * — воз­ведение в степень).

С помощью узла Формула допустимо непосредственно ввести формулу или формулы в окно вместо создания сложных подразделов блок-диаграммы. Вход­ные и выходные терминалы узла Формула можно создать, щелкнув правой кноп­кой мыши по границе узла и выбрав опцию Добавить ввод (Add Input) или Доба­вить вывод (Add Output) в контекстном меню. Имя переменной чувствительно

к регистру букв. Каждая строка в узле Формула должна заканчиваться точкой с запятой (;).

Найти функцию Узел Формула можно в подпалитре Структуры палитры Функции.

Информацию об операциях и функциях, которые могут применяться внутри узла Формула, вы найдете в окне контекстной помощи (рис. 6.44).

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

Вы можете ввести фрагмент кода, используя узел Формула, как это показано на рис. 6.45.

Бы можете создать ВП, который использует узел Формула для решения уравне­ния y=sin (х) и выдает результат в виде графика.

1. Откройте новую лицевую панель. Выберите График осциллограммы (Waveform Graph) в подпалитре Графики палитры Элементы управле­ния. Назовите его График. Более подробно о графиках вы узнаете в гла­ве 8, но это упражнение может показаться скучным без картинок, поэто­му мы решили несколько забежать вперед.

2. Постройте блок-диаграмму, изображенную на рис. 6.47.

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

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

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

Постоянная pi расположена в палитре Функции => Числовые => Дополнительные числовые константы (Additional Numeric Constants). Во время каждой итерации ВП умножает значение счетчика итераций на pi/Ю. Результат умножения подается в узел Формула, где от этого числа вычисляется синус. Затем ВП сохраняет результат в массиве на границе цикла с фиксированным числом итераций. (Более подробно о массивах данных вы узнаете в главе 7. Там вы увидите, почему по умолчанию из цикла с фиксированным числом итераций выводится массив данных, а из цикла по условию поступают скалярные данные.) После того как цикл с фиксированным числом итераций закончит вы­полнение, виртуальный прибор отобразит данные массива на графике.

3. Вернитесь к лицевой панели и запустите ВП. Допустимо использовать готовую функцию Синус (Sine) в палитре Функции => Числовые => Тригонометрические (Trigonometric) для выполнения тех же операций, что и узел Формула в этом упражнении, но LabVIEW не имеет встроен­ных функций для каждой необходимой формулы, поэтому вам следует попрактиковаться.

4. Сохраните ВП в директории MYWORK или в библиотеке виртуальных приборов под именем Formula Node Exercise.vi. Закройте ВП.

Логика выполнения ВП такова:

LabVIEW имеет две структуры для повторения выполнения поддиаграммы: цикл по условию и цикл с фиксированным числом итераций. Обе структуры представляют собой окна с изменяемыми размерами. Чтобы поддиаграмму заставить повторять­ся, необходимо поместить ее внутри границы цикла. Цикл по условию выполняется до тех пор, пока значение, подаваемое на терминал условия выхода, остается ИС­ТИНА. Цикл с фиксированным числом итераций выполняется определенное коли­чество раз.

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

В LabVIEW есть две структуры для управления потоком данных: структура варианта и структура последовательности. Единовременно можно увидеть лишь один вариант или кадр этих структур. Кадры (варианты) перебирают, используя маленькие стрелки в верхней части структуры либо щелкая инструментом управ­ления в окне в верхней части структуры.

Структура варианта служит для разветвления на различные поддиаграммы в зависимости от входных данных, поступающих на терминал селектора структу­ры. Функционально она совпадает с оператором if-then-else в обычных язы­ках программирования. Просто поместите поддиаграммы, которые нужно выпол­нить, внутрь границы каждого варианта структуры и подключите элемент управления (источник данных) к терминалу селектора структуры варианта. Структуры варианта могут быть логическими (два возможных варианта), число­выми или строковыми (вплоть до 215-1 вариантов) — LabVIEW автоматически определяет тип данных, который вы подключаете к терминалу селектора.

Иногда принципы обработки потока данных заставляют программу выполнять­ся не в том порядке, в каком вам бы хотелось. Структура последовательности дает возможность установить нужный порядок выполнения функций на блок-диаграм­ме. Часть диаграммы, выполняемая в первую очередь, располагается в первом кад­ре (кадр 0) структуры последовательности; поддиаграмма, выполняемая во вто­рую очередь, расположена во втором кадре и т. д.

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

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

В подпалитре Время и диалоги находятся функции вызова диалогового окна и управления временными параметрами ВП. Функции Однокнопочный диалог и Двухкнопочный диалог вызывают диалоговое окно, которое содержит введен­ную вами информацию. Функция Задержка (мс) делает паузу в выполнении ВП на определенное количество миллисекунд. Функция Задержка до следующего кратного интервала мс может заставить итерации циклов выполняться в течение определенного количества миллисекунд, делая паузу до тех пор, пока внутренние часы не сравняются или не превысят значения (в миллисекундах), поданного на вход функции. Эти две функции ожидания аналогичны, но не идентичны. Функ­ция Счетчик времени (мс) возвращает показания внутренних часов операционной системы.

6.7. Дополнительные упражнения

Создайте ВП, который применяет узел Формула для решения следующих урав­нений:

Используйте только один узел Формула для обоих уравнений. (Не забудьте поставить точку с запятой после каждого уравнения в узле.) Назовите этот ВП Equations.vi.

Создайте ВП в виде калькулятора. Лицевая панель должна иметь цифровые эле­менты управления для ввода двух чисел и числовой индикатор для показа резуль­тата операции (сложение, умножение или деление) над этими числами. Исполь­зуйте для данной операции ползунковый элемент управления. Назовите ВП Calculator.vi.

Используя лишь цикл по условию, создайте комбинацию цикла с фиксированным числом итераций и цикла по условию, которая останавливается по достижении числа N (установленного элементом управления на лицевой панели) или при щелчке по кнопке Стоп. Назовите этот ВП Combo For/While Loop. vi.

Илон Маск рекомендует:  Противостояние яндекс или гугл

Создайте ВП, который может считать значение переключателя лицевой панели и вывести сообщение, включен или выключен переключатель, в диалоговом окне. Назовите ВП VI Dialogue Display.vi. Откажитесь от применения кнопки непре­рывного запуска программы, в противном случае у вас будет бесконечно выпол­няющийся цикл. Если вы оказались в таком положении, остановите выполнение

ВП, используя клавиши +<> в Windows, + в Macintosh,

Управление выполнением программ

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

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

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

¨ цель подпрограммы может быть достаточно компактно сформулирована (словесно или формально);

¨ подобная часть программы встречается в создаваемой программе или даже в нескольких программах неоднократно;

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

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

¨ структурировать большие программы, что значительно облегчает работу с текстами программ (поиск нужного места в программе, добавление и изменение фрагментов программы);

¨ создавать большие комплексы программ (методы восходящего и нисходящего программирования);

¨ локализовать ошибки в программах, так как можно тестировать каждую подпрограмму в отдельности;

¨ осуществлять коллективную работу над программами (разные подпрограммы могут делать разные программисты);

¨ создавать библиотеки подпрограмм для коммерческого и некоммерческого использования;

¨ составлять документацию на программы, включающую перечень и назначение подпрограмм.

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

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

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

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

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

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

¨ текущая программа застывает на очередной команде и переходит в пассивное состояние;

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

¨ в оперативной памяти отыскивается незанятый участок, достаточный для размещения подпрограммы, и она переписывается на этот участок;

¨ создается окружение подпрограммы, оно становится текущим для процессора, заполняются необходимыми данными регистры процессора;

¨ управление передается подпрограмме, для чего в адресный регистр просто записывается адрес первой команды программы (точнее, его смещение; базовый адрес заполняется на предыдущем этапе);


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

¨ место подпрограммы в оперативной памяти освобождается, то есть считается впредь незанятым;

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

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

¨ порождение процесса заключается в подготовке операционной системы к выполнению программы;

¨ процесс находится в активном состоянии, если процессор непосредственно занят выполнением программы;

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

¨ процесс находится в состоянии готовности, если все необходимое для работы программы есть, но процессор еще занят выполнением другой программы;

¨ окончанием процесса называется этап нормального или аварийного выполнения программы.

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

Управление памятью

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

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

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

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

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

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

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

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

Процедура сохранения и чтения виртуальных страниц называется своппингом (от англ swapping). В Windows размер виртуальной памяти составляет 2 32 байт (4 ггб). Всем работающим под Windows программам предоставляется пространство в виртуальной памяти. При этом каждая программа может адресоваться только в области, отведенной этой программе. Попытка извлечь или положить данные в виртуальную память за пределами своей области не будет выполнена. Таким образом осуществляется защита одних программ от возможного повреждения со стороны других программ. Исключение составляет ситуация, когда операционная система специально выделяет одну и ту же область для данных, используемых несколькими программами. Это делается для того, чтобы дать возможность обмениваться данными нескольким разными процессам.

Управление файловой системой

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

¨ создание, удаление, чтение в оперативную память, перезапись измененных данных;

¨ доступ к файлам по символьным именам;

¨ возможность доступа к файлам других пользователей;

¨ управление доступом к собственным файлам;

¨ восстановление файлов в случае повреждения.

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

¨ обеспечения всех вышеперечисленных типовых действий с файлами;

¨ гарантирование корректности данных, размещенных в файле;

¨ оптимизация временных характеристик работы с файлами;

¨ поддержка различных внешних носителей;

¨ исключение или минимизация потерь данных;

¨ обеспечение стандартного набора подпрограмм ввода-вывода;

¨ обеспечение коллективного использования файлов в многопользовательской системе.

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

Файловые системы различных операционных систем устроены принципиально одинаково. Все пространство внешней памяти разбито на диски файловой системы. Как правило, диск файловой системы соответствует физическому диску, но часто пространство одного физического диска разбивается на несколько логических дисков. Отдельный диск содержит список файлов и каталогов (в некоторых системах они называются директориями или папками). Это — верхний корневой уровень файловой системы. Каталоги верхнего уровня в свою очередь содержат файлы и каталоги второго уровня. Каталоги второго уровня содержат файлы и каталоги третьего уровня и т.д. В результате, чтобы точно идентифицировать файл, необходимо указать имя диска, последовательность имен всех вложенных каталогов, последний из которых содержит файл, а затем полное имя самого файла (которое обычно состоит из имени и расширения). Имеются отдельные особенности написания полного имени файлов и каталогов в разных операционных системах.

Каталог как физический набор данных также представляет собой файл, содержащий список входящих в него файлов и других каталогов. Для работы с каталогами и файлами операционной системе необходимо знать адреса их размещения на диске. Хотя файл с логической точки зрения представляет собой единый набор данных, физически он может размещаться на диске несколькими фрагментами. Для установления соответствия между именем файла и его физическим размещением во внешней памяти, используются специальные таблицы размещения файлов в памяти (FAT – File Allocation Table). С помощью этих таблиц операционная система по имени файла находит те диски внешней памяти и те сектора на дисках, в которых размещен файл.

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

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

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

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

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

Файловая система должна обеспечивать доступ к одним и тем же файлам со стороны нескольких пользователей. Для этого в таблице FAT наряду с адресной информацией хранится информация о владельце данного файла и уровне его секретности. Используется широкий диапазон уровней доступа пользователей к файлам.

¨ пользователь не может прочесть содержимое каталога и поэтому не может узнать, какие файлы в нем содержатся;

¨ пользователь может узнать название файла и имя владельца и попросить владельца предоставить ему доступ к файлу;

¨ пользователь может запустить программу, но не может ее скопировать;

¨ пользователь может прочесть содержимое файла, но не может его изменить;

¨ пользователь может изменит файл, но толь добавив данные в его конец;

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

В системе Windows 2000 используется файловая система NFTS, поддерживающая диски и файлы больших объемов, чем системы FAT16 и FAT32, используемые в Windows 98. Таблица NFTS позволяет лучшей безопасностью и большими возможностями восстановления данных в случае повреждения данных в файлах или повреждения FAT.

Управление прерываниями

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

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

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

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

Операционная система MS DOS.

Дисковая операционная система (DOS) была разработана для IBM-подобных компьютеров. Часть операционной системы — базовая система ввода-вывода (BIOS) — встроена в компьютер и находится в постоянном запоминающем устройстве компьюте­ра. Ее назначение состоит в выполнении наиболее простых и универ­сальных услуг операционной системы, связанных с осуществлением ввода-вывода. Базовая система ввода-вывода содержит тест фун­кционирования компьютера, проверяющий работу памяти и устройств компьютера при включении его электропитания. Кроме того, базовая система ввода-вывода содержит программу вызова загрузчика операци­онной системы.

Загрузчик операционной системы — это очень короткая про­грамма, находящаяся на нулевой дорожке системного диска с операционной системой. Загружается та операционная система, загрузчик которой найден на системной дискете. На персональном компьютере это винчестер или флоппи-диск. Функция загрузчика DOS заключается в считывании в память основных модулей операционной системы и командного процессора DOS. После этого процесс загрузки завершается. Модули операционной системы представляют собой дополнение к базoвой системе ввода-вывода и реализуют часть основных услуги DOS, дополнительных к услугам BIOS.

Командный процессор DOS представляет собой файл с именем ”command.com”. Он обрабатывает текстовые команды, вводимые пользователем. Часть команд операционной системы, например Type, Dir или Сорy, командный процессор выполняет сам. Такие команды называются внутренними. Для выполнения остальных (внешних) команд пользователя командный процессор ищет на дисках утилиты с соответствующим именем и если находит, то загружает их в память и передает им управление. По окончании работы утилиты командный процессор удаляет ее из памяти и выводит сообщение о готовности к выполнению команд (приглашение DOS). Утилиты поставляются вместе с операционной системой в виде отдельных файлов. Эти программы выполняют действия обслуживающего характера, например форматирование дискет, проверку дисков и т.д.


Драйверы устройств это специальные программы, которые дополняют систему ввода-вывода DOS и обеспечивают обслуживание внешних устройств. Например, с помощью драйверов осуществляется работа с клавиатурой, монитором, принтером и т.д. Драйверы загружаются в память компьютера при загрузке операционной системы, их имена указываются в специальном файле с именем ”config.sys”. Такая схема позволяет добавлять новые устройства, не затрагивая системные файлы DOS.

В операционной системе MS DOS ряд функций по управлению запуском программ связан с конструктивными особенностями персональных компьютеров того времени. В них существовало ограничение на общий объем используемого адресного пространства оперативной памяти (640Кб). В поздних версиях можно было использовать дополнительную память (адреса от 640Кб до 1Мб). Специальные утилиты DOS позволяли разместить в этой дополнительной памяти служебные программы DOS и драйверы устройств и использовать их правильно. Прикладные программы размещались в основной памяти (адреса до 640Кб).

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

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

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

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

Дата добавления: 2020-10-26 ; просмотров: 54 ; ЗАКАЗАТЬ РАБОТУ

43 полезных сервиса для управления проектами. Без эпитетов

Дано: собственные и аутсорс-проекты, некоторые участники работают удаленно.

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

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

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

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

1. Jira – мощный онлайн сервис, позволяющий командам-разработчикам планировать проекты, назначать исполнителей задач, планировать спринты и собирать задачи в бэклог, выставлять приоритеты и дедлайны.

Что для нашей команды стало плюсами:

• Drag&Drop для перетаскивания задач в бэклоге, в спринте.
• Большое количество настроек фильтрации.
• Визуализация — позволяет быстро ориентироваться и делать изменения в спринте.
• Возможность выбора причин для закрытия задач.
• Детальные отчеты.
• Простота в управлении проектами.
• Простой и удобный трэкер времени.

Что для нашей команды стало минусами:

• Из-за огромного количества настроек, очень тяжело и долго приходится в них разбираться, зачастую трудно просто найти ответ на интересующий вопрос, FAQ недостаточно детально описывает пути решения проблем.
• Нет возможности назначения нескольких исполнителей для 1 задачи.
• Применение определенных настроек для фильтров, которые будут полезными для команды, может заблокировать уже используемые настройки.

2. Slack – web-сервис (также доступны приложения для десктопа, iOS и Android) для создания чатов и отдельных групп для ведения обсуждений с командой, клиентами или пользователями.

Что для нашей команды стало плюсами:

• Простота и быстродействие приложения (Slack выбирался как альтернатива Skype).
• Кросс-платформенность: можно использовать с любого устройства.
• Возможность создания отдельных групп.
• Быстрый обмен файлами.
• Быстрый поиск сообщений.
• Бесплатен до тех пор, пока вы не превысите лимит в сообщениях.

Что для нашей команды стало минусами:

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

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

Что для нашей команды стало плюсами:

• Наличие автоматического планирования проектов.
• Возможность для командного взаимодействия: комментарии к задачам, файлы, быстрые уведомления.
• Drag&Drop для перетаскивания задач, выставления процента выполнения и т.д.
• Возможность выставлять собственные рабочие дни и часы для более качественного управления проектами. Можно настраивать персональные календари даже на годы вперед и пользоваться ими как готовыми шаблонами.
• Выставление зависимостей между задачами.
• Интересная возможность отменять действия и возвращать проект к любому моменту. Это помогает в случаях, когда кто-то из команды допускает в проекте ошибки.
• Возможность создания сложных, многоуровневых проектов.
• Назначение ролей членам команды и прав доступа.
• Возможность сравнивать текущее состояние проекта с первоначально запланированным. За это отвечает Базовый план.
• Хорошо продуманная работа с загрузкой ресурсов.
• Учет времени сотрудников, таймер задач.
• Хорошая поддержка пользователей, в том числе и на русском языке.

Что для нашей команды стало минусами:

• Нет чисто мобильной версии и мобильного приложения.
• Не большое количество интеграций: в 2020 были JIRA Cloud и Google Drive.
• Пока мало возможностей создавать кастомные отчеты.

4. Redbooth – web-сервис, доступный также на iOS и Android, позволяющий отслеживать ошибки, планировать проекты и активности, управлять ресурсами и ставить задачи участникам проекта, устанавливать дедлайны и вехи проекта, следить за расходами проекта. Также сервис предлагает делиться файлами и синхронизацию с Google Drive, Gmail и Outlook.

Отзывы за: простой и интуитивный интерфейс; возможности чата; интеграции с другими сервисами; тэги для задач; возможность создания отчетов.

Отзывы против: нет выставления процента выполнения задач и слежения за прогрессом проекта в целом; нет возможности выставления приоритетов задач.

5. Basecamp – один из самых популярный онлайн-сервисов для совместной работы над проектами, позволяющий делиться документами, вести обсуждения с командой, создавать to-do листы и добавлять комментарии к задачам, высылать и принимать электронную почту.

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

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

6. Asana – web-приложение, также доступное на iOS и Android, позволяющее назначать задачи, выставлять приоритеты и дедлайны, следить за статусом выполнения задач и статусом проекта в целом.

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

Отзывы против: нет возможности назначать задачи нескольким участникам проекта; невозможно оценить проект в целом; нет импорта/экспорта из/в MS Project.

7. Trello – популярный онлайн-сервис, позволяющий систематизировать ваши задачи, to-do листы, обсуждения и идеи на одной доске.

Отзывы за: интуитивен; бесплатен, если вы не собираетесь использовать расширения; возможность выставлять приоритеты.

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

Отзывы за: полностью кастомизируемый интерфейс.

Отзывы против: могут возникнуть проблемы при первой настройке; тяжелая документация.

9. Easy Redmine – Open Source софт для таск-менеджмента, планирования и управления большими проектами с расширениями для управления ресурсами, финансами, CRM и т.д…

Отзывы за: есть возможность установить софт на собственный сервер; отлично подходит для больших команд.

Илон Маск рекомендует:  Плюсы и минусы моноблока и что это вообще такое

Отзывы против: нет общей визуализации проектов; неудобная навигация; нет возможности быстро планировать спринты.

10. Teamweek – web-приложение для создания графиков Ганта, как и GanttPRO. Доступно так же на iOS.

Отзывы за: приятный интерфейс; простота использования; отличная тех поддержка.

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

11. Merlin – еще один софт для создания графиков Ганта для Mac OS X с возможностью следить за расходами и бюджетом проекта.

Отзывы за: есть возможность установить софт на собственный сервер.

Отзывы против: как у большинства приложений для десктопа, низкая мобильность; доступен только для пользователей Mac OS X.

12. Taskify.us –простое приложения для создания листа задач и управления ими вместе со своей командой по типу Kanban доски.

Отзывы за: бесплатный и не требует регистрации.

Отзывы против: для такого уровня приложения их нет.

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

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

14. Zoho Projects – софт для управления проектами, позволяющий планировать проекты вместе с командой, создвать и назначать задачи, следить за одновлениями, создвать отчеты и анализировать эффективности, комментировать и обсуждать задачи и получать саммари обсуждений каждой задачи.

Отзывы за: кроме Zoho Projects, вы можете использовать также Zoho Mail, Zoho CRM, Zoho documents, в зависимости от нужд вашей компании.

Отзывы против: из-за большого количества фич, пользователи могут просто не найти те, которые им действительно необходимы; начинает тормозить после загрузки файлов.

15. Freedcamp – сервис представляет собой организованное рабочее пространство для мгновенного просмотра целого проекта, выставления и назначения задач, используя «стикеры» и календарь. Freedcamp предлагает дополнения для CRM, составления инвойсов, баг-трекинга и создания wiki страниц.


Отзывы за: есть возможность выставить приоритеты задачам; можно разделить все проекты на отдельные вкладки; простота использования; быстрая и качественная поддержка пользователей.

Отзывы против: ваши ожидания от дополнений могут быть завышены; нет возможности выставить прогресс и процент выполнения задач.

16. ManagePro – приложение для десктопа, включающее в себя основные особенности для управления проектами: диаграмму Ганта, назначение задач, выставление приоритетов выполнения.

Отзывы за: веб-интерфейс в качестве расширения.

Отзывы против: установка и настройка займут некоторое время; нет возможности сразу начать использовать онлайн версию.

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

Отзывы за: можно использовать как CRM систему; широкие возможности.

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

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

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

Отзывы против: неудобная навигация.

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

Отзывы за: удобен как для больших, так и для маленьких команд; есть возможность создавать отдельные папки для отдельных проектов.

Отзывы против: создавая разветвленные многоуровневые проекты, можно легко потеряться в навигации.

20. Smartsheet – ветеран на рынке сервисов для управления проектами. Позволяет создавать графики Ганта для своих проектов, ставить задачи и назначать их участникам проекта, устанавливать дедлайны и следить за ходом выполнения, а также прикреплять файлы и еще миллион всего.

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

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

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

Отзывы за: одно из самых популярных и надежных SaaS решений для управления задачами; мгновенные уведомления; аналитика эффективности;

Отзывы против: нет мобильного приложения или оптимизации; UX/UI далеки от “user-friendly”.

22. ProofHQ – приложение, позволяющее делиться документами / дизайнами / прототипами, комментировать командой и принимать решения вместе, позволять оставлять комментарии клиентам, скачивать разные версии проекта и делиться ими.

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

23. 10,000ft – таск-менеджер, позволяющий создать профиль для каждого участника проекта, работать над проектами вместе с командой, назначать задачи, следить за загруженностью каждого участника. Все на одном листе.

Отзывы за: можно получить полную картину всех задач и всех участников.

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

24. Insightly – система CRM и управления проектами с интеграцией с Gmail/Google Apps и Outlook 2013/Office365. Позволяет быстро управлять задачами и следить за статусами в рамках отдела маркетинга и продаж.

Отзывы за: простая настройка, добавление контактов и использование системы; есть приложение для iOS; простой приятный интерфейс.

Отзывы против: не подходит, если ваша работа не завязана на отношениях с клиентами.

25. Tribe – Web-сервис, позволяющий назначать задачи и следить за статусом их выполнения с помощью электронной почты.

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

Отзывы против: невозможно выставить дедлайны выполнения задач.

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

Отзывы за: это очень быстро и очень просто.

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

27. Process Street – сервис для управления бизнес-процессами, позволяющий создавать рабочие пространство, ставить задачи и создавать чек-листы и SOP (standard operating procedures), следить за процессами в компании, устанавливать права, планировать активности и управлять проектами вместе с коллегами.

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

28. SprintGround – сервис Agile/Scrum для таск-менеджера, планирования спринтов и релизов, слежения за прогрессом, работы над проектами вместе с командой, позволяет репортить баги и запросы новых особенностей на основе фидбеков пользователей.

Отзывы за: бесплатен для малого бизнеса, оптимизирован под Agile.

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

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

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

30. OneSoft Connect – HR- и таск-менеджер, предлагающий создать профиль для каждого члена команды и управлять задачами, следить за эффективностью и загруженностью. Также можно использовать в качестве CRM системы.

Отзывы за: возможность ставить тикеты членам команды, а также возможность хранить данные и устанавливать связи между ними.

Отзывы против: не подходит для комплексного управления проектами.

31. Task Manager – софт для десктопов (Windows 8, 7, Vista и XP), являющийся простым планировщиком задач. Позволяет делить проекты на задачи, управлять задачами и делегировать их членам команды.

Отзывы за: есть уведомления и быстрые шаблоны; бесплатный 45-дневный триал.

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

32. PayPanther –приложение не столько для управления проектами (хотя, эта особенности так же присутствует), сколько для слежения за онлайн платежами, создания инвойсов, а также ведения бухгалтерии.

Отзывы за: простое в использовании; в приложение интегрирована CRM система; позволяет следить за внутренними метриками.

Отзывы против: не подойдет для совместной работы большой команды.

33. MS Project –гигант на рынке управления проектами, в основе которого лежит диаграмма Ганта, позволяющий планировать проекты и управлять ресурсами, планировать сценарии «что если», а также устанавливать и следить за дедлайнами и прогрессом.

Отзывы за: стабильная система, которой есть основания доверять.

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

34. ISETIA – сервис управления проектами, объединяющий в себе доску Kanban, иерархическую структуру задач и диаграмму Ганта. Позволяет обмениваться в системе документами и файлами.

Отзывы за: достаточно простой интерфейс, возможность визуализации данных в разных формах.

Отзывы против: не похоже, что у сервиса до сих пор есть поддержка.

35. Kanbanery – популярный сервис для управления проектами с помощью Kanban доски.

Отзывы за: можно быстро начать пользоваться, есть возможность делиться проектами с клиентами.

Отзывы против: не похоже, что у сервиса до сих пор есть поддержка.

36. Nutcache – web-приложение для отслеживания прогресса, статуса и времени выполнения задач, выставления счетов, а также слежения за расходами и управления проектами.


Отзывы за: простота в использовании, как я вижу, неплохое решение для менеджеров по продажам.

Отзывы против: нет автоматического выставления счетов, нет возможности работать совместно с членами команды.

37. Eylean Board – клиент для десктопа (нет web-приложения) для управления Agile проектами, представляющий собой доску задач для Scrum и Kanban. Отзывы за: гибкость и простота интерфейса, есть интеграция с TFS.

Отзывы против: нет возможности устанавливать подзадачи.

Немного off-list сервисов, которые показались нам интересными и, возможно, полезными для других проектов:

38. KPI Fire – сервис позволяет настроить краткосрочные и долгосрочные цели для членов команды и следить за ходом выполнения проекта.

Отзывы за: сервис позволяет легко сравнивать производительность и стратегические планы с текущими показателями.

Отзывы против: необходимо время, чтобы настроить работу с сервисом.

39. Odoo – сборник open source приложений для бизнеса, включающих в себя системы CRM, POS, создания сайтов, eCommerce, продаж, выставление счетов, ведения бухгалтерии, слежения за ресурсами, HR, а также сервисы для управления проектами и маркетинга.

Отзывы за: доступно много моделей для бизнеса, каждый может найти для себя.

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

40. Crowdicity – сервис управления идеями, имеющий внушительную базу клиентов: LEGO, WWF, BBC, P&G, Deloitte, John Lewis и другие. Позволяет членам команды выдвигать идеи и голосовать за них.

Отзывы за: очень прост в использовании; в Crowdicity весь интерфейс может быть кастомизирован под вашу компанию.

Отзывы против: нет статистики и возможности проводить конечные опросы.

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

42. eXo Platform – сервис, объединяющий всех сотрудников, разработчиков и клиентов вместе. Является некой комбинацией всех каналов коммуникаций, от интранета, почтовых ящиков, до социальных сетей и блога.

Отзывы за: расширенная впечатляющая функциональность.

Отзывы против: может быть тяжело начать пользоваться сервисом; сервис может сильно подвисать.

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

Отзывы за: интуитивный интерфейс.

Отзывы против: не хватит функциональности для планирования, для планирования нужно будет использовать тот же онлайн сервис Jira или график Ганта от GanttPro.

Как итог. Сейчас доступно очень много приложений для управления вашими проектами, найти можно совершенно любой софт, подходящий под нужды вашей, конкретной компании. Проблема – в выборе. Как понять, что сервис, предлагающий «организовать взаимоотношения, людей и проекты легко и просто, сегодня», — это таск-менеджер, который вы так долго искали?

Надеюсь, этот список поможет вам выбрать подходящий софт!

А что вы используете для управления проектами?

Управление выполнением программы

ГОСТ Р 54871-2011

НАЦИОНАЛЬНЫЙ СТАНДАРТ РОССИЙСКОЙ ФЕДЕРАЦИИ

ТРЕБОВАНИЯ К УПРАВЛЕНИЮ ПРОГРАММОЙ

Project management. Requirements for program management

ОКС 01.040.30, 03.100.01, 03.100.40

Дата введения 2012-09-01

Цели и принципы стандартизации в Российской Федерации установлены Федеральным законом от 27 декабря 2002 г. N 184-ФЗ «О техническом регулировании», а правила применения национальных стандартов Российской Федерации — ГОСТ Р 1.0-2004 «Стандартизация в Российской Федерации. Основные положения»

Сведения о стандарте

1 РАЗРАБОТАН Автономной некоммерческой организацией «Центр стандартизации управления проектами» (АНО «Центр стандартизации управления проектами»)

2 ВНЕСЕН Техническим комитетом по стандартизации ТК 100 «Стратегический и инновационный менеджмент»

4 ВВЕДЕН ВПЕРВЫЕ

Информация об изменениях к настоящему стандарту публикуется в ежегодно издаваемом информационном указателе «Национальные стандарты», а текст изменений и поправок — в ежемесячно издаваемых информационных указателях «Национальные стандарты». В случае пересмотра (замены) или отмены настоящего стандарта соответствующее уведомление будет опубликовано в ежемесячно издаваемом информационном указателе «Национальные стандарты». Соответствующая информация, уведомление и тексты размещаются также в информационной системе общего пользования — на официальном сайте Федерального агентства по техническому регулированию и метрологии в сети Интернет

Введение

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

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

1 Область применения

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

Требования настоящего стандарта могут быть применены для управления любыми программами независимо от их размера и уровня сложности.

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

2 Нормативные ссылки

В настоящем стандарте использованы нормативные ссылки на следующие стандарты:

ГОСТ Р ИСО 9000-2008 Системы менеджмента качества. Основные положения и словарь

ГОСТ Р 54869-2011 Проектный менеджмент. Требования к управлению проектом

ГОСТ Р 54870-2011 Проектный менеджмент. Требования к управлению портфелем проектов

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

3 Термины и определения

В настоящем стандарте применены термины по ГОСТ Р ИСО 9000, а также следующие термины с соответствующими определениями:

3.1 архив документов программы: Структурированный комплект документации по программе, представленный в бумажном и/или электронном виде.

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

3.3 выгоды программы: Комплекс определенных положительных результатов и/или эффектов, получаемых в ходе выполнения и в результате реализации программы.

3.4 допущение программы: Фактор, который считается верным для программы без привлечения доказательств.

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

3.6 изменение в программе: Изменение утвержденных ранее содержания, сроков, ресурсов, а также установленных процедур управления.

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

3.8 корректирующее действие: Действие, предпринятое для устранения обнаруженного несоответствия плану программы.

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

3.10 предупреждающее действие: Действие, предпринятое для снижения вероятности и/или последствий отрицательных рисков программы.

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

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

3.13 процесс: Совокупность взаимосвязанных действий, направленных на достижение определенных результатов.

3.14 расписание программы (календарный план программы): Документ, содержащий плановые даты исполнения работ и контрольных событий программы.

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

3.16 управление программой: Централизованные координирующие действия, предпринимаемые для достижения целей и реализации (извлечения) выгод программы.

4 Организация управления программой


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

— заказчик программы — физическое или юридическое лицо, определяющее цели программы, заинтересованное в получении выгод от реализации программы;

— руководитель программы — лицо, осуществляющее управление программой, непосредственно ответственное за достижение целей и выгод программы;

— куратор программы — лицо, осуществляющее административную, организационную, финансовую и иную поддержку программы;

— руководитель проекта программы — лицо, осуществляющее управление отдельным проектом, входящим в программу, и ответственное за результаты этого проекта.

Схема, иллюстрирующая основные понятия менеджмента программы и их взаимосвязь, приведена в приложении А.

5 Управление программой

5.1 Общие положения

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

Последовательность процессов управления программой определяется условиями и спецификой конкретной программы, при этом:

— программа должна начинаться с процесса инициации программы;

— программа должна оканчиваться процессом завершения программы.

5.2 Процесс инициации программы

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

Выходы процесса: определены и документированы следующие параметры программы:

— наименование программы;

— цели и критерии успешности программы;

— основные результаты программы;

— выгоды, которые должны быть достигнуты в результате реализации программы;

— предварительное укрупненное расписание программы по этапам;

— ограничения и допущения программы;

— предварительный укрупненный план финансирования программы;

— дата старта программы;

— заказчик программы;

— руководитель программы;

— куратор программы.

5.3 Процессы планирования программы

5.3.1 Процесс планирования содержания и выгод программы

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

Выходы процесса:

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

— определены и документированы измеримые критерии достижения (получения) выгод программы;

— определен и документирован список промежуточных и итоговых результатов программы;

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

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

— определена последовательность получения промежуточных и итоговых выгод программы;

— определена последовательность выполнения проектов программы и другой деятельности, выполняемой в рамках программы;

— определены и документированы цели и результаты для каждого проекта программы, а также для другой деятельности, выполняемой в рамках программы;

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

5.3.2 Процесс разработки расписания программы

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

Выходы процесса:

— разработаны и документированы требования к разработке расписания для проектов программы и другой деятельности, входящей в программу;

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

— проведена оценка продолжительности проектов программы и другой деятельности, выполняемой в рамках программы;

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

— определены сроки достижения (получения) промежуточных и итоговых выгод программы;

— сформировано и согласовано расписание программы;

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

5.3.3 Процесс планирования бюджета программы

Цель процесса: определение порядка и объема обеспечения программы финансовыми ресурсами.

Выходы процесса:

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

— разработаны и документированы требования к разработке бюджетов проектов программы и другой деятельности, выполняемой в рамках программы;

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

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

— определен порядок распределения финансовых ресурсов между проектами программы и другой деятельностью, выполняемой в рамках программы;

— разработан бюджет программы;

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

5.3.4 Процесс организационного планирования программы

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

Выходы процесса:

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

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

5.3.5 Процесс планирования управления поставщиками программы

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

Выходы процесса:

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

— определены сроки, в которые должны быть произведены закупки, а также условия (в том числе квалификационные и иные требования к поставщикам), при соблюдении которых они должны быть осуществлены;

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

5.3.6 Процесс планирования управления рисками программы

Цель процесса: определение основных рисков программы и порядка управления рисками программы.

Выходы процесса:

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

— проведены оценка и ранжирование по вероятности и степени влияния на достижение результатов и выгод программы всех идентифицированных рисков;

— разработаны мероприятия по изменению вероятности и степени влияния наиболее значимых рисков, а также созданы планы реагирования на случай возникновения таких рисков;

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

5.3.7 Процесс планирования коммуникаций программы

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

Выходы процесса:

— определены все участники информационного обмена в рамках программы, а также их потребности в информации;

— определены методы и средства распространения информации по программе;

— определена процедура разработки, согласования, утверждения, распространения, обновления документации программы, а также процедура ведения архива программы;

— определены места и правила хранения информации по программе;

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

5.3.8 Процесс планирования управления изменениями программы

Цель процесса: определение порядка работы с изменениями в программе.

Выходы процесса:

— определен и документирован процесс работы с изменениями в программе, а именно:

а) классификация возможных изменений;

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

в) уровни полномочий, необходимые для принятия решений по каждому классу изменений;

г) порядок выявления, согласования и утверждения изменений программы;

д) порядок доведения информации об изменениях до заинтересованных сторон в программе.

5.4 Процесс обеспечения исполнения программы

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

Выходы процесса:

— заключены контракты с поставщиками в соответствии с расписанием программы;

— получены и документально зафиксированы промежуточные и/или окончательные результаты программы, а также достигнутые (полученные) выгоды;

— выполнены намеченные корректирующие и предупреждающие действия;

— документация по программе (в том числе отчетность) актуализирована и размещена в архиве согласно принятым в программе правилам;

— изменения осуществлены согласно принятым в программе правилам.

5.5 Процесс запуска проекта программы

Цель процесса: своевременная инициация и запуск проекта в соответствии с расписанием программы.

Выход процесса:

— сформирован и утвержден документ, определяющий параметры проекта, установленные ГОСТ Р 54869 (подраздел 5.1).

5.6 Процесс контроля выполнения программы и управления изменениями программы

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

Выходы процесса:

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

— на основании выявленных и проанализированных отклонений сформирован отчет по прогнозам исполнения программы;

— сформированы корректирующие и предупреждающие действия;

— отчеты о выполнении работ программы соответствуют утвержденной системе отчетности по программе;

— зафиксированы все запросы на изменения, требующие решения на уровне программы;

— приняты решения по зафиксированным запросам на изменения.

5.7 Процесс приемки результатов проектов и организация использования промежуточных выгод программы

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

Выходы процесса:

— полученные результаты проектов зафиксированы, проведена оценка соответствия полученных результатов зафиксированным в рамках процессов планирования требованиям к результатам;

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

— полученные выгоды зафиксированы, проведена оценка соответствия полученных выгод зафиксированным в рамках процессов планирования критериям достижения выгод;

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

— все заинтересованные стороны проинформированы о возможности использования полученных результатов и выгод программы.

5.8 Процесс закрытия проекта программы

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

Выходы процесса:

— проанализирован отчет о завершении проекта;

— документально зафиксирован факт закрытия (прекращения) проекта;

— архив завершенного проекта включен в архив документов программы;

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

5.9 Процесс завершения программы

Цель процесса: формальное закрытие программы.

Выходы процесса:

— сформирован финальный отчет о выполнении программы;

— дана формальная оценка успешности программы в соответствии с определенными для программы критериями успешности;

— сформирован отчет о достигнутых целях и полученных в рамках программы выгодах и предоставлен основным заинтересованным сторонам программы;

— расформирована организационная структура, ответственная за обеспечение управления и реализации программы;

— сформирован архив документов программы;

— команда программы и основные заинтересованные стороны проинформированы об окончании программы.

6 Требования к управлению документами программы

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

Документами программы необходимо управлять в соответствии со следующими требованиями:

— документы должны быть утверждены до их применения;

— необходимо обеспечить анализ актуальности документов и их своевременное обновление по мере изменения и соответствующую идентификацию версий документов;

— необходимо обеспечить наличие актуальных версий документов в местах их применения;

— необходимо обеспечить сохранение документов в течение установленных сроков и возможность их восстановления;

— необходимо обеспечивать уровень конфиденциальности документов согласно требованиям заказчика и других заинтересованных сторон программы;

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

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

Электронный текст документа
подготовлен ЗАО «Кодекс» и сверен по:
официальное издание
М.: Стандартинформ, 2012

УПРАВЛЕНИЕ ВЫПОЛНЕНИЕМ ПРОГРАММЫ

Условные операторы if-else

В обобщенной форме этот оператор записывается следующим образом:

if (логическое выражение) оператор1; [ else оператор2;]

Раздел elseнеобязателен. На месте «оператор1» или «оператор2» может стоять составной оператор, заключенный в фигурные скобки. «Логическое выражение» это любое выражение, возвращающее значение типа boolean.

Ниже приведена полная программа, в которой для определения, к какому времени года относится тот или иной месяц, используются операторы if-else.

public static void main(String args[])

String season =»зима»;

if (month == 12 || month == 1 || month == 2) <

> else if (month ==3 || month == 4 || month == 5) <

> else if (month == 6 || month == 7 || month == 8) <

> else if (month == 9 || month == 10 || month == 11) <

System.out.println( «Сейчас » + season + «.»);

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

Оператор break

Этот оператор прекращает выполнение текущего блока и передает управление оператору, следующему за данным блоком. Для именования блоков в языке Java могут использоваться метки. Оператор breakпри работе с циклами и в операторах switchможет использоваться без метки. В таком случае подразумевается выход из текущего блока. Можно использовать оператор breakтолько для перехода за один из текущих вложенных блоков.

Например, в следующей программе имеется три вложенных блока, и у каждого своя уникальная метка. Оператор break, стоящий во внутреннем блоке, вызывает переход на оператор, следующий за блоком b. При этом пропускаются два оператора println.

Оператор switch

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

switch ( выражение ) <

case значение 1:

Break;

case значение 2:

Break;

case значение n:

Break;

default:

Результатом вычисления «выражения» может быть значение любого простого типа, при этом каждое из значений, указанных в операторах case, должно быть совместимо по типу с выражением в операторе switch. Все эти значения должны быть уникальными литералами. Если же вы укажете в двух операторах caseодинаковые значения, тогда будет ошибка.

Если же значению выражения не соответствует ни один из операторов case, управление передается коду, расположенному после ключевого слова default. Отметим, что оператор defaultнеобязателен. В случае, когда ни один из операторов caseне соответствует значению выражения и в switchотсутствует оператор default,выполнение программы продолжается с

оператора, следующего за оператором switch.

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

Понравилась статья? Поделиться с друзьями:
Кодинг, CSS и SQL
Читайте также:
  1. C. Методы и программы испытаний
  2. II. Программы парашютной подготовки
  3. Oslash; 1.2. Управление окнами
  4. Oslash; 1.4. Стандартные программы
  5. R расходы на производство, обслуживание и управление производством
  6. V. Конкурсная и фестивальная программы
  7. VII. УПРАВЛЕНИЕ АССОЦИАЦИЕЙ
  8. VIII. СИСТЕМА ИНДИКАТОРОВ ЭФФЕКТИВНОСТИ РЕАЛИЗАЦИИ ПРОГРАММЫ
  9. Адаптивное управление
  10. Активы, активные операции, управление активами.