Доклад посвящен опыту кафедры «Кибернетика»



Дата20.07.2016
өлшемі81 Kb.
#212791
түріДоклад

Технологии разработки и верификации программного обеспечения

Синицын С. В. к.т.н., доцент, заведующий кафедрой, Налютин Н.Ю. к.т.н., ст.преподаватель, кафедра «Кибернетика», Московский инженерно-физический институт (государственный университет)

Доклад посвящен опыту кафедры «Кибернетика» МИФИ в области технологической подготовки специалистов по прикладной математике и информатике. В данном случае, под технологической подготовкой понимается процесс формирования у студентов знаний и навыков в области разработки программного продукта в современных условиях промышленного производства. Для простоты, под современным уровнем создания программного обеспечения будем понимать условия разработки, соответствующие уровню СММ не ниже третьего. На формирование предлагаемого для обсуждения подхода большое влияние оказал многолетний опыт работы с предприятиями авиационной промышленности в области создания и сертификации бортового программного обеспечения с учетом стандартов типа DO-178B [1].

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

Это означает, что каждый студент должен себе четко представлять все этапы жизненного цикла программного продукта (а, желательно, и программного проекта) и в процессе обучения научиться не только кодировать программы, но и участвовать в разработке и верификации программной документации, уметь тестировать и вводить в эксплуатацию программный продукт [2].

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

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

Далее ключевым является введенный на кафедре курс технологии программирования. В рамках него студенты осуществляют групповую разработку (коллектив 8-10 человек) достаточно большого программного проекта, выполняя в коллективе различные роли. При этом преподаватель выполняет не только роль консультанта коллектива разработчиков (учителя), но и, как правило, является представителем «заказчика».

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

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

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

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

Учебное пособие "Верификация программного обеспечения" [3] представляет те знания и опыт, которые были накоплены кафедрой в области программной инженерии за последние 30 лет. Оно было создано при поддержке корпорации Microsoft и входит в программу обучения Интернет-университета информационных технологий (ИНТУИТ). Книга основана на реальных технологиях и технологических процессах верификации, применяющихся в настоящее время в авиационной промышленности, при разработке и анализе комплексов высокоустойчивых прикладных систем. При изложении сочетается фундаментальный подход к вопросам верификации и использование современных инструментальных средств.

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

Учебный пример

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

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

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



  • Модуль математических функций - в него включены такие функции как сложение, умножение и др.

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

  • Модуль графического интерфейса - обеспечивает управление системы в графической форме. Основные функции этого модуля - ввод и вывод данных.

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

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

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


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

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

  • "Калькулятор" работает через консоль. Это позволит проводить обучение нагрузочному тестированию;

  • "Калькулятор" проводит математические вычисления. Это позволит продемонстрировать составление классов эквивалентности;

  • Для того чтобы исключить проблемы с округлением чисел, "Калькулятор" работает только с целыми числами;

  • "Калькулятор" содержит умышленно внесенные в него ошибки и несоответствия требованиям. Таким образом, студенты должны будут выявить эти несоответствия.

Программный комплекс "Калькулятор" разработан на платформе Microsoft .NET 2.0 на языке программирования C# 2.0. Это позволяет эффективно применять инструментальные средства компании Microsoft в учебных целях для тестирования комплекса "Калькулятор".

В состав Microsoft Visual Studio 2005 Team System (MVSTE) входит Microsoft Visual Studio 2005 Team Edition for Software Testers. Это издание предназначено как для разработчиков, так и для тестировщиков программного обеспечения. Оно содержит все, что необходимо для тщательного и всестороннего тестирования продукта, в том числе для анализа покрытия кода, тестирования качества продукта и его нагрузочного тестирования.

MVSTE for Software Testers содержит следующие инструменты для тестирования:


  • Manual Testing (ручное тестирование);

  • Web Testing (функция веб-тестирования);

  • Unit Testing (модульное тестирование);

  • Code Coverage (анализ покрытия кода);

  • Ordered Testing (упорядоченное тестирование);

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


Методика

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

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

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

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

Каждое семинарское занятие включает в себя:



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

  • проверку и обсуждение домашнего задания - 20 минут;

  • теоретическое вступление по подходу к тестированию - 20 мин;

  • демонстрацию применения этого подхода на примере программного комплекса средствами MVSTE - 20 минут;

  • выдачу домашнего задания с пояснениями его сути - 10 минут.

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

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



  • в начале курса проводится общий обзор тестирования и верификации ПО и знакомство с обучающим примером "Калькулятор";

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

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

  • затем рассматриваются основные принципы модульного тестирования и инструментальные средства MVSTE для их проведения;

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

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

  • следующей темой является интеграционное тестирование;

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

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

  1. RTCA/DO-178B. Software Considerations in Airborne Systems and Equipment Certification

  2. Сухомлин В.А. Принципы построения системы ИТ-образования // Открытые системы, № 9/2005

  3. Синицын С.В., Налютин Н.Ю. Верификация программного обеспечения: Учебное пособие. М.: Интернет-Университет Информационных Технологий; БИНОМ. Лаборатория знаний, 2008. - 368 с.


Достарыңызбен бөлісу:




©dereksiz.org 2024
әкімшілігінің қараңыз

    Басты бет