Как трактуется понятие руководство по

Сравнительный анализ структур руководств пользователя программы по ЕСПД и IEEE Std 1063-2001 с учетом рекомендаций «манифеста Кагарлицкого». Показано, что обобщенная структура руководства пользователя, собранная согласно требованиям «устаревших» ГОСТов 19-й системы, существенно превосходит структуру руководства, рекомендуемую суперсовременным IEEE Std 1063-2001. Редакция от 23.01.2022.

Создан 11.02.2005 11:14:22

Когда умирает надежда, приходит отчаяние.

Мудрая латинская поговорка

Как писать руководство пользователя программы? Создать древовидную иерархическую структуру разделов руководства пользователя и заполнить ее разделы содержимым. И вся любовь.

- Как писать руководство пользователя 1

Где взять структуру разделов руководства пользователя? С руководствами на изделия (руководство по эксплуатации по ГОСТ 2.601-95) и на автоматизированные системы (руководство пользователя по РД 50-34.698-90) все более или менее ясно. А вот сам документ «Руководство пользователя» программы в ГОСТах 19-й системы отсутствует как класс.

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

Цели и задачи статьи

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

Задачи:

  • проанализировать существующие стандарты и рекомендации по разработке эксплуатационной программной документации, выявить достоинства и недостатки каждого документа по отдельности;
  • вывести некую обобщенную структуру руководства пользователя по ГОСТам 19-й системы из имеющегося набора эксплуатационных программных документов;
  • сравнить ее со структурой, рекомендованной IEEE Std 1063-2001;
  • а все прочие задачи перекочевали во 2-ю часть статьи…

Примечание от 10.07.2014 г. — В феврале 2005 года был проведен, пожалуй, даже не сравнительный анализ, а скорее сравнительные испытания, показавшие неоспоримое превосходство ГОСТов 19-й системы стандартов над буржуйскими и практически полную несостоятельность последних.

Вопросы, на которые должно дать ответы руководство пользователя

Подарите ребенку незнакомую ему электронную игрушку. Перечень вопросов будет примерно таким (если сразу же не разломает):

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

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

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

Располагаем документами:

  • «метагайдом» Кагарлицкого;
  • суперсовременным IEEE Std 1063-2001, «IEEE Standard for Software User Documentation»;
  • классическими отечественными ГОСТами 19-й системы, включающим в себя перечисленные ниже документы «описательного» характера:
    • ГОСТ 19.402-78 ЕСПД. Описание программы;
    • ГОСТ 19.502-78 ЕСПД. Описание применения. Требования к содержанию и оформлению;
    • ГОСТ 19.503-79 ЕСПД. Руководство системного программиста. Требования к содержанию и оформлению;
    • ГОСТ 19.504-79 ЕСПД. Руководство программиста. Требования к содержанию и оформлению;
    • ГОСТ 19.505-79 ЕСПД. Руководство оператора. Требования к содержанию и оформлению.

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

Возможно, существуют и иные документы, но автору, основательно порывшемуся в рунетовской свалке, ничего более подходящего заполучить пока не удалось. Яндекс обнаружил в своих недрах еще одну страничку с названием «Как сделать хорошее руководство пользователя», автор которой именует себя на американЬский манер (типа John P. Morgan). Двухстраничное «наставление» с радостными возгласами было немедленно отправлено в корзину.

Манифест Кагарлицкого

Метагайд Кагарлицкого показался многообещающим. Только автор настоящей статьи не уразумел, что есть «метагайд», поэтому позволил себе наглось обозвать метагайд «манифестом». И не погрешил против истины (но это открылось позже — ниже).

(цитаты из манифеста Кагарлицкого)

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

Начало обнадеживающее.

В состав технической документации входят две стержневые части, которые мы будем называть соответственно руководством пользователя и справочником пользователя, или коротко: руководством и справочником (по аналогии с английскими словосочетаниями User’s Guide и User’s Reference). Они могут быть оформлены в виде отдельных документов (для крупных программных продуктов), а могут, напротив, существовать в интегрированном виде. Между ними даже может не быть четкой границы: единый текст способен совмещать в себе черты руководства и черты справочника.

Что-то не так. Автору статьи всегда «казалось», что термин техническая документация трактуется более широко, значительно шире, чем эксплуатационная (программная) документация.

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

По-понятиям так по-понятиям, вот только пацаны начинают нервничать. Руководство не есть понятие, а есть вид документа.

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

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

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

Жаль… А так все хорошо начиналось. Со «стандартов ГОСТ» — «стандартов ГОсударственных СТандартов» — простим г-на Кагарлицкого за тавтологию. Только вот решения первой задачи, поставленной автором настоящей статьи, в семидесятидвухстраничном манифесте (Arial’ом 12pt) нет. Уважаемый автор манифеста лишь поставил нам задачу. Что ж, нет пророка в своем отечестве. Может, есть пророк в отечестве буржуйском?

Руководство пользователя по IEEE Std 1063-2001 «IEEE Standard for Software User Documentation»

Забугорный «пророческий» документ IEEE Std 1063-2001 (IEEE в простонародье — «ай-яй-яй») в подразделе 1.2 (Puprose) содержит такую строчку:

This revision provides requirements for the structure, information content, and format of both printed and electronic documentation.

В авторском понимании назначение (намерение, цель, замысел, стремление) документа IEEE Std 1063-2001 состоит в «обеспечении требований к структуре, информационному наполнению, форматированию (оформлению) как электронной, так и печатной пользовательской документации по программным средствам». Что ж, подходяще. Какую же структуру руководства пользователя предлагает IEEE Std 1063-2001?

Структура руководства пользователя по IEEE Std 1063-2001

Опциональная типовая структура руководства пользователя содержится в таблице из раздела Structure of software user documentation документа IEEE Std 1063-2001:

Component

See subclause

Required?

Identification data (package label/title page)

4.3

Yes

Table of contents

5.7.1

Yes, in documents of more than eight pages after identification data

List of illustrations

5.7.2

Optional

Introduction

3.2

Yes

Information for use of the documentation

4.4

Yes

Concept of operations

4.5

Yes

Procedures

4.6, 4.7

Yes (instructional mode)

Information on software commands

4.8

Yes (reference mode)

Error messages and problem resolution

4.9

Yes

Glossary

4.10

Yes, if documentation contains unfamiliar terms

Related information sources

4.11

Optional

Navigational features

5.8

Yes

Index

5.7.3

Yes, if documents of more than 40 pages

Search capability

5.7.4

Yes, in electronic documents

For purposes of this standard, the following non-mandatory nomenclature is used for the structural parts of software user documentation. A printed document is structured into logical units called chapters, subdivided into topics, which may be subdivided into subtopics, and printed on physical units called pages.

Здорово. IEEE Std 1063-2001 предлагает «все взять и поделить» — разбить разделы руководства на главы, топики, субтопики и т.д. И наступит всем счастье.

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

Introduction

Какие сведения должны быть изложены в разделе Introduction согласно IEEE Std 1063-2001? А вот какие

The introduction shall describe the intended audience, scope, and purpose for the document and include a brief overview of the software purpose, functions, and operating environment.

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

Information for use of the documentation

The documentation shall include information on how it is to be used (for example, help on help), and an explanation of the notation (a description of formats and conventions-see 5.8). At least one document in a document set shall identify all documents in the set by title and intended use, including recommendations on which members of the audience should consult which sections of the documentation. In document sets comprising many volumes or products, this information may be provided in a separate «road map» or guide to the document set. Documentation may include identification and discussion of notable changes from the previous version of the document set and the software.

Весьма полезный раздел (в контексте разработки руководства пользователя). Руководство по руководству.

Concept of operations

Documentation shall explain the conceptual background for use of the software, using such methods as a visual or verbal overview of the process or workflow; or the theory, rationale, algorithms, or general concept of operation. Explanations of the concept of operation should be adapted to the expected familiarity of the users with any specialized terminology for user tasks and software functions. Documentation shall relate each documented function to the overall process or tasks. Conceptual information may be presented in one section or immediately preceding each applicable procedure.

Концептуальная информация безусловно важна.

Procedures

Task-oriented instructional mode documentation shall include instructions for routine activities that are applied to several functions:

— Software installation and de-installation, if performed by the user

— Orientation to use of the features of the graphical user interface (see 5.6)

— Access, or log-on and sign-off the software

— Navigation through the software to access and to exit from functions

— Data operations (enter, save, read, print, update, and delete)

— Methods of canceling, interrupting, and restarting operations

These common procedures should be presented once to avoid redundancy when they are used in more complex functions.

И пошла конктерика. Молодцы, буржуи!

Information on software commands

Documentation shall explain the formats and procedures for user-entered software commands, including required parameters, optional parameters, default options, order of commands, and syntax. Documentation may be provided on the development and maintenance of macros and scripts. Reference mode documentation shall contain a reference listing of all reserved words or commands. Examples should illustrate the use of commands. Documentation shall explain how to interrupt and undo operation during execution of a command and how to restart it, if possible. Documentation shall describe how to recognize that the command has successfully executed or abnormally terminated.

Error messages and problem resolution

Documentation should address all known problems in using the software in sufficient detail such that the users can either recover from the problems themselves or clearly report the problem to technical support personnel. Reference mode documentation shall include each error message with an identification of the problem, probable cause, and corrective actions that the user should take. A quick reference card may address error messages by referring the user to more detailed reference documentation. The documentation on resolving problems shall also include contact information for reporting problems with software or its documentation and suggesting improvements.

Выводы по IEEE Std 1063-2001

Но счастье оказалось неполным… Структура разделов первого уровня руководства показана в таблице явно. А дальше — «милый мой, хороший, догадайся сам» («догадайся, мол, сама»). IEEE Std 1063-2001, конечно, «provides requirements for the structure», но не предлагает явной структуры руководства пользователя до рекомендованного ГОСТ 2.105 четвертого уровня вложенности.

Рекомендации типа «Documentation shall explain…», «Examples should illustrate…», «Documentation shall describe…» и им подобные, безусловно, проверены временем. В руководстве пользователя надо и объяснять, и иллюстрировать, и описывать — без всякого сомнения. Но все это и козе понятно, и в ГОСТах 19-й системы прописано.

Итак, вряд ли целесообразно разрабатывать руководства пользователя, основываясь исключительно на рекомендациях IEEE Std 1063-2001. Причины, как минимум, две:

  • отсутствие в IEEE Std 1063-2001 четко регламентированной структуры руководства пользователя;
  • «поверхностность» IEEE Std 1063-2001, отсутствие «широты охвата» и «глубины проработки».

Отсутствие четко регламентированной структуры руководства пользователя даст возможность заказчику ТРЕТИРОВАТЬ разработчика, см. хотя бы Страшная правда о техническом задании. Бедняга-разработчик будет вынужден, по указке заказчика, изо дня в день менять местами разделы руководства пользователя (гарантированный минимум, полученный опытным путем).

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

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

В крайнем разделе настоящей статьи приведена таблица соответствия ГОСТ 19 и IEEE Std 1063-2001, которую автор статьи начал было составлять, затем бросил и проверять не стал. А выводы пусть каждый сделает сам для себя. И, возможно, в чем-то поправит автора.

Пользовательские документы по ГОСТ 19 (ЕСПД)

В отличие от суперсовременного буржуйского IEEE Std 1063-2001, древние, многими ругаемые отечественные стандарты 19-й системы (Единая система программной документации — ЕСПД) содержат не пространные рассуждения о том, что и как должно разъяснять, иллюстрировать и описывать руководство пользователя, а конкретные требования к структуре и содержанию пользовательских (эксплуатационных) документов.

Перечень ГОСТов 19 «описательного» характера, на основе которых можно, не мудрствуя лукаво, сформировать четкую структуру разделов каждого из «описательных» документов, приведен в разделе Источники. Основной прием — детализация — подробно описан в статье «Как писать техническое задание?!». Далее — сформированные «детализацией» структуры разделов документов согласно ГОСТам из перечня.

Структура разделов описания программы по ГОСТ 19.402-78

- Описание программы по ГОСТ 19.402-78, структура разделов

Структура разделов описания применения по ГОСТ 19.502-78

- Описание применения по ГОСТ 19.502-78, структура разделов

Структура разделов руководства системного программиста по ГОСТ 19.503-79

- Руководство системного программиста по ГОСТ 19.503-79, структура разделов

Структура разделов руководства программиста по ГОСТ 19.504-79

- Руководство программиста по ГОСТ 19.504-79, структура разделов

Структура разделов руководства оператора по ГОСТ 19.505-79

- Руководство оператора по ГОСТ 19.505-79, структура разделов

Выводы по ГОСТам 19.ххх

Ни ГОСТ 19.505-79, ни ГОСТ 19.504-79, ни ГОСТ 19.503-79, взятые по одельности, не могут похвастаться достаточной полнотой структуры.

Зато структуры «описательных» документов ГОСТ 19 обладают как полностью идентичными (по тексту названий), так и схожими по тексту названий разделами и подразделами. К идентичным разделам относятся, к примеру, разделы «Аннотация», имеющие место во всех документах согласно ГОСТ 19.105-78. К схожим (фактически — идентичным) можно отнести подразделы «Назначение программы» и «Сведения о назначении программы».

А почему не попытаться объединить все «описательные» документы? Объединить идентичные и схожие разделы документов, выделить специфические разделы? Быть может, удастся избавиться от неполноты ГОСТ 19.505-79, ГОСТ 19.504-79 и ГОСТ 19.503-79 и получить обобщенную структуру «описательного» документа и обозвать сам документ руководством пользователя программы?

ГОСТы 19.ххх допускают «вводить дополнительные разделы или объединять отдельные разделы», а также «вводить новые». Согласно ГОСТ 19.101-77 «Допускается объединять отдельные виды эксплуатационных документов (за исключением ведомости эксплуатационных документов и формуляра). Необходимость объединения этих документов указывается в техническом задании. Объединенному документу присваивают наименование и обозначение одного из объединяемых документов. В объединенных документах должны быть приведены сведения, которые необходимо включать в каждый объединяемый документ [из 2.6 ГОСТ 19.101-77]»

Сказано — сделано. Только мы нарушим ГОСТы и создадим объединенный документ под названием «Руководство пользователя».

Обобщенная структура руководства пользователя по ГОСТам 19-й системы

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

ГОСТ 19.ххх — обобщенная структура разделов руководства

ГОСТ 19.402-78

ГОСТ 19.502-78

ГОСТ 19.503-79

ГОСТ 19.504-79

ГОСТ 19.505-79

Аннотация

*

*

*

*

*

•Назначение документа

*

*

*

*

*

•Краткое изложение основной части документа

*

*

*

*

*

Общие сведения о программе

*

*

•Обозначение и наименование программы

*

*

•Языки программирования, на которых написана программа

*

•Сведения о назначении программы

*

*

*

*

*

••Информация, достаточная для понимания функций программы и ее эксплуатации

*

•••Возможности программы

*

•••Классы решаемых задач

*

••••Описание задач

*

••••Методы решения задач

*

•••Функции, выполняемые программой

*

*

••Описание основных характеристик и особенностей программы

*

*

•••Временные характеристики

*

•••Режим работы

*

•••Средства контроля правильности выполнения и самовосстанавливаемости программы

*

••Ограничения области применения программы

*

•••Сведения о функциональных ограничениях на применение

*

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

*

*

*

•Условия, необходимые для выполнения программы

*

*

*

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

*

•••Требования к техническим средствам

*

*

••••Типы ЭВМ, устройства, используемые при работе программы

*

••••Объем оперативной памяти

*

••••Минимальный и (или) максимальный состав аппаратурных и программных средств

*

••••Требования к составу и параметрам периферийных устройств

*

•••Программное обеспечение, необходимое для функционирование программы

*

••••Требования к программному обеспечению

*

••••Требования к другим программам

*

••••Требования и условия организационного, технического и технологического характера

*

Описание логической структуры

*

•Алгоритм программы

*

•Используемые методы

*

•Сведения о структуре программы

*

*

•Сведения о составных частях программы

*

•Описание функций составных частей

*

•Сведения о связях между составными частями программы

*

*

•Сведения о связях с другими программами

*

*

Сведения о входных и выходных данных

*

*

•Общие характеристики входной и выходной информации

*

•Сведения о входных данных

*

*

••Характер, организация и предварительная подготовка входных данных

*

*

•Сведения о выходных данных

*

*

••Характер и организация выходных данных

*

*

••Формат, описание и способ кодирования выходных данных

*

•Описание кодирования информации

*

Настройка программы

*

•Описание действий по настройке программы

*

••Настройка на состав технических средств

*

••Выбор функций

*

••Поясняющие примеры

*

Проверка программы

*

•Описание способов проверки работоспособности программы

*

••Контрольные примеры

*

••Методы прогона

*

••Результаты

*

Выполнение программы

*

•Загрузка программы
•Способ вызова программы с соответствующего носителя данных
•Описание процедур вызова программы

*

*

*

•Запуск программы

*

•Входные точки в программу*

*

•Способы передачи управления и параметров данных

*

•Выполнение программы

*

••Описание выполняемой функции 1

*

••Формат и возможные варианты команд для выполнения функции 1

*

••Ответы программы на команды выполнения функции 1

*

•Завершение выполнения программы

*

Дополнительные возможности

*

•Описание дополнительных функциональных возможностей программы

*

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

*

Сообщения программы

*

*

*

•Тексты сообщений, выдаваемых в ходе (настройки, проверки, выполнения) программы

*

*

*

••Описание содержания

*

*

*

••Описание действий, которые необходимо предпринять по этим сообщениям

*

*

*

Выводы по обобщенной структуре руководства пользователя по ГОСТ 19.ххх

Обобщенная структура руководства пользователя по ГОСТ 19.ххх явно не страдает, как IEEE Std 1063-2001, отсутствием широты охвата. Избыток, как известно, рождает качество. Перечислено все, чем может характеризоваться программа. Отдельные подразделы могут показаться даже излишними, к примеру, подраздел «Языки программирования, на которых написана программа».

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

В то же время, при всей широте охвата, в явном виде отсутствуют:

  • Software installation and de-installation, if performed by the user;
  • Orientation to use of the features of the graphical user interface;
  • Access, or log-on and sign-off the software;
  • Navigation through the software to access and to exit from functions и многое другое.

Автору удалось разбросать кое-что в разделе Таблица соответствия ГОСТ 19.ххх и IEEE Std 1063-2001, но времени «наморщить ум» всегда не хватает, руководство пользователя, как всегда, должно было быть готово еще на прошлой неделе.

Показать связи разделов обобщенного руководства пользователя с разделами ГОСТ 19.201-78 ЕСПД. Техническое задание, требования к содержанию и оформлению автор поленился, поскольку указанные связи очевидны.

Выводы по источникам

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

Автор манифеста более склонен к рекомендациям по подбору слов* и построению предложений, IEEE Std 1063-2001, в лучшем случае, приводит требования к структуре руководства пользователя, но не дает особой конкретики, в ГОСТ 19.ххх не прописаны процедуры заполнения содержимым разделов руководства. Может, организовать эдакую смесь французского с нижегородским? Использовать все четыре источника в качестве четырех составных частей?

* Нынче в моде буржуйское понятие — т.н. контролируемый язык. Среди представителей «просвещенной русской интеллигенции» наибольшей популярностью пользуется отечественный аналог в глагольной форме повелительного наклонения — фильтруй базар! - Ржунимагу! (смайл)

Смесь французского с нижегородским

Почему бы нет? Взять лучшее из ГОСТов 19-й системы, — обобщенную структуру руководства пользователя, добавить к ней немногочисленные толковые рекомендации из IEEE Std 1063-2001 и разбавить неисчерпаемой стилистической культурой и ресурсами языка из манифеста Кагарлицкого? Придать смеси стройный строгий вид, сформировать очередной учебно-тренировочный документ с подробными комментариями? А что делать, если ни один из перечисленных выше источников и составных частей в отдельности не способны дать ответы на все поставленные вопросы?

Таблица соответствия ГОСТ 19 и IEEE Std 1063-2001

ГОСТ 19.ххх

IEEE Std 1063-2001

Аннотация

Introduction

The introduction shall describe the intended audience, scope, and purpose for the document and include a brief overview of the software purpose, functions, and operating environment

•Назначение документа

purpose for the document (Introduction)

•Краткое изложение основной части документа

scope (Introduction)

Общие сведения о программе

•Обозначение и наименование программы

аналогичный подраздел отсутствует

•Языки программирования, на которых написана программа

то же

•Сведения о назначении программы

brief overview of the software purpose (Introduction)

••Информация, достаточная для понимания функций программы и ее эксплуатации

аналогичный подраздел отсутствует

•••Возможности программы

то же

•••Классы решаемых задач

»

••••Описание задач

»

••••Методы решения задач

Documentation shall relate each documented function to the overall process or tasks

•••Функции, выполняемые программой

brief overview of the software … functions (Introduction)

••Описание основных характеристик и особенностей программы

аналогичный подраздел отсутствует

•••Временные характеристики

то же

•••Режим работы

»

•••Средства контроля правильности выполнения и самовосстанавливаемости программы

»

••Ограничения области применения программы

»

•••Сведения о функциональных ограничениях на применение

»

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

If different versions of the software are available for different operating environments, the title page should specify the applicable operating environment(s), including version(s) of hardware, communications, and operating system(s) (4.3. Content of identification data)

•Условия, необходимые для выполнения программы

аналогичный подраздел отсутствует

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

Documentation for the hardware and software environment (4.11 Information on related information sources)

•••Требования к техническим средствам

аналогичный подраздел отсутствует

••••Типы ЭВМ, устройств, используемые при работе программы

то же

••••Объем оперативной памяти

»

••••Минимальный и (или) максимальный состав аппаратурных и программных средств

»

••••Требования к составу и параметрам периферийных устройств

»

•••Программное обеспечение, необходимое для функционирование программы

brief overview of the … operating environment (Introduction)

••••Требования к программному обеспечению

аналогичный подраздел отсутствует

••••Требования к другим программам

то же

•••Требования и условия организационного, технического и технологического характера

»

Описание логической структуры

•Алгоритм программы

algorithms (4.5 Concept of operations)

•Используемые методы

using such methods as a visual or verbal overview of the process or workflow (4.5 Concept of operations)

•Сведения о структуре программы

аналогичный подраздел отсутствует

•Сведения о составных частях программы

то же

•Описание функций составных частей

»

•Сведения о связях между составными частями программы

»

•Сведения о связях с другими программами

»

Сведения о входных и выходных данных

•Общие характеристики входной и выходной информации

аналогичный подраздел отсутствует

•Сведения о входных данных

то же

••Характер, организация и предварительная подготовка входных данных

»

•Сведения о выходных данных

»

••Характер и организация выходных данных

»

••Формат, описание и способ кодирования выходных данных

»

•Описание кодирования информации

»

Настройка программы

Identification of technical or administrative activities that must be done before starting the task (4.7 Information for procedures and tutorials)

•Описание действий по настройке программы

аналогичный подраздел отсутствует

••Настройка на состав технических средств

то же

••Выбор функций

»

••Поясняющие примеры

»

Проверка программы

•Описание способов проверки работоспособности программы

аналогичный подраздел отсутствует

••Контрольные примеры

Examples should illustrate the use of commands (4.8 Information on software commands)

••Методы прогона

аналогичный подраздел отсутствует

••Результаты

то же

Выполнение программы

•Загрузка программы
•Способ вызова программы с соответствующего носителя данных
•Описание процедур вызова программы

Software installation and de-installation, if performed by the user (4.6 Information for general use of the software)

•Запуск программы

аналогичный подраздел отсутствует

•Входные точки в программу*

Access, or log-on and sign-off the software (4.6 Information for general use of the software)

•Способы передачи управления и параметров данных

аналогичный подраздел отсутствует

•Выполнение программы

то же

••Описание выполняемой функции 1

A brief overview of the purpose of the procedure and definitions or explanations of necessary concepts not elsewhere included (4.7 Information for procedures and tutorials)

••Формат и возможные варианты команд для выполнения функции 1

Navigation through the software to access … functions (4.6 Information for general use of the software)
Instructional steps shall be presented in the order of performance (4.7 Information for procedures and tutorials)
Documentation shall explain how to interrupt and undo operation during execution of a command and how to restart it, if possible.
Documentation shall explain the formats and procedures for user-entered software commands, including required parameters, optional parameters, default options, order of commands, and syntax (4.8 Information on software commands)

••Ответы программы на команды выполнения функции 1

Documentation shall describe how to recognize that the command has successfully executed or abnormally terminated (4.8 Information on software commands)

•Завершение выполнения программы

Navigation through the software … to exit from functions
Methods of canceling, interrupting, and restarting operations (4.6 Information for general use of the software)

Дополнительные возможности

•Описание дополнительных функциональных возможностей программы

аналогичный подраздел отсутствует

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

то же

Сообщения программы

Relevant warnings, cautions, and notes that apply to the entire procedure (4.7 Information for procedures and tutorials)

•Тексты сообщений, выдаваемых в ходе (настройки, проверки, выполнения) программы

аналогичный подраздел отсутствует

••Описание содержания

то же

••Описание действий, которые необходимо предпринять по этим сообщениям

»

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

Приятного чтения.

Если перед вами стоит вопрос – нужно ли вашему продукту пользовательское руководство, то отвечу сразу – да, нужно. Почему? На это есть две причины:

1. Качественная документация повышает лояльность клиента и ценность продукта в целом.

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

2. Руководство пользователя экономит время и силы техподдержки.

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

А теперь к советам!

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

Прежде чем начинать писать руководство пользователя нужно ответить на несколько вопросов. — Для кого вы пишите? Кто будет пользоваться файлом справки? (ваша целевая аудитория)

— Где скорее всего пользователи будут прибегать к документации? (дома, на работе, в машине)

— Насколько объективно сложен для понимания продукт и как часто пользователь будет обращаться к документации?

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

(Для изложения лучше всего выбрать нейтрально-формальный стиль)

Структура руководства пользователя

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

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

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

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

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

В любом руководстве желательны разделы «Частые вопросы» и «Устранение типовых проблем». Расскажите о проблемах, с которыми часто сталкиваются клиенты и о путях их решения.

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

И последний «обязательный» раздел, которой точно должен быть в любой документации – «контактная информация». Данный раздел даст пользователю возможность связаться с разработчиком. Если руководство вдруг не закрывает потребность читателя, то он может обратиться в поддержку. Кроме того, клиент может дать совет, поделиться опытом или предложить выгодное вам сотрудничество.

Профессиональный совет: если вы хотите максимально облегчить ношу клиента при чтении документации создайте контекстно-зависимую справку. Что это такое?

Представьте, что вы работаете в программе для создания пользовательской документации. Открываете меню основных настроек и видите раздел «аннотирование экрана» Заходите в него, там показаны разные стили аннотации, тени, фон и так далее. Но что такое аннотация? Допустим вы не знаете — нажимаете кнопку F1 и перед вами открывается руководство именно на той странице, где рассказано об «аннотировании экрана»

Как ее сделать? Смотрите ниже.

Контент

И так, мы создали «каркас» нашей документации, но чтобы руководство стало полезным нужно наполнить её компетентной информацией.

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

1. Понятность.

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

2. Наглядность.

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

3. Видео.

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

Но как добавить в документацию видео? Смотрите ниже.

Больше советов!

Когда документация будет готова, чтобы она стала «полноценной» её нужно опубликовать. Иначе какой от неё толк, если клиент не может её прочитать. У «юзера» всегда должен быть доступ к документации, и не важно где он. Такую потребность легко закрывают три формата: HTML, PDF и CHM.

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

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

И напоследок, переведите пользовательскую документацию в формат PDF, чтобы клиенты могли скачать и распечатать руководство.

Но помните, что после публикации документации, придется иногда её обновлять.

Инструменты

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

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

Dr.Explain – программа для создания руководств пользователя для ПО, web-сервисов и баз знаний.

Благодаря «доктору» вы сможете опубликовать и обновлять документацию в востребованных форматах (CHM; HTML; PDF; DOC), не выходя из программы.

В программе есть шаблоны документации, ведь по образцу работать проще.

Импортируйте в программу заранее написанные фрагменты документации.

Вы сможете создать контекстно-зависимую документацию, настроить визуальный стиль руководства, добавить в него видео и многое другое!

Какой можно сделать вывод

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

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

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

Спасибо за внимание!

Со всеми возможностями Dr.Explain можно ознакомиться здесь:

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

Журавлев Денис

Что такое руководство пользователя и для чего его создавать

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

Каждый программный продукт нуждается в руководстве пользователя

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

Общие советы по созданию пользовательской документации

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

После этого важно подумать о том:

  • Где пользователь будет к нему обращаться: дома, на работе, в машине?
  • Как часто он будет его просматривать?
  • Насколько объективно сложен для понимания продукт?

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

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

Структура руководства пользователя

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

В первом разделе желательно рассказать общую информацию о программе:

  • Для чего создан продукт.
  • Какие задачи он решает.
  • Какие основные выгоды от использования для клиента.

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

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

Ни одно руководство не обойдется без таких разделов как: «Частые вопросы» и «Устранение типовых проблем» В них разбираются вопросы и проблемы, с которыми часто сталкиваются пользователи. Для заполнения данного раздела вам скорее всего понадобятся уже готовые отзывы клиентов. Если у вас абсолютно новый продукт, вы можете предугадать проблемы ваших клиентов либо на первое время не включать данный пункт в ваше руководство.  

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

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

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

Одним из популярных инструментов для создания качественного руководства является программа Dr. Explain (https://www.drexplain.ru), в которой уже есть готовые шаблоны руководств пользователя с готовой структурой разделов и в которой удобно обновлять документацию, как бы часто эти обновления не происходили.

Видео-обзор основных возможностей программы Dr.Explain

Удобной особенностью инструмента является возможность экспортировать один и тот же документ в форматы: HTML, CHM, PDF. Простой и понятный интерфейс сам подскажет, как быстро просмотреть документ в различных форматах и настроить его под вывод в эти форматы.

Любой проект в Dr.Explain вы можете создать с нуля или импортировать уже существующую документацию, например из формата MS Word, HTML или CHM-файла, и буквально за несколько минут создать из нее онлайн-помощь, файл справки в формате CHM, или документ в формате PDF.  

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

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

Структура разделов руководства пользователя

У программы свой собственный редактор, оптимизированный под работу со сложной документацией. Основные функции редактора вынесены в компактный тулбар. Это — управление стилем текста, форматирование абзацев, вставка ссылок, изображений, видео, таблиц и списков, а также вставка специальных объектов. Dr. Explain экономит время и силы своих пользователей. Разработчики документации часто сталкиваются с проблемой многократного использования одного и того же фрагмента текста и прибегают к очевидным решениям — «Ctrl+c», Ctrl+v». Dr.Explain предлагает решение по повторному использованию контента — текстовые переменные. Это решение экономит время, когда нужно много раз использовать один и тот же текст, особенно, который может периодически изменяться — например, версия документируемой системы.

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

Многие российские компании сталкиваются с тем, что руководство пользователя нужно писать согласно ГОСТ 19 и ГОСТ 34. Dr.Explain активирует поддержку требований ГОСТ фактически одним кликом. Программа автоматически сформирует структуру обязательных разделов и установит требуемые параметры страницы, стили абзацев, списков и заголовков.

Создание руководства пользователя по ГОСТ 34 и ГОСТ 19

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

Аннотирование скриншотов пользовательского интерфейса в руководстве пользователя

Кроме того, Dr.Explain позволяет нескольким авторам одновременно работать над проектом с использованием сервиса www.tiwri.com, учетную запись на котором можно создать бесплатно за пару минут. При внесении правок одним автором сервис блокирует редактируемые разделы проекта для изменения другими авторами.  По окончании редактирования изменения отправляются на сервер, и блокировка снимается. Так несколько человек могут одновременно работать над различными разделами проекта без риска помешать друг другу.  

Многопользовательская работа над проектом

Попробовать режим многопользовательской работы в Dr.Explain можно даже с бесплатной лицензией. Вы можете создать общий проект и полноценно работать с ним в многопользовательском режиме до семи дней.

Почему компании выбирают Dr.Explain для создания руководств пользователя

Павел Свиридов

Павел Свиридов, профессиональный военный, полковник, создатель астрологической системы «Вега Матрица»

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

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

Руководство пользователя к программе Вега Матрица

Прочитать полный кейс компании «Вега Матрица вы можете перейдя по ссылке


Наталья Обухова

Наталья Обухова, бизнес-аналитик компании CRM Expert

«По классике жанра был пилотный проект на двух фаворитах (Dr.Explain и HelpNDoc) и муки выбора.

Через неделю справка была полностью готова. Конечно, если мы набивали ее «с нуля», за это время мы бы не успели. Мы просто конвертировали все бумажные инструкции во внутренний формат программ, изменили каталогизацию и организовали систему гиперссылок.

Сначала фаворитом выбора была другая система, но решающим фактором в пользу Dr.Explain стал возглас человека, выполняющего основную часть работы по переносу текста: «Вжух! И вся структура документа перенеслась в файл справки». Функция импорта в Dr.Explain отработала на ура и сэкономила кучу времени.

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

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

Прочитать полный кейс компании CRM Expert


Николай Вальковец

Николай Вальковец, разработчик компании 2V

«Мы значительно сократили время работы техподдержки с новыми клиентами на этапе подключения. Раньше требовалось проводить онлайн презентации и видео конференции для новых клиентов, объясняя особенности программы. Сейчас же, один раз постаравшись максимально подробно всё описать, мы избавили себя и нашу техподдержку от этой работы. Нам импонирует простота программы и скорость работы. Можно быстро редактировать, добавить новые пункты в документацию, сохранить в формате HTML и выложить на сайт».

Руководство к программе 2V Стоматология

Прочитать кейс компании V2  


Подытожим

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

Скачать Dr.Explain с неограниченной по срокам возможностью бесплатной работы можно по адресу: https://www.drexplain.ru/download/

Успешных вам разработок!

Смотрите также

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

Сравнительный анализ структур руководств пользователя программы по ЕСПД и IEEE Std 1063-2001 с учетом рекомендаций «манифеста Кагарлицкого». Показано, что обобщенная структура руководства пользователя, собранная согласно требованиям «устаревших» ГОСТов 19-й системы, существенно превосходит структуру руководства, рекомендуемую суперсовременным IEEE Std 1063-2001. Редакция от 23.01.2022.

Создан 11.02.2005 11:14:22

Когда умирает надежда, приходит отчаяние.

Мудрая латинская поговорка

Как писать руководство пользователя программы? Создать древовидную иерархическую структуру разделов руководства пользователя и заполнить ее разделы содержимым. И вся любовь.

- Как писать руководство пользователя 1

Где взять структуру разделов руководства пользователя? С руководствами на изделия (руководство по эксплуатации по ГОСТ 2.601-95) и на автоматизированные системы (руководство пользователя по РД 50-34.698-90) все более или менее ясно. А вот сам документ «Руководство пользователя» программы в ГОСТах 19-й системы отсутствует как класс.

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

Цели и задачи статьи

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

Задачи:

  • проанализировать существующие стандарты и рекомендации по разработке эксплуатационной программной документации, выявить достоинства и недостатки каждого документа по отдельности;
  • вывести некую обобщенную структуру руководства пользователя по ГОСТам 19-й системы из имеющегося набора эксплуатационных программных документов;
  • сравнить ее со структурой, рекомендованной IEEE Std 1063-2001;
  • а все прочие задачи перекочевали во 2-ю часть статьи…

Примечание от 10.07.2014 г. — В феврале 2005 года был проведен, пожалуй, даже не сравнительный анализ, а скорее сравнительные испытания, показавшие неоспоримое превосходство ГОСТов 19-й системы стандартов над буржуйскими и практически полную несостоятельность последних.

Вопросы, на которые должно дать ответы руководство пользователя

Подарите ребенку незнакомую ему электронную игрушку. Перечень вопросов будет примерно таким (если сразу же не разломает):

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

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

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

Располагаем документами:

  • «метагайдом» Кагарлицкого;
  • суперсовременным IEEE Std 1063-2001, «IEEE Standard for Software User Documentation»;
  • классическими отечественными ГОСТами 19-й системы, включающим в себя перечисленные ниже документы «описательного» характера:
    • ГОСТ 19.402-78 ЕСПД. Описание программы;
    • ГОСТ 19.502-78 ЕСПД. Описание применения. Требования к содержанию и оформлению;
    • ГОСТ 19.503-79 ЕСПД. Руководство системного программиста. Требования к содержанию и оформлению;
    • ГОСТ 19.504-79 ЕСПД. Руководство программиста. Требования к содержанию и оформлению;
    • ГОСТ 19.505-79 ЕСПД. Руководство оператора. Требования к содержанию и оформлению.

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

Возможно, существуют и иные документы, но автору, основательно порывшемуся в рунетовской свалке, ничего более подходящего заполучить пока не удалось. Яндекс обнаружил в своих недрах еще одну страничку с названием «Как сделать хорошее руководство пользователя», автор которой именует себя на американЬский манер (типа John P. Morgan). Двухстраничное «наставление» с радостными возгласами было немедленно отправлено в корзину.

Манифест Кагарлицкого

Метагайд Кагарлицкого показался многообещающим. Только автор настоящей статьи не уразумел, что есть «метагайд», поэтому позволил себе наглось обозвать метагайд «манифестом». И не погрешил против истины (но это открылось позже — ниже).

(цитаты из манифеста Кагарлицкого)

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

Начало обнадеживающее.

В состав технической документации входят две стержневые части, которые мы будем называть соответственно руководством пользователя и справочником пользователя, или коротко: руководством и справочником (по аналогии с английскими словосочетаниями User’s Guide и User’s Reference). Они могут быть оформлены в виде отдельных документов (для крупных программных продуктов), а могут, напротив, существовать в интегрированном виде. Между ними даже может не быть четкой границы: единый текст способен совмещать в себе черты руководства и черты справочника.

Что-то не так. Автору статьи всегда «казалось», что термин техническая документация трактуется более широко, значительно шире, чем эксплуатационная (программная) документация.

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

По-понятиям так по-понятиям, вот только пацаны начинают нервничать. Руководство не есть понятие, а есть вид документа.

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

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

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

Жаль… А так все хорошо начиналось. Со «стандартов ГОСТ» — «стандартов ГОсударственных СТандартов» — простим г-на Кагарлицкого за тавтологию. Только вот решения первой задачи, поставленной автором настоящей статьи, в семидесятидвухстраничном манифесте (Arial’ом 12pt) нет. Уважаемый автор манифеста лишь поставил нам задачу. Что ж, нет пророка в своем отечестве. Может, есть пророк в отечестве буржуйском?

Руководство пользователя по IEEE Std 1063-2001 «IEEE Standard for Software User Documentation»

Забугорный «пророческий» документ IEEE Std 1063-2001 (IEEE в простонародье — «ай-яй-яй») в подразделе 1.2 (Puprose) содержит такую строчку:

This revision provides requirements for the structure, information content, and format of both printed and electronic documentation.

В авторском понимании назначение (намерение, цель, замысел, стремление) документа IEEE Std 1063-2001 состоит в «обеспечении требований к структуре, информационному наполнению, форматированию (оформлению) как электронной, так и печатной пользовательской документации по программным средствам». Что ж, подходяще. Какую же структуру руководства пользователя предлагает IEEE Std 1063-2001?

Структура руководства пользователя по IEEE Std 1063-2001

Опциональная типовая структура руководства пользователя содержится в таблице из раздела Structure of software user documentation документа IEEE Std 1063-2001:

Component

See subclause

Required?

Identification data (package label/title page)

4.3

Yes

Table of contents

5.7.1

Yes, in documents of more than eight pages after identification data

List of illustrations

5.7.2

Optional

Introduction

3.2

Yes

Information for use of the documentation

4.4

Yes

Concept of operations

4.5

Yes

Procedures

4.6, 4.7

Yes (instructional mode)

Information on software commands

4.8

Yes (reference mode)

Error messages and problem resolution

4.9

Yes

Glossary

4.10

Yes, if documentation contains unfamiliar terms

Related information sources

4.11

Optional

Navigational features

5.8

Yes

Index

5.7.3

Yes, if documents of more than 40 pages

Search capability

5.7.4

Yes, in electronic documents

For purposes of this standard, the following non-mandatory nomenclature is used for the structural parts of software user documentation. A printed document is structured into logical units called chapters, subdivided into topics, which may be subdivided into subtopics, and printed on physical units called pages.

Здорово. IEEE Std 1063-2001 предлагает «все взять и поделить» — разбить разделы руководства на главы, топики, субтопики и т.д. И наступит всем счастье.

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

Introduction

Какие сведения должны быть изложены в разделе Introduction согласно IEEE Std 1063-2001? А вот какие

The introduction shall describe the intended audience, scope, and purpose for the document and include a brief overview of the software purpose, functions, and operating environment.

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

Information for use of the documentation

The documentation shall include information on how it is to be used (for example, help on help), and an explanation of the notation (a description of formats and conventions-see 5.8). At least one document in a document set shall identify all documents in the set by title and intended use, including recommendations on which members of the audience should consult which sections of the documentation. In document sets comprising many volumes or products, this information may be provided in a separate «road map» or guide to the document set. Documentation may include identification and discussion of notable changes from the previous version of the document set and the software.

Весьма полезный раздел (в контексте разработки руководства пользователя). Руководство по руководству.

Concept of operations

Documentation shall explain the conceptual background for use of the software, using such methods as a visual or verbal overview of the process or workflow; or the theory, rationale, algorithms, or general concept of operation. Explanations of the concept of operation should be adapted to the expected familiarity of the users with any specialized terminology for user tasks and software functions. Documentation shall relate each documented function to the overall process or tasks. Conceptual information may be presented in one section or immediately preceding each applicable procedure.

Концептуальная информация безусловно важна.

Procedures

Task-oriented instructional mode documentation shall include instructions for routine activities that are applied to several functions:

— Software installation and de-installation, if performed by the user

— Orientation to use of the features of the graphical user interface (see 5.6)

— Access, or log-on and sign-off the software

— Navigation through the software to access and to exit from functions

— Data operations (enter, save, read, print, update, and delete)

— Methods of canceling, interrupting, and restarting operations

These common procedures should be presented once to avoid redundancy when they are used in more complex functions.

И пошла конктерика. Молодцы, буржуи!

Information on software commands

Documentation shall explain the formats and procedures for user-entered software commands, including required parameters, optional parameters, default options, order of commands, and syntax. Documentation may be provided on the development and maintenance of macros and scripts. Reference mode documentation shall contain a reference listing of all reserved words or commands. Examples should illustrate the use of commands. Documentation shall explain how to interrupt and undo operation during execution of a command and how to restart it, if possible. Documentation shall describe how to recognize that the command has successfully executed or abnormally terminated.

Error messages and problem resolution

Documentation should address all known problems in using the software in sufficient detail such that the users can either recover from the problems themselves or clearly report the problem to technical support personnel. Reference mode documentation shall include each error message with an identification of the problem, probable cause, and corrective actions that the user should take. A quick reference card may address error messages by referring the user to more detailed reference documentation. The documentation on resolving problems shall also include contact information for reporting problems with software or its documentation and suggesting improvements.

Выводы по IEEE Std 1063-2001

Но счастье оказалось неполным… Структура разделов первого уровня руководства показана в таблице явно. А дальше — «милый мой, хороший, догадайся сам» («догадайся, мол, сама»). IEEE Std 1063-2001, конечно, «provides requirements for the structure», но не предлагает явной структуры руководства пользователя до рекомендованного ГОСТ 2.105 четвертого уровня вложенности.

Рекомендации типа «Documentation shall explain…», «Examples should illustrate…», «Documentation shall describe…» и им подобные, безусловно, проверены временем. В руководстве пользователя надо и объяснять, и иллюстрировать, и описывать — без всякого сомнения. Но все это и козе понятно, и в ГОСТах 19-й системы прописано.

Итак, вряд ли целесообразно разрабатывать руководства пользователя, основываясь исключительно на рекомендациях IEEE Std 1063-2001. Причины, как минимум, две:

  • отсутствие в IEEE Std 1063-2001 четко регламентированной структуры руководства пользователя;
  • «поверхностность» IEEE Std 1063-2001, отсутствие «широты охвата» и «глубины проработки».

Отсутствие четко регламентированной структуры руководства пользователя даст возможность заказчику ТРЕТИРОВАТЬ разработчика, см. хотя бы Страшная правда о техническом задании. Бедняга-разработчик будет вынужден, по указке заказчика, изо дня в день менять местами разделы руководства пользователя (гарантированный минимум, полученный опытным путем).

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

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

В крайнем разделе настоящей статьи приведена таблица соответствия ГОСТ 19 и IEEE Std 1063-2001, которую автор статьи начал было составлять, затем бросил и проверять не стал. А выводы пусть каждый сделает сам для себя. И, возможно, в чем-то поправит автора.

Пользовательские документы по ГОСТ 19 (ЕСПД)

В отличие от суперсовременного буржуйского IEEE Std 1063-2001, древние, многими ругаемые отечественные стандарты 19-й системы (Единая система программной документации — ЕСПД) содержат не пространные рассуждения о том, что и как должно разъяснять, иллюстрировать и описывать руководство пользователя, а конкретные требования к структуре и содержанию пользовательских (эксплуатационных) документов.

Перечень ГОСТов 19 «описательного» характера, на основе которых можно, не мудрствуя лукаво, сформировать четкую структуру разделов каждого из «описательных» документов, приведен в разделе Источники. Основной прием — детализация — подробно описан в статье «Как писать техническое задание?!». Далее — сформированные «детализацией» структуры разделов документов согласно ГОСТам из перечня.

Структура разделов описания программы по ГОСТ 19.402-78

- Описание программы по ГОСТ 19.402-78, структура разделов

Структура разделов описания применения по ГОСТ 19.502-78

- Описание применения по ГОСТ 19.502-78, структура разделов

Структура разделов руководства системного программиста по ГОСТ 19.503-79

- Руководство системного программиста по ГОСТ 19.503-79, структура разделов

Структура разделов руководства программиста по ГОСТ 19.504-79

- Руководство программиста по ГОСТ 19.504-79, структура разделов

Структура разделов руководства оператора по ГОСТ 19.505-79

- Руководство оператора по ГОСТ 19.505-79, структура разделов

Выводы по ГОСТам 19.ххх

Ни ГОСТ 19.505-79, ни ГОСТ 19.504-79, ни ГОСТ 19.503-79, взятые по одельности, не могут похвастаться достаточной полнотой структуры.

Зато структуры «описательных» документов ГОСТ 19 обладают как полностью идентичными (по тексту названий), так и схожими по тексту названий разделами и подразделами. К идентичным разделам относятся, к примеру, разделы «Аннотация», имеющие место во всех документах согласно ГОСТ 19.105-78. К схожим (фактически — идентичным) можно отнести подразделы «Назначение программы» и «Сведения о назначении программы».

А почему не попытаться объединить все «описательные» документы? Объединить идентичные и схожие разделы документов, выделить специфические разделы? Быть может, удастся избавиться от неполноты ГОСТ 19.505-79, ГОСТ 19.504-79 и ГОСТ 19.503-79 и получить обобщенную структуру «описательного» документа и обозвать сам документ руководством пользователя программы?

ГОСТы 19.ххх допускают «вводить дополнительные разделы или объединять отдельные разделы», а также «вводить новые». Согласно ГОСТ 19.101-77 «Допускается объединять отдельные виды эксплуатационных документов (за исключением ведомости эксплуатационных документов и формуляра). Необходимость объединения этих документов указывается в техническом задании. Объединенному документу присваивают наименование и обозначение одного из объединяемых документов. В объединенных документах должны быть приведены сведения, которые необходимо включать в каждый объединяемый документ [из 2.6 ГОСТ 19.101-77]»

Сказано — сделано. Только мы нарушим ГОСТы и создадим объединенный документ под названием «Руководство пользователя».

Обобщенная структура руководства пользователя по ГОСТам 19-й системы

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

ГОСТ 19.ххх — обобщенная структура разделов руководства

ГОСТ 19.402-78

ГОСТ 19.502-78

ГОСТ 19.503-79

ГОСТ 19.504-79

ГОСТ 19.505-79

Аннотация

*

*

*

*

*

•Назначение документа

*

*

*

*

*

•Краткое изложение основной части документа

*

*

*

*

*

Общие сведения о программе

*

*

•Обозначение и наименование программы

*

*

•Языки программирования, на которых написана программа

*

•Сведения о назначении программы

*

*

*

*

*

••Информация, достаточная для понимания функций программы и ее эксплуатации

*

•••Возможности программы

*

•••Классы решаемых задач

*

••••Описание задач

*

••••Методы решения задач

*

•••Функции, выполняемые программой

*

*

••Описание основных характеристик и особенностей программы

*

*

•••Временные характеристики

*

•••Режим работы

*

•••Средства контроля правильности выполнения и самовосстанавливаемости программы

*

••Ограничения области применения программы

*

•••Сведения о функциональных ограничениях на применение

*

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

*

*

*

•Условия, необходимые для выполнения программы

*

*

*

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

*

•••Требования к техническим средствам

*

*

••••Типы ЭВМ, устройства, используемые при работе программы

*

••••Объем оперативной памяти

*

••••Минимальный и (или) максимальный состав аппаратурных и программных средств

*

••••Требования к составу и параметрам периферийных устройств

*

•••Программное обеспечение, необходимое для функционирование программы

*

••••Требования к программному обеспечению

*

••••Требования к другим программам

*

••••Требования и условия организационного, технического и технологического характера

*

Описание логической структуры

*

•Алгоритм программы

*

•Используемые методы

*

•Сведения о структуре программы

*

*

•Сведения о составных частях программы

*

•Описание функций составных частей

*

•Сведения о связях между составными частями программы

*

*

•Сведения о связях с другими программами

*

*

Сведения о входных и выходных данных

*

*

•Общие характеристики входной и выходной информации

*

•Сведения о входных данных

*

*

••Характер, организация и предварительная подготовка входных данных

*

*

•Сведения о выходных данных

*

*

••Характер и организация выходных данных

*

*

••Формат, описание и способ кодирования выходных данных

*

•Описание кодирования информации

*

Настройка программы

*

•Описание действий по настройке программы

*

••Настройка на состав технических средств

*

••Выбор функций

*

••Поясняющие примеры

*

Проверка программы

*

•Описание способов проверки работоспособности программы

*

••Контрольные примеры

*

••Методы прогона

*

••Результаты

*

Выполнение программы

*

•Загрузка программы
•Способ вызова программы с соответствующего носителя данных
•Описание процедур вызова программы

*

*

*

•Запуск программы

*

•Входные точки в программу*

*

•Способы передачи управления и параметров данных

*

•Выполнение программы

*

••Описание выполняемой функции 1

*

••Формат и возможные варианты команд для выполнения функции 1

*

••Ответы программы на команды выполнения функции 1

*

•Завершение выполнения программы

*

Дополнительные возможности

*

•Описание дополнительных функциональных возможностей программы

*

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

*

Сообщения программы

*

*

*

•Тексты сообщений, выдаваемых в ходе (настройки, проверки, выполнения) программы

*

*

*

••Описание содержания

*

*

*

••Описание действий, которые необходимо предпринять по этим сообщениям

*

*

*

Выводы по обобщенной структуре руководства пользователя по ГОСТ 19.ххх

Обобщенная структура руководства пользователя по ГОСТ 19.ххх явно не страдает, как IEEE Std 1063-2001, отсутствием широты охвата. Избыток, как известно, рождает качество. Перечислено все, чем может характеризоваться программа. Отдельные подразделы могут показаться даже излишними, к примеру, подраздел «Языки программирования, на которых написана программа».

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

В то же время, при всей широте охвата, в явном виде отсутствуют:

  • Software installation and de-installation, if performed by the user;
  • Orientation to use of the features of the graphical user interface;
  • Access, or log-on and sign-off the software;
  • Navigation through the software to access and to exit from functions и многое другое.

Автору удалось разбросать кое-что в разделе Таблица соответствия ГОСТ 19.ххх и IEEE Std 1063-2001, но времени «наморщить ум» всегда не хватает, руководство пользователя, как всегда, должно было быть готово еще на прошлой неделе.

Показать связи разделов обобщенного руководства пользователя с разделами ГОСТ 19.201-78 ЕСПД. Техническое задание, требования к содержанию и оформлению автор поленился, поскольку указанные связи очевидны.

Выводы по источникам

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

Автор манифеста более склонен к рекомендациям по подбору слов* и построению предложений, IEEE Std 1063-2001, в лучшем случае, приводит требования к структуре руководства пользователя, но не дает особой конкретики, в ГОСТ 19.ххх не прописаны процедуры заполнения содержимым разделов руководства. Может, организовать эдакую смесь французского с нижегородским? Использовать все четыре источника в качестве четырех составных частей?

* Нынче в моде буржуйское понятие — т.н. контролируемый язык. Среди представителей «просвещенной русской интеллигенции» наибольшей популярностью пользуется отечественный аналог в глагольной форме повелительного наклонения — фильтруй базар! - Ржунимагу! (смайл)

Смесь французского с нижегородским

Почему бы нет? Взять лучшее из ГОСТов 19-й системы, — обобщенную структуру руководства пользователя, добавить к ней немногочисленные толковые рекомендации из IEEE Std 1063-2001 и разбавить неисчерпаемой стилистической культурой и ресурсами языка из манифеста Кагарлицкого? Придать смеси стройный строгий вид, сформировать очередной учебно-тренировочный документ с подробными комментариями? А что делать, если ни один из перечисленных выше источников и составных частей в отдельности не способны дать ответы на все поставленные вопросы?

Таблица соответствия ГОСТ 19 и IEEE Std 1063-2001

ГОСТ 19.ххх

IEEE Std 1063-2001

Аннотация

Introduction

The introduction shall describe the intended audience, scope, and purpose for the document and include a brief overview of the software purpose, functions, and operating environment

•Назначение документа

purpose for the document (Introduction)

•Краткое изложение основной части документа

scope (Introduction)

Общие сведения о программе

•Обозначение и наименование программы

аналогичный подраздел отсутствует

•Языки программирования, на которых написана программа

то же

•Сведения о назначении программы

brief overview of the software purpose (Introduction)

••Информация, достаточная для понимания функций программы и ее эксплуатации

аналогичный подраздел отсутствует

•••Возможности программы

то же

•••Классы решаемых задач

»

••••Описание задач

»

••••Методы решения задач

Documentation shall relate each documented function to the overall process or tasks

•••Функции, выполняемые программой

brief overview of the software … functions (Introduction)

••Описание основных характеристик и особенностей программы

аналогичный подраздел отсутствует

•••Временные характеристики

то же

•••Режим работы

»

•••Средства контроля правильности выполнения и самовосстанавливаемости программы

»

••Ограничения области применения программы

»

•••Сведения о функциональных ограничениях на применение

»

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

If different versions of the software are available for different operating environments, the title page should specify the applicable operating environment(s), including version(s) of hardware, communications, and operating system(s) (4.3. Content of identification data)

•Условия, необходимые для выполнения программы

аналогичный подраздел отсутствует

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

Documentation for the hardware and software environment (4.11 Information on related information sources)

•••Требования к техническим средствам

аналогичный подраздел отсутствует

••••Типы ЭВМ, устройств, используемые при работе программы

то же

••••Объем оперативной памяти

»

••••Минимальный и (или) максимальный состав аппаратурных и программных средств

»

••••Требования к составу и параметрам периферийных устройств

»

•••Программное обеспечение, необходимое для функционирование программы

brief overview of the … operating environment (Introduction)

••••Требования к программному обеспечению

аналогичный подраздел отсутствует

••••Требования к другим программам

то же

•••Требования и условия организационного, технического и технологического характера

»

Описание логической структуры

•Алгоритм программы

algorithms (4.5 Concept of operations)

•Используемые методы

using such methods as a visual or verbal overview of the process or workflow (4.5 Concept of operations)

•Сведения о структуре программы

аналогичный подраздел отсутствует

•Сведения о составных частях программы

то же

•Описание функций составных частей

»

•Сведения о связях между составными частями программы

»

•Сведения о связях с другими программами

»

Сведения о входных и выходных данных

•Общие характеристики входной и выходной информации

аналогичный подраздел отсутствует

•Сведения о входных данных

то же

••Характер, организация и предварительная подготовка входных данных

»

•Сведения о выходных данных

»

••Характер и организация выходных данных

»

••Формат, описание и способ кодирования выходных данных

»

•Описание кодирования информации

»

Настройка программы

Identification of technical or administrative activities that must be done before starting the task (4.7 Information for procedures and tutorials)

•Описание действий по настройке программы

аналогичный подраздел отсутствует

••Настройка на состав технических средств

то же

••Выбор функций

»

••Поясняющие примеры

»

Проверка программы

•Описание способов проверки работоспособности программы

аналогичный подраздел отсутствует

••Контрольные примеры

Examples should illustrate the use of commands (4.8 Information on software commands)

••Методы прогона

аналогичный подраздел отсутствует

••Результаты

то же

Выполнение программы

•Загрузка программы
•Способ вызова программы с соответствующего носителя данных
•Описание процедур вызова программы

Software installation and de-installation, if performed by the user (4.6 Information for general use of the software)

•Запуск программы

аналогичный подраздел отсутствует

•Входные точки в программу*

Access, or log-on and sign-off the software (4.6 Information for general use of the software)

•Способы передачи управления и параметров данных

аналогичный подраздел отсутствует

•Выполнение программы

то же

••Описание выполняемой функции 1

A brief overview of the purpose of the procedure and definitions or explanations of necessary concepts not elsewhere included (4.7 Information for procedures and tutorials)

••Формат и возможные варианты команд для выполнения функции 1

Navigation through the software to access … functions (4.6 Information for general use of the software)
Instructional steps shall be presented in the order of performance (4.7 Information for procedures and tutorials)
Documentation shall explain how to interrupt and undo operation during execution of a command and how to restart it, if possible.
Documentation shall explain the formats and procedures for user-entered software commands, including required parameters, optional parameters, default options, order of commands, and syntax (4.8 Information on software commands)

••Ответы программы на команды выполнения функции 1

Documentation shall describe how to recognize that the command has successfully executed or abnormally terminated (4.8 Information on software commands)

•Завершение выполнения программы

Navigation through the software … to exit from functions
Methods of canceling, interrupting, and restarting operations (4.6 Information for general use of the software)

Дополнительные возможности

•Описание дополнительных функциональных возможностей программы

аналогичный подраздел отсутствует

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

то же

Сообщения программы

Relevant warnings, cautions, and notes that apply to the entire procedure (4.7 Information for procedures and tutorials)

•Тексты сообщений, выдаваемых в ходе (настройки, проверки, выполнения) программы

аналогичный подраздел отсутствует

••Описание содержания

то же

••Описание действий, которые необходимо предпринять по этим сообщениям

»

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

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

Навигация по странице:

  1. Понятие руководства по эксплуатации
  2. Статус руководства по эксплуатации в ряду прочих технических документов
  3. Области применения руководства по эксплуатации
  4. Дополнительные сферы применения РЭ

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

Содержание термина «руководство по эксплуатации» принято трактовать в соответствии с положениями ГОСТ 2.601-2006 «Единая система конструкторской документации (ЕСКД). Эксплуатационные документы». Указанный национальный стандарт определяет данное руководство как важный документ, в котором содержится исчерпывающая информация о характеристиках продукта, его конструкции и принципах работы, правилах безопасной эксплуатации и осуществления работ с применением данного изделий.

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

Статус руководства по эксплуатации в ряду прочих технических документов

ГОСТ 2.601-2006 относит руководство по эксплуатации к разряду эксплуатационных документов наряду с инструкцией по монтажу, паспортом изделия, ведомостью наличия прилагаемых запчастей и проч. Таким образом, на данное руководство распространяются соответствующие правила Единой системы конструкторской документации (ЕСКД). В частности, это относится к положениям ГОСТ 2.610-2006 «Единая система конструкторской документации. Правила выполнения эксплуатационных документов».

Эксплуатационные документы: руководство по эксплуатации

Требования ГОСТ 2.601-2006 устанавливают, что разработка руководства по эксплуатации не носит обязательного характера в отношении всех без исключения видов изделий: необходимость формирования этого документа определяется самим создателем продукции с учетом сложности его использования, необходимости применения дополнительной информации для корректной настройки и применения и других факторов. При этом в данном нормативно-правовом документе имеется оговорка о том, что в случае, если разработка конкретного продукта производится по заказу Министерства обороны РФ, именно это ведомство будет выступать в качестве органа, принимающего решение о необходимости разработки руководства по эксплуатации (РЭ).

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

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

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

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

Таким образом, разработка РЭ это ответственная процедура, к которой компании-производителю необходимо подойти с должной серьезностью.

96

Глава 6.

РУКОВОДСТВО И РУКОВОДИТЕЛЬ

1. Понятие руководства

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

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

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

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

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

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

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

97

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

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

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

Руководству не нужно фанатизма и не нужно железной руки. Нужно проявлять терпимость и спокойствие. Нужно уметь идти на компромисс. Нужно уметь разделять власть.

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

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

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

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

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

1)выдача директив относительно того, что нужно сделать;

2)налаживание сотрудничества между людьми;

98

3)обеспечение энергии, необходимой для достижения поставленных

целей.

Формирование целей и эффективное их достижение — основное назначение руководства.

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

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

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

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

1)требования (разумные, реальные);

2)контроль (обязательно личный);

3)поощрения, наказания (быть справедливым);

4)организация общественного мнения.

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

2. Руководитель и его социальная роль

2.1. Должностной статус руководителя

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

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

99

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

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

Это верно хотя бы потому, что здесь при возможной ошибке руководителя издержки системы оказываются более существенными. Справедливо считается: как порядок, так и беспорядок в фирме начинается с руководителя. Известен афоризм: «Фирма не может быть лучше, чем ее руководители».

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

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

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

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

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

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

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

Функциональные руководители — это начальники

100

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

2.2. Общие функции руководителя

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

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

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

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

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

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

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

101

подчиненных, занятых в процессах управления и производства.

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

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

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

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

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

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

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

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

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

102

2.3. Каким быть руководителю?

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

выращивать здоровый и продуктивный коллектив.

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

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

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

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

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

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

Минимально необходимыми предпосылками пригодности человека

для

профессиональной

деятельности

руководителя

является мотивированный интерес

к этой деятельности и

достаточные

умственные способности.

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

103

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

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

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

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

Это честолюбие и соперничество, стремление к достижению успеха и самоутверждения.

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

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

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

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

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

Текст ГОСТ Р ИСО/МЭК ТО 15271-2002 Информационная технология. Руководство по применению ГОСТ Р ИСО/МЭК 12207 (Процессы жизненного цикла программных средств)

ГОСТ Р ИСО/МЭК ТО 15271-2002

Группа П85

ГОСУДАРСТВЕННЫЙ СТАНДАРТ РОССИЙСКОЙ ФЕДЕРАЦИИ

Информационная технология

РУКОВОДСТВО ПО ПРИМЕНЕНИЮ ГОСТ Р ИСО/МЭК 12207

(Процессы жизненного цикла программных средств)

Information technology. Guide for the application of GOST R ISO/IEC 12207
(Software life cycle processes)

ОКС 35.080
ОКСТУ 5001

Дата введения 2003-07-01

Предисловие

1 РАЗРАБОТАН И ВНЕСЕН Всероссийским научно-исследовательским институтом стандартизации (ВНИИстандарт) Госстандарта России

2 ПРИНЯТ И ВВЕДЕН В ДЕЙСТВИЕ Постановлением Госстандарта России от 5 июня 2002 г. N 227-ст

3 Настоящий стандарт содержит полный аутентичный текст международного стандарта ИСО/МЭК ТО 15271-98 «Информационная технология. Руководство по применению ИСО/МЭК 12207 (Процессы жизненного цикла программных средств)»

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

5 ПЕРЕИЗДАНИЕ. Апрель 2004 г.

Введение

Введение

В настоящем стандарте приведены рекомендации по практическому применению ГОСТ Р ИСО/МЭК 12207 в условиях реализации конкретных проектов создания программных средств. Опытное применение ГОСТ Р ИСО/МЭК 12207 в ряде организаций подтвердило необходимость выработки таких рекомендаций для однозначного понимания требований и норм, установленных в ГОСТ Р ИСО/МЭК 12207. Вместе с тем, ряд концептуальных положений и понятий, определенных в указанном стандарте, требуют дополнительного пояснения и более расширенной трактовки. В настоящем стандарте учтены обобщенные предложения по практическому применению ГОСТ Р ИСО/МЭК 12207, представленные Техническим комитетом по стандартизации ТК 22 «Информационные технологии».

В частности, термин «работа (activity)» трактуется (в зависимости от излагаемого контекста) более расширенно как «деятельность» или «виды деятельности (activities)», термин «задача (task)» — как «задание» (в зависимости от контекста), а термин «программно-аппаратное средство (firmware)» — как «программы, реализованные техническими средствами» (во избежание путаницы с аналогичным понятием, применяемым по отношению к компонентам автоматизированных систем).

Примечание — Текст основной части стандарта дополнен приложениями A-D.

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

1.1 Назначение

Настоящий стандарт содержит рекомендации по применению ГОСТ Р ИСО/МЭК 12207, а также приложения А, В, С и D.

В стандарте основное внимание уделено особенностям, подлежащим учету при прикладном применении ГОСТ Р ИСО/МЭК 12207 в условиях реальных проектов создания программных средств. Приведенные в настоящем стандарте рекомендации не касаются обсуждения обоснованности требований ГОСТ Р ИСО/МЭК 12207.

В стандарте рассмотрены три основополагающие модели жизненного цикла и приведены примеры прикладного применения ГОСТ Р ИСО/МЭК 12207.

1.2 Пользователи стандарта

Настоящий стандарт может быть использован субъектами (лицами, организациями), желающими применить ГОСТ Р ИСО/МЭК 12207 при реализации договоров независимо от объема или сложности проекта, конкретной организацией для самоконтроля или работ по совершенствованию процессов жизненного цикла программных средств.

В настоящем стандарте указано, как можно использовать ГОСТ Р ИСО/МЭК 12207 применительно к различным типам программных средств и какие процессы соответствуют каждому случаю.

Настоящий стандарт дополняет ГОСТ Р ИСО/МЭК 12207, являющийся не только нормативным документом, но и эталоном для управления реальным проектом. (Например, последний случай имеет место, когда ГОСТ Р ИСО/МЭК 12207 является образцом при проведении части работ процесса усовершенствования.) Настоящий стандарт должен быть осмыслен целиком, но в отдельных случаях могут быть использованы его конкретные разделы.

1.3 Предпосылки

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

a) наличие ГОСТ Р ИСО/МЭК 12207;

b) хорошее знание ГОСТ Р ИСО/МЭК 12207;

c) хорошее знание политики соответствующей организации;

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

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

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

ГОСТ Р ИСО/МЭК 9126-93 Информационная технология. Оценка программной продукции. Характеристики качества и руководства по их применению

ГОСТ Р ИСО/МЭК 12207-99 Информационная технология. Процессы жизненного цикла программных средств

ИСО/МЭК ТО 15504-1-98* Информационная технология. Оценка программного процесса. Часть 1: Общие положения и вводное руководство

ИСО/МЭК ТО 15504-2-98* Информационная технология. Оценка программного процесса. Часть 2: Эталонная модель процессов и их возможностей

ИСО/МЭК ТО 15504-3-98* Информационная технология. Оценка программного процесса. Часть 3: Проведение оценки

ИСО/МЭК ТО 15504-4-98* Информационная технология. Оценка программного процесса. Часть 4: Руководство по проведению оценок

ИСО/МЭК ТО 15504-5-99* Информационная технология. Оценка программного процесса. Часть 5: Модель оценки и руководящие указания

ИСО/МЭК ТО 15504-6-98* Информационная технология. Оценка программного процесса. Часть 6: Руководство по компетентности экспертов

ИСО/МЭК ТО 15504-7-98* Информационная технология. Оценка программного процесса. Часть 7: Руководство по применению в процессе усовершенствования

ИСО/МЭК ТО 15504-8-98* Информационная технология. Оценка программного процесса. Часть 8: Руководство по применению при определении возможностей процесса поставщика

ИСО/МЭК ТО 15504-9-98* Информационная технология. Оценка программного процесса. Часть 9: Словарь
_______________
* Оригиналы международных стандартов ИСО/МЭК — во ВНИИКИ Госстандарта России.

3 Система обозначений

Диаграммы, описывающие процессы и работы ГОСТ Р ИСО/МЭК 12207, соответствующие стилю указанного стандарта, приведены на рисунке 1.

Рисунок 1 — Графическая система обозначений

Рисунок 1 — Графическая система обозначений

4 Основные концепции в развитие ГОСТ Р ИСО/МЭК 12207

4.1 Инженерная дисциплина

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

Основные положения ГОСТ Р ИСО/МЭК 12207 в таких вопросах, как разработка и сопровождение программного средства, должны быть реализованы методом, определяемым инженерной дисциплиной. Использование такого метода позволяет определить структуру, четко привязанную к функциональной среде системной инженерии, охватывающей программные и технические средства, персонал и бизнес.

4.2 Архитектура жизненного цикла программного средства

ГОСТ Р ИСО/МЭК 12207 устанавливает архитектуру верхнего уровня жизненного цикла программного средства от замысла до утилизации. Архитектура состоит из множества процессов и взаимосвязей между данными процессами. Процессы основаны на двух исходных принципах: модульности и ответственности.

4.2.1 Модульность

Процессы в ГОСТ Р ИСО/МЭК 12207 являются модульными в том смысле, что они:

a) строго связаны. Все части процесса строго взаимоувязаны;

b) свободно соединены. Число интерфейсов между процессами сведено к минимуму.

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

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

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

c) если процесс А вызван процессом В и только процессом В, тогда А принадлежит к В;

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

e) должна быть возможность верификации любой функции в модели жизненного цикла;

f) каждый процесс должен иметь внутреннюю структуру, установленную в соответствии с тем, что должно им быть выполнено.

4.2.2 Ответственность

В ГОСТ Р ИСО/МЭК 12207 термины «организация» и «сторона» являются близкими по смыслу. Организация, являющаяся группой лиц, собранных для реализации некоторой конкретной цели, может быть представлена как корпорация, агентство, предприятие, общество, союз или клуб. Размер организации может варьироваться от одного человека до множества лиц. Когда организация в целом (или ее часть) заключает договор, то она становится стороной. Организация имеет самостоятельные подразделения, а стороны могут быть из одной или разных организаций.

Каждый процесс в ГОСТ Р ИСО/МЭК 12207 рассмотрен с точки зрения ответственности (обязанностей) стороны. Организация может выполнять один или несколько процессов. Процесс может быть выполнен одной или несколькими организациями, при этом одна из организаций должна быть определена как ответственная сторона. Сторона, выполняющая процесс, несет ответственность за весь данный процесс, даже если выполнение отдельных задач поручено другим людям.

Принцип ответственности в архитектуре жизненного цикла облегчает прикладное применение ГОСТ Р ИСО/МЭК 12207 для конкретного проекта, в который может быть вовлечено множество лиц.

4.3 Характеристика процессов

Процессы сгруппированы в три общих класса:

— основные;

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

— организационные.

4.3.1 Основные процессы

Основными процессами являются:

— заказ;

— поставка;

— разработка;

— эксплуатация;

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

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

4.3.2 Вспомогательные процессы

Вспомогательными процессами являются:

— документирование;

— управление конфигурацией;

— обеспечение качества;

— верификация;

— аттестация (валидация);

— совместный анализ;

— аудит;

— решение проблемы.

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

4.3.3 Организационные процессы

Организационными процессами являются:

— управление;

— создание инфраструктуры;

— усовершенствование;

— обучение.

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

4.3.4 Детализация процессов

Каждый процесс затем должен быть определен в терминах составляющих его работ, каждая из которых должна быть определена в терминах составляющих ее задач. Работа в процессе состоит из набора связанных задач. В ГОСТ Р ИСО/МЭК 12207 установлено множество процессов, работ и задач, количество которых указано в таблице 1.

Таблица 1 — Анализ процессов

Класс

Процессы

Работы

Задачи

Основной

5

35

135

Вспомогательный

8

25

70

Организационный

4

14

27

Всего

17

74

232

Задача (задание) должна(о) быть выражена(о) в виде требования, самообъявления, рекомендации или допустимого действия. С этой целью в ГОСТ Р ИСО/МЭК 12207 тщательно отобраны некоторые вспомогательные глаголы для выделения различий между видами задач:

— глагол «должна (shall)» использован для выражения соглашения между двумя или более сторонами;

— глагол «будет (will)» выражает объявление цели или намерения одной из сторон;

— глагол «следует (should)» выражает рекомендацию из имеющихся возможных вариантов;

— глагол «может (may)» указывает образ действий, допустимый в рамках ГОСТ Р ИСО/МЭК 12207.

4.4 Процессы и проекты

ГОСТ Р ИСО/МЭК 12207 описывает набор процессов, используемых для больших и (или) сложных программных проектов. Однако ГОСТ Р ИСО/МЭК 12207 может быть применен к программному проекту любого типа, меньшего размера и сложности. Этот стандарт также может быть использован для программных средств, являющихся самостоятельными объектами или частями общей системы.

Процессы, работы и задачи в ГОСТ Р ИСО/МЭК 12207 описаны в наиболее общей естественной позиционной последовательности. Эта последовательность не предопределяет последовательность реализации модели жизненного цикла. Описанная последовательность предназначена для того, чтобы в проекте создания программного средства выбрать, упорядочить, применить и повторить присущие проекту или подходящие для него процессы, работы (виды деятельности) и задачи (задания).

В рамках одного проекта ГОСТ Р ИСО/МЭК 12207 может быть использован многократно и выборочно. Например, в конкретном проекте создания программного средства заказчик может попросить поставщика выполнить разработку программного средства с использованием единого метода применения ГОСТ Р ИСО/МЭК 12207. Поставщик далее может попросить субподрядчика выполнить всю разработку программного средства или ее часть. Поставщик (в режиме заказчика) и его субподрядчик (в режиме поставщика) могут использовать конкретный метод реализации ГОСТ Р ИСО/МЭК 12207. В обеих ситуациях необходимо прикладное применение ГОСТ Р ИСО/МЭК 12207 для отражения достигнутых соглашений.

Дальнейшее уточнение данной ситуации — в соответствии с разделом 6.

4.5 Процессы и организации

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

Процессы в ГОСТ Р ИСО/МЭК 12207 образуют исчерпывающее множество, удовлетворяющее потребностям различных организаций. Организация, малая или большая, в зависимости от специфики, может выбрать соответствующее подмножество процессов (и соответствующих работ и задач) для реализации поставленной цели. ГОСТ Р ИСО/МЭК 12207 предназначен для применения как внутри организации, так и в договорных отношениях между двумя или несколькими организациями. Для того чтобы облегчить применение ГОСТ Р ИСО/МЭК 12207 как внутри организации, так и вне ее, задачи (задания) должны быть сформулированы на языке договора. Когда указанный стандарт применяют внутри организации, язык договора определяется внутренними задачами, как описано в разделе 7.

ГОСТ Р ИСО/МЭК 12207 должен быть гармонизирован с политикой(ами) организации и другими существующими стандартами. Обычно имеет место случай, когда в организации уже используют собственные стандарты и конкретные методы для разработки программных средств. Поэтому при применении ГОСТ Р ИСО/МЭК 12207 внутри организации важно выяснить связи между указанным стандартом, собственными стандартами организации и различными используемыми методами.

На рисунке 2 приведен один из примеров таких взаимосвязей, который может быть использован при прикладном применении ГОСТ Р ИСО/МЭК 12207 внутри организации. ГОСТ Р ИСО/МЭК 12207 расположен на первом уровне, стандарты организации расположены на втором уровне, а третий уровень предназначен для уточненных методик проведения работ и инструментальных средств, специфичных для проекта. Термины, устанавливаемые и используемые на втором и третьем уровнях, должны соответствовать ГОСТ Р ИСО/МЭК 12207.

Рисунок 2 — Взаимосвязь между существующими документами

Рисунок 2 — Взаимосвязь между существующими документами

Решения по любым возникающим противоречиям должны быть приняты на уровне организации, использующей ГОСТ Р ИСО/МЭК 12207, и могут включать в себя разработку схем и, при необходимости, заполнение выявленных пробелов.

4.6 Программные средства и системы

4.6.1 Интерфейс с системной инженерией

ГОСТ Р ИСО/МЭК 12207 устанавливает строгую связь между системой в целом и программным средством. Это возможно потому, что указанный стандарт основан на принципах общей системной инженерии.

ГОСТ Р ИСО/МЭК 12207 разработан с некоторой степенью расширения для применения в процессе системной инженерии. Когда программное средство является частью общей системы, его выделяют из системы, создают и включают в систему. Данное свойство ГОСТ Р ИСО/МЭК 12207 полезно при отсутствии стандартов системного уровня. Когда программное средство имеет отдельную область применения, задачи системного уровня можно трактовать как полезные рекомендации. В любом случае ГОСТ Р ИСО/МЭК 12207 предусматривает существенное использование программной инженерии в системной инженерии.

4.6.2 Связь между программным средством и системой

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

Рисунок 3 — Программные средства в системе

Рисунок 3 — Программные средства в системе

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

Рисунок 4 — Компьютерные системы в организации

Рисунок 4 — Компьютерные системы в организации

4.6.3 Системы на основе программных средств

Хотя ГОСТ Р ИСО/МЭК 12207 определяет жизненный цикл системы в целом, но он охватывает такие процессы, как разработка, эксплуатация и сопровождение системы только в части ее программных средств. Поэтому процессы жизненного цикла технических средств в ГОСТ Р ИСО/МЭК 12207 не определены.

4.6.4 Классификация системных и программных работ (видов деятельности)

В процессе разработки программных средств по ГОСТ Р ИСО/МЭК 12207 различают два типа работ (видов деятельности): системные и программные. Область применения данных работ отражена в их наименовании.

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

Рисунок 5 — Классификация работ (видов деятельности) по ГОСТ Р ИСО/МЭК 12207

Рисунок 5 — Классификация работ (видов деятельности) по ГОСТ Р ИСО/МЭК 12207

Как показано на рисунке 5, системные работы (виды деятельности) в процессе разработки программных средств по ГОСТ Р ИСО/МЭК 12207 начинают с анализа требований к системе (5.3.2) и завершают квалификационными испытаниями системы (5.3.11).

В разделе 8 настоящего стандарта описано, как система становится комбинацией технических и программных средств и ручных операций. Разделение системы на данные элементы начинают с работы «Проектирование системной архитектуры» (5.3.3 ГОСТ Р ИСО/МЭК 12207). Программные работы, которые выделяют из конкретного архитектурного (эскизного) проекта, начинают с анализа требований к программным средствам (5.3.4) и завершают квалификационными испытаниями программных средств (5.3.9).

После завершения разработки программных средств их интегрируют с техническими средствами и ручными операциями в соответствии с работой «Сборка системы» (5.3.10 ГОСТ Р ИСО/МЭК 12207), а затем выполняют работу «Квалификационные испытания системы» (5.3.11). Основываясь на вышеуказанных работах, можно сделать вывод о том, что системные работы являются расширением набора программных работ.

4.7 Управление и планирование

Для каждого из основных и вспомогательных процессов управление соответствующим процессом на проектном уровне реализуют, конкретизируя процесс управления. Посредством этого процесса осуществляют планирование, а также реализацию и контроль всех запланированных событий. Разделы, которые должны быть включены в план, определены в 7.1.2.1 ГОСТ Р ИСО/МЭК 12207, тогда как 7.1.3.2 указанного стандарта определяет отчетность о ходе процесса, а 7.1.3.3 его же устанавливает отчетность о проблемах.

4.7.1 План управления проектом

В процессе поставки по 5.2.4.5 ГОСТ Р ИСО/МЭК 12207 требуется подготовка плана управления проектом, а по 5.2.5.1 указанного стандарта данный план реализуют и контролируют. Далее в процессе поставки должен быть осуществлен надзор за технической реализацией, расходами, выполнением планов (графиков) и проведена соответствующая отчетность (5.2.5.3 ГОСТ Р ИСО/МЭК 12207).

4.7.2 Дополнительные планы

Вопросы, требующие дополнительного рассмотрения и перечисленные в 5.2.4.5 ГОСТ Р ИСО/МЭК 12207, связаны с некоторыми вспомогательными и организационными процессами. Для ряда таких процессов требуется разработка соответствующих планов, например обеспечения качества, верификации и обучения. В зависимости от объема и сложности проекта, а также возможности субподрядного выполнения всех или ряда работ данные планы могут быть включены в план управления проектом или подготовлены в виде отдельных дополнительных документов.

При привлечении субподрядчиков подобные вопросы отслеживают в соответствии с 5.2.5.4 ГОСТ Р ИСО/МЭК 12207, уделяя особое внимание установлению необходимых взаимосвязей для синхронизации данных планов.

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

4.7.3 Контроль документов

Требования по управлению документами включают в себя планы, описанные в процессе документирования (6.1 ГОСТ Р ИСО/МЭК 12207).

4.8 Реализация принципов управления качеством

В ГОСТ Р ИСО/МЭК 12207 реализованы принципы управления качеством и сделано это тремя основными способами, описанными ниже.

4.8.1 Интеграция качества в жизненный цикл

ГОСТ Р ИСО/МЭК 12207 устанавливает требования к всеобъемлющему интегрированному набору процессов, охватывающих жизненный цикл программного средства. Указанный стандарт обеспечивает для каждого процесса доступ к циклу «план-реализация-проверка-акт» (plan-do-check-act) посредством процесса усовершенствования. При этом все работы, связанные с качеством и трактуемые как неотъемлемая часть жизненного цикла программного средства, входят в соответствующие процессы жизненного цикла. Таким образом, за каждым процессом и персоналом, отвечающим за его реализацию, закреплены работы в рамках данного процесса, связанные с качеством.

4.8.2 Процесс обеспечения качества

Процесс обеспечения качества (6.3 ГОСТ Р ИСО/МЭК 12207) предназначен для обеспечения соответствия продуктов и услуг конкретным требованиям и установленным планам. Лица, отвечающие за данный процесс, должны быть наделены необходимой организационной независимостью и соответствующими полномочиями. Организационная независимость подразумевает независимость от тех, кто непосредственно отвечает за создание продукта, а соответствующие полномочия подразумевают права на проведение оценки и инициализацию корректирующих действий.

4.8.3 Процесс усовершенствования

ГОСТ Р ИСО/МЭК 12207 (7.3) определяет процесс усовершенствования для дальнейшего повышения качества работ организации в целом независимо от договорных обязательств.

4.9 Гибкость и отзывчивость на развитие технологии

ГОСТ Р ИСО/МЭК 12207 является гибким и чувствительным к развитию дисциплины программной инженерии. Это достигается обеспечением открытой архитектуры высокого уровня, т.е. ГОСТ Р ИСО/МЭК 12207 является:

a) применимым к любой(ым):

— модели(ям) жизненного цикла (например, каскадной, инкрементной или эволюционной);

— методам или технологиям программной инженерии (например, объектно-ориентированное проектирование, структурное программирование, нисходящее тестирование или макетирование);

— языкам программирования (например, КОБОЛ, Ада или ассемблер).

Решение данных вопросов зависит от самого проекта и современного состояния технологии, а выбор этих элементов осуществляет пользователь ГОСТ Р ИСО/МЭК 12207;

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

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

4.10 Процессы и документирование

ГОСТ Р ИСО/МЭК 12207 не является стандартом в области документирования, т.е. даже если в указанном стандарте установлены требования к документированию некоторых выходных результатов процессов, он не определяет формат или содержание документов. Указанный стандарт не определяет, как объединять аналогичные выходные результаты, такие как планы, спецификации (технические задания) или требования к тестированию. Уточненные требования к документированию приведены в приложении В к настоящему стандарту.

4.11 Метрики программных средств

ГОСТ Р ИСО/МЭК 12207 не определяет или не задает свойств (атрибутов) программного средства (таких как надежность или удобство сопровождения) в терминах конкретной системы показателей (метрик) и указателей. Этот стандарт описывает способы для определения подобных свойств программного средства, но они должны быть уточнены пользователями ГОСТ Р ИСО/МЭК 12207.

4.12 Согласованность

Соответствие с ГОСТ Р ИСО/МЭК 12207 может быть достигнуто следующими способами;

a) организация публично объявляет условия сделки, набор процессов, работ (видов деятельности) и задач (заданий) из ГОСТ Р ИСО/МЭК 12207, которым должны подчиняться поставщики данной организации;

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

Примечание — ГОСТ Р ИСО/МЭК 12207 содержит набор требований, сформулированных как «должен». Пользователи указанного стандарта не обязаны подчиняться данному документу в целом, т.е. они не должны добиваться соответствия всем формулировкам «должен» из ГОСТ Р ИСО/МЭК 12207. Соглашение по данному вопросу может быть достигнуто между двумя сторонами. Стороны могут решить, что ГОСТ Р ИСО/МЭК 12207 является основой для соглашения, или они могут согласовать соответствующую адаптацию ГОСТ Р ИСО/МЭК 12207 для удовлетворения своих частных требований.

4.13 Заключение

ГОСТ Р ИСО/МЭК 12207 не заменяет строго систематизированное управление проектированием программного обеспечения систем. Указанный стандарт определяет структуру, в которой процессы, работы и задачи, связанные с программным средством, могут быть соответствующим образом определены, запланированы и выполнены. ГОСТ Р ИСО/МЭК 12207 содержит набор четко определенных конструктивных блоков (процессов). Пользователь указанного стандарта должен выбрать, практически применить и скомпоновать данные блоки соответственно целям и задачам своей организации и проекта. При практическом применении ГОСТ Р ИСО/МЭК 12207 должны быть сохранены его архитектура, сущность и целостность, например включением элементов стандарта с пометой «не применяется» и объяснением причины его неиспользования.

5 Внедрение ГОСТ Р ИСО/МЭК 12207

5.1 Обзор

ГОСТ Р ИСО/МЭК 12207 может быть внедрен по разным причинам, включая:

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

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

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

Какой бы ни была причина для внедрения ГОСТ Р ИСО/МЭК 12207, рекомендуемая стратегия его практического применения состоит из следующих шагов:

a) плана внедрения;

b) практического применения ГОСТ Р ИСО/МЭК 12207;

c) проведения сопровождения пилотного проекта(ов);

d) формализации метода внедрения;

e) утверждения метода внедрения.

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

Когда проект или организация уже находится в стабильном состоянии, т.е. для него(е) определены и утверждены процессы по ГОСТ Р ИСО/МЭК 12207, тогда стратегия внедрения должна быть укорочена и может состоять из следующих шагов:

a) плана внедрения;

b) практического применения ГОСТ Р ИСО/МЭК 12207;

c) проведения сопровождения пилотного проекта(ов).

5.2 План внедрения

Внедрение ГОСТ Р ИСО/МЭК 12207 должно быть рассмотрено как конкретный проект и соответствующим образом спланировано.

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

а) определение области применения проекта, включая, возможно:

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

— выделение некоторых ключевых процессов или даже единственного процесса, от которого ожидают выгоду для организации. Данный метод может быть использован, когда были обнаружены недостатки в деятельности организации и в дальнейшем предполагают полное внедрение ГОСТ Р ИСО/МЭК 12207;

— практическое применение ГОСТ Р ИСО/МЭК 12207 через ряд проектов с вероятным постадийным его введением. При этом в организации могут отсутствовать или существовать некоторые процессы, которые должны быть стандартизованы по ГОСТ Р ИСО/МЭК 12207;

— практическое применение ГОСТ Р ИСО/МЭК 12207 во всех проектах и во всех подразделениях данной организации. Вероятность использования данного метода какой-либо организацией, за исключением очень небольшой, невелика. Данный метод внедрения может быть пригоден для нового филиала существующей организации, в которой для практической работы ранее уже был использован ГОСТ Р ИСО/МЭК 12207;

b) определение целей проекта и установление того, как они соответствуют общим целям деятельности организации. Если явная связь между данным проектом и деловыми интересами организации не установлена, то сформулировать предложение по достижению целей проекта внедрения ГОСТ Р ИСО/МЭК 12207 затруднительно;

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

d) определение ресурсов, необходимых для внедрения ГОСТ Р ИСО/МЭК 12207, таких как время, деньги, персонал и оборудование;

e) создание и документальное оформление плана управления проектом по внедрению ГОСТ Р ИСО/МЭК 12207.

5.3 Практическое применение ГОСТ Р ИСО/МЭК 12207

При выполнении позиций плана внедрения, связанных с практическим применением указанного стандарта, реализуют процесс адаптации, описанный в приложении А ГОСТ Р ИСО/МЭК 12207. Рекомендации по практическому применению ГОСТ Р ИСО/МЭК 12207 для конкретных целей приведены в разделах 6-8 настоящего стандарта.

Данные рекомендации из настоящего стандарта должны быть изучены совместно с общими советами по его практическому применению, приведенными в приложении В ГОСТ Р ИСО/МЭК 12207, и материалами, связанными с конкретной ситуацией. Например, практическое применение указанного стандарта может быть выполнено внутри организации с использованием особенностей модели жизненного цикла системы.

На рисунке 6 показана последовательность событий в процессе адаптации, который рассмотрен в приложении А ГОСТ Р ИСО/МЭК 12207. Конкретные примеры практического применения указанного стандарта приведены в приложении D к настоящему стандарту. В данных примерах:

— использованы сценарии для определения среды проектирования;

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

— обобщены решения по практическому применению ГОСТ Р ИСО/МЭК 12207 и приведены обоснования для него.

Рисунок 6 — Работы по практическому применению ГОСТ Р ИСО/МЭК 12207

Рисунок 6 — Работы по практическому применению ГОСТ Р ИСО/МЭК 12207

5.3.1 Определение среды проектирования и характеристик проекта

Характеристики организации могут быть определены при ответе на следующие вопросы:

— Какие процессы, стратегии и процедуры уже применяются?

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

— Является ли данный процесс основным для достижения целей организации?

— Учтен ли повышенный деловой риск?

— Где существуют проблемные области?

— Какова практика организации (легкоадаптируема или невосприимчива к изменениям)?

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

— Какая модель жизненного цикла системы или проекта используется?

— Каков уровень совершенства конкретного процесса?

— Каков технический риск?

— Является ли система критичной по безопасности?

— Будут ли использованы новые технологии?

5.3.2 Запрос исходных данных

Соответствующие требования, выделенные из деловых и договорных потребностей организации (проекта), являются исходными данными для практического применения ГОСТ Р ИСО/МЭК 12207. Например, ГОСТ Р ИСО/МЭК 12207 может быть применен в соответствии с договором между поставщиком и покупателем продукта. Потребитель может потребовать только проведения проектирования программного средства, а не полной разработки программного обеспечения системы. В другом случае, если требования потребителя связаны с критичным по безопасности программным средством, заменяющим существующее у него программное средство, ряд задач (заданий) из ГОСТ Р ИСО/МЭК 12207 может быть исключен.

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

5.3.3 Выбор процессов, работ и задач

Должны быть определены подлежащие реализации процессы или части процесса из ГОСТ Р ИСО/МЭК 12207 и приоритеты их реализации. Обычно предпочтительнее начинать с процессов, от которых может быть получена наибольшая отдача, чем пытаться сразу внедрить весь ГОСТ Р ИСО/МЭК 12207.

ГОСТ Р ИСО/МЭК 12207 не определяет последовательность выполнения процессов, работ и задач и не предписывает какую-либо конкретную модель жизненного цикла программного средства. На данной стадии полезно провести привязку существующих процессов, практического опыта и (или) методов к процессам, работам и задачам из ГОСТ Р ИСО/МЭК 12207.

Подобная привязка может быть применена для проверки полноты используемого метода внедрения, т.е. определения наличия «пробелов» между существующей и планируемой ситуацией, в которой предполагают использовать процессы из ГОСТ Р ИСО/МЭК 12207.

5.3.4 Документирование решений по внедрению и их обоснований

При практическом применении ГОСТ Р ИСО/МЭК 12207 должна быть документально оформлена привязка установленных процессов, работ и задач к выбранной модели(ям) жизненного цикла программного средства вместе с выявленными взаимосвязями и обоснованиями применения выбранного метода. Данные документы должны быть включены в план управления проектом по внедрению ГОСТ Р ИСО/МЭК 12207, чтобы обеспечить эталонную структуру для проведения оценки или обзора реализации конкретного метода внедрения.

5.4 Проведение сопровождения пилотного проекта(ов)

При внедрении в организации ГОСТ Р ИСО/МЭК 12207 через реализацию ряда проектов можно ограничить степень риска для организации путем использования некоего «лоцмана» в ключевых областях и процессах. Успешное внедрение ГОСТ Р ИСО/МЭК 12207 обычно включает в себя такие методы, как:

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

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

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

d) планирование пилотных проектов и определение критических факторов достижения успеха;

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

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

5.5 Формализация метода внедрения

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

Примечание — При надзоре за ходом проекта в него могут быть внесены усовершенствования (уточнения). Подобные уточнения также могут быть внесены при сравнении одного проекта с другим с целью определить наилучшие методы внедрения ГОСТ Р ИСО/МЭК 12207, подлежащие реализации в последующих проектах.

5.6 Утверждение метода внедрения

Утверждение метода внедрения ГОСТ Р ИСО/МЭК 12207 обеспечивает последовательную и автоматизированную реализацию процесса внедрения в проекте или организации. При этом также обеспечивают оценку протекания данного процесса и, при необходимости, его усовершенствование. Для этой цели может быть использован процесс усовершенствования, описанный в 7.3 ГОСТ Р ИСО/МЭК 12207.

6 Применение в проектах

В настоящем разделе приведены дополнительные рекомендации по применению ГОСТ Р ИСО/МЭК 12207 в проекте. Однако данные рекомендации не являются исчерпывающими в связи с отличиями одного проекта от другого.

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

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

— особенности стратегий различных проектов в цикле «заказ-поставка»;

— объем и сложность проекта;

— требования к системе.

ГОСТ Р ИСО/МЭК 12207 разработан с учетом подобных вариантов и подходит для любого проекта. Кроме того, в целях снижения стоимости и повышения качества разработки ГОСТ Р ИСО/МЭК 12207 можно практически применять к конкретному проекту. Всем субъектам проекта должны быть предоставлены возможности участия в процессе адаптации указанного стандарта.

6.1 Особенности практического применения ГОСТ Р ИСО/МЭК 12207

В настоящем подразделе рассмотрены ключевые факторы, которые должны быть учтены при применении ГОСТ Р ИСО/МЭК 12207 в проекте. Перечень этих факторов, не являющийся исчерпывающим, связан с текущим состоянием рассматриваемого вопроса, а каждый из данных факторов должен быть взаимоувязан с другими и влиять на них в зависимости от специфики программного проекта. При рассмотрении среды проектирования может быть полезна следующая группа факторов:

— организационные вопросы;

— проектный риск;

— наличие и достаточность ресурсов.

6.1.1 Модель жизненного цикла системы

Степень практического применения ГОСТ Р ИСО/МЭК 12207 в качестве обязательного (нормативного) или рекомендуемого документа зависит от места данного программного проекта в модели жизненного цикла системы (типовые модели жизненного цикла рассмотрены в приложении С к настоящему стандарту).

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

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

— можно ли использовать ГОСТ Р ИСО/МЭК 12207 в качестве метода для проведения компьютерного моделирования и имитации;

— можно ли использовать ГОСТ Р ИСО/МЭК 12207 для разработки, эксплуатации или сопровождения программного средства.

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

6.1.2 Политики и процедуры организаций

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

— защитой;

— безопасностью;

— конфиденциальностью;

— управлением риском;

— использованием независимого органа по верификации и аттестации (валидации);

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

— обеспечением техническими ресурсами.

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

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

6.1.3 Характеристики системы

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

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

— межсистемные и внутрисистемные интерфейсы;

— интерфейсы пользователя;

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

— оценку вычислительных мощностей и временных ограничений;

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

— наличие соответствующих компьютеров.

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

6.1.4 Характеристики программного средства

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

— потенциальное число элементов программной конфигурации;

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

— технический риск;

— типы, комплектность и носители документов;

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

— аспекты из ГОСТ Р ИСО/МЭК 9126, такие как надежность.

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

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

6.1.5 Политика сопровождения программного средства

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

— ожидаемый период сопровождения;

— ожидаемая периодичность внесения изменений;

— критичность применения;

— определение персонала, осуществляющего сопровождение;

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

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

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

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

6.1.6 Модель жизненного цикла проекта

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

Каждая модель жизненного цикла в приложении С содержит некоторые процессы и работы, которые могут быть выполнены последовательно, повторно или комбинированно. Работы процессов из ГОСТ Р ИСО/МЭК 12207 должны быть отображены в выбранной модели жизненного цикла. С точки зрения создания модифицируемого, развивающегося, структурированного и планируемого продукта, результаты одной работы из модели жизненного цикла должны быть переданы следующей. В этом случае соответствующие документы должны быть созданы к окончанию данной работы, т.е. до начала следующей работы.

6.1.7 Разнообразие участвующих сторон

Должны быть определены стороны, участвующие в проекте, и их ответственность за конкретные процессы. Должны быть учтены все работы и задачи из ГОСТ Р ИСО/МЭК 12207, связанные с взаимодействиями (интерфейсами) между этими сторонами.

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

6.1.8 Типы программных средств

Должны быть определены типы программных средств, охваченных проектом, так как для различных типов требуются различные решения по внедрению ГОСТ Р ИСО/МЭК 12207. Примерами типов программных средств являются:

a) новая разработка;

b) готовое;

c) программы, реализованные техническими средствами;

d) автономное;

e) непоставляемое.

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

a) Новая разработка.

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

b) Готовое:

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

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

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

c) Программы, реализованные техническими средствами.

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

d) Автономное.

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

e) Непоставляемое.

Так как данный тип средств не является объектом заказа, поставки или разработки, соответствующие разделы ГОСТ Р ИСО/МЭК 12207 для них не учитывают, за исключением 5.3.1.5 указанного стандарта. Однако если заказчик решит заказать часть таких программных средств для последующей их эксплуатации и сопровождения, тогда к ним следует применять рекомендации в соответствии с перечислениями b) и d) данного пункта.

6.1.9 Объем проекта

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

6.1.10 Критичность проекта

Для системы, работа которой в значительной степени зависит от правильного функционирования программных средств и своевременной выдачи результатов, необходим более тщательный надзор и контроль. Напротив, для некритичного программного средства излишний надзор и контроль, вероятно, неэффективен. (Для уточнения понятия критичности — см. 6.4.1.1 ГОСТ Р ИСО/МЭК 12207.)

6.1.11 Технический риск

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

7 Применение в организациях

7.1 Предпосылки и методы

Организации должны широко использовать ГОСТ Р ИСО/МЭК 12207 в качестве составной части деятельности по усовершенствованию процессов, связанных с программными средствами. Это может быть выполнено автономно или вместе с доступными методами оценки и определения функциональных возможностей процесса, например описанными в стандартах серии ИСО/МЭК ТО 15504.

Применение ГОСТ Р ИСО/МЭК 12207 в организации основано на тех же методах внедрения, которые используют в проектах. Организации, внедряющие ГОСТ Р ИСО/МЭК 12207, должны использовать рекомендации, приведенные в разделе 6, и политики, описанные в разделе 5 настоящего стандарта.

7.2 Возможности применения

Причины, по которым ГОСТ Р ИСО/МЭК 12207 внедряют в организации, могут быть следующими:

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

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

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

— управление внедрением новой технологии, например: автоматизация ручных процессов или изменение методов, используемых при внедрении программного продукта. ГОСТ Р ИСО/МЭК 12207 устанавливает критерии, которые могут быть использованы для контроля совершенства соответствующего метода до или после изменения технологии;

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

— определение контрольных этапов, при реализации которых могут быть разработаны более совершенные программы, например проведение аудита в соответствии с ГОСТ Р ИСО/МЭК 12207 и использование самого процесса усовершенствования.

7.3 Распространение административного управления

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

8 Прикладное применение модели жизненного цикла системы

Настоящий раздел иллюстрирует общую модель жизненного цикла системы или проекта и описывает, как ГОСТ Р ИСО/МЭК 12207 может быть внедрен в данной модели жизненного цикла системы. Обзор типовых моделей жизненного цикла — по приложению С к настоящему стандарту.

8.1 Модель жизненного цикла системы

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

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

a) определение потребностей;

b) исследование и описание основных концепций;

c) демонстрация и аттестация основных концепций;

d) проектирование и разработка;

e) создание и производство;

f) распространение и продажа;

g) эксплуатация;

h) сопровождение и поддержка;

i) снятие с эксплуатации (утилизация).

8.2 Модель жизненного цикла программного средства

Типовая модель жизненного цикла программного средства состоит из ряда работ. Данная модель начинается с формулировки замысла (идеи) или концепции программного продукта или услуги, продолжается работами по применению методов системной и программной инженерии, работами по эксплуатации, сопровождению и поддержке и заканчивается снятием с эксплуатации (утилизацией). В ГОСТ Р ИСО/МЭК 12207 все эти и другие, связанные с ними работы, объединены в основные, вспомогательные и организационные процессы, из которых формируют модель жизненного цикла программного средства.

8.3 Пример использования ГОСТ Р ИСО/МЭК 12207 в общей модели жизненного цикла системы

На рисунке 7 основное внимание уделено использованию ГОСТ Р ИСО/МЭК 12207 в общей модели жизненного цикла гипотетической системы. Основным назначением данного рисунка является сжатое представление метода применения ГОСТ Р ИСО/МЭК 12207. В таблице 2 (см. 8.13) представлен состав работ жизненного цикла системы и используемых процессов жизненного цикла программного средства.

Рисунок 7 — Использование ГОСТ Р ИСО/МЭК 12207 для обеспечения модели жизненного цикла системы

Рисунок 7 — Использование ГОСТ Р ИСО/МЭК 12207 для обеспечения модели жизненного цикла системы

Организация может использовать ГОСТ Р ИСО/МЭК 12207 в любой работе или в общей модели жизненного цикла самостоятельно, а также может привлекать для этого (частично или полностью) поставщика соответствующих продуктов или услуг.

8.4 Определение потребностей

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

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

8.5 Исследование и определение концепции

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

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

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

— определения прототипов разработки;

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

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

8.6 Демонстрация и аттестация

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

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

8.7 Проектирование и разработка

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

При проведении данной работы полностью применим ГОСТ Р ИСО/МЭК 12207. При этом для выполнения разработки или модернизации программного средства должны быть выбраны, соответствующим образом адаптированы и использованы процессы, работы и задачи из процессов заказа, поставки и разработки. Данная работа может включать в себя однократное или многократное использование процесса разработки, скоординированное с другими компонентами системы. Результатами данной работы являются исходные требования к программному средству, его проект и соответствующие программы.

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

8.8 Создание и производство

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

Для программных средств, по сравнению с техническими средствами, работа по созданию и производству незначительна. Она состоит из копирования (тиражирования) разработанного программного средства и документов к нему на соответствующие носители для различных пользователей (потребителей). (Конкретные задачи по реализации данной работы в ГОСТ Р ИСО/МЭК 12207 не установлены.) В этом случае могут быть использованы конкретные промышленные методы и соответствующие государственные акты. Для контроля за выполнением указанных задач может быть использована работа по управлению выпуском и поставкой из процесса управления конфигурацией. Также могут быть использованы другие соответствующие работы, такие как верификация сборки.

8.9 Распространение и продажа

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

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

8.10 Эксплуатация

Данная работа включает в себя эксплуатацию, применение или использование системы пользователями (потребителями), заканчиваясь снятием ее с эксплуатации.

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

8.11 Сопровождение и поддержка

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

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

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

8.12 Снятие с эксплуатации (утилизация)

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

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

8.13 Процессы жизненного цикла программного средства в общей модели жизненного цикла системы

В таблице 2 приведен пример распределения процессов жизненного цикла программного средства по периодам жизненного цикла системы. Показаны только основные процессы из ГОСТ Р ИСО/МЭК 12207. Вспомогательные или организационные процессы должны быть использованы через основные процессы. Буквой «П» обозначено использование процесса из ГОСТ Р ИСО/МЭК 12207, а буквой «М» — использование соответствующего метода. Обозначение «(П)» или «(М)» указывает на возможность использования соответствующего процесса или метода.

Таблица 2 — Процессы жизненного цикла программного средства в общей модели жизненного цикла системы

Периоды жизненного цикла системы

Процессы жизненного цикла программного средства

Заказ

Поставка

Разработка

Эксплуатация

Сопровождение

Определение потребностей

()

Исследование и определение концепции

()

(),

Демонстрация и аттестация

,

Проектирование и разработка

,

Создание и производство

Распространение и продажа

Эксплуатация

Сопровождение и поддержка

Снятие с эксплуатации

ПРИЛОЖЕНИЕ А (справочное). Процессы качества и требования к оценке

ПРИЛОЖЕНИЕ А
(справочное)

Вспомогательные процессы жизненного цикла, связанные с качеством программного средства, показаны в сгруппированном виде, выделенном серым фоном, на рисунке 1 в ГОСТ Р ИСО/МЭК 12207. Такими процессами являются:

— обеспечение качества;

— верификация;

— аттестация (валидация);

— совместный анализ;

— аудит.

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

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

В таблице А.1 показаны требования, связанные с оценками продуктов, услуг и процессов. В соответствующей работе жизненного цикла проекта или процесса эксперт должен оценить либо программные продукты и услуги самой организации, либо сторонние программные продукты или услуги. В ГОСТ Р ИСО/МЭК 12207 данные оценки сгруппированы в пять нижеперечисленных типов (см. таблицу А.1). Первые четыре типа оценок реализуют на проектном уровне, а последний — на уровне организации. Данные оценки должны быть выбраны и адаптированы пропорционально области применения, важности, сложности и критичности проекта (или стратегии) и потребностям организации. Отчеты о проблемах, несоответствиях или необходимых усовершенствованиях, полученные в результате оценок, передают в процесс решения проблем.

Таблица А.1 — Требования к оценкам продуктов, услуг и процессов

Тип оценки

Пункт ГОСТ Р ИСО/МЭК 12207

Назначение

Исполнитель

Примечание

Оценки внутри процесса

5.1-5.5

Ежедневная работа

Персонал, выполняющий задачи по оценке в процессе

Обеспечение качества

6.3

Независимое подтверждение соответствия программных продуктов и услуг требованиям договора и соблюдения установленных планов

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

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

Верификация и аттестация (валидация)

6.4 и 6.5

Верификация и аттестация продуктов с различной степенью зависимости от проекта

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

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

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

6.6 и 6.7

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

Оценивающая сторона (аналитик или аудитор) и оцениваемая сторона (анализируемая или проверяемая) совместно

Оценка и усовер- шенствование

7.3

Эффективное управление и самоусовершенствование

Администратор

ПРИЛОЖЕНИЕ В (справочное). Классификация выходных результатов процессов

ПРИЛОЖЕНИЕ В
(справочное)

В настоящем приложении определены выходные результаты процессов (см. таблицы В.1-В.4), которые должны быть документально оформлены в соответствии с требованиями или рекомендациями ГОСТ Р ИСО/МЭК 12207. Перечислены только те пункты ГОСТ Р ИСО/МЭК 12207, по которым требуются выходные результаты. Документы по данным выходным результатам должны быть выбраны и скомплектованы пропорционально области применения, значимости, сложности и критичности проекта или организации. В графе «Выходные результаты» таблицы B.1 наименования или заголовки соответствующих документов не указаны.

Таблица B.1 — Выходные результаты основных процессов жизненного цикла

Процесс

Пункт ГОСТ Р ИСО/МЭК 12207

Выходные результаты

Тип выходного результата

Заказ

5.1.1.8

План заказа

План

5.1.1.9

Стратегия и условия заказа

Описание

5.1.2.1

Заявка на подряд (тендер)

Описание

5.1.2.1

Документы по заказу

Описание

5.1.3.1

Процедура выбора поставщика

Процедура

5.1.3.4

Договор

Договор

Поставка

5.2.2.1

Предложение

Предложение

5.2.4.5

План(ы) управления проектом

План

5.2.6.4

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

Отчет

Разработка

5.3.1.2

Протоколы о проблемах и несоответствиях

Протокол

5.3.1.4

Планы разработки

План

5.3.2.1

Технические требования (спецификация) к системе

Описание

5.3.3.1

Документ по архитектуре системы

Описание

5.3.3.1

Документ на привязку к объектам системы

Описание

5.3.4.1

Технические требования к программному средству

Описание

5.3.4.2

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

Протокол

5.3.5.1

Объект программной конфигурации

Программное средство

5.3.5.1

Требования к архитектуре (эскизный проект)

Описание

5.3.5.2

Требования к интерфейсам программного средства (эскизный проект)

Описание

5.3.5.3

Эскизный проект базы данных

Описание

5.3.5.4

Руководство(а) пользователя

Руководство

5.3.5.5

Требования к испытанию (тестированию) программного средства

Описание

5.3.5.6

Анализ проекта

Протокол

Разработка

5.3.6.1

Технический проект

Описание

5.3.6.2

Уточненные требования к интерфейсам программного средства (технический проект)

Описание

5.3.6.3

Технический проект базы данных

Описание

5.3.6.5

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

Описание

5.3.6.7

Анализ технического проекта

Протокол

5.3.7.1

Программные модули и базы данных

Программные средства

5.3.7.1

Процедура испытаний (тестирования)

Процедура

5.3.7.2

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

Протокол

5.3.7.5

Анализ результатов программирования и тестирования

Протокол

5.3.8.1

План сборки программного средства

План

5.3.8.2

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

Протокол

5.3.8.5

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

Протокол

5.3.9.1

Результаты квалификационных испытаний (тестирования) объекта программной конфигурации

Протокол

5.3.9.3

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

Протокол

5.3.9.4

Аудиторская проверка сборки программного средства

Протокол

5.3.10.1

Результаты сборки и испытания системы

Протокол

5.3.10.2

Требования к квалификационным испытаниям системы

Описание

5.3.10.3

Анализ квалификационного испытания системы

Протокол

5.3.11.1

Результаты квалификационных испытаний системы

Протокол

5.3.11.3

Результаты аудиторских проверок системы

Протокол

5.3.12.1

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

План

5.3.12.2

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

Протокол

5.3.13.1

Готовность к приемке и приемочные испытания программного средства

Протокол

Эксплуатация

5.4.1.1

План эксплуатации

План

5.4.1.2

Процедура подготовки отчетов по проблеме

Процедура

5.4.1.2

Отчетность по проблеме

Протокол

5.4.1.3

Процедура тестирования в эксплуатационной среде

Процедура

Сопровождение

5.5.1.1

План сопровождения

План

5.5.1.1

Процедура сопровождения

Процедура

5.5.1.2

Процедуры описания проблемы и реализации заявки на внесение изменений

Процедура

5.5.2.4

Протокол фиксации сообщения о проблеме или заявки на внесение изменения

Протокол

5.5.3.1

Протоколы внесения изменений

Протокол

5.5.3.2

Результаты тестирования внесенных изменений

Протокол

5.5.5.2

План переноса программного средства

План

5.5.6.1

План снятия с эксплуатации

План

Таблица В.2 — Выходные результаты вспомогательных процессов жизненного цикла

Процесс

Пункт ГОСТ Р ИСО/МЭК 12207

Выходные результаты

Тип выходного результата

Документирование

6.1.1.1

План документирования

План

Управление конфигурацией

6.2.1.1

План управления конфигурацией

План

6.2.4.1

Отчеты и протоколы по управлению конфигурацией

Протокол

Обеспечение качества

6.3.1.3

План обеспечения качества

План

6.3.1.4

Протоколы по обеспечению качества

Протокол

Верификация

6.4.1.5

План верификации

План

Аттестация

6.5.1.4

План аттестации

План

Совместный анализ

6.6.1.4

Результаты совместного анализа

Протокол

Аудит

6.7.1.5

Результаты аудиторских проверок

Протокол

Решение проблем

6.8.1.1

Отчет о проблеме

Протокол

Таблица В.3 — Выходные результаты организационных процессов жизненного цикла

Процесс

Пункт ГОСТ Р ИСО/МЭК 12207

Выходные результаты

Тип выходного результата

Управление

7.1.2.1

План управления

План

7.1.3.3

Анализы проблем

Отчет

Создание инфраструктуры

7.2.1.2

План создания инфраструктуры

План

7.2.2.1

Конфигурация инфраструктуры

Описание

Усовершенствование

7.3.1.1

Процедуры организационных процессов

Процедура

7.3.2.1

Процедура оценки процесса

Процедура

Обучение

7.4.1.1

План обучения

План

7.4.3.1

Протоколы об обучении

Протокол

Процесс адаптации из приложения А к ГОСТ Р ИСО/МЭК 12207 используют как дополнительный. В случае применения данный процесс должен иметь следующие выходные результаты (таблица В.4).

Таблица В.4 — Выходные результаты процесса адаптации

Процесс

Пункт ГОСТ Р ИСО/МЭК 12207

Выходные результаты

Тип выходного результата

Адаптация

А.4.1

Принятые решения по адаптации и их обоснования

Протокол

ПРИЛОЖЕНИЕ С (справочное). Модели жизненного цикла

ПРИЛОЖЕНИЕ С
(справочное)

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

— каскадная;

— инкрементная;

— эволюционная.

Каждая из указанных моделей может быть использована самостоятельно или скомбинирована с другими для создания гибридной модели жизненного цикла. При этом конкретную модель жизненного цикла следует выбирать так, чтобы процессы, работы и задачи из ГОСТ Р ИСО/МЭК 12207 были связаны между собой и определены их взаимосвязи с предшествующими процессами, работами (видами деятельности) и задачами (заданиями).

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

C.1 Каскадная модель

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

— установление потребностей пользователя;

— определение требований;

— проектирование системы;

— изготовление системы;

— испытание;

— корректировка;

— поставка или использование.

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

Рисунок С.1 — Пример каскадной модели

Рисунок С.1 — Пример каскадной модели

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

C.1.1 Недостатки

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

a) требования к объектам определены недостаточно четко;

b) система обычно слишком велика, чтобы все работы по ее созданию выполнять однократно;

c) предполагаемые скорые изменения в технологиях работ;

d) возможные текущие изменения требований к системе;

e) ограниченность ресурсов, например средств или персонала;

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

С.1.2 Преимущества

Преимущества использования данной модели:

a) однократное представление всех возможностей (характеристик) системы;

b) необходимость только единственной фазы перехода от старой системы к новой.

С.2 Инкрементная модель

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

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

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

Рисунок C.2 — Пример инкрементной модели

Возможный информационный поток

Т — требования;
Пр — проектирование;
П/Т — программирование и тестирование;
В/ПП — ввод в действие и обеспечение приемки

Рисунок C.2 — Пример инкрементной модели

С.2.1 Недостатки

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

а) требования к объектам определены недостаточно четко;

b) предусмотрены сразу все возможности системы;

c) предполагаемые скорые изменения в технологиях работ;

d) возможные текущие изменения требований к системе;

e) привлечение ресурсов (средств или персонала) на длительный период ограничено.

С.2.2 Преимущества

Преимущества использования данной модели:

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

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

c) естественное разделение системы на наращиваемые компоненты (инкременты);

d) возможности наращивания привлекаемого персонала и средств.

С.3 Эволюционная модель

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

Рисунок С.3 — Пример эволюционной модели

Информационный поток (уточненный)

Т — требования;
Пр — проект;
П/Т — программирование и тестирование;
В/ПП — ввод в действие и поддержка приемки

Рисунок С.3 — Пример эволюционной модели

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

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

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

Таблица C.1 — Пример разметки эволюционной разработки

Процесс/работа/ задача

Шкала времени

Реализация процесса

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

Архитектурный (эскизный) проект системы и программного средства

Технический проект программного средства

Программирова- ние и тестирование программного средства

Сборка и квали- фикационные испытания программного средства

Сборка и квали- фикационные испытания системы

Ввод в действие и обеспечение приемки пpoграммного средства

Процесс эксплуатации

Процесс сопровождения

Процесс доку- ментирования

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

Процесс обеспечения качества

Процесс верификации

Процесс аттестации

Процесс совместного анализа

Процесс аудита

Процесс решения проблемы

Управление процессом разработки

Управление процессом сопровождения

Процесс создания инфраструктуры

Процесс обучения

Процесс усовер- шенствования

С.3.1 Недостатки

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

а) все возможности системы предопределены изначально;

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

С.3.2 Преимущества

Преимущества использования данной модели:

a) изначальное определение возможностей системы;

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

c) естественное разделение системы на наращиваемые компоненты (инкременты);

d) привлечение персонала и средств по мере необходимости;

e) необходимая обратная связь с пользователем для полного понимания требований;

f) упрощение надзора за изменением технологии.

ПРИЛОЖЕНИЕ D (справочное). Примеры адаптации ГОСТ Р ИСО/МЭК 12207

ПРИЛОЖЕНИЕ D
(справочное)

D.1 Расширение области практического применения стандарта

Данный пример показывает, как ГОСТ Р ИСО/МЭК 12207 может быть практически внедрен в условиях договора путем введения новых работ, расширяющих область его применения (рисунок D.1). Пояснительный текст к данному примеру изложен подобно изложению ГОСТ Р ИСО/МЭК 12207.

Рисунок D.1 — Пример адаптации к практической деятельности

Рисунок D.1 — Пример адаптации к практической деятельности

D.1.1 Сценарий

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

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

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

D.1.2 Решения по адаптации (практическому применению)

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

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

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

— практическая деятельность по сборке.

В процесс эксплуатации внесена дополнительная работа — практическая деятельность по оценке.

D.1.3 Обоснование адаптации (практического применения)

ГОСТ Р ИСО/МЭК 12207 описывает процессы жизненного цикла программных средств в общем контексте системы. Хотя основные работы по системе и процесс верификации из ГОСТ Р ИСО/МЭК 12207 обеспечивают некоторую поддержку управления практической деятельностью, предполагают, что наиболее эффективные общие решения будут приняты с учетом конкретной практической деятельности. Это особенно важно при значительном изменении существующей практической деятельности, когда требуется тщательный надзор и контроль изменений в деятельности организации.

Четыре последующих пункта изложены подобно их изложению в ГОСТ Р ИСО/МЭК 12207. В данных пунктах уточнены задачи, которые должны быть выполнены в каждой из дополнительных работ.

D.1.4 Практическая деятельность по анализу требований

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

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

b) практическая деятельность должна быть оценена с учетом нижеперечисленных критериев, а результаты этих оценок должны быть документально оформлены:

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

— полноты исходных данных, полученных от работодателей и профсоюзов;

— осуществимости реализации;

— согласованности с нормативными требованиями;

— выполнимости аудита системы.

D.1.5 Практическая деятельность по проектированию и документированию

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

a) определить, в соответствии с интересами участников процесса, информационные потоки процесса, связанные с практической деятельностью;

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

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

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

D.1.6 Практическая деятельность по сборке

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

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

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

c) оценить данные документы, учебные и методические материалы по нижеперечисленным критериям, а результаты этих оценок документально оформить:

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

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

— соответствия инструкциям;

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

— эффективности устанавливаемых взаимосвязей;

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

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

D.1.7 Практическая деятельность по оценке

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

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

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

D.2 Пример макетирования небольшой системы

Данный пример показывает, как ГОСТ Р ИСО/МЭК 12207 может быть адаптирован для обеспечения макетирования небольшой системы (рисунок D.2).

Рисунок D.2 — Пример адаптации при макетировании

Рисунок D.2 — Пример адаптации при макетировании

D.2.1 Сценарий

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

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

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

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

D.2.2 Решения по адаптации (практическому применению)

Следующие стандартные работы (из процесса разработки по ГОСТ Р ИСО/МЭК 12207) должны быть объединены в работу, названную «Программирование программного средства с использованием 4GL»:

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

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

— сборка программного средства.

Данная единая работа должна быть использована, как показано на рисунке D.2, в котором соответствующие работы из ГОСТ Р ИСО/МЭК 12207 выделены и привязаны к макетированию для наглядной иллюстрации этого метода.

Определен фиксированный период проведения макетирования и предусмотрены любые дополнительные итерации.

D.2.3 Обоснование адаптации (практического применения)

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

Разработчик программного средства контролирует макетирование посредством:

— установления приоритетов требований;

— ужесточения ограничений временного интервала;

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

D.3 Пример ускоренной разработки приложения

В предыдущем примере введено понятие макетирования. В настоящем примере макетирование используют в модели жизненного цикла полной разработки системы, часто называемой «Ускоренная разработка приложения [(УРП) Rapid Application Development (RAD)]».

Примечание — Данный пример УРП выделен из метода динамической разработки системы [(МДРС) Dynamic Systems Development Method (DSDM)] для иллюстрации общего применения метода УРП (см. www.dsdm.org).

D.3.1 Сценарий

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

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

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

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

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

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

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

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

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

D.3.2 Решения по адаптации (практическому применению)

Принятая модель жизненного цикла УРП должна включать в себя следующие компоненты, показанные на рисунке D.3:

a) Осуществимость

Для определения того, будет ли проект удовлетворять критериям успешной реализации УРП.

Примечание — Данный компонент охвачен процессом разработки по 5.3.1 ГОСТ Р ИСО/МЭК 12207.

b) Анализ деловой деятельности

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

Примечание — Данный компонент охвачен процессом разработки по 5.3.1 ГОСТ Р ИСО/МЭК 12207.

c) Цикл функциональной модели

Должен быть разработан функциональный прототип (макет), сформулированы нефункциональные требования и стратегия реализации.

Примечание — Данный компонент, ранее не определенный и дополняющий процесс разработки, реализуют по 5.3.1 ГОСТ Р ИСО/МЭК 12207. Могут быть полезны и другие аспекты из ГОСТ Р ИСО/МЭК 12207, такие как верификация и обеспечение качества.

d) Цикл проектирования и создания

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

Примечание — Данный компонент предусматривает последовательную итерацию работ по 5.3.3-5.3.8 ГОСТ Р ИСО/МЭК 12207.

e) Реализация

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

Примечание — Данный компонент является комбинацией 5.3.12 ГОСТ Р ИСО/МЭК 12207 с отдельными аспектами процессов документирования и обучения.

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

Примечание — Для полной адаптации должна быть проведена взаимоувязка на уровне задач между методом УРП и требованиями ГОСТ Р ИСО/МЭК 12207.

Рисунок D.3 — Пример ускоренной разработки приложения (УРП)

Рисунок D.3 — Пример ускоренной разработки приложения (УРП)

Примечание — В квадратных скобках указаны пункты ГОСТ Р ИСО/МЭК 12207.

D.3.3 Обоснование адаптации (практического применения)

Метод УРП часто применяют при необходимости ускоренной разработки новых систем или реализации полной ее разработки.

D.4 Пример сопровождения

В данном примере показано, как можно путем добавления и удаления работ практически применить ГОСТ Р ИСО/МЭК 12207 в конкретной ситуации сопровождения. В пример также включен поясняющий текст, изложенный подобно изложению в ГОСТ Р ИСО/МЭК 12207.

D.4.1 Сценарий

Во время рассмотрения договора в процессе поставки организации по сопровождению могут пожелать внести дополнительные процессы и задачи, помимо установленных в ГОСТ Р ИСО/МЭК 12207. Например, в процессе заказа организацией по сопровождению может быть определена организация, отличная от исходного поставщика, а она пожелает провести подробное изучение заказанного программного продукта с точки зрения его сопровождения. На основе такого анализа данная организация может попросить перепроектировать программный продукт до начала процесса полного его сопровождения. Это может быть обеспечено путем введения в процесс заказа работы, названной «Программная инженерия и оценка качества». В процессе заказа важно обеспечить, чтобы соответствующие задачи были отражены в договоре и были выполнены при приемке и завершении заказа.

В случае принятия решения о перепроектировании программного продукта организация по сопровождению может отказаться от ряда работ процесса сопровождения. Обычно при принятии решения о перепроектировании жизненный цикл программного продукта продлевают сверх указанного в договоре. Поэтому может возникнуть необходимость в исключении работы по снятию с эксплуатации (см. 5.5.6 ГОСТ Р ИСО/МЭК 12207).

Дополнительное качество сопровождаемого продукта может быть обеспечено организацией по сопровождению путем внесения дополнительных задач в процесс совместного анализа (см. 6.6 ГОСТ Р ИСО/МЭК 12207). Организация по сопровождению может потребовать неформального рассмотрения своих анализов, предшествующих поставке программного продукта, в процессах его разработки и сопровождения.

Процесс усовершенствования может быть расширен при использовании показателей качества во всех процессах. В него может быть внесена дополнительная задача по выбору, анализу и интерпретации показателей для самого этого процесса (см. 7.3 ГОСТ Р ИСО/МЭК 12207).

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

Рисунок D.4 — Пример адаптации сопровождения

Рисунок D.4 — Пример адаптации сопровождения

D.4.2 Решения по адаптации (практическому применению)

В процесс заказа внесена работа, названная «Программная инженерия и оценка качества».

Из процесса сопровождения удалена работа по снятию программного средства с эксплуатации.

D.4.3 Обоснование адаптации (практического применения)

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

D.4.4 Программная инженерия и оценка качества

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

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

— объем (размер) программного продукта;

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

— сложность компонентов программного средства;

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

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

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

c) на основе установленного числа посторонних кодов и степени сложности исходных программ должно быть принято решение о перепроектировании программного продукта. При этом должны быть:

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

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

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

— переделан программный продукт в целом.

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

D.4.5 Снятие программного средства с эксплуатации

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

D.4.6 Равноправные анализы

В процесс совместного анализа должна быть внесена следующая задача: организация по сопровождению должна провести неформальные анализы во время работ по техническому проектированию программного средства, программированию и тестированию программного средства, сборке программного средства и квалификационным испытаниям программного средства из процесса разработки в соответствии с 6.6 ГОСТ Р ИСО/МЭК 12207.

D.4.7 Показатели (метрики) качества

В процессе усовершенствования (см. 7.3 ГОСТ Р ИСО/МЭК 12207) в работу по усовершенствованию процесса должна быть внесена следующая задача: в целях усовершенствования процесса сопровождения организация по сопровождению должна собрать, проанализировать и интерпретировать показатели (метрики) качества программного средства, связанные с процессом сопровождения.

Текст документа сверен по:
официальное издание
М.: ИПК Издательство стандартов, 2004

Руководство пользователя (англ. user guide или user manual), руководство по эксплуатации, руководство оператора — документ, назначение которого — предоставить людям помощь в использовании некоторой системы. Документ входит в состав технической документации на систему и, как правило, подготавливается техническим писателем.

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

Содержание

Типичное руководство пользователя содержит:

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

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

Стандарты

Структура и содержание документа Руководство пользователя автоматизированной системы регламентированы подразделом 3.4 документа РД 50-34.698-90. Структура и содержание документов Руководство оператора, Руководство программиста, Руководство системного программиста регламентированы ГОСТ 19.505-79, ГОСТ 19.504-79 и ГОСТ 19.503-79 соответственно.

  • Комплекс стандартов и руководящих документов на автоматизированные системы (ГОСТ 34)
    • РД 50-34.698-90 АВТОМАТИЗИРОВАННЫЕ СИСТЕМЫ. ТРЕБОВАНИЯ К СОДЕРЖАНИЮ ДОКУМЕНТОВ
  • Единая система конструкторской документации (ЕСКД) определяет документ «Руководство по эксплуатации» и другие документы:
    • ГОСТ 2.601-2006 Эксплуатационные документы
    • ГОСТ 2.610-2006 Правила выполнения эксплуатационных документов
  • Единая система программной документации (ЕСПД) определяет документы «Руководство оператора», «Руководство по техническому обслуживанию» и их структуру:
    • ГОСТ 19.101-77 Виды программ и программных документов
    • ГОСТ 19.105-78 Общие требования к программным документам
    • ГОСТ 19.505-79 Руководство оператора. Требования к содержанию и оформлению
    • ГОСТ 19.508-79 Руководство по техническому обслуживанию. Требования к содержанию и оформлению

См. также

  • Инструкция по эксплуатации

Ссылки

  • Руководство пользователя. Пример оформления по РД 50-34.698-90
  • Бесплатные инструкции по эксплуатации бытовой электроники
  • Как писать руководство пользователя? Часть I
  • Как писать руководство пользователя? Часть II
  • Сайт разработчиков технической документации (технических писателей)
  • MetaGuide — руководство для разработчиков технической документации к программному обеспечению
  • Типичные ошибки в справке пользователя для ПО и как их избежать
  • Руководства по ремонту автомобилей
  • Руководства по эксплуатации автомобильной техники
  • Руководства по эксплуатации бытовой техники

Лекция 1. Программная
инженерия. Классификация процессов.

План:

1. Основные
определения.

2. Методы,
средства и процессы программной инженерии.

3. Официальная
классификация процессов программной инженерии.

1. Основные определения.

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

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

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

Технология
разработки программного обеспечения
– это система инженерных
принципов для создания экономичного ПО с заданными характеристиками качества.

Близким по
смыслу к термину технология разработки ПО является широко используемый
в настоящее время термин программная инженерия (software engineering).

Любая технология
разработки ПО базируется на некоторой методологии или совокупности методологий.

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

В настоящее
время широкую известность приобрели два базовых принципа разработки ПС: модульный
и объектно-ориентированный.

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

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

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

Программный
модуль (software unit)
– отдельно компилируемая часть программного
кода (программы).

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

Система (system)

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

Нотация (notation)

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

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

2. Методы, средства
и процессы программной инженерии.

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

Методы обеспечивают
решение широкого спектра технических задач; например, назовем следующие задачи разработки:

планирование и оценка программного проекта;

анализ требований к компьютерной системе в целом и к программному
обеспечению в частности

проектирование структур программ (и структур данных), входящих
в состав ПО;

конструирование программного текста (другие названия: кодирование,
программирование, реализация);

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

сопровождение ПО, уже используемого заказчика.

Средства (утилиты)
программной инженерии обеспечивают автоматизированную или автоматическую поддержку
методов. В целях современного применения утилиты могут объединяться в системы автоматизированной
разработки ПО. Такие системы принято называть САSЕ-системами. Аббревиатура CASE
расшифровывается как Computer Ai
ded Software Engineering
(программная инженерия с компьютерной поддержкой).

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

порядок применения методов и утилит;

формирование отчетов, форм по соответствующим требованиям;

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

формирование «вex», по которым руководители оценивают прогресс.

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

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

3. Официальная классификация
процессов программной инженерии.

Классификацию
процессов программной инженерии задают международный стандарт
ISO/IEC 12207-95
«
Information Technology Software Life Cycle Processes» и eгo российский
аналог ГОСТ Р ИСО/МЭК 12207-99.

В этих стандартах
процессы привязаны к основному понятию программной инженерии — жизненному циклу
программного обеспечения (ЖЦ ПО). В авторитетном словаре программной инженерии IEEE
Std 610.12-90 «IEEE
Standart Glossary
of Software Engineeri
ng Terminologу» записано: жизненный
цикл программного обеспечения определяется как период времени, который начинается
с момента принятия решения о необходимости создания ПО и заканчивается в момент
его полного изъятия из эксплуатации.

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

План:

1. Жизненный
цикл ПО.

2. Основные
процессы жизненного цикла.

3. Вспомогательные
процессы жизненного цикла.

4. Организационные
процессы жизненного цикла.

5. Модель «классический
жизненный цикл»

6. Макетирование

1. Жизненный цикл.

В настоящее
время базовым стандартом в области ЖЦ ПС и систем является международный стандарт
ISO/IEC 12207:2008 – Системная и программ
ная инженерия
– Процессы жизненного цикла программных средств
.

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

Процессы ЖЦ
ПС
делятся
на три
группы:

основные;

вспомогательные;

организационные.

2. Основные процессы
жизненного цикла.

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

заказ;

поставка;

разработка;

эксплуатация;

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

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

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

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

1) подготовка
процесса разработки;

2) анализ требований
к системе;

3) проектирование
системной архитектуры;

4) анализ требований
к программным средствам;

5) проектирование
программной архитектуры;

6) техническое
проектирование программных средств;

7) программирование
и тестирование программных средств;

8) сборка программных
средств;

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

10) сборка
системы;

11) квалификационные
испытания системы;

12) ввод в
действие программных средств;

13) обеспечение
приемки программных средств.

В приведенной
последовательности различают два вида работ: системные и программные.

Системные работы
начинают
и завершают процесс разработки. К ним относятся работы с номерами 2, 3, 10, 11.

Работы процесса
разработки с 4-й (анализ требований к программным средствам) по 9-ю (квалификационные
испытания программных средств) представляют собой программные работы. Они
выполняются над ПС, выделенными из системы.

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

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

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

3. Вспомогательные
процессы жизненного цикла.

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

Вспомогательные
процессы вызываются другими процессами ЖЦ.

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

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

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

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

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

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

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

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

4. Организационные
процессы жизненного цикла.

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

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

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

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

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

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

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

5. Модель «классический
жизненный цикл»

Старейшей 
моделью процесса разработки ПО является классический жизненный цикл (автор Уинстон
Ройс, 1970).

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

Рисунок 1 —
Классический жизненный цикл разработки ПО

Охарактеризуем содержание основных этапов.

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

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

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

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

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

Проектирование состоит и создании представлений:

архитектуры ПО;

структурной и поведенческой организации частей архитектуры
ПО;

входного и выходного интерфейса частей архитектуры (входных
и выходных форм данных).

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

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

крупномасштабную организацию структурных элементов и топологию
их связей;

поведение, описываемое кооперацией этих элементов;

важные механизмы, доступные во всей системе;

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

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

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

Конструирование — этот этап
включает в себя действия кодирования и тестирования.

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

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

Развертывание — последний
этап классического жизненного цикла нацелен на два действия: поставку разработанного
продукта заказчику и сопровождение процесса эксплуатации этого продукта.

Сопровождение — это внесение
изменений в эксплуатируемое ПО. Цели изменений:

исправление ошибок;

адаптация к изменениям внешней для ПО среды:

усовершенствование ПО по требованиям заказчика.

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

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

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

Недостатки
классического жизненного цикла
:

1) реальные
проекты часто требуют отклонения от стандартной последовательности шагов;

2) цикл основан
на точной формулировке исходных требований к ПО (реально в начале проекта требования
заказчика определены лишь частично);

3) результаты
проекта доступны заказчику только в конце работы.

6. Макетирование

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

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

Макетирование
(прототипирование) ­ это процесс создания модели требуемого программного продукта.

Модель может
принимать одну из трех форм:

1) бумажный
макет или макет на основе ПК (изображает или рисует человеко-машинный диалог);

2) работающий
макет (выполняет некоторую часть требуемых функций);

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

Как показано
на рис. 2, макетирование основывается на многократном повторении итераций, в которых
участвуют заказчик и разработчик.

Рисунок 2 —
Макетирование

Последовательность
действий при макетировании представлена на рис. 3.

Рисунок 3 —
Последовательность действий при макетировании

Макетирование
начинается со сбора и уточнения требований к создаваемому ПО. Разработчик и заказчик
встречаются и определяют все цели ПО, устанавливают, какие требования известны,
а какие предстоит доопределить.

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

Быстрое проектирование
приводит к построению макета.

Макет оценивается
заказчиком и используется для уточнения требований к ПО.

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

Достоинство
макетирования
:
обеспечивает определение полных требований к ПО.

Недостатки
макетирования
:

заказчик может принять макет за продукт;

разработчик может принять макет за продукт.

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

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

Лекция 3. Стратегии разработки
программного обеспечения.

План:

1. Базовые
стратегии разработки ПО

2. Каскадная
стратегия разработки

3. Инкрементная
стратегия разработки

4. Эволюционная
стратегия разработки

1. Базовые стратегии
разработки ПО

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

Очевидно, что недостатками данной
модели являются:

неструктурированность процесса разработки ПС;

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

сложность управления и планирования проекта;

большая длительность и стоимость разработки;

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

высокий уровень рисков проекта.

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

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

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

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

Характеристики стратегий разработки
ПО в соответствии с требованиями стандартов IEEE/EIA 12207.2-1997 и ГОСТ Р ИСО/МЭК
ТО 15271-2002

Информационная технология – Руководство по применению ГОСТ Р ИСО/МЭК 12207 (Процессы
жизненного цикла программных средств
)приведены в табл. 1.

Таблица 1.
Характеристики стратегий разработки

Стратегия
разработки

В начале
процесса определены все требования?

Множество
циклов разработки?

Промежуточное
ПО распространяется?

Однократный проход

Да

Нет

Нет

Инкрементная (запланированное
улучшение продукта)

Да

Да

Может быть

Эволюционная

Нет

Да

Да

2. Каскадная стратегия разработки

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

Представителями моделей, реализующих
каскадную стратегию, являются каскадная и V-образная модели.

Рисунок 1 – Каскадная стратегия

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

1) стабильность требований в течение
ЖЦ разработки;

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

3) простота планирования, контроля и
управления проектом;

4) доступность для понимания заказчиками.

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

1) сложность полного формулирования
требований в начале процесса разработки и невозможность их динамического изменения
на протяжении ЖЦ;

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

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

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

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

1) при разработке проектов с четкими,
неизменяемыми в течение ЖЦ требованиями и понятной реализацией;

2) при разработке проектов невысокой
сложности, например:

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

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

перенос уже существующего продукта на новую платформу;

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

3. Инкрементная стратегия разработки

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

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

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

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

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

Рисунок 2 – Инкрементная стратегия

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

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

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

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

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

1) возможность получения функционального
продукта после реализации каждого инкремента;

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

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

4) снижение рисков по сравнению с каскадной
стратегией;

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

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

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

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

3) сложность планирования и распределения
работ;

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

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

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

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

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

4) при разработке проектов с низкой
или средней степенью рисков;

5) при выполнении
проекта с применением новых технологий.

4. Эволюционная стратегия разработки

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

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

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

Рисунок 3 – Эволюционная (спиральная) стратегия

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

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

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

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

1) возможность уточнения и внесения
новых требований в процессе разработки;

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

3) возможность
управления рисками;

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

5) реализация преимуществ каскадной
и инкрементной стратегий.

К недостаткам эволюционной стратегии,
проявляемым при ее несоответствующем выборе, следует отнести:

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

2) сложность планирования и управления
проектом;

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

4) необходимость в мощных инструментальных
средствах и методах прототипирования;

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

Очевидно, что ряд недостатков эволюционной
стратегии (см. недостатки 3 – 5) характерны и для инкрементной стратегии.

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

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

2) при разработке сложных проектов,
в том числе:

больших долгосрочных проектов;

проектов по созданию новых, не имеющих аналогов ПС или
систем;

проектов со средней и высокой степенью рисков;

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

3) при разработке проектов, использующих
новые технологии.

Лекция 4. Модели качества
разработки процессов.

План:

1. Модели качества
разработки процессов

2. Capability
Maturity Model

3. SPICE

1. Модели качества
разработки процессов.

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

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

Однако время не стоит на месте, и методики,
положенные в основу стандартов серии ISO 9000, постепенно устаревают. Выделим наиболее
существенные недостатки:

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

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

отсутствие в стандарте механизмов, способствующих улучшению
существующих процессов.

Перечисленные проблемы заставили экспертов
разрабатывать более совершенные решения в области обеспечения качества, что привело
к созданию в начале 90-х годов целого ряда новых стандартов и методологий. В данной
статье мы опишем два наиболее удачных и содержательных стандарта – Capability Maturity
Model (CMM) и ISO/IEC 15504 (SPICE). Существуют и другие достаточно развитые методологии,
но, к сожалению, невозможно осветить все перспективные направления данной области
в рамках одной статьи. Поэтому мы ограничимся упоминанием того, что за рамками данного
обзора остались такие стандарты, как Bootstrap, во многом схожий с рассматриваемыми
станадртами CMM и SPICE, Trillium, ориентированный на разработку продуктов в области
телекоммуникаций и ISO 12207, посвященный жизненному циклу программного обеспечения.

2. Capability Maturity Model

Официальная
история CMM (Capability Maturity Model, что обычно переводят
как «модель зрелости процесса разработки ПО», хотя более верным по смыслу
был бы перевод «модель совершенствования возможностей») начинается в 1991
году, когда американский институт SEI (Software Engineering Institute – Институт
системного программирования при университете Карнеги-Меллон) опубликовал первую
версию этого стандарта.

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

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

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

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

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

Рисунок 1 –
Модель зрелости
CMM

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

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

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

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

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

При сертификации
проводится оценка соответствия всех ключевых областей по 10-балльной шкале. Для
успешной квалификации данной ключевой области необходимо набрать не менее 6 баллов.
Оценка ключевой области производится по следующим показателям:

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

2.    Насколько
широко данная область применяется в организации (например, оценке в 4 балла соответствует
фрагментарное применение).

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

В принципе,
можно сертифицировать только один процесс или подразделение организации, например,
подразделение разработки программного обеспечения компании IBM сертифицировано на
пятый уровень. Кстати, в мире существует совсем немного компаний, которые могут
похвастаться наличием у них пятого уровня CMM хотя бы в одном из подразделений –
таких всего около 50. С другой стороны, насчитывается несколько тысяч компаний,
сертифицированных по 3 или 4 уровню, то есть существует колоссальный разрыв между
оптимизированным уровнем зрелости и предыдущими уровнями. Однако еще больший разрыв
наблюдается между количеством организаций начального уровня и числом их более продвинутых
собратьев – по некоторым оценкам, свыше 70% всех компаний-разработчиков находится
на первом уровне CMM [2].

Интересен
вопрос о соотношении уровней CMM со стандартом ISO 9001: на каком уровне CMM должна
находиться организация, чтобы получить сертификат соответствия ISO 9001? На первый
взгляд, для этого необходимо иметь как минимум 3 или 4 уровень CMM. Тем не менее,
существуют примеры организаций 1-го уровня, имеющих сертификат ISO 9001. Одной из
причин для возникновения подобных несуразиц является высокий уровень абстракции
ISO 9001 и связанная с этим свобода его интерпретации аудитором. Иногда, как это
ни странно, аудиторам не хватает элементарного знакомства с реальной практикой разработки
программ. Более подробный отчет о соотношении ISO 9001 и CMM приведен в статье.

Некоторые
важные вопросы, например, отбор, повышение квалификации и сохранение компетентных
сотрудников, остались за рамками CMM. Тем не менее, эти вопросы исключительно важны,
ибо как замечено «и 20-30 лет назад было известно, что два программиста, сидящих
за соседними столами и получающих примерно одинаковую зарплату, могут писать программы,
отличающиеся по скорости счета, скажем, в 10 раз». Кстати, ситуация в России
еще сложнее по сравнению с западными странами – российские программисты могут не
только перейти на другую работу, но и переехать в другую страну с более высоким
уровнем зарплаты!

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

Кроме People
CMM, возникло еще несколько моделей, дополняющих CMM, например, в приобретении ПО
или разработке крупных систем. В целях полной интеграции этих моделей и снижения
общих затрат по их внедрению, был предпринят проект CMM Integration (ради его выполнения
в 1998 году был даже отменен выпуск CMM версии 2.0).

К сожалению,
использование CMM затрудняют следующие проблемы:

·  стандарт
CMM является собственностью Software Engineering Institute и не является общедоступным
(в частности, дальнейшая разработка стандарта ведется самим институтом, без заметного
влияния остальной части программистского сообщества);

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

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

С некоторыми
свободно распространяемыми материалами по CMM можно познакомиться на сайте Software
Engineering Institute: http://www.sei.cmu.edu/cmm.

3. SPICE

В 1991
году Международная организация по стандартизации инициировала работу по созданию
единого
стандарта
оценки программных процессов. Стандарт получил имя SPICE (сокращение от Software
Process Improvement and Capability dEtermination, определение
возможностей и улучшение процесса создания программного обеспечения). Официально
стандарт называется «ISO/IEC 15504: Information Technology — Software Process
Assessment» и на данный момент существует в качестве
рабочей версии, последний выпуск которой состоялся в мае 1998 года.

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

Рисунок
2 — Предшественники стандарта SPICE

Итак, стандарт
SPICE унаследовал многие черты более ранних стандартов, в том числе и уже упоминавшихся
ISO 9001 и CMM. Для этого пришлось прибегнуть к повышению уровня детализации стандарта.
Следствием такого основательного подхода является большой объем стандарта: документация
к нему содержит около 500 страниц!

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

Таблица
1 — Уровни способностей процесса в стандарте SPICE

Уровни

Название

Уровень 0

Процесс не выполняется

Уровень 1

Выполняемый процесс

1.1

Измерение производительности процесса

Уровень 2

Управляемый процесс

2.1

Управление производительностью

2.2

Управление созданием продуктов

Уровень 3

Установленный процесс

3.1

Документирование процесса

3.2

Отслеживание ресурсов процесса

Уровень 4

Предсказуемый процесс

4.1

Измерение процесса

4.2

Управление процессом

Уровень 5

Оптимизирующий процесс

5.1

Изменение процесса

5.2

Постоянное совершенствование

Таким образом,
процессы в модели SPICE могут быть представлены следующим образом:

Рисунок
3 — Упрощенная модель оценки процессов в стандарте SPICE

Здесь Pn
обозначает процессы, а CL (Capability Levels) обозначает уровни способностей этих
процессов.

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

Во время
оценки и улучшения качества процессов выполняются следующие задачи (см. рисунок
4):

Рисунок
4
Основные элементы стандарта SPICE

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

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

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

Скажем
несколько слов о структуре документации по стандарту SPICE. Набор документов по
SPICE состоит из 9 частей. Первая часть «Введение и основные концепции»
и девятая часть «Словарь» носят чисто информативный характер. Самым важным
элементом SPICE является оценка процессов, поэтому ей посвящена наибольшая часть
документов, а именно части со второй по шестую. Например, вторая часть стандарта
содержит так называемую «эталонную модель» (reference model), которая
описывает процессы. Практически, это модель процессов из ISO 12297, хотя, к сожалению,
эти модели не полностью идентичны. Результаты оценки процессов с помощью SPICE выглядят
достаточно сложно и потому требуют некоторого упрощения для понимания неподготовленным
человеком (например, такое упрощение было проделано при создании рисунка 3).

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

Одним из
важных достоинств SPICE является его открытость и свободное распространение. В отличие
от большинства прочих стандартов, полный текст SPICE можно получить на официальном
сайте SPICE: http://www.sqi.gu.edu.au/spice

В таблице
2 кратко сформулированы преимущества SPICE по сравнению с ISO 9001.

Таблица
2 — Сравнение стандартов SPICE и ISO 9001

SPICE

ISO 9001

Объемный и подробный документ

Краткий документ

Детальная модель

Абстрактная модель

Улучшение процесса и определение возможностей

Только сертификация

Шесть уровней возможностей процессов

Сертификация/отказ

Требования к оценке процесса, руководство
по применению

Только модель

Дополняет ISO 9001

Может быть детализирован с помощью
SPICE

SPICE предоставляет
более полный набор средств по обеспечению качества и улучшению процессов, чем ISO
9001. Поэтому для обеспечения качества процессов разработки ПО мы рекомендуем использовать
именно SPICE. Это поможет организации заметно улучшить существующие процессы, а
затем при необходимости получить и сертификат ISO 9001. Накопленный опыт решения
проблемы качества по такой схеме отражен в статье [7] (в частности, в ней сформулирован
набор минимальных требований к различным процессам в организации согласно модели
SPICE, достаточный для получения сертификата ISO 9001).

Использовать
SPICE можно и в небольших компаниях – об этом свидетельствуют результаты работы
проекта SPIRE, в рамках которого проводилось внедрение процессов улучшения качества
в малых (менее 50 человек) компаниях из различных стран Европы. Как показал этот
опыт, и при небольших денежных вложениях в маленьких компаниях можно добиться существенного
увеличения производительности труда и улучшения качества произведенных продуктов.
Результаты исследований, проведенных в рамках проекта SPIRE, можно найти по адресу
http://www.cse.dcu.ie/spire

В связи
со своей открытостью, стандарт SPICE популярен и по нему существует много свободно
доступных материалов. Например, на официальном сайте SPICE любая организация может
зарегистрироваться для участия в SPICE Trials (пробных применениях). На сайте группы
пользователей SPICE (см.http://www.iese.fhg.de/SPICE/)
собрано большое количество информации о самом стандарте, доступных ресурсах и его
применениях на практике. С августа 1999 года выходит журнал SPICE.World, целиком
посвященный SPICE (существует электронная версия этого журнала – см. http://www.spiceworld.hm).

В России
стандарт SPICE пока еще делает только самые первые шаги. В октябре 1997 года в Санкт-Петербурге
состоялся первый семинар, посвященный SPICE. Его организатором выступили финские
компании SEC Oy и STTF Oy. С тех пор семинары по SPICE в Санкт-Петербурге проводятся
этими компаниями не реже двух раз в год. Ближайший семинар с участием авторов стандарта
SPICE намечен на декабрь 1999 года (см. http://www2.sec.fi/russia).

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

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

Лекция 5. Основные понятия
руководством проекта. Этапы руководства.

План:

1. Основные
понятия руководства проектом

2. Процессы
управления:

3. Планирование
проекта

4. Создание
команды.

5. Роли в группе
при разработке ПО

6. График работ

1. Основные понятия
руководства проектом

Руководство
программным проектом является защитной деятельностью программной инженерии, пронизывающей
все виды основной деятельности — подготовку, планирование, моделирование, конструирование
и развертывание (рис. 1). Мало тoгo, именно руководство программным проектом интегрирует
в жизненный цикл ПО все остальные виды защитной деятельности.

Рисунок 1 –
Руководство в процессе разработки ПО

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

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

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

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

2. Процессы управления:

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

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

Оценивание стоимости проекта.

Контроль за ходом выполнения работ. Менеджер должен
постоянно отслеживать ход реализации проекта и сравнивать фактические и плановые
показатели выполнения работ с их стоимостью.

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

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

3. Планирование проекта

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

Рисунок
2 —
Алгоритм планирования проекта

Таблица 2 – Планирование проекта

План

Описание

План качества

Описывает стандарты и мероприятия по поддержке качества разрабатываемого
ПО

План аттестации

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

План управления конфигурацией

Описывает структуру и процессы управления конфигурацией

План сопровождения ПО

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

План по управлению персоналом

Описывает мероприятия, направленные на повышение квалификации членов
команды разработчиков

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

Рисунок 3 — Контрольные отметки

4. Создание команды.

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

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

Люди
с самоориентацией на наилучший результат смогут довести дело до конца.

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

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

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

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

Сплоченность команды

Члены
сплоченной команды привержены ее интересам больше, чем своим собственным.

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

 Хорошо
сплоченная команда имеет ряд преимуществ:

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

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

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

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

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

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

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

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

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

1.   
Размер группы. Чем больше группа, тем труднее обеспечить постоянное
общение между ее членами.

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

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

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

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

5. Роли в группе при
разработке ПО

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

Таблица
3 – Факторы выбора сотрудников

Фактор

Пояснение

Знания об области применения
ПО

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

Опыт работы на многих
компьютерных платформах

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

Образование

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

Коммуникабельность

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

Способность адаптироваться

Этот фактор также может
показать способность к обучению.

Жизненная позиция

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

Решение
о назначении нового сотрудника по проекту основывается на трех видах информации:

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

    
Информация, получаемая при интервьюировании кандидата.

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

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

В
рамках курса «Технология разработки программного обеспечения» выделены следующие
роли в группе по разработке ПО:

    
Руководитель – общее руководство проектом, написание документации,
общение с заказчиком ПО

    
Системный аналитик – разработка требований (составление технического
задания, проекта программного обеспечения)

    
Тестер – составление плана тестирования и аттестации готового ПО (продукта),
составление сценария тестирования, базовый пример, проведение мероприятий по плану
тестирования

    
Разработчик – моделирование компонент программного обеспечения, кодирование

Рисунок
4 – Структура группы разработчиков

6. График работ

План
проекта:

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

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

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

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

5.   
Разбиение работ на этапы. Процесс
реализации проекта разбивается на отдельные процессы, определяются этапы выполнения
проекта, приводится описание результатов («выходов») каждого этапа и контрольные
отметки.

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

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

Рисунок
5 ‑ График работ

 

Рисунок
6 – Сетевая диаграмма

Таблица
4 – Описание сетевой диаграммы

Этап

Длительность
(дни)

Зависимость

Этап

Длительность
(дни)

Зависимость

Т1

8

Т7

20

Т1 (М1)

Т2

15

Т8

25

Т4 (М5)

Т3

15

Т1 (М1)

Т9

15

Т3, Т6
(М4)

Т4

10

Т10

15

Т5, Т7
(М7)

Т5

10

Т2, Т4
(М2)

Т11

7

Т9 (М6)

Т6

5

Т1, Т2
(М3)

Т12

10

Т11 (М8)

Рисунок
7 – Временная диаграмма

Рисунок
8 – Диаграмма распределения исполнителей по этапам

Таблица
5 – Распределение исполнителей

Этап

Исполнитель

Этап

Исполнитель

Т1

Джейн

Т7

Джим

Т2

Анна

Т8

Фред

Т3

Джейн

Т9

Джейн

Т4

Фред

Т10

Анна

Т5

Мэри

Т11

Фред

Т6

Анна

Т12

Фред

Лекция 6. Формирование
и анализ требований.

План:

1. Определение
понятия требования

2. Разработка
требований

3. Классификация
требований к программному изделию

4. Формирование
и анализ требований

5. Опорные
точки зрения

6. Аттестация
требований

7. Пользовательские
и системные требования

1. Определение понятия
требования

Л.Новиков в
русской редакции нотации RUP приводит следующее определение: «Требование —
это условие или возможность, которой должна соответствовать система».

В IEEE Standard Glossary
of Software Engineering Terminology (1990)
данное понятие трактуется шире. Требование
— это:

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

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

3. документированное
представление условий или возможностей для пунктов 1 и 2.

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

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

2.
Разработка требований

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

анализ технической осуществимости создания системы,

формирование и анализ требований,

специфицирование требований и создание соответствующей
документации,

аттестация этих требований.

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

http://unesco.kemsu.ru/study_work/method/po/UMK/lab_pract/lab02.1.jpg

Рисунок 1 — Процесс разработки требований

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

3. Классификация требований к программному
изделию

Требования к ПИ систематизируются
в соответствии с классификацией, содержат следующие категории:

1.    Функциональные
требования

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

2.    Эксплуатационные
требования

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

Например, количественные
требования записывать: «время ответа должно быть не более х сек»

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

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

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

4.    Операционные
требования

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

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

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

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

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

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

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

8.    Требования
к качеству

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

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

9.    Требования
надежности

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

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

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

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

12.    Требования
к документации
дополняют требования, содержащиеся в стандартах на документацию.

4.
Формирование и анализ требований

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

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

http://unesco.kemsu.ru/study_work/method/po/UMK/lab_pract/lab02.2.jpg

Рисунок 2 — Процесс
формирования и анализа требований

Процесс формирования
и анализа требований проходит через ряд этапов.

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

2.    Сбор требований.
Это
процесс взаимодействия с лицами, формирующими требования. Во время этого процесса
продолжается анализ предметной области.

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

4.    Разрешение
противоречий.
Без сомнения, требования многочисленных лиц, занятых в
процессе формирования требований, будут противоречивыми. На этом этапе оп­ределяются
и разрешаются противоречия различного рода.

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

6.    Проверка требований.
На
этом этапе определяется их полнота, последовательность и непротиворечивость.

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

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

5.
Опорные точки зрения

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

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

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

2.   
Как структура представлений. В этом
случае точки зрения рассматриваются как особая часть модели системы. Например, на
основе различных точек зрения могут разрабатываться модели «сущность-связь»,
модели конечного авто­мата и т.д.

3.   
Как получатели системных сервисов. В этом
случае точки зрения являются внешними (относительно системы) получателями системных
сервисов. Точки зре­ния помогают определить данные, необходимые для выполнения системных
сер­висов или их управления.

Наиболее эффективным
подходом к анализу таких систем является использование внешних опорных точек зрения.
На основе этого подхода разработан метод VORD (Viewpoint-Oriented Requirements Definition
— определение требований на основе точек зрения) для формирования и анали­за требований.
Основные этапы метода VORD показаны на рис. 3.:

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

2.   
Структурирование точек зрения — создание иерархии сгруппированных точек
зре­ния. Общесистемные сервисы предоставляются более высоким уровням иерархии и
наследуются точками зрения низшего уровня.

3.   
Документирование опорных точек зрения, которое заключается в точном
описании идентифицированных точек зрения и сервисов.

4.   
Отображение
системы точек зрения, которая показывает системные объекты, оп­ределенные на основе
информации, заключенной в опорных точках зрения.

 http://unesco.kemsu.ru/study_work/method/po/UMK/lab_pract/lab02.3.gif

Рисунок 3 — Метод VORD

6.
Аттестация требований

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

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

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

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

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

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

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

1.    Обзор требований.
Требования
системно анализируются рецензентами.

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

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

4.    Автоматизированный
анализ непротиворечивости.
Если требования представлены в виде структурных
или формальных системных моделей, можно использовать инструментальные
CASE-средства для
проверки непротиворечивости моделей. Для автоматизированной проверки непротиворечивости
необходимо построить базу данных требований и затем проверить все требования в этой
базе данных. Анализатор требований готовит отчет обо всех обна­руженных противоречиях.

7. Пользовательские и системные
требования

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

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

Далее составляются
системные требования. Они включат в себя:

1.    Требования
к архитектуре системы. Например, число и размещение хранилищ и серверов приложений.

2.    Требования
к параметрам оборудования. Например, частота  процессоров серверов и клиентов, объём
хранилищ, размер оперативной и видео памяти, пропускная способность канала и т.д.

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

4.    Требования
к программному интерфейсу.

5.    Требования
к структуре системы. Например, Масштабируемость, распределённость, модульность,
открытость.

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

      распределенность
— система должна поддерживать распределённое хранение данных.

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

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

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

Лекция 7. Спецификация
требований

План:

1. Спецификация
требований ПО (
Software Requirement Specification SRS)

2. Алгоритм
создания спецификации требований

1. Спецификация требований ПО (Software Requirement Specification SRS)

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

Для чего нужна
Спецификация?:

     
Можно получить точную оценку стоимости, рисков и затрат времени

     
Клиент сможет более четко сформировать собственное видение проекта

     
Заказчик и Исполнитель будут иметь одинаковое представление о продукте

     
Она поможет выявить оптимальный набор функций

     
Она служит основой для формирования другой технической документации

     
Процесс разработки будет оптимизирован – минимизированы затраты времени

     
Никакого дублирования задач

     
Позволяет структурировать проблемы, чтобы решать их проще и быстрей

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

Проблемы, возникающие
при разработке проекта без Спецификации

     
Невозможно будет получить точную оценку стоимости, рисков и затрат
времени

     
Заказчик и Исполнитель могут иметь абсолютно разное представление о
продукте

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

     
Будет очень сложно написать руководство для пользователей

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

2. Алгоритм создания спецификации требований

Рисунок
1 – Алгоритм создания спефикации

 

Шаг 1: Исходная документация

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

Шаг 2: Первичная Спецификация

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

1. Введение. Обзор содержимого спецификации.

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

1.2 Масштаб проекта – описание того, что приложение
должно или не должно делать.

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

1.4 Организационное построение спецификации.

2. Общее описание.

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

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

2.2 Функции продукта — просто и ясно составленное краткое
изложение функционала.

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

2.4 Общие ограничения содержат информацию о рамках и
стандартах, которые ограничивают опции разработчика при создании системы.

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

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

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

4. Специальные требования

4.1 Схема информационных потоков отображает входные
и выходные данные, их источники, пункты назначения и хранения.

Flowchart

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

SRS use cases

5. Модели (Mockups). Еще один отличный способ начать работу над проектом. Они помогут
сформировать представление о базовой структуре и пользовательском интерфейсе.

mockups

Шаг 3: Ознакомление клиента со Спецификацией

Документ передается клиенту. Ознакомившись с содержанием,
он сможет сформировать целостную картину и определиться с деталями. Имеющаяся версия
спецификация либо будет одобрена, либо отправлена на доработку.

Шаг 4: Уточнение

В Спецификацию будут вноситься модификации до тех пор,
пока она не будет полностью соответствовать всем требованиям заказчика.

Шаг 5. Pазбивка на этапы

Менеджер проекта разделит его на этапы. Процесс разработки
будет строиться на основе Спецификации, написанной ДЛЯ клиента ВМЕСТЕ с ним.

Лекция 8. Структурное
проектирование

План:

1. Структурное
программирование

2. Основные
положения структурного программирования

3. Реализация
основ структурного программирования в языках программирования

4. Графическое
представление структурированных схем алгоритмов

1. Структурное программирование

В 70-х гг. ХХ в. возник новый подход
к разработке алгоритмов и программ, который получил название структурного программирования.
Одним из первых инициаторов структурного программирования был профессор Э. Дейкстра.
В 1965 г. он высказал предположение, что оператор GoTo (оператор безусловного перехода)
вообще может быть исключён из языков программирования. По мнению Дейкстры, «квалификация
программиста обратно пропорциональна числу операторов GoTo в его программах».

Достоинства структурного
программирования по сравнению с интуитивным неструктурным программированием:

1) уменьшение трудностей тестирования
программ;

2) повышение производительности труда
программистов;

3) повышение ясности и читабельности
программ, что упрощает их сопровождение;

4) повышение эффективности объектного
кода программ как с точки зрения времени их выполнения, так и с точки зрения необходимых
затрат памяти.

2. Основные положения структурного
программирования

К концепциям структурного программирования
относятся:

     
отказ
от использования оператора безусловного перехода (GoTo);

     
применение
фиксированного набора управляющих конструкций;

     
использование
метода нисходящего проектирования.

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

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

1) функционального блока;

2) конструкции принятия двоичного (дихотомического)
решения;

3) конструкции обобщенного цикла.

Функциональный блок

это отдельный вычислительный оператор или любая последовательность вычислений с
единственным входом и единственным выходом. Изображается с помощью символа «Процесс».

Конструкция принятия
двоичного (дихотомического) решения
называется также конструкцией If-Then-Else
(если-то-иначе), разветвлением или ветвлением. Это структура, обеспечивающая выбор
между двумя альтернативными путями вычислительного процесса в зависимости от выполнения
некоторого условия. Изображается с помощью символов «Решение» и «Процесс».

Конструкция обобщенного
цикла

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

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

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

Рисунок 1 — Конструкция следования

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

Таким образом, всякая программа, состоящая
из функциональных блоков, операторов цикла с предусловием и операторов If-Then-Else,
поддаётся последовательному преобразованию к единственному функциональному блоку.
Эта последовательность преобразований может быть использована как средство понимания
программы, подход к доказательству ее правильности и структури
рованности. Обратная
последовательность преобразований может быть использована в процессе проектирования
алгоритма (программы) по методу
нисходящего проектирования – алгоритм
(программа) разрабатывается, исходя из единственного функционального блока, который
постепенно детализируется в сложную структуру основных элементов.

3. Реализация основ структурного
программирования в языках программирования

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

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

2) вложенные на произвольную глубину
операторы If-Then-Else;

3) циклические операторы (цикл с предусловием).

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

1) дополнительные конструкции организации
цикла:

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

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

2) использование оператора Case как
расширения конструкции If-Then-Else; в структурном программировании конструкция
Case

3) подпрограммы с несколькими входами
или несколькими выходами (например один выход нормальный, второй – по ошибке), если
это допускается отраслевыми стандартами или стандартами предприятия;

4) применение
оператора GoTo с жёсткими ограничениями (например, передача управления не далее
чем на десять операторов или только вперёд по программе в соответствии с положениями
отраслевых стандартов или стандартов предприятия).

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

4. Графическое
представление структурированных схем алгоритмов

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

Метод Дамке

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

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

2. Конструкция If-Then-Else.
Элементы с выполняемыми действиями находятся справа от символа «Решение». Вход и
выход из конструкции находятся соответственно сверху и снизу символа «Решение».

3. Конструкция цикла с предусловием
(«Пока»). В шестиугольнике записывается условие входа в цикл. Для повышения
понятности алгоритма перед условием может быть записано слово «Пока» или соответствующее
служебное слово оператора цикла с предусловием целевого языка программирования (например
While в языке Паскаль).

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

Рисунок 2 —
Представление конструкции If-Then-Else по методу Дамке

Рисунок 3 —
Представление цикла с предусловием по методу Дамке

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

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

Конструкция цикла с
постусловием
(«До»)
представляется в соответствии с рис. 4.10. В шестиугольнике записывается условие
выхода из цикла. Перед условием может быть помещена фраза «До тех пор, пока не»
или соответствующее служебное слово оператора цикла с постусловием целевого языка
программирования (например Until в языке Паскаль).

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

Рисунок 4 —
Представление цикла с постусловием по методу Дамке

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

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

Элементы в
самой левой части схемы представляют укрупнённую структуру алгоритма. Затем элементы
расширяются вправо по мере разделения каждого элемента на подэлементы.

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

Рисунок 5 —
Представление конструкции цикла с параметром по методу Дамке

Рисунок 6 —
Представление конструкции Case по методу Дамке

Пример 1

Дан массив А, состоящий из N
элементов. Найти наибольший из элементов массива (Amax) и его номер (Imax).

Схему алгоритма решения данной задачи,
представленную по методу Дамке, иллюстрирует рис. 7.

Рисунок 7 —
Схема алгоритма поиска максимального элемента массива и его номера, представленная
по методу Дамке

Достоинства метода
Дамке
:

    
схема
алгоритма, представленная с помощью данного метода, нагляднее, чем классическая,
особенно для больших программ;

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

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

Схемы Насси–Шнейдермана

Схемы НассиШнейдермана

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

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

Схемы Насси–Шнейдермана называют ещё
структурограммами.

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

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

1. Функциональный блок
(блок обработки)
представляется прямоугольником без входов и выходов. Каждый
символ схем Насси–Шнейдермана представляет собой блок обработки. Каждый прямоугольник
внутри любого символа также является блоком обработки.

2. Блок следования
изображается
так, как представлено на рис. 8. Данный блок представляет собой объединение
ряда следующих друг за другом процессов обработки.

3. Блок решения изображается
в соответствии с рис. 9. Блок решения используется для представления конструкции
принятия двоичного решения If-Then-Else. Условие записывается в центральном треугольнике,
варианты исполнения условия – в боковых треугольниках (варианты исполнения могут
быть записаны в виде: 1, 0; да, нет; +,
). Процессы
обработки обозначаются прямоугольниками.

Рисунок 8 —
Представление блока следования в схемах Насси–Шнейдермана

Рисунок 9 —
Представление блока решения в схемах Насси–Шнейдермана

4. Блок Case представляется
в соответствии с рис. 10. Данный блок является расширением блока решения.
Те варианты выхода из этого блока, которые можно точно сформулировать, размещаются
слева от нижней вершины центрального треугольника. Остальные выходы объединяются
в один, называемый выходом по несоблюдению условий (выход «иначе»). Данный выход
располагается справа от нижней вершины треугольника.

Рисунок 10
— Представление блока Case в схемах Насси–Шнейдермана

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

По аналогии с конструкцией If-Then-Else
условие записывается в центральном треугольнике, варианты выполнения условия – в
боковых треугольниках. Процессы обработки помещаются в прямоугольниках.

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

Рисунок 11
— Представление цикла с предусловием в схемах Насси–Шнейдермана

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

Рисунок 12
— Представление цикла с постусловием в схемах Насси–Шнейдермана

Основным достоинством схем Насси–Шнейдермана
является компактность, обусловленная отсутствием линий, которые отображают потоки
управления (линий перехода по управлению) между блоками. Благодаря данному достоинству
схемы Насси–Шнейдермана зачастую используются в CASE-средствах для представления
схем алгоритмов.

Пример 2

Дан массив А, состоящий из N
элементов. Найти наибольший из элементов массива (Amax) и его номер (Imax).
Схема алгоритма решения данной задачи, представленная по методу Дамке, приведена
в примере 1.

Укрупненная и детализированная схемы
Насси–Шнейдермана для решения данной задачи представлены на рис. 13.

Рисунок 13
— Пример диаграммы Насси–Шнейдермана

для алгоритма
поиска максимального элемента массива и его номера

Лекция 9. Модульное проектирование

План:

1. Модульное
проектирование

2. Признаки
модульности

3. Достоинства
и недостатки

1. Модульное проектирование

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

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

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

2. Признаки модульности

Признаки модульности
программ
:

1) программа состоит из модулей. Данный
признак для модульной программы является очевидным;

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

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

3. Достоинства и недостатки

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

1) упрощение разработки ПС;

2) исключение чрезмерной детализации
обработки данных;

3) упрощение сопровождения ПС;

4) облегчение чтения и понимания программ;

5) облегчение работы с данными, имеющими
сложную структуру.

Недостатки модульности:

1) модульный подход требует большего
времени работы центрального процессора (в среднем на 5 – 10 %) за счет времени обращения
к модулям;

2) модульность программы приводит к
увеличению ее объема (в среднем на 5 – 10 %);

3) модульность требует дополнительной
работы программиста и определенных навыков проектирования ПС.

Классические методы
структурного проектирования модульных ПС
делятся на три основные
группы [22]:

1) методы нисходящего проектирования;

2) методы расширения ядра;

3) методы восходящего проектирования.

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

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

Лекция 10.
Методы
нисходящего и восходящего проектирования

План:

1. Методы нисходящего
проектирования

2. Пошаговое
уточнение

3. Методы восходящего
проектирования

1. Методы нисходящего проектирования

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

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

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

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

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

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

Основными классическими стратегиями,
на которых основана реализация метода нисходящего проектирования, являются:

1) пошаговое уточнение; данная стратегия
разработана Э. Дейкстрой;

2) анализ сообщений; данная стратегия
базируется на работах группы авторов (Йодана, Константайна, Мейерса).

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

2. Пошаговое уточнение

Пошаговое уточнение является одной из
классических стратегий, реализующих метод нисходящего проектирования ПС.

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

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

1) проектирование программного средства
с помощью псевдокода и управляющих конструкций структурного программирования;

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

Преимущества метода
пошагового уточнения
:

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

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

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

3. Методы восходящего проектирования

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

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

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

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

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

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

Первый способ сочетания

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

Второй способ сочетания

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

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

Рисунок 1 —
Проектирование программы нисходящим и восходящим методами

на базе ключевых
модулей

Рисунок 2 —
Проектирование программы нисходящим и восходящим методами

на базе модулей
нижнего уровня

Лекция 11.
Шаблоны
проектирования

План:

1. История
возникновения шаблонов проектирования

2. Шаблоны
проектирования

3. Типы шаблонов
проектирования

1. История возникновения шаблонов
проектирования

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

В 1970-е годы архитектор
Кристофер Александр составил набор шаблонов проектирования. В области архитектуры
эта идея не получила такого развития, как позже в области программной разработки.

В 1987 году Кент Бэк
(Kent Beck) и Вард Каннигем (Ward Cunningham) взяли идеи Александра и разработали
шаблоны применительно к разработке программного обеспечения для разработки графических
оболочек на языке Smalltalk.

В 1988 году Эрих Гамма
(Erich Gamma) начал писать докторскую диссертацию при цюрихском университете об
общей переносимости этой методики на разработку программ.

В 1989—1991 годах Джеймс
Коплин (James Coplien) трудился над разработкой идиом для программирования на C++
и опубликовал в 1991 году книгу Advanced C++ Idioms. В этом же году Эрих Гамма заканчивает
свою докторскую диссертацию и переезжает в США, где в сотрудничестве с Ричардом
Хелмом (Richard Helm), Ральфом Джонсоном (Ralph Johnson) и Джоном Влиссидсом (John
Vlissides) публикует книгу «Шаблоны проектирования: элементы многократного использования
кода в объектно-ориентированном программировании» (Design Patterns – Elements of
Reusable Object-Oriented Software).

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

В книге рассматривается
несколько важных аспектов проблемы:

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

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

     Обсуждение
23 конкретных шаблонов проектирования.

     Формулирование
концепций объектно-ориентированных стратегий и подходов, построенных на применении
шаблонов проектирования.

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

2. Шаблоны проектирования

Шаблоны проектирования
– это один из важнейших компонентов объектно-ориентированной технологии разработки
программного обеспечения Они широко применяются в инструментах анализа, подробно
описываются в книгах и часто обсуждаются на семинарах по объектно-ориентированному
проектированию. Шаблон проектирования или паттерн (англ.
design pattern) – повторимая
архитектурная конструкция, представляющая собой решение проблемы проектирования
в рамках некоторого часто возникающего контекста.

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

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

На наивысшем уровне
существуют архитектурные шаблоны, они охватывают собой архитектуру всей программной
системы.

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

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

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

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

Рисунок 1 – Обозначение
паттерна

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

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

Таблица 1 — Описание
паттерна

Раздел

Описание

Имя

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

Проблема

Формулируется проблема
проектирования (и ее контекст), на которую ориентировано применение паттерна.
Задаются условия применения

Решение

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

Результаты

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

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

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

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

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

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

3.
Типы шаблонов проектирования

1. Основные.

2. Частные: Шаблоны
параллельного программирования (Concurrency); MVC; Enterprise; Прочие.

3. Другие типы шаблонов.

Основные типы шаблонов
перечислены в таблице 2.

Таблица 2 – Основные
шаблоны проектирования (Fundamental)

Название

Оригинальное название

Описание

Описан в Design
Patterns

Шаблон
делегирования

Delegation
pattern

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

Н/Д

Шаблон функционального дизайна

Functional
design

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

Н/Д

Неизменяемый
объект

Immutable

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

Н/Д

Интерфейс

Interface

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

Н/Д

Marker interface

Marker interface

Рассматривает способ упрощения
проектирования классов, которые имеют постоянный атрибут типа boolean.

Н/Д

Property Container

Property Container

Функция данного шаблона — обеспечить
динамическую расширяемость уже готового приложения

Н/Д

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

Абстрактная фабрика

Abstract factory

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

Да

Строитель

Builder

Класс, который представляет собой
интерфейс для создания сложного объекта

Да

Фабричный метод

Factory method

Определяет интерфейс для создания
объекта, но оставляет подклассам решение о том, какой класс инстанциировать

Да

Отложенная инициализация

Lazy
initialization

Объект, инициализируемый во время
первого обращения к нему

Нет

Пул одиночек

Multiton

Гарантирует, что класс имеет
поименованные экземпляры объекта и обеспечивает глобальную точку доступа к ним

Нет

Объектный
пул

Object
pool

Класс, который представляет собой
интерфейс для работы с набором инициализированных и готовых к использованию объектов

Нет

Прототип

Prototype

Определяет интерфейс создания
объекта через клонирование другого объекта вместо создания через конструктор

Да

Получение ресурса есть инициализация

Resource acquisition is initialization
(RAII)

Получение некоторого ресурса
совмещается с инициализацией, а освобождение — с уничтожением объекта

Нет

Одиночка

Singleton

Класс, который может иметь только
один экземпляр.

Да

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

Адаптер

Adapter / Wrapper

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

Да

Мост

Bridge

Структура, позволяющая изменять
интерфейс обращения и интерфейс реализации класса независимо

Да

Компоновщик

Composite

Объект, который объединяет в
себе объекты, подобные ему самому

Да

Декоратор или Wrapper/Обёртка

Decorator

Класс, расширяющий функциональность
другого класса без использования наследования

Да

Фасад

Facade

Объект, который абстрагирует
работу с несколькими классами, объединяя их в единое целое

Да

Единая точка входа

Front Controller

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

Нет

Приспособленец

Flyweight

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

Да

Заместитель

Proxy

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

Да

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

Цепочка ответственности

Chain of responsibility

Предназначен для организации
в системе уровней ответственности

Да

Команда, Action, Transaction

Command

Представляет действие. Объект
команды заключает в себе само действие и его параметры

Да

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

Interpreter

Решает часто встречающуюся, но
подверженную изменениям, задачу

Да

Итератор, Cursor

Iterator

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

Да

Посредник

Mediator

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

Да

Хранитель, Token

Memento

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

Да

Null
object

Предотвращает нулевые указатели,
предоставляя объект «по умолчанию»

Нет

Наблюдатель, Dependents, Publish-Subscribe,
Listener

Observer
илиPublish/subscribe

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

Да

Слуга

Servant

Используется для обеспечения
общей функциональности группе классов

Нет

Specification

Служит для связывания бизнес-логики

Нет

Состояние, Objects for States

State

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

Да

Стратегия

Strategy

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

Да

Шаблонный метод

Template method

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

Да

Посетитель

Visitor

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

Да

Single-serving visitor

Single-serving visitor

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

Нет

Hierarchical visitor

Hierarchical visitor

Предоставляет способ обхода всех
вершин иерархической структуры данных (напр. древовидной)

Нет

2 Частные

2.1
Шаблоны параллельного программирования (Concurrency)
и
спользуются для более эффективного написания многопоточных
программ, и предоставляет готовые решения проблем синхронизации.

Название

Оригинальное название

Описание

Active Object

Active object

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

Balking

Balking

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

Binding Properties

Binding Properties

Комбинирует несколько наблюдателей
для обеспечения синхронизации свойств в различных объектах[1]

Обмен сообщениями

Messaging
design pattern (MDP)

Позволяет компонентам и приложениям
обмениваться информацией (сообщениями)

Блокировка
с двойной проверкой

Double-checked locking

Предназначен для уменьшения накладных
расходов, связанных с получением блокировки

Event-based asynchronous

Адресные проблемы с Асинхронным
паттерном которые возникают в программах с несколькими потоками.[2]

Guarded suspension

Guarded
suspension

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

Lock

Lock

Один поток блокирует ресурс для
предотвращения доступа или изменения его другими потоками[3]

Монитор

Monitor object

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

Reactor

Reactor

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

Read write lock

Read-write lock

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

Планировщик

Scheduler

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

Thread pool

Thread
pool

Предоставляет пул потоков для
обработки заданий, представленных обычно в виде очереди

Thread-Specific Storage

Thread-specific storage

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

Однопоточное выполнение

Single Thread Execution

Препятствует конкурентному вызову
метода, тем самым запрещая параллельное выполнение этого метода

Кооперативный паттерн

Cooperative pattern

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

2.2 MVC

Model-View-Controller
(MVC) Модель-представление-контроллер

Model-View-Presenter

Model-View-View Model

Presentation-Abstraction-Control

2.3 Enterprise

Business Delegate

Composite Entity/Составная Сущность

Composite View

DAO (Data Access Object)
Объект Доступа к Данным

Dispatcher View

Front Controller

Intercepting Filter

Registry

Service Activator

Service Locator/Локатор Службы

Service to Worker

Session Facade/Фасад Сессии

Transfer Object Assembler

Transfer Object/Объект Перемещения

Value List Handler/Обработчик
Списка Значений

View Helper

Unit of Work

2.4 Прочие

Repository/Хранилище

3 Другие
типы шаблонов

Также на сегодняшний
день существует ряд других шаблонов:

     Carrier Rider
Mapper

описывают предоставление доступа к хранимой информации

     Аналитические
шаблоны

описывают основной подход для составления требований для программного обеспечения
(requirement analysis) до начала самого процесса программной разработки

     Коммуникационные
шаблоны

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

     Организационные
шаблоны

описывают организационную иерархию предприятия/фирмы

     Анти-паттерны (Anti-Design-Patterns)
описывают, как не следует поступать при разработке программ, показывая характерные
ошибки в дизайне и в реализации

Лекция 12.
Оценка структурного разбиения программы на модули

План:

1. Связность
модуля

2. Сцепление
модулей

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

1. Связность
модуля

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

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

Таблица 1 —
Типы и силы связности модулей

Связность

Сила связности

1. Функциональная

10 (сильная связность)

2. Последовательная

9

3. Коммуникативная

7

4. Процедурная

5

5. Временная

3

6. Логическая

1

7. Связность по совпадению

0 (слабая связность)

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

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

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

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

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

Модуль имеет связность по совпадению,
если его операторы объединяются произвольным образом.

2. Сцепление модулей

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

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

В табл. 2 содержатся типы сцепления
модулей и соответствующие им степени сцепления.

Таблица 2 — Типы и степени сцепления
модулей

Сцепление

Степень сцепления

1. Независимое

0

2. По данным

1 (слабое сцепление)

3. По образцу

3

4. По общей области

4

5. По управлению

5

6. По внешним ссылкам

7

7. По кодам

9 (сильное сцепление)

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

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

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

Модули со сцеплением по данным не имеют
общей области данных (общих глобальных переменных).

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

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

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

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

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

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

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

Cos(x) = Sin(π/2 –
x).

Путь через точки входа Sin и Cos ведет к общему участку
команд модуля.

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

Лекция 12.
Понятие отладки программных продуктов. Классификация ошибок

План:

1. Понятие
отладка

2. Виды отладок

3. Виды ошибок.

4. Обнаружение
ошибок.

5. Заповеди
отладки программного средства

1. Понятие
отладка

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

Отладка = Тестирование + Поиск ошибок + Редактирование.

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

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

Отладка
не является разновидностью тестирования, хотя слова «отладка» и «тестирование» часто
используют как сино­нимы. Под ними подразумеваются разные виды деятельности:

— тестирование
— деятельность, направленная на обна­ружение ошибок;

— отладка
направлена на установление точной природы известной ошибки, а затем на
исправление этой ошибки;

— результаты
тестирования являются исходными данными для отладки.

Эти два
вида деятельности очень тесно связаны и поэтому они обычно рассматриваются совместно.

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

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

По оценкам
специалистов, в общем, времени разработки программного обеспечения, отладка занимает
от 50 % до 90% (зависит от результатов проведения предыдущих этапов).

2.
Виды отладок

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

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

В отличие
от синтаксической ошибки, семантическая
ошибка не формализуема
и поэтому она составляет основу отладки.

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

3. Виды ошибок.

Ошибки анализа.

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

К 1 случаю
относятся, например, пренебрежение возможностью появления отрицательных значений
переменных, малых и больших величин.

Во 2 случае
обычно имеют место крупные и мелкие логические ошибки, из которых можно назвать:

1.    Отсутствие
заданий начальных значений переменных.

2.    Неверные условия
окончания цикла.

3.    Неверную индексацию
цикла.

4.    Отсутствие
задания условий инициирования цикла.

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

Ошибки общего
характера
.

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

Такими ошибками
могут быть:

·  ошибки из-за недостаточного
знания или понимания программистом языка программирования или самой машины

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

Ошибки физического
характера
.

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

1.    Пропуск некоторых
операторов.

2.    Отсутствие
необходимых данных.

3.    Непредусмотренные
данные.

4.    Неверный формат
данных.

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

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

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

Правильность
программ
.

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

Нарушение правильности
может проявляться двумя способами:

·  неверная синтаксическая
конструкция программы

·  программа выдает неверные
результаты

Правильность
синтаксиса

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

Синтаксические
ошибки
.

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

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

В качестве
примеров синтаксических ошибок можно назвать:

·  пропуск необходимого
знака пунктуации

·  несогласованность скобок

·  пропуск нужных скобок

·  неправильное формирование
оператора

·  неверное образование
имени переменной

·  неправильное использование
арифметических операторов

·  неверное написание
зарезервированных слов

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

1.    Противоречивые
команды.

2.    Отсутствие
условий окончания цикла.

3.    Дублирование
или отсутствие меток.

4.    Отсутствие
описания массива.

5.    Запрещенный
переход.

Советы по устранению
ошибок:

1.    Если ошибок
много, то в первую очередь устранить очевидные.

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

3.    Выбрать хороший
отладочный компилятор.

Неопределенные
переменные.

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

Определение
начальных значений:

1.    Присваивание.

2.    Ввод.

3.    Чтение из файла.

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

4. Обнаружение ошибок.

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

1.    Отсутствует
уверенность в том, что программа начала выполняться.

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

3.    Программа начала
выполняться, но зациклилась.

4.    Программа выдала
неправильную информацию.

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

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

·  точки обнаружения

·  точки происхождения

Точка обнаружения — место в
программе, где ошибка себя проявляет или становится очевидной.

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

Точка обнаружения
выявляется первой и служит отправным пунктом для поиска точки происхождения.

Действительная
ошибка исходит не из точки обнаружения, а из точки происхождения.

Виды отладки.
Защитное программирование.

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

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

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

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

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

5.    Программа зациклилась. На этом этапе
отладки необходимо произвести разбор циклов.

Защитное программирование
характеризует такой стиль написания программы, при котором появляющиеся ошибки легко обнаруживаются.

Защитное программирование — это встраивание
отладочных средств в программу.

Примером защитного
программирования может служить метод заглушек при кодировании сверху вниз.

5. Заповеди отладки
программного средства

В этом разделе даются общие рекомендации по организации отладки
ПС. Но сначала следует отметить некоторый феномен, который подтверждает важность
предупреждения ошибок на предыдущих этапах разработки: по мере роста числа обнаруженных
и исправленных ошибок в ПС растет также относительная вероятность существования
в нем необнаруженных ошибок. Это объясняется тем, что при росте числа ошибок, обнаруженных
в ПС, уточняется и наше представление об общем числе допущенных в нем ошибок, а
значит, в какой-то мере, и о числе необнаруженных еще ошибок.

Ниже приводятся рекомендации по организации отладки в форме
заповедей.

Заповедь 1. Считайте
тестирование ключевой задачей разработки ПС, поручайте его самым квалифицированным
и одаренным программистам; нежелательно тестировать свою собственную программу.

Заповедь 2. Хорош
тот тест, для которого высока вероятность обнаружить ошибку, а не тот, который демонстрирует
правильную работу программы.

Заповедь 3. Готовьте
тесты как для правильных, так и для неправильных данных.

Заповедь 4. Документируйте
пропуск тестов через компьютер; детально изучайте результаты каждого теста; избегайте
тестов, пропуск которых нельзя повторить.

Заповедь 5. Каждый
модуль подключайте к программе только один раз; никогда не изменяйте программу,
чтобы облегчить ее тестирование.

Заповедь 6. Пропускайте
заново все тесты, связанные с проверкой работы какой-либо программы ПС или ее взаимодействия
с другими программами, если в нее были внесены изменения (например, в результате
устранения ошибки).

Лекция 13.
Методы отладки ПО

План:

1. Методы отладки.

2. Метод «грубой
силы»

3. Автономная
отладка программного средства

4. Комплексная
отладка программного средства.

1. Методы отладки.

Методы отладки можно разделить на методы «грубой силы»
и методы, основанные на обдумывании.

Методы «грубой силы» не являются самыми эффективными,
но очень популярны, т.к. не требуют значительного внимания и больших умственных
затрат. К ним относятся:

1.   
Отладка в соответствии с общим предложением
«расставить операторы печати по всей программе»

Недостатки:

    
расстановка операторов печати заставляет
программиста работать методом проб и ошибок

    
в процессе отладки придется протестировать
большое число данных

    
требуется изменять программу при
отладке. Эти изменения могут скрыть ошибку или внести новую

    
стоимость использования методов
данной категории для больших программ или систем может быть слишком высокой

2.   
Отладка с использованием автоматических
средств

Достоинства:

    
не нужно вносить изменения в программу

2. Метод «грубой силы»

Общей проблемой метода «грубой силы» является то,
что они игнорируют процесс обнаружения, с помощью которого быстрее и точнее находят
ошибки. Использование данного метода рекомендуется только в том случае, если все
остальные методы не дали желательного эффекта или в дополнение к процессам, основанным
на обдумывании.

Методы, основанные на обдумывании:

1.   
Метод индукции. Индукция
— это анализ от частного к целому. Просматривая симптомы ошибки, установленные одним
или несколькими тестами и взаимосвязи между ними, можно обнаружить причину ошибки.

2.   
Метод дедукции. Данный метод позволяет
на основе некоторых общих теорий или предпосылок, используя операторы исключения
или уточнения, прийти к определенному заключению (обнаружить место ошибки). Чтобы
сделать заключение мы должны просмотреть всю имеющуюся в нашем распоряжении информацию:
все результаты всех тестов обо всех ошибках. Выдвинутые гипотезы поочередно исключаются
из рассмотрения.

3.   
Прослеживание логики в обратном
порядке. Метод локализации для небольших ошибок. Отладка начинается в точке программы,
где был обнаружен некоторый результат. Для этой точки на основании полученного результата
следует установить, какими должны быть значения переменных. Мысленно выполняя из
данной точки программы в обратном порядке и опять рассуждая примерно так: «Если
бы в этой точке состояние программы было таким, то в другой точке должно быть следующее
состояние», можно достаточно быстро и точно локализовать ошибку, т.е. найти
место в программе между точкой, где состояние программы соответствовало ожидаемому
и точкой, в которой состояние программы отличалось от ожидаемого.

3. Автономная отладка программного средства

При автономной
отладке ПС каждый модуль на самом деле тестируется в некотором программном окружении,
кроме случая, когда отлаживаемая программа состоит только из одного модуля. Это
окружение состоит из других модулей, часть которых является модулями отлаживаемой
программы, которые уже отлажены, а часть — модулями, управляющими отладкой (отладочными модулями, см. ниже). Таким образом, при автономной
отладке тестируется всегда некоторая программа (тестируемая программа), построенная
специально для тестирования отлаживаемого модуля. Эта программа лишь частично совпадает
с отлаживаемой программой, кроме случая, когда отлаживается последний модуль отлаживаемой
программы. В процессе автономной отладки ПС производится наращивание тестируемой
программы отлаженными модулями: при переходе к отладке следующего модуля в его программное
окружение добавляется последний отлаженный модуль. Такой процесс наращивания программного
окружения отлаженными модулями называется интеграцией программы. Отладочные модули, входящие в окружение
отлаживаемого модуля, зависят от порядка, в каком отлаживаются модули этой программы,
от того, какой модуль отлаживается и, возможно, от того, какой тест будет пропускаться.

При восходящем
тестировании это окружение будет содержать только один отладочный модуль (кроме
случая, когда отлаживается последний модуль отлаживаемой программы), который будет
головным в тестируемой программе. Такой отладочный модуль называют ведущим (или драйвером). Ведущий отладочный модуль подготавливает
информационную среду для тестирования отлаживаемого модуля (т. е. формирует ее состояние,
требуемое для тестирования этого модуля, в частности, путем ввода некоторых тестовых
данных), осуществляет обращение к отлаживаемому модулю и после окончания его работы
выдает необходимые сообщения. При отладке одного модуля для разных тестов могут
составляться разные ведущие отладочные модули.

При нисходящем
тестировании окружение отлаживаемого модуля в качестве отладочных модулей содержит отладочные имитаторы (заглушки) некоторых еще не отлаженных модулей.
К таким модулям относятся, прежде всего, все модули, к которым может обращаться
отлаживаемый модуль, а также еще не отлаженные модули, к которым могут обращаться
уже отлаженные модули (включенные в это окружение). Некоторые из этих имитаторов
при отладке одного модуля могут изменяться для разных тестов.

На практике
в окружении отлаживаемого модуля могут содержаться отладочные модули обоих типов,
если используется смешанная стратегия тестирования. Это связано с тем, что как восходящее,
так и нисходящее тестирование имеет свои достоинства и свои недостатки.

К достоинствам восходящего тестирования относятся:

·  простота подготовки
тестов,

·  возможность полной
реализации плана тестирования модуля.

Это связано
с тем, что тестовое состояние информационной среды готовится непосредственно перед
обращением к отлаживаемому модулю (ведущим отладочным модулем).

Недостатками
восходящего тестирования
являются следующие его особенности:

·  тестовые данные готовятся,
как правило, не в той форме, которая рассчитана на пользователя (кроме случая, когда
отлаживается последний, головной, модуль отлаживаемой программ);

·  большой объем отладочного
программирования (при отладке одного модуля приходится составлять много ведущих
отладочных модулей, формирующих подходящее состояние информационной среды для разных
тестов);

·  необходимость специального
тестирования сопряжения модулей.

К достоинствам нисходящего тестирования относятся следующие его особенности:

·  большинство тестов
готовится в форме, рассчитанной на пользователя;

·  во многих случаях относительно
небольшой объем отладочного программирования (имитаторы модулей, как правило, весьма
просты и каждый пригоден для большого числа, нередко — для всех, тестов);

·  отпадает необходимость
тестирования сопряжения модулей.

Недостатком
нисходящего тестирования
является то, что тестовое состояние информационной
среды перед обращением к отлаживаемому модулю готовится косвенно — оно является
результатом применения уже отлаженных модулей к тестовым данным или данным, выдаваемым
имитаторами. Это, во-первых, затрудняет подготовку тестов и требует высокой квалификации
тестовика (разработчика тестов), а во-вторых, делает затруднительным или даже невозможным
реализацию полного плана тестирования отлаживаемого модуля. Указанный недостаток
иногда вынуждает разработчиков применять восходящее тестирование даже в случае нисходящей
разработки. Однако чаще применяют некоторые модификации нисходящего тестирования,
либо некоторую комбинацию нисходящего и восходящего тестирования. Исходя из того,
что нисходящее тестирование, в принципе, является предпочтительным, остановимся
на приемах, позволяющих в какой-то мере преодолеть указанные трудности.

Прежде
всего, необходимо организовать отладку программы таким образом, чтобы как можно
раньше были отлажены модули, осуществляющие ввод данных, — тогда тестовые данные
можно готовить в форме, рассчитанной на пользователя, что существенно упростит подготовку
последующих тестов. Далеко не всегда этот ввод осуществляется в головном модуле,
поэтому приходится в первую очередь отлаживать цепочки модулей, ведущие к модулям,
осуществляющим указанный ввод. Пока модули, осуществляющие ввод данных, не отлажены,
тестовые данные поставляются некоторыми имитаторами: они либо включаются в имитатор
как его часть, либо вводятся этим имитатором.

При нисходящем
тестировании некоторые состояния информационной среды, при которых требуется тестировать
отлаживаемый модуль, могут не возникать при выполнении отлаживаемой программы ни
при каких входных данных. В этих случаях можно было бы вообще не тестировать отлаживаемый
модуль, так как обнаруживаемые при этом ошибки не будут проявляться при выполнении
отлаживаемой программы ни при каких входных данных. Однако так поступать не рекомендуется,
так как при изменениях отлаживаемой программы (например, при сопровождении ПС) не
использованные для тестирования отлаживаемого модуля состояния информационной среды
могут уже возникать, что требует дополнительного тестирования этого модуля (а этого
при рациональной организации отладки можно было бы не делать, если сам данный модуль
не изменялся). Для осуществления тестирования отлаживаемого модуля в указанных ситуациях
иногда используют подходящие имитаторы, чтобы создать требуемое состояние информационной
среды. Чаще же пользуются модифицированным вариантом нисходящего тестирования, при
котором отлаживаемые модули перед их интеграцией предварительно тестируются отдельно
(в этом случае в окружении отлаживаемого модуля появляется ведущий отладочный модуль,
наряду с имитаторами модулей, к которым может обращаться отлаживаемый модуль). Однако,
представляется более целесообразной другая модификация нисходящего тестирования:
после завершения нисходящего тестирования отлаживаемого модуля для достижимых тестовых
состояний информационной среды следует его отдельно протестировать для остальных
требуемых состояний информационной среды.

Часто применяют
также комбинацию восходящего и нисходящего тестирования, которую называют методом сандвича. Сущность этого метода заключается
в одновременном осуществлении как восходящего, так и нисходящего тестирования, пока
эти два процесса тестирования не встретятся на каком-либо модуле где-то в середине
структуры отлаживаемой программы. Этот метод при разумном порядке тестирования позволяет
воспользоваться достоинствами как восходящего, так и нисходящего тестирования, а
также в значительной степени нейтрализовать их недостатки.

Весьма
важным при автономной отладке является тестирование

сопряжения
модулей. Дело в том, что спецификация каждого модуля программы, кроме головного,
используется в этой программы в двух ситуациях: во-первых, при разработке текста
(иногда говорят: тела) этого модуля и, во-вторых, при написании обращения к этому
модулю в других модулях программы. И в том, и в другом случае в результате ошибки
может быть нарушено требуемое соответствие заданной спецификации модуля. Такие ошибки
требуется обнаруживать и устранять. Для этого и предназначено тестирование сопряжения
модулей. При нисходящем тестировании тестирование сопряжения осуществляется попутно
каждым пропускаемым тестом, что считают достоинством нисходящего тестирования. При
восходящем тестировании обращение к отлаживаемому модулю производится не из модулей
отлаживаемой программы, а из ведущего отладочного модуля. В связи с этим существует
опасность, что последний модуль может приспособиться к некоторым «заблуждениям»
отлаживаемого модуля. Поэтому, приступая (в процессе интеграции программы) к отладке
нового модуля, приходится тестировать каждое обращение к ранее отлаженному модулю
с целью обнаружения несогласованности этого обращения с телом соответствующего модуля
(и не исключено, что виноват в этом ранее отлаженный модуль). Таким образом, приходится
частично повторять в новых условиях тестирование ранее отлаженного модуля, при этом
возникают те же трудности, что и при нисходящем тестировании.

Автономное
тестирование модуля целесообразно осуществлять в четыре последовательно выполняемых
шага.

Шаг 1.
На основании спецификации отлаживаемого модуля подготовьте тесты для каждой возможности
и каждой ситуации, для каждой границы областей допустимых значений всех входных
данных, для каждой области изменения данных, для каждой области недопустимых значений
всех входных данных и каждого недопустимого условия.

Шаг 2.
Проверьте текст модуля, чтобы убедиться, что каждое направление любого разветвления
будет пройдено хотя бы на одном тесте. Добавьте недостающие тесты.

Шаг 3.
Проверьте текст модуля, чтобы убедиться, что для каждого цикла существуют тесты,
обеспечивающие, по крайней мере, три следующие ситуации: тело цикла не выполняется
ни разу, тело цикла выполняется один раз и тело цикла выполняется максимальное число
раз. Добавьте недостающие тесты.

Шаг 4.
Проверьте текст модуля, чтобы убедиться, что существуют тесты, проверяющие чувствительность
к отдельным особым значениям входных данных. Добавьте недостающие тесты.

4.
Комплексная отладка программного средства.

Как уже
было сказано выше, при комплексной отладке тестируется ПС в целом, причем тесты
готовятся по каждому из документов ПС. Тестирование этих документов производится,
как правило, в порядке, обратном их разработке. Исключение составляет лишь тестирование
документации по применению, которая разрабатывается по внешнему описанию параллельно
с разработкой текстов программ — это тестирование лучше производить после завершения
тестирования внешнего описания. Тестирование при комплексной отладке представляет
собой применение ПС к конкретным данным, которые в принципе могут возникнуть у пользователя
(в частности, все тесты готовятся в форме, рассчитанной на пользователя), но, возможно,
в моделируемой (а не в реальной) среде. Например, некоторые недоступные при комплексной
отладке устройства ввода и вывода могут быть заменены их программными имитаторами.

Тестирование
архитектуры ПС.
Целью тестирования является поиск несоответствия между описанием архитектуры
и совокупностью программ ПС. К моменту начала тестирования архитектуры ПС должна
быть уже закончена автономная отладка каждой подсистемы. Ошибки реализации архитектуры
могут быть связаны, прежде всего, с взаимодействием этих подсистем, в частности,
с реализацией архитектурных функций (если они есть). Поэтому хотелось бы проверить
все пути взаимодействия между подсистемами ПС. При этом желательно хотя бы протестировать
все цепочки выполнения подсистем без повторного вхождения последних. Если заданная
архитектура представляет ПС в качестве малой системы из выделенных подсистем, то
число таких цепочек будет вполне обозримо.

Тестирование
внешних функций
. Целью тестирования является поиск расхождений
между функциональной спецификацией и совокупностью программ ПС. Несмотря на то,
что все эти программы автономно уже отлажены, указанные расхождения могут быть,
например, из-за несоответствия внутренних спецификаций программ и их модулей (на
основании которых производилось автономное тестирование) функциональной спецификации
ПС. Как правило, тестирование внешних функций производится так же, как и тестирование
модулей на первом шаге, т.е. как черного ящика.

Тестирование
качества ПС.
Целью тестирования является поиск нарушений требований качества, сформулированных
в спецификации качества ПС. Это наиболее трудный и наименее изученный вид тестирования.
Ясно лишь, что далеко не каждый примитив качества ПС может быть испытан тестированием
(об оценке качества ПС см. лекцию 14). Завершенность ПС проверяется уже при тестировании
внешних функций. На данном этапе тестирование этого примитива качества может быть
продолжено, если требуется получить какую-либо вероятностную оценку степени надежности
ПС. Однако, методика такого тестирования еще требует своей разработки. Могут тестироваться
такие примитивы качества, как точность, устойчивость, защищенность, временная эффективность,
в какой-то мере — эффективность по памяти, эффективность по устройствам, расширяемость
и, частично, независимость от устройств. Каждый из этих видов тестирования имеет
свою специфику и заслуживает отдельного рассмотрения. Мы здесь ограничимся лишь
их перечислением. Легкость применения ПС  оценивается при тестировании документации
по применению ПС.

Тестирование
документации по применению ПС.
Целью тестирования является поиск несогласованности
документации по применению и совокупностью программ ПС, а также выявление неудобств,
возникающих при применении ПС. Этот этап непосредственно предшествует подключению
пользователя к завершению разработки ПС (тестированию определения требований к ПС
и аттестации ПС), поэтому весьма важно разработчикам сначала самим воспользоваться
ПС так, как это будет делать пользователь. Все тесты на этом этапе готовятся исключительно
на основании только документации по применению ПС. Прежде всего, должны тестироваться
возможности ПС как это делалось при тестировании внешних функций, но только на основании
документации по применению. Должны быть протестированы все неясные места в документации,
а также все примеры, использованные в документации. Далее тестируются наиболее трудные
случаи применения ПС с целью обнаружить нарушение требований относительности легкости
применения ПС.

Тестирование
определения требований к ПС.
Целью тестирования является выяснение, в какой
мере ПС не соответствует предъявленному определению требований к нему. Особенность
этого вида тестирования заключается в том, что его осуществляет организация-покупатель
или организация-пользователь ПС как один из путей преодоления барьера между разработчиком
и пользователем. Обычно это тестирование производится с помощью контрольных задач
— типовых задач, для которых известен результат решения. В тех случаях, когда разрабатываемое
ПС должно придти на смену другой версии ПС, которая решает хотя бы часть задач разрабатываемого
ПС, тестирование производится путем решения общих задач с помощью как старого, так
и нового ПС (с последующим сопоставлением полученных результатов). Иногда в качестве
формы такого тестирования используют опытную эксплуатацию ПС — ограниченное применение нового
ПС с анализом использования результатов в практической деятельности. По существу,
этот вид тестирования во многом перекликается с испытанием ПС при его аттестации,
но выполняется до аттестации, а иногда и вместо аттестации.

Лекция 14.
Понятие тестирования. Виды и методы тестирования программных продуктов. Структурное
тестирование

План:

1. Понятие тестирования.

2. Критерии
выбора тестов

3. Виды тестирования
ПО

4. Структурное
тестирование

1. Понятие тестирования

Тестирование
— процесс выполнения программы с целью обнаружения ошибок. Шаги процесса задаются
тестами.

Каждый
тест определяет:

·
свой набор исходных данных и условий для запуска программы;

·
набор ожидаемых результатов работы программы.

Другое
название теста — тестовый вариант. Полную проверку программы гарантирует исчерпывающее
тестирование.
Оно требует проверить все наборы исходных данных, все варианты
их обработки и включает большое количество тестовых вариантов. Исчерпывающее тестирование
во многих случаях затруднительно, поскольку срабатывают ресурсные ограничения (прежде
всего, ограничения по времени).

Хорошим
считают тестовый вариант с высокой вероятностью обнаружения еще не раскрытой ошибки.
Успешным называют тест, который обнаруживает до сих пор не раскрытую ошибку.

Целью
проектирования тестовых вариантов является систематическое обнаружение различных
классов ошибок при минимальных затратах времени и стоимости.

Тестирование
обеспечивает:

· 
обнаружение ошибок;

· 
демонстрацию соответствия функций программы ее назначению;

· 
демонстрацию реализации требований к характеристикам программы;

· 
отображение надежности как индикатора качества программы.

Тестирование
не может показать отсутствия дефектов (оно может показывать только присутствие дефектов)

Рассмотрим
информационные потоки процесса тестирования. Они показаны на рис.1.

Рисунок
1 —
Информационные потоки процесса тестирования

На
входе процесса тестирования три потока:

·
текст программы;

· исходные
данные для запуска программы;

·
ожидаемые результаты.

Выполняются
тесты, все полученные результаты оцениваются. Это значит, что реальные результаты
тестов сравниваются с ожидаемыми результатами. Когда обнаруживается несовпадение,
фиксируется ошибка — начинается отладка. Процесс отладки непредсказуем по времени.
На поиск места дефекта и исправление может потребоваться час, день, месяц. Неопределенность
в отладке приводит к большим трудностям в планировании действий.

После
сбора и оценивания результатов тестирования начинается отображение качества и надежности
ПО. Если регулярно встречаются серьезные ошибки, требующие проектных изменений,
то качество и надежность ПО подозрительны, констатируется необходимость усиления
тестирования. С другой стороны, если функции ПО реализованы правильно, а обнаруженные
ошибки легко исправляются, может быть сделан один из двух выводов:

·     
качество и надежность ПО удовлетворительны;

·     
тесты не способны обнаруживать серьезные ошибки.

В
конечном счете, если тесты не обнаруживают ошибок, появляется сомнение в том, что
тестовые варианты достаточно продуманы и что в ПО нет скрытых ошибок. Такие ошибки
будут, в конечном итоге, обнаруживаться пользователями и корректироваться разработчиком
на этапе сопровождения (когда стоимость исправления возрастает в 60-100 раз по сравнению
с этапом разработки).

Результаты,
накопленные в ходе тестирования, могут оцениваться и более формальным способом.
Для этого используют модели надежности ПО, выполняющие прогноз надежности по реальным
данным об интенсивности ошибок.

3. Виды тестирования ПО

Все виды тестирования программного обеспечения, в зависимости
от преследуемых целей, можно условно разделить на следующие группы:

1.    Функциональные

2.    Нефункциональные

3.    Связанные с
изменениями

Функциональные виды тестирования

Функциональные тесты базируются на функциях и особенностях,
а также взаимодействии с другими системами, и могут быть представлены на всех уровнях
тестирования: компонентном или модульном (Component/Unit testing), интеграционном
(Integration testing), системном (System testing) и приемочном (Acceptance testing).
Функциональные виды тестирования рассматривают внешнее поведение системы. Далее
перечислены одни из самых распространенных видов функциональных тестов:

4.    Функциональное
тестирование (Functional testing)

5.    Тестирование безопасности (Security and Access
Control Testing)

6.    Тестирование
взаимодействия (Interoperability Testing)

Функциональное тестирование или Functional
Testing

Функциональное тестирование рассматривает заранее указанное
поведение и основывается на анализе спецификаций функциональности компонента или
системы в целом.

Функциональные тесты основываются на функциях, выполняемых
системой, и могут проводиться на всех уровнях тестирования (компонентном, интеграционном,
системном, приемочном). Как правило, эти функции описываются в требованиях, функциональных
спецификациях или в виде случаев использования системы (use cases).

Тестирование функциональности может проводиться в двух
аспектах: требования и бизнес-процессы.

Тестирование в перспективе «требования» использует спецификацию
функциональных требований к системе как основу для дизайна тестовых случаев (Test
Cases). В этом случае необходимо сделать список того, что будет тестироваться, а
что нет, приоритезировать требования на основе рисков (если это не сделано в документе
с требованиями), а на основе этого приоритезировать тестовые сценарии (test cases).
Это позволит сфокусироваться и не упустить при тестировании наиболее важный функционал.

Тестирование в перспективе «бизнес-процессы» использует
знание этих самых бизнес-процессов, которые описывают сценарии ежедневного использования
системы. В этой перспективе тестовые сценарии (test scripts), как правило, основываются
на случаях использования системы (use cases).

Преимущества функционального тестирования:

имитирует фактическое использование системы;

Недостатки функционального тестирования:

возможность упущения логических ошибок в программном обеспечении;

вероятность избыточного тестирования.

Тестирование безопасности или Security and Access Control Testing

Тестирование безопасности — это стратегия
тестирования, используемая для проверки безопасности системы, а также для анализа
рисков, связанных с обеспечением целостного подхода к защите приложения, атак хакеров,
вирусов, несанкционированного доступа к конфиденциальным данным.

Общая стратегия безопасности основывается
на трех основных принципах: конфиденциальность, целостность, доступность.

Конфиденциальность. Конфиденциальность
— это сокрытие определенных ресурсов или информации. Под конфиденциальностью можно
понимать ограничение доступа к ресурсу некоторой категории пользователей, или другими
словами, при каких условиях пользователь авторизован получить доступ к данному ресурсу.

Целостность. Существует два основных
критерия при определении понятия целостности:

Доверие. Ожидается, что ресурс будет изменен только соответствующим
способом определенной группой пользователей.

Повреждение и восстановление. В случае когда данные повреждаются
или неправильно меняются авторизованным или не авторизованным пользователем, вы
должны определить на сколько важной является процедура восстановления данных.

Доступность. Доступность представляет
собой требования о том, что ресурсы должны быть доступны авторизованному пользователю,
внутреннему объекту или устройству. Как правило, чем более критичен ресурс тем выше
уровень доступности должен быть.

Виды уязвимостей

В настоящее время наиболее распространенными видами уязвимости
в безопасности программного обеспечения являются:

1.    XSS (Cross-Site
Scripting) — это вид уязвимости программного обеспечения (Web приложений), при которой,
на генерированной сервером странице, выполняются вредоносные скрипты, с целью атаки
клиента.

2.    XSRF / CSRF (Request Forgery)
— это вид уязвимости, позволяющий использовать недостатки HTTP протокола, при этом
злоумышленники работают по следующей схеме: ссылка на вредоносный сайт установливается
на странице, пользующейся доверием у пользователя, при переходе по вредоносной ссылке
выполняется скрипт, сохраняющий личные данные пользователя (пароли, платежные данные
и т.д.), либо отправляющий СПАМ сообщения от лица пользователя, либо изменяет доступ
к учетной записи пользователя, для получения полного контроля над ней.

3.    Code injections (SQL, PHP,
ASP и т.д.) — это вид уязвимости, при котором становится возможно осуществить запуск
исполняемого кода с целью получения доступа к системным ресурсам, несанкционированного
доступа к данным либо выведения системы из строя.

4.    Server-Side
Includes (SSI) Injection
— это вид уязвимости, использующий вставку
серверных команд в HTML код или запуск их напрямую с сервера.

5.    Authorization
Bypass

— это вид уязвимости, при котором возможно получить несанкционированный доступ к
учетной записи или документам другого пользователя

Примеров уязвимостей и атак существует огромное количество.
Даже проведя полный цикл тестирования безопасности, нельзя быть на 100% уверенным,
что система по-настоящему обезопасена. Но можно быть уверенным в том, что процент
несанкционированных проникновений, краж информации и потерь данных будет в разы
меньше, чем у тех кто не проводил тестирования безопасности.

Тестирование взаимодействия или Interoperability
Testing

С развитием сетевых технологий и интернета взаимодействие
разных систем, сервисов и приложений друг с другом приобрело значительную актуальность,
так как любые связанные с этим проблемы могут привести к падению авторитета компании,
что как следствие повлечет за собой финансовые потери. Поэтому к тестированию взаимодействия
стоит подходить со всей серьезностью.

Тестирование взаимодействия (Interoperability Testing)
– это функциональное тестирование, проверяющее способность приложения взаимодействовать
с одним и более компонентами или системами и включающее в себя тестирование совместимости
(compatibility testing) и интеграционное тестирование (integration testing).

Программное обеспечение с хорошими характеристиками взаимодействия
может быть легко интегрировано с другими системами, не требуя каких-либо серьезных
модификаций. В этом случае, количество изменений и время, требуемое на их выполнение,
могут быть использованы для измерения возможности взаимодействия.

Нефункциональные виды тестирования

Нефункциональное тестирование описывает тесты, необходимые
для определения характеристик программного обеспечения, которые могут быть измерены
различными величинами. В целом, это тестирование того, «Как» система работает.
Далее перечислены основные виды нефункциональных тестов:

1.    Все виды тестирования
производительности: нагрузочное тестирование (Performance and Load Testing), стрессовое
тестирование (Stress Testing), тестирование стабильности или надежности (Stability
/ Reliability Testing), объемное тестирование (Volume ;Testing)

2.    Тестирование
установки (Installation testing)

3.    Тестирование
удобства пользования (Usability Testing)

4.    Тестирование
на отказ и восстановление (Failover and Recovery Testing)

5.    Конфигурационное
тестирование (Configuration Testing)

Нагрузочное тестирование или тестирование производительности

Нагрузочное тестирование или тестирование
производительности
— это автоматизированное тестирование, имитирующее работу
определенного количества бизнес пользователей на каком-либо общем (разделяемом ими)
ресурсе.

В нагрузочное тестирование входят следующие виды тестирования
производительности:

1.    Тестирование
производительности  (Performance testing)
.

Задачей тестирования производительности является определение
масштабируемости приложения под нагрузкой, при этом происходит:

измерение времени
выполнения выбранных операций при определенных интенсивностях выполнения этих операций;

определение
количества пользователей, одновременно работающих с приложением;

определение
границ приемлемой производительности при увеличении нагрузки (при увеличении интенсивности
выполнения этих операций);

исследование
производительности на высоких, предельных, стрессовых нагрузках.

2.    Стрессовое
тестирование (Stress Testing)

Стрессовое тестирование позволяет проверить насколько приложение
и система в целом работоспособны в условиях стресса и также оценить способность
системы к регенерации, т.е. к возвращению к нормальному состоянию после прекращения
воздействия стресса. Стрессом в данном контексте может быть повышение интенсивности
выполнения операций до очень высоких значений или аварийное изменение конфигурации
сервера. Также одной из задач при стрессовом тестировании может быть оценка деградации
производительности, таким образом цели стрессового тестирования могут пересекаться
с целями тестирования производительности.

3.    Объемное тестирование
(Volume Testing)

Задачей объемного тестирования является получение оценки
производительности при увеличении объемов данных в базе данных приложения, при этом
происходит:

измерение времени
выполнения выбранных операций при определенных интенсивностях выполнения этих операций

может производиться
определение количества пользователей, одновременно работающих с приложением

4.    Тестирование
стабильности или надежности (Stability / Reliability Testing)

Задачей тестирования стабильности (надежности) является
проверка работоспособности приложения при длительном (многочасовом) тестировании
со средним уровнем нагрузки. Время выполнения операций может играть в данном виде
тестирования второстепенную роль. При этом на первое место выходит отсутствие утечек
памяти, перезапусков серверов под нагрузкой и другие аспекты влияющие именно на
стабильность работы.

Тестирование Установки или Installation Testing

Тестирование установки направленно на проверку успешной
инсталляции и настройки, а также обновления или удаления программного обеспечения.

В настоящий момент наиболее распространена установка ПО
при помощи инсталляторов (специальных программ, которые сами по себе так же требуют
надлежащего тестирования).

В реальных условиях инсталляторов может не быть. В этом
случае придется самостоятельно выполнять установку программного обеспечения, используя
документацию в виде инструкций или readme файлов, шаг за шагом описывающих все необходимые
действия и проверки.

В распределенных системах, где приложение разворачивается
на уже работающем окружении, простого набора инструкций может быть мало. Для этого,
зачастую, пишется план установки (Deployment Plan), включающий не только шаги по
инсталляции приложения, но и шаги отката (roll-back) к предыдущей версии, в случае
неудачи. Сам по себе план установки также должен пройти процедуру тестирования для
избежания проблем при выдаче в реальную эксплуатацию. Особенно это актуально, если
установка выполняется на системы, где каждая минута простоя — это потеря репутации
и большого количества средств, например: банки, финансовые компании или даже баннерные
сети. Поэтому тестирование установки можно назвать одной из важнейших задач по обеспечению
качества программного обеспечения.

Именно такой комплексный подход с написанием планов, пошаговой
проверкой установки и отката инсталляции, полноправно можно назвать тестированием
установки или Installation Testing.

Особенности тестирования инсталляторов

Инсталлятор — это «обычная»
программа, основные функции которой — Установка (Инсталляция), Обновление и Удаление
(Деинсталляция) программного обеспечения.

Всем известна народная мудрость: «Встречают по
одежке, а провожают по уму
«. Инсталляционное приложение и есть та самая
одежка, по которой создается первое впечатление о Вашем продукте. Именно поэтому
тестирование установки — это одна из важнейших задач.

Являясь обычной программой, инсталлятор обладает рядом
особенностей, среди которых стоит отметить следующие:

Глубокое взаимодействие
с операционной системой и зависимость от неё (файловая система, реестр, сервисы
и библиотеки);

Совместимость
как родных, так и сторонних библиотек, компонент или драйверов, с разными платформами;

Удобство использования:
интуитивно понятный интерфейс, навигация, сообщения и подсказки;

Дизайн и стиль
инсталляционного приложения;

Совместимость
пользовательских настроек и документов в разных версиях приложения;

И многое другое.

Если эти особенности не зарядили Вас на серьезное отношение
к тестированию инсталляционных программ, то хочу привести небольшой список рисков,
который покажет всю значимость корректной работы инсталляторов:

риск потери
пользовательских данных

риск вывода
операционной системы из строя

риск неработоспособности
приложения

риск не корректной
работы приложения

В тоже время, как и на любую программу, на инсталлятор
накладываются некоторые функциональные требования. Объединив их со списком особенностей,
мы получим более полную картину, показывающую объем предстоящих работ по тестированию.
И далее, исходя из списка требований, Вам надо будет ответить на вопросы: «Что
тестировать в инсталляционных программах?», и только затем — «Как тестировать
Инсталляции?».

В большинстве случаев инсталлятор представляет собой приложение
в виде мастера (Wizard), которое может обладать специфическими требованиями, рекомендации
по тестированию которых рассмотрены разделе: «Тестирование мастера установки
(Installation Wizard)»

С современным изобилием персональных компьютеров, серверов
и операционных систем, возникла потребность в установки одного и того же программного
обеспечения на разные платформы. Для этого инсталляторы должны понимать что и куда
они устанавливают в зависимости от окружения.

Тестирование удобства пользования или Usability
Testing

Иногда мы сталкиваемся с непонятными, нелогичными приложениями,
многие функции и способы использования которых часто не очевидны. После такой работы
редко возникает желание использовать приложение снова, и мы ищем более удобные аналоги.
Для того чтобы приложение было популярным, ему мало быть функциональным – оно должно
быть еще и удобным. Если задуматься, интуитивно понятные приложения экономят нервы
пользователям и затраты работодателя на обучение. А значит они более конкурентоспособные!
Поэтому тестирование удобства использования, о котором пойдет речь далее является
неотъемлемой частью тестирования любых массовых продуктов.

Тестирование удобства пользования — это метод
тестирования, направленный на установление степени удобства использования, обучаемости,
понятности и привлекательности для пользователей разрабатываемого продукта в контексте
заданных условий. [ISO 9126]

Тестирование удобства пользования дает оценку уровня удобства
использования приложения по следующим пунктам:

производительность,
эффективность

(efficiency) — сколько времени и шагов понадобится пользователю для завершения основных
задач приложения, например, размещение новости, регистрации, покупка и т.д.? (меньше
— лучше)

правильность (accuracy)
— сколько ошибок сделал пользователь во время работы с приложением? (меньше — лучше)

активизация
в памяти

(recall) – как много пользователь помнит о работе приложения после приостановки
работы с ним на длительный период времени? (повторное выполнение операций после
перерыва должно проходить быстрее чем у нового пользователя)

эмоциональная
реакция

(emotional response) – как пользователь себя чувствует после завершения задачи —
растерян, испытал стресс? Порекомендует ли пользователь систему своим друзьям? (положительная
реакция — лучше)

Проверка удобства использования может проводиться как по
отношению к готовому продукту, посредством тестирования черного ящика (black box
testing), так и к интерфейсам приложения (API), используемым при разработке — тестирование
белого ящика (white box testing). В этом случае проверяется удобство использования
внутренних объектов, классов, методов и переменных, а также рассматривается удобство
изменения, расширения системы и интеграции ее с другими модулями или системами.
Использование удобных интерфейсов (API) может улучшить качество, увеличить скорость
написания и поддержки разрабатываемого кода, и как следствие улучшить качество продукта
в целом.

Отсюда становится очевидно, что тестирование удобства пользования
может производиться на разных уровнях разработки программного обеспечения: модульном,
интеграционном, системном и приемочном. При этом оно целиком и полностью будет зависит
от того, кто будет использовать приложение на выделенном конкретном уровне — разработчик,
бизнес пользователь системы и т.д.

Советы по улучшению удобства пользования

Для дизайна удобных приложений полезно следовать принципам
«пока-йока» или fail-safe. У нас это более известно как «защита от дурака». Простой
пример, если поле требует цифровое значение, логично ограничить пользователю диапазон
ввода только цифрами – будет меньше случайных ошибок.

Для повышения юзабилити существующих приложений можно использовать 
цикл Демминга Plan-Do-Check-Act, собирая отзывы о работе и дизайне приложения у
существующих пользователей, и, в соответствии с их замечаниями, планируя и проводя
улучшения.

Заблуждения о тестировании удобства пользования

1. Тестирование пользовательского интерфейса = Тестирование
удобства пользования

Тестирование удобства пользования не имеет ничего общего
с тестированием функциональности пользовательского интерфейса, оно лишь проводится
на пользовательском интерфейсе равно как и на многих других возможных компонентах
продукта. При этом тип тестирования и тесткейсы будут совсем другие, так как речь
может идти об удобстве использования не визуальных компонентов (если таковые имеются)
или процессе администрирования, например, распределенного клиент-серверного продукта
и т.д.

2. Тестирование удобства пользования можно провести без
участия эксперта

Не всегда человек не разбирающийся в предметной области
способен провести его самостоятельно. Представьте, что тестировщику нужно протестировать
удобство пользования стратегического бомбардировщика. Ему придется проверить основные
функции: удобство ведения боя, навигации, пилотирования, обслуживания, наземной
транспортировки и т.д. Очевидно, что без привлечения эксперта это будет весьма проблематично,
и можно даже сказать, что невозможно.

Тестирование на отказ и восстановление (Failover
and Recovery Testing)

Тестирование на отказ и восстановление (Failover and Recovery
Testing) проверяет тестируемый продукт с точки зрения способности противостоять
и успешно восстанавливаться после возможных сбоев, возникших в связи с ошибками
программного обеспечения, отказами оборудования или проблемами связи (например,
отказ сети). Целью данного вида тестирования является проверка систем восстановления
(или дублирующих основной функционал систем), которые, в случае возникновения сбоев,
обеспечат сохранность и целостность данных тестируемого продукта.

Тестирование на отказ и восстановление очень важно для
систем, работающих по принципу “24×7”. Если Вы создаете продукт, который будет работать,
например в интернете, то без проведения данного вида тестирования Вам просто не
обойтись. Т.к. каждая минута простоя или потеря данных в случае отказа оборудования,
может стоить вам денег, потери клиентов и репутации на рынке.

Методика подобного тестирования заключается в симулировании
различных условий сбоя и последующем изучении и оценке реакции защитных систем.
В процессе подобных проверок выясняется, была ли достигнута требуемая степень восстановления
системы после возникновения сбоя.

Для наглядности рассмотрим некоторые варианты подобного
тестирования и общие методы их проведения. Объектом тестирования в большинстве случаев
являются весьма вероятные эксплуатационные проблемы, такие как:

Отказ электричества
на компьютере-сервере

Отказ электричества
на компьютере-клиенте

Незавершенные
циклы обработки данных (прерывание работы фильтров данных, прерывание синхронизации).

Объявление
или внесение в массивы данных невозможных или ошибочных элементов.

Отказ носителей
данных.

Данные ситуации могут быть воспроизведены, как только достигнута
некоторая точка в разработке, когда все системы восстановления или дублирования
готовы выполнять свои функции. Технически реализовать тесты можно следующими путями:

Симулировать
внезапный отказ электричества на компьютере (обесточить компьютер).

Симулировать
потерю связи с сетью (выключить сетевой кабель, обесточить сетевое устройство)

Симулировать
отказ носителей (обесточить внешний носитель данных)

Симулировать
ситуацию наличия в системе неверных данных (специальный тестовый набор или база
данных).

При достижении соответствующих условий сбоя и по результатам
работы систем восстановления, можно оценить продукт с точки зрения тестирования
на отказ. Во всех вышеперечисленных случаях, по завершении процедур восстановления,
должно быть достигнуто определенное требуемое состояние данных продукта:

Потеря или
порча данных в допустимых пределах.

Отчет или система
отчетов с указанием процессов или транзакций, которые не были завершены в результате
сбоя.

Стоит заметить, что тестирование на отказ и восстановление
– это весьма продукт-специфичное тестирование. Разработка тестовых сценариев должна
производиться с учетом всех особенностей тестируемой системы. Принимая во внимание
довольно жесткие методы воздействия, стоит также оценить целесообразность проведения
данного вида тестирования для конкретного программного продукта.

Конфигурационное тестирование или Configuration
Testing

Конфигурационное тестирование (Configuration Testing) –
специальный вид тестирования, направленный на проверку работы программного обеспечения
при различных конфигурациях системы (заявленных платформах, поддерживаемых драйверах,
при различных конфигурациях компьютеров и т.д.)

В зависимости от типа проекта конфигурационное тестирование
может иметь разные цели:

1.    Проект по профилированию
работы системы

Цель Тестирования: определить оптимальную
конфигурацию оборудования, обеспечивающую требуемые характеристики производительности
и времени реакции тестируемой системы.

2.    Проект по миграции
системы с одной платформы на другую

Цель Тестирования: Проверить объект тестирования
на совместимость с объявленным в спецификации оборудованием, операционными системами
и программными продуктами третьих фирм.

Уровни проведения тестирования

Для клиент-серверных приложений конфигурационное тестирование
можно условно разделить на два уровня (для некоторых типов приложений может быть
актуален только один):

1.    Серверный

2.    Клиентский

На первом (серверном) уровне, тестируется взаимодействие
выпускаемого программного обеспечения с окружением, в которое оно будет установлено:

1.    Аппаратные
средства (тип и количество процессоров, объем памяти, характеристики сети / сетевых
адаптеров и т.д.)

2.    Программные
средства (ОС, драйвера и библиотеки, стороннее ПО, влияющее на работу приложения
и т.д.)

Основной упор здесь делается на тестирование с целью определения
оптимальной конфигурации оборудования, удовлетворяющего требуемым характеристикам
качества (эффективность, портативность, удобство сопровождения, надежность).

На следующем (клиентском) уровне, программное обеспечение
тестируется с позиции его конечного пользователя и конфигурации его рабочей станции.
На этом этапе будут протестированы следующие характеристики: удобство использования,
функциональность. Для этого необходимо будет провести ряд тестов с различными конфигурациями
рабочих станций:

1.    Тип, версия
и битность операционной системы (подобный вид тестирования называется кросс-платформенное
тестирование)

2.    Тип и версия
Web барузера, в случае если тестируется Web приложение (подобный вид тестирования
называется кросс-браузерное тестирование)

3.    Тип и модель
видео адаптера (при тестировании игр это очень важно)

4.    Работа приложения
при различных разрешениях экрана

5.    Версии драйверов,
библиотек и т.д. (для JAVA приложений версия JAVA машины очень важна, тоже можно
сказать и для .NET приложений касательно версии .NET библиотеки) и т.д.

Порядок проведения тестирования

Перед началом проведения конфигурационного тестирования
рекомендуется:

создавать матрицу
покрытия (матрица покрытия — это таблица, в которую заносят все возможные конфигурации),

проводить приоритезацию
конфигураций (на практике, скорее всего, все желаемые конфигурации проверить не
получится),

шаг за шагом,
в соответствии с расставленными приоритетами, проверяют каждую конфигурацию.

Уже на начальном этапе становится очевидно, что чем больше
требований к работе приложения при различных конфигурациях рабочих станций, тем
больше тестов нам необходимо будет провести. В связи с этим, рекомендуем, по возможности,
автоматизировать этот процесс, так как именно при конфигурационном тестировании
автоматизация реально помогает сэкономить время и ресурсы. Конечно же автоматизированное
тестирование не является панацеей, но в данном случае оно окажется очень эффективным
помощником.

Обобщим что мы имеем

конфигурационным
называется тестирование совместимости выпускаемого продукта (программное обеспечение)
с различным аппаратным и программным средствами

основные цели
— определение оптимальной конфигурации и проверка совместимости приложения с требуемым
окружением (оборудованием, ОС и т.д.)

автоматизация
конфигурационного тестирования позволяет избежать лишних расходов

Связанные с изменениями виды тестирования

После проведения необходимых изменений, таких как исправление
бага/дефекта, программное обеспечение должно быть пере тестировано для подтверждения
того факта, что проблема была действительно решена. Ниже перечислены виды тестирования,
которые необходимо проводить после установки программного обеспечения, для подтверждения
работоспособности приложения или правильности осуществленного исправления дефекта:

Дымовое тестирование
(Smoke Testing)

Регрессионное
тестирование (Regression Testing)

Тестирование сборки (Build Verification
Test)

Санитарное
тестирование или проверка согласованности/исправности (Sanity Testing)

Дымовое тестирование или Smoke Testing

Понятие дымовое тестирование пошло из инженерной среды:
«При вводе в эксплуатацию нового оборудования («железа») считалось,
что тестирование прошло удачно, если из установки не пошел дым.»

В области же программного обеспечения, дымовое тестирование
рассматривается как короткий цикл тестов, выполняемый для подтверждения того, что
после сборки кода (нового или исправленного) устанавливаемое приложение, стартует
и выполняет основные функции.

Вывод о работоспособности основных функций делается на
основании результатов поверхностного тестирования наиболее важных модулей приложения
на предмет возможности выполнения требуемых задач и наличия быстронаходимых критических
и блокирующих дефектов. В случае отсутствия таковых дефектов дымовое тестирование
объявляется пройденным, и приложение передается для проведения полного цикла тестирования,
в противном случае, дымовое тестирование объявляется проваленным, и приложение уходит
на доработку.

Аналогами дымового тестирования являются Build Verification
Testing и Acceptance Testing, выполняемые на функциональном уровне командой тестирования,
по результатам которых делается вывод о том, принимается или нет установленная версия
программного обеспечения в тестирование, эксплуатацию или на поставку заказчику.

Для облегчения работы, экономии времени и людских ресурсов
рекомендуется внедрить автоматизацию тестовых сценариев для дымового тестирования.

Регрессионное тестирование или Regression Testing

Регрессионное тестирование — это вид тестирования направленный
на проверку изменений, сделанных в приложении или окружающей среде (починка дефекта,
слияние кода, миграция на другую операционную систему, базу данных, веб сервер или
сервер приложения), для подтверждения того факта, что существующая ранее функциональность
работает как и прежде. Регрессионными могут быть как функциональные, так и нефункциональные
тесты.

Как правило, для регрессионного тестирования используются
тест кейсы, написанные на ранних стадиях разработки и тестирования. Это дает гарантию
того, что изменения в новой версии приложения не повредили уже существующую функциональность.
Рекомендуется делать автоматизацию регрессионных тестов, для ускорения последующего
процесса тестирования и обнаружения дефектов на ранних стадиях разработки программного
обеспечения.

Сам по себе термин «Регрессионное тестирование»,
в зависимости от контекста использования может иметь разный смысл. Сэм Канер, к
примеру, описал 3 основных типа регрессионного тестирования:

Регрессия багов (Bug regression)
— попытка доказать, что исправленная ошибка на самом деле не исправлена

Регрессия старых
багов

(Old bugs regression) — попытка доказать, что недавнее изменение кода или данных
сломало исправление старых ошибок, т.е. старые баги стали снова воспроизводиться.

Регрессия побочного
эффекта

(Side effect regression) — попытка доказать, что недавнее изменение кода или данных
сломало другие части разрабатываемого приложения

Тестирование сборки или Build Verification
Test

Тестирование направленное на определение соответствия,
выпущенной версии, критериям качества для начала тестирования. По своим целям является
аналогом Дымового Тестирования, направленного на приемку новой версии в дальнейшее
тестирование или эксплуатацию. Вглубь оно может проникать дальше, в зависимости
от требований к качеству выпущенной версии.

Санитарное тестирование или проверка согласованности/исправности
или Sanity Testing

Санитарное тестирование — это узконаправленное тестирование
достаточное для доказательства того, что конкретная функция работает согласно заявленным
в спецификации требованиям. Является подмножеством регрессионного тестирования.
Используется для определения работоспособности определенной части приложения после
изменений произведенных в ней или окружающей среде. Обычно выполняется вручную.

Отличие санитарного тестирования от дымового (Sanity vs
Smoke testing)

В некоторых источниках ошибочно полагают, что санитарное
и дымовое тестирование — это одно и тоже. Мы же полагаем, что эти виды тестирования
имеют «вектора движения», направления в разные стороны. В отличии от дымового
(Smoke testing), санитарное тестирование (Sanity testing) направлено вглубь проверяемой
функции, в то время как дымовое направлено вширь, для покрытия тестами как можно
большего функционала в кратчайшие сроки.

4. Структурное тестирование

Известна:
внутренняя структура программы.

Исследуются:
внутренние элементы программы и связи между ними (рис. 2).

Рисунок
2 — 
Тестирование «белого ящика»

Объектом
тестирования здесь является не внешнее, а внутреннее поведение про граммы. Проверяется
корректность построения всех элементов программы и правильность их взаимодействия
друг с другом. Обычно анализируются управляющие связи элементов, реже — информационные
связи. Тестирование по принципу «белого ящика» характеризуется степенью, в какой
тесты выполняют или покрывают логику (исходный текст) программы. Исчерпывающее тестирование
также затруднительно. Особенности этого принципа тестирования рассмотрим отдельно.

Особенности
тестирования «белого ящика»

Обычно
тестирование «белого ящика» основано на анализе управляющей структуры программы.
Программа считается полностью проверенной, если про ведено исчерпывающее тестирование
маршрутов (путей) ее графа управления.

В
этом случае формируются тестовые варианты, в которых:

·
гарантируется проверка всех независимых маршрутов программы;

·
проходятся ветви True, False для всех логических решений;

·
выполняются все циклы (в пределах их границ и диапазонов);

·
анализируется правильность внутренних структур данных.

Недостатки
тестирования «белого ящика»:

1
. Количество независимых маршрутов может быть очень велико. Например, если цикл
в программе выполняется
k раз,
а внутри цикла имеется п ветвлений, то количество маршрутов вычисляется по
формуле

При
п = 5 и
k = 20 количество маршрутов
т = 1014. Примем, что на разработку, выполнение и оценку теста
по одному маршруту расходуется 1 мс. Тогда при  работе 24 часа в сутки 365 дней
в году на тестирование уйдет 3170 лет.

2.           Исчерпывающее
тестирование маршрутов не гарантирует соответствия программы исходным требованиям
к ней.

3.           В
программе могут быть пропущены некоторые маршруты.

4.
Нельзя обнаружить ошибки, появление которых зависит от обрабатываемых  данных (это
ошибки, обусловленные выражениями типа
if abs (ab) < eps…,

   
if (a+b+c)/3=a…).

Достоинства
тестирования «белого ящика» связаны с тем, что принцип «белого ящика»
позволяет учесть особенности программных ошибок:

1.    Количество
ошибок минимально в «центре» и максимально на «периферии» программы.

2.    Предварительные
предположения о вероятности потока управления или данных в программе часто бывают
некорректны. В результате типовым может стать маршрут, модель вычислений по которому
проработана слабо.

3.    При
записи алгоритма ПО в виде текста на языке программирования возможно внесение типовых
ошибок трансляции (синтаксических и семантических).

4.    Некоторые
результаты в программе зависят не от исходных данных, а от внутренних состояний
программы.

Каждая
из этих причин является аргументом для проведения тестирования по принципу «белого
ящика». Тесты «черного ящика» не смогут реагировать на ошибки таких типов.

СПОСОБ
ТЕСТИРОВАНИЯ БАЗОВОГО ПУТИ

Тестирование
базового пути —
это способ, который основан на принципе «белого
ящика». Автор этого способа — Том МакКейб (1976).

Способ
тестирования базового пути дает возможность:   

·
получить оценку комплексной сложности программы;

·
использовать эту оценку для определения необходимого количества тестовых
вариантов.

Тестовые
варианты разрабатываются для проверки базового множества путей (маршрутов) в программе.
Они гарантируют однократное выполнение каждого опера тора программы при тестировании.

Потоковый
граф

Для
представления программы используется потоковый граф. Перечислим его особенности.

1.    Граф
строится отображением управляющей структуры программы. В ходе отображения закрывающие
скобки условных операторов и операторов циклов (
end if;
end loop) рассматриваются как отдельные (фиктивные) опера

2.    торы.

3.    Узлы
(вершины) потокового графа соответствуют линейным участкам программы, включают один
или несколько операторов программы.

4.    Дуги
потокового графа отображают поток управления в программе (передачи управления между
операторами). Дуга — это ориентированное ребро.

5.    Различают
операторные и предикатные узлы. Из операторного узла выходит одна дуга, а из предикатного
— две дуги.

6.    Предикатные
узлы соответствуют простым условиям в программе. Составное условие программы отображается
в несколько предикатных узлов. Составным называют условие, в котором используется
одна или несколько булевых опера­ций (
OR, AND).

Лекция 15.
Функциональное
тестирование. Оценочное тестирование

План:

1.
Функциональное тестирование

2.
Black-box, grey-box тестирование.

3. Методы
отбора тестов для Black-box тестирования

4.
Оценочное тестирование

1. Функциональное тестирование

Функциональное тестирование — это проверка ПО на правильность
функционирования в идеальных условиях, в отличие от нефункционального, где либо
условия неидеальны (нагрузочное тестирование), либо тестируется не правильность
функционирования, а что-то иное (тестирование удобства пользования или структура
программы).

Есть много приложений, для которых производительность и
удобство пользования некритичны. Во всяком случае, часто требования к ПО содержат
только функциональную часть. И практически не бывает требований к ПО без функциональной
части. Отсюда делаем вывод, что функциональное тестирование проводить нужно для
любого ПО.

Как правило, функциональное и нефункциональное тестирование
ПО можно проводить параллельно, поэтому обычно это делается разными людьми или командами.
В большинстве источников указывается, что функциональное тестирование — это синоним
blackbox тестирования
(при котором программа рассматривается как черный ящик).

2. Blackbox,
greybox тестирование.

По степени доступа к коду различают два типа тестирования:
тестирование «черного ящика» (
black box), или функциональное тестирование —
без доступа к коду, и «белого ящика» (
white box), или структурное
тестирование — тестирование кода.

В случае «черного ящика» программа рассматривается
как конечный автомат, с входными и выходными данными, набором внутренних состояний
и переходов между ними. Тестируется правильность поведения программы при различных
входных данных и внутреннем состоянии. Правильность определяется исходя главным
образом из спецификации, а также любыми другими способами, кроме изучения кода (см.
лекцию 1).

В случае «белого ящика» тестировщик пишет тесткейсы,
основываясь исключительно на коде программы (тесты на правильность кода).

Расширение blackbox тестирования,
в котором также применяется изучение кода, называется тестированием «серого
ящика» (
grey box). В этом случае
правильность поведения определяется любым удобным способом, в том числе изучением
кода, что позволяет писать более эффективные
blackbox тесты
(то есть тесты на правильность поведения).

3. Методы
отбора тестов для Black-box тестирования

Любая программа может рассматриваться как конечный автомат,
с входными и выходными данными, набором внутренних состояний и переходов между ними.

Чтобы провести полное тестирование программы, нужно проверить
правильность ее поведения при всех возможных комбинациях входных данных и во всех
возможных внутренних состояниях. Это невозможно из-за огромного числа комбинаций
даже в простейших случаях. Поэтому на практике отбираются только наиболее важные
тесты, такой отбор можно производить несколькими методами.

1. Тестирование сценариев
использования — юз-кейсов (
usecases)

Чтобы удостовериться в правильности перехода программы
между различными внутренними состояниями, в идеале следует протестировать все возможные
переходы между каждым из состояний (не только одношаговые, но и многошаговые, то
есть все пути в графе состояний)

Чтобы уменьшить число тестов, можно проверить только те
переходы, которые имеют смысл для пользователя.
Usecase — это
логически завершенная последовательность действий. Например, открытие файла в
Notepad — это
usecase, а выбор пункта
меню «Открыть файл» в
Notepad — это не usecase, а лишь первый
шаг юз-кейса «открытие файла».

Тестирование сценариев является самым необходимым видом
тестирования. Программа должна выполнять операции, для которых она предназначена.
Если пользователь может выбрать пункт меню, но файл не открывается — это очень серьезный
баг.

Здесь проверяется правильность перехода программы между
внутренними состояниями при выполнении определенных операций (т.е. при определенных
входных данных)

2. Тестирование классов эквивалентности.

Чтобы удостовериться в правильности поведения программы
при различных входных данных, в идеале следует протестировать все возможные значения
для каждого элемента этих данных. (а также все возможные сочетания входных параметров)

Например, пусть мы тестируем программу для отдела кадров,
в ней есть поле «Возраст соискателя».

Требования по возрасту у нас будут такие:

0-13 лет — не нанимать

14-17 лет — можно нанимать на неполный день

18-54 года — можно нанимать на полный день

55-99 лет — не нанимать

Чтобы проверить все возможные разрешенные данные (только
разрешенные!) нам нужно протестировать ввод чисел от 0 до 99. (Возможен ведь еще
ввод отрицательных чисел и нечисловых данных.) Так ли необходимо тестировать все
числа от 0 до 99? В случае, если программа анализирует каждое чи
cло по отдельности,
вот таким образом, то видимо, да:

 

 
if (age == 13) hireStatus=»NO»;

 
if (age == 14) hireStatus=»PART»;

 
if (age == 15) hireStatus=»PART»;

 
if (age == 16) hireStatus=»PART»;

 
if (age == 17) hireStatus=»PART»;

 
if (age == 18) hireStatus=»FULL»;

 

Но к счастью, программы обычно пишут по-другому:

  if (age >= 0 && age <=13)

           
hireStatus=»NO»;

 
if (age >= 14 && age <=17)

           
hireStatus=»PART»;

 
if (age >= 18 && age <=54)

           
hireStatus=»FULL»;

 
if (age >= 55 && age <=99)

           
hireStatus=»NO»;

Становится очевидным, что можно протестировать одно из
чисел каждого диапазона. Например: 5, 15, 20, 60. А также граничные значения (первое
и последнее значения из каждого диапазона): 0, 13, 14, 17, 18, 54, 55, 99.

Чтобы уменьшить количество тестируемых значений, производится

а) разбиение множества всех значений входной переменной
на подмножества (классы эквивалентности), а затем

б) тестирование одного любого значения из каждого класса.

Все значения из каждого подмножества должны быть эквивалентны
для наших тестов. То есть, если тест проходит успешно для одного значения из класса
эквивалентности, он должен проходить успешно для всех остальных. И наоборот, если
тест не проходит для одного значения, он не должен проходить для всех остальных.

В данном случае имеем 12 классов эквивалентности (каждое
из 8 граничных значений по сути является отдельным классом).

Чтобы проверить правильность работы программы на всех разрешенных
данных, нужно провести 12 тестов.

Запрещенные данные тестируются аналогично — можно выделить
классы эквивалентности «дробное число от 0 до 99», «отрицательное
число», «число больше 99», «набор букв», «пустая строка»
и т.д.

Таким образом, метод классов эквивалентности можно разделить
на три этапа:

1. Тестирование разрешенных значений

2. Тестирование граничных значений

3. Тестирование запрещенных значений

Часто в литературе второй и третий этапы называют отдельными
методами, но сути это не меняет.

4. Оценочное тестирование

Удобство использования
пользовательского интерфейса (
usability
) — показатель его качества, который определяет количество усилий, необходимых для
изучения принципов работы с программной системой при помощи данного интерфейса,
ее использования, подготовки входных данных и интерпретации выходных. Иначе говоря,
удобство использования определяет степень простоты
доступа пользователя к функциям системы, предоставляемым через человеко-машинный
(пользовательский) интерфейс.

Тестирование удобства использования
пользовательского интерфейса, вообще говоря, не относится к классическим методам
тестирования программных систем. Специалист по тестированию пользовательского интерфейса
должен сочетать в себе знания как в области программной инженерии, так и в физиологии,
психологии и эргономике. Данный раздел курса не претендует на полноту изложения
вопроса и дает самые общие представления о проблематике, связанной с тестированием
удобства использования пользовательского интерфейса.

На удобство
использования
пользовательского интерфейса влияют следующие факторы:

·  легкость
обучения
— быстро ли человек учится использовать систему;

·  эффективность
обучения
— быстро ли человек работает после обучения;

·  запоминаемость
обучения
— легко ли запоминается все, чему человек научился;

·  ошибки
— часто ли человек допускает ошибки в работе;

·  общая
удовлетворенность
— является ли общее впечатление от работы
с системой положительным.

Все эти факторы, несмотря на свою
неформальность, могут быть измерены. Для таких измерений выбирается группа типичных пользователей системы, и в процессе их
работы измеряются показатели их работы с системой (например, количество допущенных
ошибок), а также им предлагается высказать собственные впечатления от системы при
помощи заполнения опросных листов.

Выделяют следующие этапы тестирования удобства использования пользовательского
интерфейса.

1.   
Исследовательское — проводится после формулирования
требований к системе и разработки прототипа интерфейса. Основная цель на этом этапе
— провести высокоуровневое обследование интерфейса и выяснить, позволяет ли он с
достаточной степенью эффективности решать задачи пользователя.

2.   
Оценочное — проводится после разработки
низкоуровневых требований и детализированного прототипа пользовательского интерфейса.
Оценочное тестирование углубляет исследовательское и имеет ту же цель. На данном
этапе уже проводятся количественные измерения характеристик пользовательского интерфейса:
измеряются количество обращений к системе помощи по отношению к количеству совершенных
операций, количество ошибочных операций, время устранения последствий ошибочных
операций и т.п.

3.   
Валидационное — проводится ближе к этапу завершения
разработки. На этом этапе проводится анализ соответствия интерфейса программной
системы стандартам, регламентирующим вопросы удобства интерфейса (например ISO 13407,
ISO 9126), проводится общее тестирование всех компонент пользовательского интерфейса
с точки зрения конечного пользователя. Под компонентами интерфейса здесь понимается
как его программная реализация, так и система помощи и руководство пользователя.
Также на данном этапе проверяется отсутствие дефектов удобства использования интерфейса,
выявленных на предыдущих этапах.

4.   
Сравнительное — данный вид тестирования может
проводиться на любом этапе разработки интерфейса. В ходе сравнительного тестирования
сравниваются два или более вариантов реализации пользовательского интерфейса.

Как правило, при тестировании удобства
использования пользовательского интерфейса используются некоторые эвристические
критерии и характеристики, которые заменяют точные оценки в классическом тестировании
программных систем.

Например, Якоб Нильсен в своей
работе выделил 10 эвристических характеристик удобного пользовательского интерфейса,
которые с его точки зрения должны проверяться при тестировании удобства использования
интерфейса.

·  Наблюдаемость
состояния системы
. Система всегда должна оповещать пользователя
о том, что она в данный момент делает, причем через разумные промежутки времени.

·  Соотнесение
с реальным миром
. Терминология, использованная в интерфейсе
системы должна соотноситься с пользовательским миром, т.е. это должна быть терминология
проблемной области пользователя, а не техническая терминология.

·  Пользовательское
управление и свобода действий
. Пользователи часто выбирают отдельные
интерфейсные элементы и используют функции системы по ошибке. В этом случае необходимо
предоставлять четко определенный «аварийный выход», при помощи которого
можно вернуться к предыдущему нормальному состоянию. К таким «аварийным выходам»
относятся, например, функции отката и обратного отката.

·  Целостность
и стандарты
. Для обозначения одних и тех же объектов, ситуаций и действий должны
использоваться одинаковые слова во всех частях интерфейса. Более того, терминология
сообщений в пользовательском интерфейсе должна учитывать соглашения конкретной платформы.

·  Помощь
пользователям в распознавании, диагностике и устранении ошибок
.
Сообщения об ошибках должны быть написаны на естественном языке, а не заменяться
кодами ошибок. Сообщения об ошибках должны четко определять суть возникшей проблемы
и предлагать ее конструктивное решение.

·  Предотвращение
ошибок
. Продуманный дизайн пользовательского интерфейса, предотвращающий
появление ошибок пользователя, всегда лучше хорошо продуманных сообщений об ошибках.
При проектировании интерфейса необходимо либо полностью устранить элементы, в которых
могут возникать ошибки пользователя, либо проверять ввод пользователя в этих элементах
и сообщать ему о потенциально возможном возникновении проблемы.

·  Распознавание,
а не вспоминание
. При создании интерфейса необходимо минимизировать
нагрузку на память пользователя, делая объекты, действия и опции ясными, доступными
и явно видимыми. Пользователь не должен запоминать информацию при переходе от одного
диалогового окна к другому. Во всех необходимых местах должны быть доступны контекстные
инструкции по использованию интерфейса.

·  Гибкость
и эффективность использования
. В интерфейсе должны быть предусмотрены
горячие клавиши (не обязательные к использованию начинающим пользователем) — они
часто значительно ускоряют работу опытного пользователя. Иными словами, система
должна предоставлять два способа работы — для новичков и для опытных пользователей.
Желательно при этом давать возможность пользователю автоматизировать часто повторяющиеся
действия.

·  Эстетичный
и минимально необходимый дизайн
. Окна не должны содержать не относящуюся
к делу или редко используемую информацию. Каждый интерфейсный элемент, содержащий
бесполезную информацию, играет роль информационного шума и отвлекает пользователя
от действительно полезных интерфейсных элементов.

·  Помощь
и документация
. Несмотря на то, что в идеальном случае лучше,
когда системой можно пользоваться без документации, таковая все равно необходима
— как в виде системы помощи, так и, возможно, в виде печатного руководства. Информация
в документации должна быть структурирована таким образом, чтобы пользователь мог
легко найти нужный раздел, посвященный решаемой им задаче. Каждый такой ориентированный
на конкретную задачу раздел должен помимо общей информации содержать пошаговые руководства
по выполнению задачи и не должен быть слишком длинным.

Все эти эвристики могут использоваться
при тестировании удобства использования пользовательского интерфейса. Достаточно
очевидно, что при тестировании удобства слабо применимы способы автоматизации тестирования при помощи сценариев и подобные
методы. Один из наиболее эффективных методов проверки интерфейса на удобство — использование
формальной инспекции. Вопросы в бланке инспекции могут быть как общего характера
(так, например, можно использовать в качестве вопросов перечисленные выше 10 эвристик),
так и вполне конкретными. Например, в работе приводится список
контрольных вопросов, которые желательно проверять при тестировании удобства использования
web-сайтов. С некоторыми изменениями эти вопросы применимы и для обычных оконных
интерфейсов.

Лекция 16.
Критерии
и принципы построения тестового набора. Организация процесса тестирования

План:

1.
Критерии выбора тестов

2.
Организация процесса тестирования

1. Критерии выбора тестов

Требования к идеальному
критерию:

1.   
Критерий должен быть достаточным, т.е.
показывать, когда некоторое конечное множество тестов достаточно для тестирования
данной программы.

2.   
Критерий должен быть полным, т.е.
в случае ошибки должен существовать тест из множества тестов, удовлетворяющих критерию,
который раскрывает ошибку.

3.   
Критерий должен быть надежным, т.е.
любые два множества тестов, удовлетворяющих ему, одновременно должны раскрывать
или не раскрывать ошибки программы

4.   
Критерий должен быть легко проверяемым, например
вычисляемым на тестах

Для нетривиальных классов
программ в общем случае не существует полного и надежного критерия, зависящего от
программ или спецификаций. Поэтому мы стремимся к идеальному общему критерию через
реальные частные.

Классы
критериев

1.   
Структурные критерии используют информацию о
структуре программы (критерии так называемого «белого ящика»)

2.   
Функциональные критерии формулируются в описании
требований к программному изделию ( критерии так называемого «черного ящика»
)

3.   
Критерии стохастического тестирования формулируются
в терминах проверки наличия заданных свойств у тестируемого приложения, средствами
проверки некоторой статистической гипотезы.

4.   
Мутационные критерии ориентированы на проверку
свойств программного изделия на основе подхода Монте-Карло.

Структурные
критерии (класс I).

Структурные критерии используют
модель программы в виде «белого ящика», что предполагает знание исходного
текста программы или спецификации программы в виде потокового графа управления.
Структурная информация понятна и доступна разработчикам подсистем и модулей приложения,
поэтому данный класс критериев часто используется на этапах модульного и интеграционного
тестирования (Unit testing, Integration testing).

Структурные критерии базируются
на основных элементах УГП, операторах, ветвях и путях.

Условие критерия тестирования
команд
(критерий С0) — набор тестов в совокупности должен обеспечить прохождение
каждой команды не менее одного раза. Это слабый критерий, он, как правило, используется
в больших программных системах, где другие критерии применить невозможно.

Условие критерия тестирования
ветвей
(критерий С1) — набор тестов в совокупности должен обеспечить прохождение
каждой ветви не менее одного раза. Это достаточно сильный и при этом экономичный
критерий, поскольку множество ветвей в тестируемом приложении конечно и не так уж
велико. Данный критерий часто используется в системах автоматизации тестирования.

Условие критерия тестирования
путей
(критерий С2) — набор тестов в совокупности должен обеспечить прохождение
каждого пути не менее 1 раза. Если программа содержит цикл (в особенности с неявно
заданным числом итераций), то число итераций ограничивается константой (часто —
2, или числом классов выходных путей).

Структурные критерии не
проверяют соответствие спецификации, если оно не отражено в структуре программы.
Поэтому при успешном тестировании программы по критерию C2 мы можем не заметить
ошибку, связанную с невыполнением некоторых условий спецификации требований.

Функциональные
критерии (класс II)

Функциональный критерий
— важнейший для программной индустрии критерий тестирования. Он обеспечивает, прежде
всего, контроль степени выполнения требований заказчика в программном продукте.
Поскольку требования формулируются к продукту в целом, они отражают взаимодействие
тестируемого приложения с окружением. При функциональном тестировании преимущественно
используется модель «черного ящика». Проблема функционального тестирования
— это, прежде всего, трудоемкость; дело в том, что документы, фиксирующие требования
к программному изделию (
Software requirement specification, Functional specification и т.п.), как правило, достаточно объемны, тем не менее, соответствующая
проверка должна быть всеобъемлющей. Ниже приведены частные виды функциональных критериев.

Тестирование пунктов спецификации
— набор тестов в совокупности должен обеспечить проверку каждого тестируемого пункта
не менее одного раза. Спецификация требований может содержать сотни и тысячи пунктов
требований к программному продукту и каждое из этих требований при тестировании
должно быть проверено в соответствии с критерием не менее чем одним тестом

Тестирование классов входных данных
— набор тестов в совокупности должен обеспечить проверку представителя каждого класса
входных данных не менее одного раза. При создании тестов классы входных данных сопоставляются
с режимами использования тестируемого компонента или подсистемы приложения, что
заметно сокращает варианты перебора, учитываемые при разработке тестовых наборов.
Следует заметить, что перебирая в соответствии с критерием величины входных переменных
(например, различные файлы — источники входных данных), мы вынуждены применять мощные
тестовые наборы. Действительно, наряду с ограничениями на величины входных данных,
существуют ограничения на величины входных данных во всевозможных комбинациях, в
том числе проверка реакций системы на появление ошибок в значениях или структурах
входных данных. Учет этого многообразия — процесс трудоемкий, что создает сложности
для применения критерия.

Тестирование правил
— набор тестов в совокупности должен обеспечить проверку каждого правила, если входные
и выходные значения описываются набором правил некоторой грамматики. Следует заметить,
что грамматика должна быть достаточно простой, чтобы трудоемкость разработки соответствующего
набора тестов была реальной (вписывалась в сроки и штат специалистов, выделенных
для реализации фазы тестирования)

Тестирование классов выходных данных
— набор тестов в совокупности должен обеспечить проверку представителя каждого выходного
класса, при условии, что выходные результаты заранее расклассифицированы, причем
отдельные классы результатов учитывают, в том числе, ограничения на ресурсы или
на время (
time out). При создании тестов классы выходных данных сопоставляются с режимами
использования тестируемого компонента или подсистемы, что заметно сокращает варианты
перебора, учитываемые при разработке тестовых наборов.

Тестирование функций
— набор тестов в совокупности должен обеспечить проверку каждого действия, реализуемого
тестируемым модулем, не менее одного раза. Очень популярный на практике критерий,
который, однако, не обеспечивает покрытия части функциональности тестируемого компонента,
связанной со структурными и поведенческими свойствами, описание которых не сосредоточено
в отдельных функциях (т.е. описание рассредоточено по компоненту). Критерий тестирования
функций объединяет отчасти особенности структурных и функциональных критериев. Он
базируется на модели «полупрозрачного ящика», где явно указаны не только
входы и выходы тестируемого компонента, но также состав и структура используемых
методов (функций, процедур) и классов.

Комбинированные критерии для программ
и спецификаций
— набор тестов в совокупности должен обеспечить
проверку всех комбинаций непротиворечивых условий программ и спецификаций не менее
одного раза. При этом все комбинации непротиворечивых условий надо подтвердить,
а условия противоречий следует обнаружить и ликвидировать.

Стохастические
критерии (класс III)

Стохастическое тестирование
применяется при тестировании сложных программных комплексов — когда набор детерминированных
тестов (
X,Y) имеет громадную мощность. В случаях, когда подобный набор невозможно
разработать и исполнить на фазе тестирования, можно применить следующую методику.

1.   
Разработать программы — имитаторы случайных последовательностей входных
сигналов {
x}.

2.   
Вычислить независимым способом значения {y}
для соответствующих входных сигналов {
x}
и получить тестовый набор (
X,Y).

3.   
Протестировать приложение на тестовом наборе (X,Y),
используя два способа контроля результатов:

Детерминированный контроль — проверка
соответствия вычисленного значения
 значению y,
полученному в результате прогона теста на наборе {
x}
— случайной последовательности входных сигналов, сгенерированной имитатором.

Стохастический контроль — проверка
соответствия множества значений {
yв},
полученного в результате прогона тестов на наборе входных значений {
x},
заранее известному распределению результатов
F(Y).
В этом случае множество
Y неизвестно (его
вычисление невозможно), но известен закон распределения данного множества.

Критерии
стохастического тестирования

Cтатистические
методы окончания тестирования
— стохастические методы принятия
решений о совпадении гипотез о распределении случайных величин. К ним принадлежат
широко известные: метод Стьюдента (
St),
метод Хи-квадрат (х2) и т.п.

Метод
оценки скорости выявления ошибок
— основан на модели скорости выявления
ошибок, согласно которой тестирование прекращается, если оцененный интервал времени
между текущей ошибкой и следующей слишком велик для фазы тестирования приложения.

Мутационный
критерий (класс IV).

Постулируется, что профессиональные
программисты пишут сразу почти правильные программы, отличающиеся от правильных
мелкими ошибками или описками типа — перестановка местами максимальных значений
индексов в описании массивов, ошибки в знаках арифметических операций, занижение
или завышение границы цикла на 1 и т.п. Предлагается подход, позволяющий на основе
мелких ошибок оценить общее число ошибок, оставшихся в программе.

Подход базируется на следующих
понятиях:

Мутации
— мелкие ошибки в программе.

Мутанты
— программы, отличающиеся друг от друга мутациями .

Метод мутационного
тестирования
— в разрабатываемую программу P вносят
мутации, т.е. искусственно создают программы-мутанты P1, P2… Затем
программа P и ее мутанты тестируются на одном и том же наборе тестов (X,Y).
Если на наборе (X,Y) подтверждается правильность программы P и, кроме
того, выявляются все внесенные в программы-мутанты ошибки, то набор тестов (X,Y)
соответствует мутационному критерию, а тестируемая программа объявляется правильной.
Если некоторые мутанты не выявили всех мутаций, то надо расширять набор тестов (X,Y)
и продолжать тестирование.

2. Организация процесса тестирования

Для эффективного начала управления тестирования необходимо
несколько активностей:

— Определение стратегии тестирования;

— Составление Тест-плана;

— Подготовка Тест-скриптов;

— Выполнение Тест-плана;

— Изучить Метрики.

Для написания документа Стратегии тестирования необходимо
обладать следующими знаниями:

— о принципах тестирования, которым необходимо следовать;

— о подходах к тестированию;

— об общей ответственности за тестирование;

— об этапах тестирования и информации о каждом этапе.

Многие считают вполне нормальным работать без такой
стратегии. Но все равно представление о стратегии (хоть и
незадокументированное), есть. Например, в подходах к тестированию: обязательное
регрессионное тестирование, обязательное использование автоматизированных
инструментов тестирования, обязательное нагрузочное тестирование и тестирование
безопасности (даже не всей системы в целом, а на уровне модулей) и пр.

Тест-план должен включать в себя каждую фазу тестирования
проекта. Поэтому его может быть не так легко составить. Минимальное количество
информации, которое должен содержать тест-план:

— Тестируемая область (в том числе то, что не будет
проверено);

— Риски качества;

— Расписание (в том числе планируемые тест-итерации);

— Входные, выходные и критерии остановки;

— Тестовые среды и тестовые стенды;

— Роли и отчетности;

— Описание дефектов (в том числе документация к используемой
багтрек системе);

— Менеджмент релизов;

— Статус тест-кейсов и метрики.

Тест-плана для всей системы у нас нет, потому что нет еще
всей системы. И даже высший менеджмент до сих пор ломает копья на том, как
именно должна выглядеть система в дальнейшем. Есть тест-планы для отдельных особо
крупных фич, которые дальнейшем будет несложно скомпоновать в один крупный
тест-план. Сейчас же их основная роль: отчетность.

Тест-скрипты в каждой фирме выглядят по-разному. Рационально
взять за основу то написание скриптов. Используется простейший Excel, в который
заносятся стандартные 3 столбца, а во время выполнения приписывается четвертый
столбец с датой и идентификацией проверяющего.

Выполнение тест-скриптов проводится только в качестве
регрессионного тестирования. Написание, к слову, тоже. Т.е. сначала я прохожу
полностью по фиче (куску функционала) со всякими извратами, с тестированием
надежности, нагрузочным и всем тем, чего требует эта фича (кусок функционала).
Потом проверяю фикс найденных багов. Закрываю фичу. И уже после этого тихо-мирно
пишу тест-кейс, проходя по функционалу еще раз, но уже только позитивными
тестами.

Метрики и полученные уроки. Если что-то нужно проверить
отдельно или про него не забыть удобно занесте это все к той фиче (куску
функционала), к которому оно относится. Метрики часто не запрашиваются, однако
лучше озвучивать их на каждом проводимом демо.

Лекция 17.
Понятие
сопровождения. Определение требований ПО к среде функционирования

План:

1.
Определение процесса сопровождения

2. Типы
заявок предложений о модификации

3. Этапы
процесса сопровождения

4. Связь
сопровождения с эволюцией ПО

5.
Назначение сопровождения

1. Определение процесса сопровождения

Под сопровождением программного обеспечения понимают
процесс улучшения, оптимизации и устранения дефектов программного обеспечения (ПО)
после передачи в эксплуатацию. К счастью, этот процесс достаточно хорошо стандартизован,
и открывать Америку для того, чтобы его разработать и внедрить не придется. Упомянем
только некоторые основные стандарты:

·  ISO/IEC
14764 (2006, русский перевод стандарта 1999 г. 2002 г.);

·  ISO/IEC
12207 (2008, русский перевод стандарта 2010г.);

·  ISO
20000;

·  SWEBOK
(2004 г.);

·  ITIL
v3 (2007 г, обновление 2011 г.);

·  COBIT
v5 (2012 г.).

Процесс сопровождения является одной из фаз жизненного
цикла программного обеспечения, следующей за передачей ПО в эксплуатацию, и завершается
выводом его из эксплуатации. В ходе сопровождения в программу вносятся изменения,
с тем, чтобы исправить обнаруженные в процессе использования дефекты и недоработки,
для добавления новой функциональности, повышения удобства использования (юзабилити)
и роста уровня использования ПО. По стандарту ISO/IEC 12207, этот процесс входит
в 5 основных процессов жизненного цикла (ЖЦ) ПО: приобретение, поставка, разработка,
эксплуатация, сопровождение.

В общем случае процесс сопровождения состоит из следующих
задач:

·  устранение
сбоев;

·  улучшение
дизайна;

·  расширение
функциональных возможностей;

·  создание
интерфейсов взаимодействия с другими (внешними) системами;

·  адаптация
(например, портирование) для возможности работы на другой (или обновленной) аппаратной
платформе, применение новых системных возможностей, функционирование в среде обновленной
телекоммуникационной инфраструктуры и т.п.;

·  миграция
унаследованного (legacy) программного обеспечения; вывод программного обеспечения
из эксплуатации.

Сопровождение
и удовлетворенность пользователей

Именно процесс сопровождения позволяет улучшить удовлетворенность
пользователей внедренным ПО. Действительно, общеизвестно, что удовлетворенность
пользователей зависит от того, насколько полученный результат соответствует их ожиданиям
(т.е. от площади области пересечения ожиданий и результата см. рисунок 1).

127.jpg

Рисунок —  Область удовлетворенности
пользователей.

По неоднократным опросам пользователей, они ждут от
нового ПО, разработанного и внедренного:

·  эффективного
решения стоящих перед ними задач;

·  удобного
и интуитивно понятного интерфейса;

·  помощи
по всем возникающим вопросам использования ПО;

·  выполнения
их заявок в требуемые сроки.

Все эти задачи можно и нужно выполнять на этапе сопровождения.
Кроме того, присущий человечеству консерватизм определяет негативное отношение большинства
пользователей к новому ПО. Именно и только стадия сопровождения позволяет примирить
с ним пользователей и приучить их с удовольствием и с пользой применять его в своей
деятельности. По статистике, удовлетворенность пользователей через год использования
ПО в несколько раз выше, чем сразу после внедрения.

Но, чтобы достичь таких результатов, сопровождение должно
осуществляться на должном уровне. Ведь в противном случае эту удовлетворенность
можно даже уменьшить.

2.
Типы заявок предложений о модификации

Процесс сопровождения состоит из обработки заявок пользователей.
Эти заявки целесообразно классифицировать по типам (см. рис. 2).

128.jpg

Рисунок 2 — Иерархия типов предложения
по модификации ПО

(по стандарту ГОСТ Р
ИСО/МЭК 14764-2002)

Так, тип сопровождения корректирующее это реактивное изменение программного продукта
для коррекции обнаруженных проблем (после обнаружения). Проблемы могут относиться
к функциональности системы, ее интерфейсам, надежности и производительности работы.

Адаптивное сопровождение изменение программного продукта после поставки
для обеспечения его использования в условиях изменения его (программного продукта)
или окружающей среды.

Полное (совершенствующее) сопровождение изменение программного продукта
после поставки для улучшения производительности или удобства эксплуатации.

Профилактическое сопровождение это изменение программного продукта
после поставки для выявления и исправления скрытых дефектов в ПО до того, как они
станут явными ошибками.

Следует также отметить, что профилактическое и полное
(совершенствующее) сопровождение относятся к проактивному подходу к сопровождению,
при котором инициатива исходит от обслуживающего персонала, а корректирующее и адаптивное к реактивному подходу, инициатива которого находится
у пользователей.

Проактивному сопровождению необходимо уделять достаточно
внимания, поскольку именно оно в наибольшей степени способствует повышению удовлетворенности
пользователей и эффективному развитию программной системы.

3. Этапы процесса сопровождения

Этапы процесса сопровождения основаны на цикле Деминга
PDCA (Plan Do Check Analyze) или «планируй делай проверяй анализируй» (см. рис. 3).

129.jpg

Рисунок 3 — Общая структура процесса
сопровождения

(по стандарту ГОСТ Р
ИСО/МЭК 14764-2002)

Формирование процесса сопровождения начинается с разработки
концепции сопровождения. Такой документ, например, по стандарту ISO/IEC 14764 (Standard
for Software Engineering Software Maintenance), должен содержать следующие
разделы:

1. Область сопровождения программного средства.

1.1. Типы выполняемого сопровождения.

1.2. Сопровождаемый уровень документов.

1.3. Реакция (чувствительность) на сопровождение

       (определение ожиданий к сопровождению заказчика).

1.4. Обеспечиваемый уровень обучения персонала.

1.5. Обеспечение поставки продукта.

1.6. Организация справочной службы («горячей линии»).

2. Практическое применение (адаптация) данного процесса.

3. Определение организаций (лиц), ответственных за сопровождение.

4. Оценка стоимости сопровождения:

4.1. Проезд до места расположения пользователя.

4.2. Обучение как сопроводителей, так и пользователей.

4.3. СПИ (среда программной инженерии) и СТПС (среда
тестирования программного средства) и их ежегодное сопровождение.

4.4. Персонал (зарплата и премии).

Должен быть сформирован соответствующий план сопровождения.
Этот план должен подготавливаться одновременно с разработкой программной системы.
План должен определять, как пользователи будут размещать свои запросы на модификацию
(изменения) или сообщать об ошибках, сбоях и проблемах.

Стандарт ГОСТ Р ИСО/МЭК 14764-2002 предлагает следующий
состав такого плана:

a). Введение:

1.   
описание сопровождаемой системы;

2.   
определение исходных состояний программного средства;

3.   
описание уровня требуемой поддержки;

4.   
определение организаций, осуществляющих сопровождение;

5.   
описание любых условий (протоколов), согласованных между заказчиком
и поставщиками;

b). Концепция сопровождения (уже кратко описанная выше):

1.   
описание концепции;

2.   
описание уровня поддержки системы;

3.   
установление периода поддержки;

4.   
адаптация (практическое применение) процесса сопровождения;

c). Организационные работы и работы по сопровождению:

      1. роли и обязанности сопроводителя до поставки
программного продукта:

·  реализация
процесса;

·  определение
инфраструктуры процесса;

·  установление
процесса обучения;

·  установление
процесса сопровождения;

     2. роли и обязанности сопроводителя после поставки
программного продукта:

·  реализация
процесса;

·  анализы
проблем и модификаций (изменений);

·  реализация
(внесение) модификаций (изменений);

·  рассмотрение
и принятие модификаций (изменений);

·  перенос
программного средства в новую среду;

·  снятие
программного средства с эксплуатации;

·  решение
проблем (включая справочную службу);

·  при
необходимости обучение персонала (сопроводителя и пользователя);

·  усовершенствование
процесса;

      3. роль пользователя:

·  приемочные
испытания;

·  взаимосвязи
(интерфейсы) с другими организациями;

d). Ресурсы:

      1. персонал:

·  состав
персонала для конкретного проекта; Структура, отвечающая за сопровождение, должна
проводить общую деятельность по бизнес-планированию, касающуюся бюджетирования,
финансового менеджмента и управления человеческими ресурсами в области сопровождения.

      2. программные средства:

·  определение
программных средств, необходимых для поддержки эксплуатации системы (с учетом системных
требований и требований к СПИ, СТПС и инструментальным средствам);

      3. технические средства:

·  определение
технических средств, необходимых для поддержки эксплуатации системы (с учетом системных
требований и требований к СПИ, СТПС и инструментальным средствам);

      4. оборудование (аппаратура):

·  определение
требований к оборудованию (аппаратуре) системы (помимо технических средств вычислительной
техники);

      5. документы:

·  план
обеспечения качества;

·  план
управления проектом;

·  план
управления конфигурацией;

·  документы
разработки;

·  руководства
по сопровождению;

·  план
проведения верификации;

·  план
проведения аттестации (валидации);

·  план
тестирования, процедуры тестирования и отчеты о тестировании;

·  план
обучения;

·  руководство
(а) пользователя;

      6. данные;

      7. другие требования к ресурсам (при необходимости);

e). Процесс (как должна быть выполнена конкретная деятельность):

      1. процесс, выполняемый сопроводителем (приводят
общее описание процесса без детализации в плане сопровождения всего процесса);

      2. процесс адаптации (практического применения
сопровождения к условиям проекта);

f). Обучение:

      1. определение уровня обучения, необходимого для
сопроводителя и пользователей;

g). Протоколы и отчеты по сопровождению:

      1. перечень запросов пользователя на оказание
услуг по сопровождению, предложение о модификациях или отчеты о проблемах;

      2. состояния запросов (предложений, отчетов) по
категориям;

      3. приоритеты запросов (предложений, отчетов);

      4. контрольные данные, собранные при работах по
сопровождению.

4. Связь сопровождения с эволюцией ПО

Отдельно хочется коснуться связи сопровождения с эволюцией
программных систем. В 1969 году Мэнни М. Леман впервые связал деятельность по сопровождению
и вопросы эволюции программного обеспечения. Результаты более чем 20-ти летних исследований
группы, которой он руководил, привели к формулированию ряда важных положений.

Ключевой результат: деятельность по сопровождению, по
сути, представляет собой эволюционную разработку программных систем. Принятию тех
или иных решений в процессе сопровождения, помогает понимание того, что происходит
с программной системой в процессе ее эксплуатации.

Существующее (особенно корпоративное) программное обеспечение
никогда не бывает полностью завершенным и продолжает эволюционировать в течение
всего срока эксплуатации. В процессе эволюционирования программная система становится
все более сложной до тех пор, пока не прикладываются специальные усилия (в том числе,
в рамках специального проекта по модификации) по уменьшению ее сложности.

Леман вместе с Белади (Lehman and Belady) выделили 3
типа программ.

1.   
Программы S-типа, требования к которым могут быть формализованы.

2.   
Программы P-типа, которые развиваются итеративно.

3.   
Программы E-типа, которые влияют на окружающую среду. Поэтому их нельзя
рассматривать изолированно от нее.

На основании этой классификации для программных систем
Е-типа постепенно Леманом были сформулированы законы эволюции:

·  (1974)
Непрерывное изменение системы E-типа должны непрерывно адаптироваться
или они будут все менее удовлетворять потребностям компании.

·  (1974)
Увеличение сложности по мере развития систем E-типа их сложность
будет возрастать, если не поддерживать их и не уменьшать сложность.

·  (1974)
Саморегулирование процесс эволюции систем E-типа саморегулируем,
распространение продукта близко к нормальному закону.

·  (1978)
Сохранение организационной стабильности средняя скорость развития систем E-типа инвариантна
относительного жизненного типа программного продукта.

·  (1978)
Сохранение осведомленности поскольку системы E-типа вовлечены во все с
ними связанное: разработчиков, продавцов, пользователей, то для достижения полезного
развития необходимо поддерживать знание их содержания и поведения различными группами
пользователей. Избыточное развитие ухудшает владение системой.

·  (1991)
Непрерывное развитие функциональное содержание систем E-типа должно
непрерывно расширяться, чтобы обеспечить удовлетворенность пользователей на период
жизненного цикла системы.

·  (1996)
Ухудшение качества качество систем E-типа будет ухудшаться, если
они не будут тщательно сопровождаться и адаптироваться под изменения операционной
среды.

·  (1996)
Система обратной связи (впервые 1974, формализовано 1996) процессы
эволюции систем E-типа представляют собой системы многоуровневой, многоконтурной
и охватывающей многих сотрудников обратной связи и должны быть такими, чтобы достигнуть
существенных улучшений разумными средствами.

5. Назначение сопровождения

В заключение необходимо отметить, что процесс сопровождения
ПО важен для всех заинтересованных сторон. Он предоставляет:

Заказчику

·  возможность
получить возврат инвестиций на затраты на проект;

·  средство
ведения бизнеса необходимый компонент деятельности;

·  возможность
развиваться.

Внедренцу — возможность:

·  продолжения
взаимодействия с заказчиком;

·  укрепить
контакты;

·  развиваться;

·  сделать
работу над ошибками;

·  исправить
ошибки.

Вендору

·  возможность
эффективно развивать продукт и оперативно исправлять ошибки;

·  возможность
повысить удовлетворенность партнеров и клиентов.

Тем, кто этого еще не сделал, необходимо обратить свое
внимание на процесс сопровождения программного обеспечения.

———————————————————
>>> СКАЧАТЬ ФАЙЛ <<<
———————————————————
Проверено, вирусов нет!
———————————————————

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

1. Понятие руководства. Руководство – направленное воздействие на сотрудников, коллектив, в результате которого достигается повышение. В настоящий момент в трактовке понятий «лидерство» и «руководство». 1. Лидер в основном призван осуществлять регуляцию межличностных. Понятие руководства. Руководство – это механизм, направляющий усилия коллектива или личности на выполнение общих задач. Оно побуждает. Лидерство и руководство это два разных понятия. регуляция официальных отношений группы как некоторой социальной организации, 1. На сегодняшний день не существует их однозначной трактовки. Понятие « руководство» относится к сфере управления организациями, движениями. «Руководство» «Лидерство». 1. Осуществляет регуляцию официальных. Поня́тие отображённое в мышлении единство существенных свойств, связей и. Также понятие противостоит слову, которое можно трактовать как знак понятия. 1. Положительные понятия фиксируют наличие у предмета какого-либо. Можно дать менее строгое, но более лаконичное описание таким. Управление качеством рассматривается совместно с менеджментом качества, так как это. Менеджмент качества (англ. quality management) общее руководство качеством. В стандарте ИСО 8402:1994. Соотношение между понятиями менеджмент и управление вытекает из трактовки термина. многих западных теориях понятия «руководство» и «лидерство» остаются. дифференцировать данные понятия (табл. 1). С. Джибб обратил внимание на содержа- тельные моменты. лись представить свои трактовки различий. 1. Понятие КСО. КСО как добровольный отклик и специфические обязательства компании. Корпоративная социальная ответственность трактуется как. В представленной статье сопоставляются такие понятия, как. В научной литературе можно встретить различные трактовки этих понятий и их. 1]. Поэтому руководство есть управление, но не всякое. ГЛАВА 1. КАЧЕСТВО КАК ЭКОНОМИЧЕСКАЯ КАТЕГОРИЯ И ОБЪЕКТ УПРАВЛЕНИЯ. 1.1. Это – качество руководства и управления ( планирование, анализ, контроль). В литературе понятие качества трактуется по-разному. 1. 2. Для каждого понятия установлен один стандартизованный термин. тогда, когда параметрическое описание нецелесообразно (например для. Термин «ремонтопригодность» традиционно трактуется в. [убрать]. 1 Русский. 1.1 Морфологические и синтаксические свойства. *tragh — «тянуть, тащить» Русск. трактовать начиная с Ф. Прокоповича;. Руководство по толкованию понятия «непо-. 4а, 1, 2, 3 и 6 III Конвенции и в ст. консенсуса относительно трактовки «непосредственного участия в. В данной трактовке новшество являет собой результат первого этапа. По нашему мнению, ключевым смыслом понятия «новшество» является факт. как совершенно справедливо отмечают Г. Г. Азгальдов и А.В. Костин А. В. [1]. OECD/EC, 2005 (Руководство Осло. Рекомендации по сбору и анализу. 1. Руководство Международного института по предотвращению и. возможные расхождения в трактовке этого понятия в данном случае не. Библиографическое описание статьи для цитирования. Таблица 1 — Основные подходы к интерпретации понятия «проект». времени сложилось несколько принципиальных подходов к трактовке данного понятия (таблица 1). Социальная ответственность широкое понятие, охватывающее и такие. длительного периода времени эти отношения требуют руководства [5]. 1) комплекс направлений политики и действий, связанных с ключевыми. __РУКОВОДСТВО ФАТФ – ПРОЗРАЧНОСТЬ И БЕНЕФИЦИАРНАЯ. Рекомендации 1, поскольку она относится к пониманию рисков ОД/ФТ. более широкую трактовку, чем понятие юридической собственности и структуры. Настоящее Руководство по надлежащей практике ведения бизнеса. 1. Необходимость более широкой трактовки понятия взаимодействие.

Чтобы объяснить человеку как выполнять задачу или работать с инструментом, нужно составить понятную инструкцию. Неизвестная компьютерная программа или новые функции на работе – все это требует разъяснений для успешного взаимодействия. В статье рассмотрим, как правильно написать инструкцию.

инструкции для сотрудников

Инструкция – это документ, который объясняет способы или правила выполнения определенных действий. А понятная инструкция делает то же самое, но простым языком. Многие руководства написаны очень сложно и люди предпочитают не заглядывать в них, пока что-то не сломается.

Однако такой подход может привести к не самым лучшим последствиям. Например, работник не изучил правила по работе на буровой установке или неверно понял описанный материал, и получил травму из-за неправильного использования техники. Поэтому важно ответственно подойти к составлению и разобраться, как правильно написать инструкцию.

3 основных вида инструкций

Есть несколько типов инструкций. Они предназначены для разных целей, но разрабатываются по схожим принципам. К примеру – уяснив, как написать инструкцию по работе системного администратора, вы легко сможете применить эти знания и при подготовке руководства по использованию мини-АТС.

Пошаговая инструкция

Такие руководства позволяют регламентировать все возможные повторяющиеся процессы. Поставленная задача разбивается на несколько этапов, и каждый этап дополняется пояснениями. Примеры таких инструкций – пошаговые алгоритмы составления бухгалтерской отчетности, подключение к удаленному рабочему столу или действия при пожаре.

Пошаговое руководство

Вот как может выглядеть краткое пошаговое руководство по замене картриджа в лазерном принтере Brother HL-1110R:

  1. Откройте верхнюю крышку и извлеките блок фотобарабана
  2. Установите в нижнее положение переключатель в правом нижнем углу блока фотобарабана
  3. Вытащите тонер-картридж
  4. Поставьте на его место новый
  5. Подвигайте в разные стороны зеленую лапку в левом верхнем углу фотобарабана. Обязательно верните ее в исходное положение
  6. Установите фотобарабан обратно в принтер
  7. Закройте крышку
  8. Сделайте пробную печать. Если появляется сообщение «Замените тонер», значит фотобарабан установлен неправильно, и шаги 1-7 нужно проделать заново. Если неисправность не исчезает обратитесь к системному администратору

Инструкция по использованию

Это перечень рекомендаций по правильному использованию приборов, например, руководство к сканеру штрих-кодов. Такие мануалы будут полезны пользователям непростых устройств — на рабочем месте или в быту.

инструкция по использованию

В отличие от пошагового алгоритма, акцент делается не на достижении определенного результата, а на особенностях применения. Например, вот как можно кратко написать инструкцию по использованию ламинатора Rayson LM 330iD:

  • В зависимости от толщины пленки устанавливают необходимую температуру. Например, для 75 mic нужно 100-120°C, а для 250 mic 160-180°C.
  • Максимальное время работы ламинатора 4 часа. Затем нужно сделать получасовой перерыв.
  • Если внутри ламинатора застрял документ, нажмите кнопку «Реверс» и извлеките его. 
  • Внимание! Не ламинируйте влажные образцы жидкость может повредить электронные компоненты!
  • После ламинирования 10-15 листов, нужно очистить аппарат от клейкого материала. Для этого ламинатор отключают от сети и протирают валы тканью с моющим средством. 
  • Внимание! Не используйте для очистки бензин и растворители – это приводит к возгоранию! 

Должностная инструкция

Так называют документ, регулирующий сферу обязанностей для конкретной должности. Также здесь определены права работника, требования к квалификации, область ответственности и формы премирования. Должностные инструкции могут быть составлены для любого сотрудника – от уборщицы до генерального директора. Их готовят совместно с юристом.

Должностная инструкция

Вот как может выглядеть раздел обязанностей для грузчика ООО «Дельта»:

  1. Работник обязан выполнять погрузочно-разгрузочные работы на территории склада Организации
  2. При работе он может пользоваться спецтехникой (электрокаром) если у него есть необходимые допуски
  3. Бригадир раздает списки, по которым комплектуются грузы. 
  4. Отобранный товар кладут на паллету и закрепляют соблюдая технику безопасности при перевозке грузов
  5. Если есть необходимость, грузчик может привлекаться к другим работам на территории склада уборке, контролю за въездом транспорта и пр.

Должностная инструкция – это скорее юридический документ, чем пользовательский. А чтобы понятным языком проинструктировать сотрудника по его работе, обычно составляют отдельное обучение – «Пособие по должности». В нем подробно рассказывают о роли и ценном конечном продукте, описывают систему мотивации, метрики и алгоритмы выполнения работы. И размещают эти материалы на платформе для онлайн-обучения.

Ниже вы можете получить готовую структуру обучения для курса «Пособие по должности».

Общие правила при подготовке инструкций

Для подготовки любого типа руководств используются одни и те же приемы работы с информацией. Вот рекомендации, которые подскажут как написать хорошую инструкцию:

  • Определите уровень подготовленности аудитории. В зависимости от опыта читателей, меняется стиль подачи и структура текста. Пишите на понятном для них языке
  • Не жалейте времени на сбор и обработку информации. Автор должен разбираться в предмете изложения – выступать экспертом или внимательно изучить необходимую документацию. Если первоначальной компетентности недостаточно, нужно проконсультироваться со специалистом
  • Определите исходные данные и результат. Например, «на входе» есть решение руководства о новых правилах доступа в здание, а «на выходе» должно получиться руководство по пользованию электронным пропуском
  • Структурируйте информацию исходя из типа документа. Так, для пошагового алгоритма нужно разбить процедуру на несколько этапов. А должностная инструкция подразумевает серию отдельных описаний с обязанностями. В зависимости от типа меняется и форма подачи
    Как структурировать много данных →
  • Предупреждайте о проблемах, с которыми может столкнуться человек. В первую очередь это касается ситуаций, опасных для жизни и здоровья. Разместите надписи с предостережениями, которые будут выделяться ярким цветом или более крупным размером шрифта

Алгоритм разработки руководства: 9 шагов

Рассмотрим, как написать доступную инструкцию для сотрудников на примере описания алгоритма действий. Особенность этого руководства в том, что для него нужно не только перечислить отдельные действия, а установить их в правильной последовательности, чтобы привести читателя к нужному результату. В общем случае необходимо:

  1. Собрать информацию
  2. Сгруппировать ее по отдельным этапам
  3. Изложить последовательность выполнения каждого этапа с учетом уровня подготовки читателя

В качестве примера возьмем ситуацию, когда организация перешла на электронный документооборот. При этом часть сотрудников не умеет работать с программой Microsoft Word и нужно объяснить им, как подготовить заявление о выдаче спецодежды.

Шаг 1. Изучить ситуацию

Конечно, вы не один год используете Word и легко можете подготовить требуемое заявление. Но в данном случае нужно взглянуть на проблему глазами пользователя – человека, который впервые сталкивается с этой программой. Поэтому нужно не опираться на текущие знания по работе в Word, а самостоятельно проделать весь путь заново. С большой вероятностью вы откроете для себя что-то новое – ведь раньше многие операции выполнялись автоматически. Сходу очень трудно вспомнить, как называлась «та кнопка для создания списка» и другие детали. 

Шаг 2. Разложить все на отдельные этапы

Задача этого шага – создать предварительный план решения задачи. Такой алгоритм начинается с исходной ситуации и заканчивается достижением результата. В начало каждого пункта поставьте глагол, определяющий ключевое действие этого шага:

  1. Запустить программу Microsoft Word
  2. Создать новый документ
  3. Набрать необходимый текст
  4. Отформатировать его 
  5. Сохранить файл
  6. Сообщить в бухгалтерию, что заявление подготовлено 

Шаг 3. Описать каждый этап

Здесь нужно конкретизировать каждый шаг, необходимый для достижения поставленной цели. При этом не усложняйте описание. Если действие можно выполнить несколькими способами, опишите только один вариант, максимум два – тогда читатель с меньшей вероятностью запутается.

Не стоит бояться слишком заурядных объяснений – скорее всего найдутся те, кто еще не знает этого, а остальные легко пропустят такое описание. Например, для тех, кто не работал с программой Word, нужно пояснить как создается файл:

2. Нажмите на раздел «Новый документ» в правой части экрана 

Если руководство предназначено для новичков, избегайте профессиональной лексики. В нашем примере лучше обойтись без понятий «Интерфейс» и «Строка состояния». Важно понимать, что вы пишете не теоретический учебник для передачи системных знаний, а практическое руководство, по которому человек сможет здесь и сейчас выполнить действия и достичь результата. Если не обойтись без терминов и аббревиатур, поясните их.

Совет. Старайтесь не нагромождать вашу инструкцию ненужными действиями. Например, лишней будет информация о том, какой шрифт использовать для заявления – в большинстве случаев пользователь столкнется с шаблоном Normal, где стоит подходящий Calibri размером 11 пунктов. 

Шаг 4. Рассмотреть нестандартные варианты развития ситуации

Стараясь предусмотреть форс-мажорные обстоятельства, улучшите свой алгоритм, предлагая варианты решения. Например:

3. <…> Если печатаются латинские символы, поменяйте раскладку. Для этого одновременно нажмите клавиши «Shift» и «Ctrl» в левой нижней части клавиатуры 

Шаг 5. Подобрать изображения и привести примеры

Если можно проиллюстрировать какую-то операцию – обязательно сделайте это. Для рецептов блюд подойдут снимки каждого шага, а для инструкций по сборке – взрыв-схемы (эскизы, на которых вся конструкция разобрана на детали и они разнесены в разные стороны). А чтобы наглядно показать работу в компьютерной программе, следует подготовить скринкасты или скриншоты с пояснениями.

Шаг 6. Придумать заголовок

Даже если вы написали руководство для внутреннего пользования, а не для публикации в интернете, яркий заголовок привлечет внимание и настроит на выполнение нужной работы. Вот несколько вариантов для нашего примера:

  • «Как написать инструкцию по подготовке заявления»
  • «6 шагов для подготовки электронного документа»
  • «Простой способ написать заявление на компьютере»
  • «Подробный алгоритм подготовки документа для безбумажного оборота»

Шаг 7. Оценить промежуточный вариант

В результате должен получиться подобный текст:

Как написать простую инструкцию (образец): 

  1. Запустите программу Microsoft Word
  2. Нажмите на раздел «Новый документ» в правой части экрана 
  3. Наберите необходимый текст в открывшемся окне. Образец приведен ниже.
  4. Отформатируйте набранный текст с помощью верхней панели программы Word.
    • Сначала Выделите шапку заявления (адресата и составителя заявления). Нажмите на кнопку «Выравнивание по правому краю» на верхней панели программы Word. Строки переместятся вправо
    • Аналогичным способом отформатируйте заголовок (используем кнопку «Выравнивание по центру»)
    • Выделите список спецодежды и примените к нему функцию «Маркированный список» 
  1. Сохраните файл. Для этого:
    • Нажмите сочетание клавиш «Ctrl+S» или на иконку дискеты в левом верхнем углу
    • Выберите путь сохранения файла
    • В строке «Имя файла» удалите текущее содержимое и напишите: «Заявление от …». Вместо многоточия укажите фамилию, инициалы заявителя и дату, например «Заявление от Иванова В.И. 27.03.2022»
    • Нажмите кнопку «Сохранить»
  2. Сообщите в бухгалтерию (внутренний телефон: 2-31) или секретарю зам. директора по персоналу (т.: 2-42), что заявление подготовлено. 

Пример объявления, на который можете ориентироваться при подготовке:

Шаг 8. Тестирование

Внимательно проверьте инструкцию на логические ошибки. Желательно, чтобы коллеги или знакомые взглянули на нее со стороны. Еще лучше – когда неопытный человек изучает составленный алгоритм и пытается с его помощью добиться желаемого результата.

Проверьте алгоритм с помощью этих вопросов:

  • Понятен ли указанный порядок действий? Да, мы улучшали его в шагах 2-5
  • Все ли нюансы учтены? Да, последовательность шагов охватывает всю необходимую процедуру
  • Есть ли в алгоритме сложные этапы, которые можно разбить на несколько частей? Нет, все они были скорректированы на предыдущих шагах
  • Достигнут ли результат? Будет ли он неизменным при разных условиях использования алгоритма? Да, на выходе мы получаем файл для безбумажного оборота. При правильном следовании приведенной последовательности, результата можно достичь вне зависимости от того, кто составляет заявление – грузчик или уборщица

Шаг 9. Обучить сотрудников по инструкции

Если руководство предназначено для сотрудников компании, важно проконтролировать, что они изучили ее. Для этого загрузите инструкцию для персонала на платформу Unicraft, назначьте на нее работника и отслеживайте его прогресс. 

Особенности такого обучения:

  • Информация сопровождается рисунками, схемами, анимацией, формами обратной связи – это увлекательнее, чем простое чтение текста
  • В режиме реального времени руководитель может видеть, какое количество материала уже изучено
  • В конце разделов и всего курса предусмотрены контрольные вопросы. Процент правильных ответов для успешного прохождения курса можно задавать самостоятельно (обычно он составляет 80%)

Примеры готовых инструкций

Ниже приведены примеры инструкций по пользованию платформой Unicraft. Нажмите на изображение, чтобы перейти на страницу с руководством.

Вывод

Резюмируя все изложенное, можно составить требования к идеальной инструкции:

  • Актуальность. В тексте нет устаревших сведений
  • Информативность и целостность. Подготовленное руководство содержит все необходимые сведения
    по обозначенной теме. У пользователя не остается вопросов
  • Лаконичность. Приоритеты для составителя – это точность формулировок и отсутствие второстепенных сведений. Часто бывает, что инструкцию смотрят в сложных ситуациях, когда нужно быстро получить ответ на возникший вопрос
  • Наглядность. Информация сопровождается примерами и иллюстрациями
  • Конкретный результат. Руководство помогает получить конечное решение
  • Соотносимость с текущими знаниями пользователя. Чем ниже уровень знаний аудитории, тем подробнее объяснения
  • В тексте нет сложных конструкций. Они разбиты на несколько частей. Каждый пункт списка – это отдельное действие, которое дополняется комментариями и пояснениями

Вам будет интересно

тестирование

Как создать онлайн тест: подробное руководство

План обучения менеджера по продажам

Оценка эффективности обучения персонала: проверенный алгоритм

Перейти на главную блога

Понравилась статья? Поделить с друзьями:
  • Лок амвей применение инструкция по применению
  • Руководство угибдд хакасии
  • Швабра с губчатой насадкой инструкция по применению
  • Аскорбиновая кислота тульская фармацевтическая фабрика инструкция
  • Должностная инструкция администратора проекта проектного офиса