Повторное использование (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), баз данных тестовых процедур, данных <полученных в результате> тестов и самих тестов, подлежащих повторному использованию
- оценку потенциала повторного использования кода и тестов
- отслеживание информации и создание отчетности по повторному использованию в новом коде, тестовых процедурах и данных, полученных в результате тестов.