- •Стратегии тестирования: структурный подход – методы «белого» ящика, функциональный подход – методы «черного» ящика.
- •Структурное тестирование (тестирование маршрутов) – критерии формирования тестовых наборов: покрытие операторов.
- •Структурное тестирование (тестирование маршрутов) – критерии формирования тестовых наборов: покрытие решений (переходов).
- •Структурное тестирование (тестирование маршрутов) – критерии формирования тестовых наборов: покрытие условий.
- •Структурное тестирование (тестирование маршрутов) – критерии формирования тестовых наборов: покрытие решений/условий.
- •Структурное тестирование (тестирование маршрутов) – критерии формирования тестовых наборов: комбинаторное покрытие условий.
- •Функциональное тестирование (тестирование с управлением по данным) – критерии формирования тестовых наборов: эквивалентное разбиение.
- •Функциональное тестирование (тестирование с управлением по данным) – критерии формирования тестовых наборов: анализ граничных значений.
- •Функциональное тестирование (тестирование с управлением по данным) – критерии формирования тестовых наборов: анализ причинно-следственных связей.
- •Функциональное тестирование (тестирование с управлением по данным) – критерии формирования тестовых наборов: предположение об ошибке.
- •Тестирование модулей: восходящие, нисходящие, комбинированное, модули-заглушки, тестирование специалистами-тесторами, документирование тестирования, регрессивное тестирование.
- •Комплексное тестирование, критерии завершения тестирования, оценочное-системное тестирование.
- •Отладка по – классификация ошибок: ошибки компиляции, компоновки, выполнения; причины ошибок выполнения.
- •Методы отладки по: ручное тестирование, индукции, дедукция, обратное прослеживание.
- •Методы и средства получения дополнительной информации об ошибке: отладочный вывод, интегрированные средства отладки, независимые отладчики.
- •Общая методика отладка по: изучение проявления ошибки, локализация ошибки, определение причины ошибки, исправление ошибки, повторное тестирование.
- •Сборочное программирование, повторное используемые компоненты, основы компонентной объектной модели (com).
- •Организация интерфейса com: идентификация интерфейса, описание интерфейса, реализация интерфейса.
- •Базовый интерфейс com-iUnknown, серверы com-объектов, преимущества com.
- •Работа с com-объектами: создание com-объектов, повторное использование com-объектов.
- •Работа с com-объектами: размещение com-объекта в других процессах – маршалинг и демаршалинг, описание com-объекта в библиотеке операционной системы – idl-описание и библиотека типа.
- •Case-технология, особенности жизненного цикла, состав, основные функции case-систем, средства автоматизации программирования.
- •Перспективы развития технологии программирования, технологическая зрелость организаций-разработчиков по, лицензирование организаций-разработчиков по.
Общая методика отладка по: изучение проявления ошибки, локализация ошибки, определение причины ошибки, исправление ошибки, повторное тестирование.
1 этап - изучение проявления ошибки - если выдано какое-либо сообщение или выданы неправильные или неполные результаты, то необходимо их изучить и попытаться понять, какая ошибка могла так проявиться. При этом используют индуктивные и дедуктивные методы отладки. В результате выдвигают версии о характере ошибки, которые необходимо проверить. Для этого можно применить методы и средства получения дополнительной информации об ошибке. Если ошибка не найдена или система просто «зависла», переходят ко второму этапу.
2 этап - локализация ошибки - определение конкретного фрагмента, при выполнении которого произошло отклонение от предполагаемого вычислительного процесса. Локализация может выполняться:
• путем отсечения частей программы, причем, если при отсечении некоторой части программы ошибка пропадает, то это может означать как то, что ошибка связана с этой частью, так и то, что внесенное изменение изменило проявление ошибки;
• с использованием отладочных средств, позволяющих выполнить интересующих нас фрагмент программы в пошаговом режиме и получить дополнительную информацию о месте проявления и характере ошибки, например, уточнить содержимое указанных переменных.
При этом если были получены неправильные результаты, то в пошаговом режиме проверяют ключевые точки процесса формирования данного результата.Ошибка не обязательно допущена в том месте, где она проявилась. Если в конкретном случае это так, то переходят к следующему этапу.
3 этап - определение причины ошибки - изучение результатов второго этапа и формирование версий возможных причин ошибки. Эти версии необходимо проверить, возможно, используя отладочные средства для просмотра последовательности операторов или значений переменных.
4 этап - исправление ошибки - внесение соответствующих изменений во все операторы, совместное выполнение которых привело к ошибке.
5 этап - повторное тестирование - повторение всех тестов с начала, так как при исправлении обнаруженных ошибок часто вносят в программу новые.
Следует иметь в виду, что процесс отладки можно существенно упростить, если следовать основным рекомендациям структурного подхода к программированию:
• программу наращивать «сверху-вниз», от интерфейса к обрабатывающим подпрограммам, тестируя ее по ходу добавления подпрограмм;
• выводить пользователю вводимые им данные для контроля и проверять их на допустимость сразу после ввода;
• предусматривать вывод основных данных во всех узловых точках алгоритма (ветвлениях, вызовах подпрограмм).
Кроме того, следует более тщательно проверять фрагменты программного обеспечения, где уже были обнаружены ошибки, так как вероятность ошибок в этих местах по статистике выше. Это вызвано следующими причинами. Во-первых, ошибки чаще допускают в сложных местах или в тех случаях, если спецификации на реализуемые операции недостаточно проработаны. Во-вторых, ошибки могут быть результатом того, что программист устал, отвлекся или плохо себя чувствует. В-третьих, как уже упоминалось выше, ошибки часто появляются в результате исправления уже найденных ошибок.
Проще всего обычно искать ошибки определения данных и ошибки накопления погрешностей: их причины локализованы в месте проявления. Логические ошибки искать существенно сложнее. Причем обнаружение ошибок проектирования требует возврата на предыдущие этапы и внесения соответствующих изменений в проект. Ошибки кодирования бывают как простые, например, использование неинициализированной переменной, так и очень сложные, например, ошибки, связанные с затиранием памяти. Затиранием памяти называют ошибки, приводящие к тому, что в результате записи некоторой информации не на свое место в оперативной памяти, затираются фрагменты данных или даже команд программы. Ошибки подобного рода обычно вызывают появление сообщения об ошибке. Поэтому определить фрагмент, при выполнении которого ошибка проявляется, несложно. А вот определение фрагмента программы, который затирает память - сложная задача, причем, чем длиннее программа, тем сложнее искать ошибки такого рода. Именно в этом случае часто прибегают к удалению из программы частей, хотя это и не обеспечивает однозначного ответа на вопрос, в какой из частей программы находится ошибка. Эффективнее попытаться определить операторы, которые записывают данные в память не по имени, а по адресу, и последовательно их проверить. Особое внимание при этом следует обращать на корректное распределение памяти под данные.
Организация испытаний, цель испытаний, предварительные и совместные испытания, виды испытаний в жизненном цикле ПО: опытного образца, рабочей версии, модернизированной версии; категории испытаний: функциональные, стрессовые, использования ресурсов ЭВМ, параллельного решения задач.
Организация испытаний комплексов программ. Используются для программ, создаваемых на уровне продукции производственно-технического назначения и отчуждаемых от разработчика. Важная особенность испытаний программы состоит в наличии достаточно полных эталонов, которым должен соответствовать КП, требований технического задания. Цель испытаний — определение степени соответствия созданного комплекса программ техническому заданию, полученному от заказчика.
Испытания сложных КП являются наиболее формализованным и регламентированным видом тестирования. Для всесторонней проверки опытный образец КП подвергается испытаниями главного конструктора (предварительные испытания) и заказчика-пользователя с участием разработчиков (совместные испытания).
При испытаниях главного конструктора, которые зачастую совмещаются с завершением комплексной отладки, производится, по существу, такое же тестирование, что и на совместных испытаниях, только в меньшем объеме. Эти проверки оформляются документально и являются основанием для предъявления КП заказчику на совместные испытания. Любые испытания ограничены допустимым объемом проверок и длительностью работы комиссии, поэтому не могут гарантировать всестороннюю проверку изделия. Для повышения достоверности определения и улучшения характеристик КП после испытаний главного конструктора программы целесообразно на некоторое время передавать на опытную эксплуатацию в типовых условиях. Это позволяет более глубоко оценить эксплуатационные характеристики созданного комплекса и устранить некоторые ошибки. Опытная эксплуатация КП проводится разработчиками с участием испытателей и некоторых пользователей, назначаемых заказчиком. Результаты опытной эксплуатации после испытаний главного конструктора могут учитываться при совместных испытаниях для их сокращения.
В жизненном цикле КП можно выделить следующие виды испытаний
-опытного образца на полное соответствие требованиям технического задания,
-рабочей версии КП, адаптированной к условиям конкретного применения,
-версии модернизированного КП при сопровождении.
Функциональное тестирование — наиболее обширное и труднее всего систематизируемое. Набор испытательных тестов полностью определяется функциональными задачами и сложностью КП. Эти тесты должны обеспечивать проверку и демонстрацию заказчику или пользователю качества решения функциональных задач, сформулированных в техническом задании и конкретизированных в документации. Поскольку исчерпывающее тестирование для сложных КП невозможно, большое значение имеют уточнение областей варьирования тестовых данных и выделение областей их изменения, наиболее важных для последующего использования программ
Стрессовое тестирование (в критических ситуациях) базируется на классификации областей определения исходных данных и использует граничные или экстремальные значения параметров и условий. Комбинация критических значений и условий испытаний в большинстве случаев очень разнообразна, и необходим тщательный анализ для выделения достаточно представительной выборки. Кроме того, при стрессовых испытаниях должно быть показано, что при изменении исходных данных за допустимыми пределами эти ситуации обнаруживаются, селектируются и выдается диагностика о нарушении ограничений на условии эксплуатации программ.
Тестирование использования ресурсов ЭВМ комплексом программ в значительной степени является стрессовым тестированием. При этом внимание сосредоточивается на исследовании зависимости объема памяти и длительности решения задач от характеристик исходной информации. Определяются допустимые размерность задач и интенсивности потоков исходных данных, при которых возможно нормальное функционирование КП на данной ЭВМ
Тестирование параллельного решения задач в многомашинных или многопроцессорных вычислительных комплексах состоит в испытаниях взаимодействия программ и данных при одновременном исполнений компонент КП. Эти испытания можно разделить на две части при детерминированных запланированных ситуациях и при случайном нормальном функционировании программ. В первом случае основная проблема состоит в создании представительного многообразия ситуаций параллельного функционирования программ. Вторая часть тестирования может совмещаться с остальными видами испытаний и заключается в основном в выделении случайных тестов и условий, при которых проверяется недетерминированное параллельное исполнение программ.
Испытания программ на надежность: прямые экспериментальные методы определения показателей надежности программ в условиях нормального функционирования, форсированные методы испытаний реальных систем на надежность.
Особенности испытаний на надежность программ. В теории надежности разработан ряд методов, позволяющих определять характеристики надежности сложных систем: прямые экспериментальные методы определения показателей надежности систем в условиях нормального функционирования и форсированные методы испытаний реальных систем на надежность.
Прямые экспериментальные методы определения показателей надежности программ в нормальных условиях функционирования в ряде случаев весьма трудно использовать при испытаниях из-за большого времени наработки на отказ (десятки и сотни часов). Сложность выявления и регистрации редких отказов, а также высокая стоимость экспериментов при длительном функционировании сложных КП приводят к тому, что на испытаниях получаются малые выборки зарегистрированных отказов. Кроме того, при таких экспериментах трудно гарантировать представительность выборки исходных данных, так как режимы эксплуатации определяются конкретными условиями использования данного КП на испытаниях.
При испытаниях КП на надежность функционирования необходимо разделять причины отказов и отказовых ситуаций на обусловленные ненадежностью аппаратуры и ошибками в программах. Для диагностики и локализации причин отказа обычно требуется дополнительное тестирование, которое позволяет либо выделить первичную ошибку в программе, либо отнести источник отказа к сбою в аппаратуре.
На этапе испытаний целесообразно устранять в программах локализованные ошибки. Вследствие этого характеристики надежности КП в среднем улучшаются, однако возможны изменения программы, которые их ухудшают. Изменения показателей надежности необходимо связывать во времени с моментами корректировки программ. Анализируя связь между значениями надежности и процессом изменения программ, можно выявить корректировки, которые содержат ошибки и ухудшают надежность.
Получающиеся при этом показатели надежности позволяют прогнозировать число ошибок, подлежащих исправлению для достижения заданной надежности. Для этого используются математические модели изменения ошибок и основных показателей надежности в зависимости от длительности тестирования. При высокой надежности КП организуются многочасовые прогоны реального функционирования программ в условиях широкого варьирования исходных данных. Такие прогоны позволяют измерить и зафиксировать достигнутое показатели надежности и степень их соответствия требованиям технического задания, а также закрепить их в технических условиях на КП.
Форсированные методы испытаний реальных систем на надежность осуществляются путем тестирования КП при повышенной интенсивности искажений исходных данных с широким варьированием их значений, а также специальным увеличением загрузки КП выше нормальной. Планирование форсированных испытаний должно предусматривать последующий пересчет полученных показателей надежности на условия нормального функционирования. Для этого необходимо изучать надежность испытываемых программ в зависимости от интенсивности искажений данных или от характеристик перегрузки ЭВМ и способы пересчета получаемых показателей на нормальные условия эксплуатации.
Особым видом форсированных испытаний является тестирование эффективности средств контроля и восстановления программ, данных и вычислительного процесса. Для этого имитируются запланированные экстремальные условия функционирования программ, при которых в наибольшей степени вызываются средства программного рестарта. При таких испытаниях основная задача состоит в проверке качества функционирования средств повышения надежности, а оценка интегральных показателей надежности отходит на второй план.
Достоверность испытаний: методическая и статистическая достоверность; документирование результатов испытаний: исходных и отчетные документы при испытаниях программ – техническое задание, государственные и отраслевые стандарты, программа испытаний, методики испытаний, протоколы испытаний, акт испытаний.
Достоверность испытаний – организация испытаний таким образом, чтобы результатам можно было доверять.
Методическая достоверность испытаний КП определяется следующими факторами:
-полнотой программы испытаний, корректностью методик тестирования, степенью охвата возможных условий функционирования и областей изменения исходных данных программ;
-достоверностью и точностью эталонных значений, с которыми сравниваются результаты тестирования испытываемой программы или которые служат опорными при расчете параметров, зафиксированных в техническом задании;
-адекватностью и точностью моделей, используемых для имитации внешней среды и их реакции на управляющие воздействия;
-точностью и корректностью регистрации и обработки результатов тестирования, а также сравнения полученных данных с требованиями технического задания.
Статистическая достоверность испытаний в значительной степени ограничена допустимым объемом и продолжительностью испытаний. Методы теории планирования экспериментов позволяют упорядоченно варьировать исходные данные и наиболее эффективно использовать ограниченные ресурсы тестирования. При планировании испытаний большое значение имеют характеристики средств автоматизации, используемых для имитации внешней среды и обработки результатов. Противоречия между необходимой степенью достоверности тестирования и объемом анализируемых данных при различных видах испытаний привели к созданию системы автоматизации испытаний различной сложности и глубины проверок.
Документы:
ТЗ
Техническое задание представляет собой документ, в котором сформулированы основные цели разработки, требования к программному продукту, определены сроки и этапы разработки и регламентирован процесс приемно-сдаточных испытаний. В разработке технического задания участвуют как представители заказчика, так и представители исполнителя. В основе этого документа лежат исходные требования заказчика, анализ передовых достижений техники, результаты выполнения научно-исследовательских работ, предпроектных исследований, научного прогнозирования и т. п.
Государственные и отраслевые стандарты
Программа испытаний — это план проведения серии экспериментов. Он разрабатывается с позиции минимизации объема тестирования при заданной и согласованной с заказчиком достоверности получаемых результатов. Для этого методами факторного анализа и теории планирования экспериментов определяются последовательность и объем каждого тестирования в процессе проведения испытаний для проверки выполнения требований технического задания при минимальных затратах. Особенно сложно выбрать набор стрессовых ситуаций функционирования системы, при которых следует провести испытания. Программа испытаний должна содержать следующие четко сформулированные разделы:
-объект испытаний, его назначение и перечень основных документов, определивших его разработку;
-цель испытаний с указанием основных требований технического задания, подлежащих проверке, и ограничений на проведение испытаний,
-собственно программу испытаний, содержащую проверку комплектности спроектированного КП в соответствии с техническим заданием и план тестирования для проверки функционирования программ по всем разделам технического задания и дополнительным требованиям, формализованным отдельными решениями;
-методики испытаний, однозначно определяющие все понятия проверяемых характеристик, условия тестирования, средства, используемые для испытаний, методики обработки и оценки результатов тестирования по каждому разделу программы испытаний.
Результаты испытаний фиксируются в протоколах, которые обычно содержат следующие разделы:
-назначение тестирования и раздел требований технического задания, по которому проводится испытание;
-указание методик, в соответствии с которыми проводились испытания, обработка и оценка результатов;
-условия проведения тестирования и характеристика исходных данных;
-обобщенные результаты испытаний с оценкой их на соответствие требованиям технического задания и другим руководящим документам;
-выводы о результатах испытаний и степени соответствия созданного КП определенному разделу требований технического задания.
Протоколы по всей программе испытаний обобщаются в акте, в результате чего делается заключение о соответствии системы требованиям заказчика и о завершении работы с положительным или отрицательным итогом. При полном выполнении всех требований технического задания заказчик обязан принять систему и работа считается завершенной.
Однако, как уже отмечалось, для сложных КП трудно на начальных этапах проектирования предусмотреть и корректно сформулировать все требования технического задания. Поэтому при отладке и испытаниях часто выявляется, что некоторые требования технического задания оказываются невыполненными и иногда даже принципиально не могут быть выполнены при самом добросовестном отношении к этому со стороны разработчика. В этом случае необходима совместная работа заказчика и разработчика в поисках компромиссного решения при завершении испытаний и составлении заключения. Некоторые недостатки КП в процессе испытаний только регистрируются и фиксируются в плане устранения замечаний комиссии, проводившей испытания. Этот план является приложением к акту о результатах испытаний и позволяет отделять последующие доработки от непосредственных испытаний.
Виды программной документации: проектная и эксплуатационная документация. Документирование интерактивного ПО. Государственные стандарты в области документирования ПО. Средства автоматизации документирования.
К программным относят документы, содержащие сведения, необходимые для разработки, сопровождения и эксплуатации программного обеспечения. Документирование программного обеспечения осуществляется в соответствии с Единой системой программной документации (ГОСТ 19.XXX). Так ГОСТ 19.101-77 устанавливает виды программных документов для программного обеспечения различных типов. Ниже перечислены основные программные документы по этому стандарту и указано, какую информацию они должны содержать.
Спецификация должна содержать перечень и краткое описание назначения всех файлов программного обеспечения, в том числе и файлов документации на него, и является обязательной для программных систем, а также их компонентов, имеющих самостоятельное применение.
Ведомость держателей подлинников (код вида документа — 05) должна содержать список предприятий, на которых хранятся подлинники программных документов. Необходимость этого документа определяется на этапе разработки и утверждения технического задания только для программного обеспечения со сложной архитектурой.
Текст программы (код вида документа - 12) должен содержать текст программы с необходимыми комментариями. Необходимость этого документа определяется на этапе разработки и утверждения технического задания.
Описание программы (код вида документа - 13) должно содержать сведения о логической структуре и функционировании программы, Необходимость данного документа также определяется на этапе разработки и утверждения технического задания.
Ведомость эксплуатационных документов (код вида документа - 20) должна содержать перечень эксплуатационных документов на программу, к которым относятся документы с кодами: 30, 31, 32, 33, 34, 35, 46. Необходимость этого документа также определяется на этапе разработки и утверждения технического задания.
Формуляр (код вида документа - 30) должен содержать основные характеристики программного обеспечения, комплектность и сведения об эксплуатации программы.
Описание применения (код вида документа - 31) должно содержать сведения о назначении программного обеспечения, области применения, применяемых методах, классе решаемых задач, ограничениях для применения, минимальной конфигурации технических средств.
Руководство системного программиста (код вида документа - 32) должно содержать сведения для проверки, обеспечения функционирования и настройки программы на условия конкретного применения.
Руководство программиста (код вида документа - 33) должно содержать сведения для эксплуатации программного обеспечения.
Руководство оператора (код вида документа - 34) должно содержать сведения для обеспечения процедуры общения оператора с вычислительной системой в процессе выполнения программного обеспечения.
Описание языка (код вида документа - 35) должно содержать описание синтаксиса и семантики языка.
Руководство по техническому обслуживанию (код вида документа - 46) должно содержать сведения для применения тестовых и диагностических программ при обслуживании технических средств.
Программа и методика испытаний (код вида документа - 51) должны содержать требования, подлежащие проверке при испытании программного обеспечения, а также порядок и методы их контроля.
Пояснительная записка (код вида документа -81) должна содержать информацию о структуре и конкретных компонентах программного обеспечения, в том числе схемы алгоритмов, их общее описание, а также обоснование принятых технических и технико-экономических решений. Составляется на стадии эскизного и технического проекта.
Прочие документы (коды вида документа - 90-99) могут составляться на любых стадиях разработки, т. е. на стадиях эскизного, технического и рабочего проектов. Допускается объединять отдельные виды эксплуатационных документов, кроме формуляра и ведомости. Необходимость объединения указывается в техническом задании, а имя берут у одного из объединяемых документов.
Планирование и организация разработки программных систем: принципы планирования разработки, принципы организации коллектива программистов и распределения работ по специалистам; методы бригадной организации работ: бригада независимых программистов, демократическая бригада, бригада главного программиста; права и обязанности членов бригад, организация их взаимодействия, управление бригадой на различных этапах проектирования.
На этапе планирования разработки ПО создаются планы и выбираются стандарты, которые направляют этап разработки и интегрированный этап. Его
целью является определение средств для создания ПО, которое будет удовлетворять требования, предъявляемые к нему и обеспечивать достаточный уровень надежности. На этом этапе производиться:
1) определение действий на этапах разработки и интегрированном этапе, которые будут посвящены определению системных требований и уровня ПО;
2) определение ЖЦ ПО, включая взаимодействие между этапами, механизм взаимного влияния этапов, критерии оценки ПО при переходе от одного этапа к другому;
3)определение среды ЖЦ, т.е. методы и инструментальные средства, используемые на каждом этапе;
4) формирование дополнительных замечаний к ПО;
5) рассмотрение стандартов разработки ПО, соотношение их с системными целями безопасности, относящиеся к разрабатываемому ПО;
6) разработка плана создания ПО;
7) доработка и проверка плана создания ПО.
Организация коллективов для создания комплексов программ. Никакая, даже очень квалифицированная, небольшая бригада специалистов не может сделать в разумные сроки сложный КП объемом порядка 100 тыс. команд. В такой разработке обязательно принимают участие несколько десятков специалистов различной квалификации и специализации. Отсюда возникает задача организации коллектива, координации его деятельности и объединения индивидуальных усилий для создания очень сложного изделия. Организация коллектива и распределение работ по специалистам могут производиться по нескольким принципам:
-на основе распределения системного анализа (алгоритмизации) и разработки программ по разным коллективам;
-по принципу выделения коллективов, создающих всю совокупность программных модулей, и группы специалистов, объединяющих программы в единый комплекс;
-по принципу распределения достаточно сложных законченных функциональных задач по группам специалистов, осуществляющим их полную разработку, и последующего объединения функциональных задач специальной группой ведущих «комплексников».
Попытки полностью разделить между двумя коллективами специалистов функции непосредственного программирования и функции постановки задач и создания алгоритмов оказались неудачными. При такой организации работ невозможно определить ответственных за законченные компоненты и возникают многочисленные неразрешимые конфликты при создании сложных КП. Эти конфликты порождаются объективными трудностями точной формализации алгоритмов со стороны алгоритмистов и невозможностью достаточно полной отладки программ программистами без глубокого знания содержания соответствующих функциональных задач и алгоритмов. В результате увеличивается длительность работ и требуется множество документов для взаимодействия алгоритмистов и программистов.
Значительно более продуктивными оказались методы бригадной организации работ, когда в бригаду входят и алгоритмисты, и программисты. Такая бригада во главе с алгоритмистом высокой квалификации создает законченное, отлаженное изделие и группу программ, выполняющую достаточно автономные функции в системе. Подобная группа может быть всесторонне проверена и испытана руководителями проекта и ответственным за нее является руководитель бригады. Декомпозиция КП позволяет специализировать бригады и отдельных сотрудников в коллективе на нескольких классах задач и квалифицированно решать эти частные задачи. Тем самым обеспечивается тематическая однородность специальных знаний членов бригады, единство их обучения и повышения квалификации в области решаемых функциональных задач. Целесообразно четко определять ответственность каждого руководителя за часть КП и обеспечивать его минимально необходимой информацией для управления процессом разработки.
Одним из вариантов организационной структуры коллектива при создании крупных КП является иерархическая структура, базирующаяся на группах специалистов, каждая из которых составляет специализированную, так называемую «хирургическую бригаду». Такая бригада решает достаточно автономную функциональную задачу и должна разработать и отладить группу взаимодействующих программ с достаточно четкой целью функционирования. «Хирургическая бригада» рекомендуется в составе 7...10 специалистов с различными задачами и квалификацией. Во главе бригады стоит «хирург», который разрабатывает функциональные задачи программ, составляет алгоритм, пишет и отлаживает программы, готовит и проверяет документацию. Он должен обладать значительным системным опытом, высокой математической и программистской квалификацией и талантом разработки и отладки сложных КП. «Второй пилот» является дублером и может выполнить любую часть работы, но менее опытен. Он принимает участие в разработке, обсуждении и оценке компонент, создаваемых бригадой, в качестве оппонента или ответчика по альтернативным решениям, а также несет ответственность за взаимодействие с другими бригадами и с разрабатываемыми ими группами программ.
«Администратор» позволяет избавить «хирурга» от множества технических и административных функций как внутри бригады, так и по взаимодействию с администрацией всей организации. При этом «хирургу» принадлежит определяющее слово по важнейшим вопросам организации и проведения работ. «Редактор» критикует документацию, созданную «хирургом», дорабатывает ее, снабжает ссылками и наблюдает за ее публикацией. «Адвокат языка» обеспечивает «хирурга» консультациями по применению языка в трудных или запутанных ситуациях, способствует получению более эффективных программ. «Инструментальщик» — опытный системный программист — является создателем специализированных технологических и служебных программ, каталогизированных процедур, библиотек макрокоманд для расширения функций технологического обеспечения по заказу «хирурга». «Наладчик» разрабатывает системные тесты в соответствии с назначением и функциями создаваемой группы программ. Он планирует последовательность тестирования, подготавливает имитаторы исходных данных для комплексной отладки, регистрирует процесс проведения отладки и ее результаты. Кроме того, в бригаду входят 2...3 технических работника для выполнения секретарских функций и различных вспомогательных технических работ.
В другом варианте организации бригады основные функции программирования возлагаются на нескольких специалистов средней квалификации, каждый из которых разрабатывает несколько программ. Руководитель бригады формулирует функциональные задачи, создает общее техническое задание, контролирует и корректирует спецификации требований на программы, определяет состав тестов для проверки программ. Детальную разработку принципов решения задач и алгоритмов каждой программы ведут сами программисты под контролем бригадира. В этом случае руководитель бригады или совершенно не разрабатывает программ, или создает только управляющие и связывающие программы для группы, создаваемой бригадой. На него ложится основная «тяжесть» комплексной отладки взаимодействия программ, разработанных различными членами бригады. Один наиболее опытный член бригады должен быть дублером руководителя бригады. Он может быть менее квалифицированным в части методов решения функциональных задач, однако должен обеспечивать возможность замены руководителя при комплексной отладке.
Для сложных ПС, в создании которых участвуют десятки специалистов, необходимо провести четкое различие между архитектурой КП и реализацией проекта в целом, а также его составных частей. «Системный архитектор» должен специальными методами обучения коллектива обеспечивать функциональное, структурное и технологическое единство проекта КП. Руководители, ответственные за функциональные группы программ, объединяют усилия бригад и обеспечивают их взаимодействие по функциональному и информационному сопряжению компонент, созданных различными бригадами. Таким образом, иерархическая структура коллектива в верхних ярусах должна соответствовать иерархической структуре создаваемого КП, хотя следует учитывать и обратное влияние структуры коллектива на структуру КП.
Индустриальная технология разработки сложных КП позволяет снизить требования к творческому уровню и профессиональной квалификации основной массы специалистов, тем не менее усложнение программ и увеличение их объема еще больше повышают роль системных программистов высшего класса. Создание больших КП невозможно обеспечить специалистами только высшего класса, поэтому увеличение количества разрабатываемых ПС при одновременном возрастании их сложности неуклонно повышают значение автоматизированной технологии проектирования программ.
Внедрение и эксплуатация ПО, процесс сопровождения: модификация, усовершенствование и коррекция ПО; планирование и организация сопровождения, методы конфигурационного управления; тиражирование и использование версий программ, методы сертификации ПО.
Во время фазы эксплуатации и сопровождения начинается практическое использование программного изделия.
Сопровождение программного обеспечения связано с внесением изменений в течение всего времени использования программного изделия. К причинам, определяющим необходимость внесения изменений в изделии, относятся:
• наличие ошибок в используемом программном продукте;
• изменение требований пользователя (расширение или модификация);
• появление более совершенных общесистемных программных средств или технических устройств;
• изменение организационной структуры, условий и методов работы пользователя.
Первая причина связана с качеством программного изделия; остальные обусловлены, как правило, длительным процессом эксплуатации. Конечной целью любых изменений является совершенствование программного изделия: повышение его корректности, надежности и функциональной полезности. Однако внесение изменений в программное изделие может породить новые ошибки, поэтому требуется жесткая регламентация всех процессов внесения изменений.
В первую очередь должны быть определены процедуры для модификации программного изделия, так как основной удельный вес работ по сопровождению обусловлен изменениями, связанными с модернизацией изделия (расширение или улучшение функциональных возможностей) и с адаптацией к условиям конкретного пользователя. Эти изменения требуют порядка восьмидесяти процентов всех усилий, затрачиваемых на сопровождение, и только около двадцати процентов усилий тратится на корректировку программ, выдающих неверные результаты.
В зависимости от сложности программного изделия и числа пользователей, сопровождение может осуществляться в тесной увязке с группой разработки изделия, т.е. сопровождение поручается программистам-разработчикам. В последнее время используется другая схема. После гарантийного периода сопровождение может быть передано от разработчика к организации (или специальному подразделению), которая специально занимается сопровождением, т.е. для каждого программного изделия, находящегося в практическом использовании, имеется организация, ответственная за его сопровождение.
Задачи службы сопровождения программного изделия
В процессе эксплуатации программного изделия пользователи взаимодействуют с организацией (группой), ответственной за сопровождение. Задачами службы сопровождения являются:
1. Сбор и анализ поступающих от пользователей сведений об обнаруженных ошибках, замечаний и предложений по совершенствованию и изменению программного изделия.
2. Исправление ошибок в программах, выдающих результаты, не отвечающие установленным требованиям, и внесение соответствующих изменений в документацию.
3. Модернизация программного изделия путем расширения функциональных возможностей или улучшения эксплуатационных характеристик программного изделия.
4. Внесение изменений в программы с целью их приспособления к условиям работы конкретного пользователя.
5. Контроль правильности всех корректировок, вносимых в изделие, и проверка качества измененных программ.
6. Доведение до пользователя информации о внесенных изменениях.
7. Обучение и постоянные консультации пользователя с целью повышения эффективности использования программного изделия.
Порядок внесения изменений строго регламентирован. Обычно в службе сопровождения хранится подлинник программного изделия с тестовыми данными, на основе которых проводились его испытания. С подлинника копируется дубликат, а пользователям направляются копии с дубликата.
Все претензии пользователей к программному изделию рассматриваются как ошибки, которые регистрируются, и после анализа сопровождающих материалов (обычно это данные, при которых произошла ошибка, распечатки результатов и т.д.) определяется уровень серьезности ошибки. Изменения, связанные с ошибками, могут привести к серьезным финансовым или юридическим последствиям для организации-разработчика, поэтому решения об изменениях могут приниматься на уровне руководства организации. Вместе с тем часть претензий может возникать из-за неправильной эксплуатации изделия, низкой квалификации пользователя, из-за ошибок в пользовательской копии. Поэтому прежде всего проверяется достоверность появления такой ошибки на эталонном варианте изделия с данными, представленными пользователем. При отсутствии ошибки тестируется копия пользователя, и, если ошибка не появляется, она снимается с учета в группе сопровождения, о чем делается сообщение пользователю- Для принятых предложений по корректировке составляется план работ по внесению изменений и определяются ресурсы для их выполнения.