Интеграция (Integration)
Качество конструирования (Construction Quality)
Существует ряд техник, предназначенных для обеспечения качества кода, выполняемых по мере его конструирования. Основные техники обеспечения качества, используемые в процессе конструирования, включают:
- модульное (unit) и интеграционное (integration) тестирование
- разработка с первичностью тестов (test-first development - тесты пишутся до конструирования кода)
- пошаговое кодирование (деятельность по конструированию кода разбивается на мелкие шаги, только после тестирования результатов которых производится переход к следующему шагу кодирования; известен также как итеративное кодирование с тестированием)
- использование процедур утверждений (assertion)
- отладка (в привычном понимании - debugging)
- технические обзоры и оценки (review)
- статический анализ
Выбор и использование конкретных техник часто диктуется стандартами (внутренними и внешними), используемыми проектной командой, а также зависят от опыта и подготовленности специалистов, занимающихся конструированием кода.
Деятельность по обеспечению качества в конструировании отличается от других операций по обеспечению качества. Основное отличие заключается в фокусе на программном (исходном) коде и других артефактах (активах), тесно связанных с кодом, в частности, детальных моделях.
Одна из ключевых деятельностей, осуществляемых в процессе конструирования, - интеграция отдельно сконструированных операций (процедур), классов, компонентов и подсистем (модулей). В дополнение к этому, некоторые программные системы нуждаются в специальной интеграции с другим программным и аппаратным обеспечением.
Кроме упомянутых аспектов интеграции, к обсуждаемым интеграционным вопросам конструирования относятся:
- планирование последовательности, в которой интегрируются компоненты;
- обеспечение поддержки создания промежуточных версий программного обеспечения;
- задание “глубины” тестирования (в частности, на основе критериев “приемлемого” качества) и других работ по обеспечению качества интегрируемых в дальнейшем компонент;
- наконец, определение этапных точек проекта, когда будут тестироваться промежуточные версии конструируемой программной системы.
3. Конструирование программного обеспечения
(Software Construction по SWEBOK)
Глава базируется на IEEE Guide to the Software Engineering Body of Knowledge - SWEBOK.
Содержит перевод описания области знаний SWEBOK “Software Construction”, с замечаниями и комментариями.
Конструирование программного обеспечения (Software Construction)
1. Основы конструирования (Software Construction Fundamentals)
1.1 Минимизация сложности (Minimizing Complexity)
1.2 Ожидание изменений (Anticipating Changes)
1.3 Конструирование с возможностью проверки (Constructing for Verification)
1.4 Стандарты в конструировании (Standards in Constructing)
2. Управление конструированием (Managing Construction)
2.1 Модели конструирования (Construction Models)
2.2 Планирование конструирования (Construction Planning)
2.3 Измерения в конструировании (Construction Measurement)
3. Практические соображения (Practical Considerations)
3.1 Проектирование в конструировании (Construction Design)
3.2 Языки конструирования (Construction Languages)
3.3 Кодирование (Coding)
3.4 Тестирование в конструировании (Construction Testing)
3.5 Повторное использование (Reuse)
3.6 Качество конструирования (Construction Quality)
3.7 Интеграция (Integration)
Термин конструирование программного обеспечения (software construction) описывает детальное создание рабочей программной системы посредством комбинации кодирования, верификации (проверки), модульного тестирования (unit testing), интеграционного тестирования и отладки.
Данная область знаний связана с другими областями. Наиболее сильная связь существует с проектированием (Software Design) и тестированием (Software Testing). Причиной этого является то, что сам по себе процесс конструирования программного обеспечения затрагивает важные аспекты деятельности по проектированию и тестированию. Кроме того, конструирование отталкивается от результатов проектирования, а тестирование (в любой своей форме) предполагает работу с результатами конструирования. Достаточно сложно определить границы между проектированием, конструированием и тестированием, так как все они связаны в единый комплекс процессов жизненного цикла и, в зависимости от выбранной модели жизненного цикла и применяемых методов (методологии), такое разделение может выглядеть по разному.
Хотя ряд операций по проектированию детального дизайна может происходить до стадии конструирования, большой объем такого рода проектных работ происходит параллельно с конструированием или как его часть. Это есть суть связи с областью знаний “Проектирование программного обеспечения”.
В свою очередь, на протяжении всей деятельности по конструированию, инженеры используют модульное и интеграционное тестирование. Таким образом связана данная область знаний с “Тестированием программного обеспечения”.
В процессе конструирования обычно создается большая часть активов программного проекта - конфигурационных элементов (configuration items). Поэтому в реальных проектах просто невозможно рассматривать деятельность по конструированию в отрыве от области знаний “Конфигурационного управления” (Software Configuration Management).
Так как конструирование невозможно без использования соответствующего инструментария и, вероятно, данная деятельность является наиболее инструментально-насыщенной, важную роль в конструировании играет область знаний “Инструменты и методы программной инженерии” (Software Engineering Tools and Methods).
Безусловно, вопросы обеспечения качества значимы для всех областей знаний и этапов жизненного цикла. В то же время, код является основным результирующим элементом программного проекта. Таким образом, явно напрашивается и присутствует связь обсуждаемых вопросов с областью знаний “Качество программного обеспечения” (Software Quality).
Из связанных дисциплин программной инженерии (Related Disciplines of Software Engineering) наиболее тесная и естественная связь данной области знаний существует с компьютерными науками (computer scince). Именно в них, обычно, рассматриваются вопросы построения и использования алгоритмов и практик кодирования. Наконец, конструирование касается и управления проектами (project management), причем, в той степени, насколько деятельность по управлению конструированием важна для достижения результатов конструирования.
Рисунок 4. Область знаний “Конструирование программного обеспечения” [SWEBOK, 2004, с.4-2, рис. 1]