Повторное использование (Reuse)

Тестирование в конструировании (Construction Testing)

Кодирование (Coding)

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

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

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

  • модульное тестирование (unit testing)
  • интеграционное тестирование (integration testing)

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

Тестировании в конструировании обычно включает подмножество видов тестирования, описанных в области знаний “Тестирование программного обеспечения” (Software Testing). Например, тестирование в конструировании обычно не включает системного тестирования, нагрузочного тестирования, usability-тестирования (оценки прозрачности использования) и других видов тестовой деятельности.

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

  • IEEE Std 829-1998: “IEEE Standard for Software Test Documentation”
  • IEEE Std 1008-1987: “IEEE Standard for Software Unit Testing”

Напрямую с данной темой связаны под-темы SWEBOK 2.1.1 “Unit Testing” и 2.1.2 “Integration Testing”.

Во введении в стандарт IEEE Std. 1517-99 “IEEE Standard for Information Technology – Software Lifecycle Process – Reuse Processes” даётся следующее понимание повторному использованию в программном обеспечении: “Реализация повторного использования программного обеспечения подразумевает и влечёт за собой нечто большее, чем просто создание и использование библиотек активов. Оно требует формализации практики повторного использования на основе интеграции процессов и деятельности по повторному использованию в сам жизненный цикл программного обеспечения.” В то же время, повторное использование достаточно важно и непосредственно при конструировании программных систем, что подчеркивается включением этой темы в обсуждаемую область знаний конструирования ПО.

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

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