Конструирование ПО - создание работающего ПО с привлечением методов
верификации, кодирования и тестирования компонентов. К инструментам
конструирования ПО отнесены языки программирования и
конструирования, а также программные методы и инструментальные
системы (компиляторы, СУБД, генераторы отчетов, системы управления
версиями, конфигурацией, тестированием и др.). К формальным
средствам описания процесса конструирования ПО, взаимосвязей между
человеком и компьютером и с учетом среды окружения отнесены,
например, структурные диаграммы Джексона.
Область знаний "Конструирование ПО (Software Construction)"
включает следующие разделы:
· снижение сложности (Reduction in Complexity),
· предупреждение отклонений от стиля (Anticipation of
Diversity),
· структуризация проверок (Structuring for Validation),
· использование внешних стандартов (Use of External Standards)
Снижения сложности - это минимизация, уменьшение и локализация
сложности конструирования.
Минимизация сложности определяется ограниченными возможностями
исполнителей обрабатывать сложные структуры и большие объемы
информации на протяжении длительного периода времени. Минимизация
сложности достигается, в частности, использованием в процессе
конструирования модулей и других более простых элементов а также
рекомендациями стандартов.
Уменьшение сложности в конструировании ПО достигается при создании
простого и легко читаемого кода для придания большей значимости
этого кода, простоте тестирования, производительности и
удовлетворению заданных критериев. Это влияет на функциональность,
характеристики и ограничения проекта. Потребность в уменьшении
сложности влияет на все аспекты конструирования и особенно критична
для процессов верификации (проверки) и тестирования результатов
конструирования элементов ПС.
Локализация сложности - это способ конструирования с применением
объектно-ориентированного подхода, который лимитирует интерфейс
объектов, упрощает их взаимодействие, также проверку правильности
самих объектов и связей между ними. Локализация упрощает внесение
изменений, связанных с обнаруженными ошибками в коде, либо
источником ошибок является среда, в которой выполняется код.
Предупреждение отклонений от стиля.Для решения различных задач
конструирования применяются разные стили конструирования
(лингвистический, формальный, визуальный).
Лингвистический стиль основан на использовании словесных инструкций
и выражений для представлений отдельных элементов (конструкций)
программ. Он используется при конструировании несложных конструкций
и приводится к виду традиционных функций и процедур, логическому и
функциональному их программированию и др.
Формальный стиль используется для точного, однозначного и
формального определения компонентов системы. В результате его
применения обеспечивается конструирование сложных систем с
минимальным количеством ошибок, которые могут возникнуть в связи с
неоднозначностью определений или обобщений при конструировании ПО
неформальными методами.
Визуальный стиль является наиболее универсальным стилем
конструирования ПО, он позволяет разработчикам проекта представлять
конструируемый элемент в наглядном виде. Визуальный язык
проектирования UML представляет разработчику набор удобных диаграмм
для задания статической и динамической структуры ПО [1.17]. При
применении визуального стиля конструирования создается текстовое и
диаграммное описание конструктивных элементов ПО, которое выводится
на экран дисплея не только для их наглядного представления, но и
корректировки.
Структуризация проверокпредполагает, что построение ПС должно
проводиться таким образом, чтобы сама система помогала вести поиск
ошибок, дефектов и причин сбоев при применении различных методов
проверки, как на стадии независимого тестирования (например,
инженерами-тестировщиками), так и в процессе эксплуатации, когда
особенно важно быстрое обнаружение и исправление возникающих
ошибок. Структуризации проверок способствуют обзор,
инспектирование, просмотр, модульное тестирование, применение
автоматизированных средств тестирования и др.
Использование внешних стандартов. Конструирование ПО зависит от
применения внешних стандартов, связанных с языками
программирования, инструментальными средствами и интерфейсами. При
конструировании должен быть определен достаточный и полный набор
стандартов для руководства и обеспечения координации между
определенными видами деятельности, группами операций, минимизации
сложности, внесения изменений, анализа рисков и др.
Иными словами, внешние и внутренние стандарты должны определить
общие правила работы членов проектной команды с учетом процессов
ЖЦ. Такими стандартами являются: языки программирования (например,
Java Language Specification, С++), интерфейсы ЯП и прикладные
интерфейсы платформ Windows и др. При конструировании используются
стандарты: ЯП (Ада 95, С++ и др.), языков описания данных (XML, SQL
и др.), средств коммуникации (COM, CORBA и др.), интерфейсных
языков (POSIX, IDL, APL) [1.18], сценарии UML [1.17] и др.
Данная область пополнилась новым разделом (SWEBOK, 2004 г.),
описываемым ниже.
Управление конструированием - это управление процессом
конструирования ПО, которое базируется на моделях конструирования,
планировании и внесении изменений.
Модели конструирования включают набор операций, последовательность
действий и результатов. Виды моделей определяются стандартом ЖЦ,
методологиями и практиками. Некоторые стандарты ЖЦ по своей природе
ориентированы на конструирование, например, экстремальное
программирование (XP - eXtreme Programming). Конструирование с
помощью моделирования осуществляется в рациональном унифицированном
процессе - RUP (Rational Unified Process) [1.19].
Планирование состоит в определении порядка операций и уровня
выполнения заданных условий в процессе конструкторской
деятельности. Определяется модель ЖЦ, включающая задачи и действия
по созданию компонентов, а также по их проверке, включая достижение
показателей качества на этапах ЖЦ. Исполнители распределяются по
процессам ЖЦ и выполняют соответствующие задачи по реализации
промежуточного продукта. Затем проводится измерение разных аспектов
конструирования, например, количественная оценка объема кода,
оценка степени использования reuse, вычисление вероятности
появления дефектов и оценка количественных показателей качества
ПО.
Внесение изменений связано с ошибками, выявленными путем разного
рода проверок и тестирований, оно проводится с целью сохранения
функциональной целостности системы. В случае обнаружения ошибок на
этапе сопровождения принимается решение об изменении кода путем
исправления обнаруженных ошибок или внесения изменений в требования
к ПО.