
Архитектура особенно важна для систем, в которые входят компо-
ненты
ПО и оборудования, а также для сложных систем, состоящих ис-
ключительно из ПО. Важный этап анализа требований — распределе-
ние высокоуровневых требований к системе по различным подсисте-
мам и компонентам. Системный инженер, аналитик или архитектор
классифицирует требования к системе по их принадлежность к функ-
циональным и требованиям
к
оборудованию
(Lettingwell
и
Widrig, 2000).
Трассируемая информация позволяет разработчикам отследить, в ка-
ких элементах дизайна будет отражено каждое
требование.
В результате неверного распределения решений может статься, что
ПО, определенное как функциональное, следовало бы назначить ком-
понентам оборудования (или наоборот); кроме того, в таком случае
возможна
низкая
производительность или трудности при замене не-
коего компонента для улучшения версии. При разработке одного про-
екта инженер по оборудованию сообщил моей группе, что в нашем ПО
должны быть преодолены все ограничения, налагаемые его дизайном
оборудования! Хотя ПО само по себе более гибко, чем
оборудование,
инженерам не следует использовать это качество, чтобы сэкономить
на дизайне оборудования. Воспользуйтесь приемом проектирования и
создания программ, чтобы выработать оптимальные решения того, ка-
кие возможности каждый системный компонент будет удовлетворять в
рамках заданных ограничений.
Распределение системных функций по подсистемам и компонентам
надо выполнять «сверху вниз» (Hooks и
Farry,
2001).
Представьте DVD-
проигрыватель, в который входит мотор, открывающий и
закрываю-
щий лоток дисковода и вращающий диск, оптическая подсистема для
считывания данных с диска, ПО для формирования изображений, мно-
гофункциональный пульт дистанционного управления и многое
дру-
гое, как показано на рис. 17-3. Подсистемы
взаимодействуют
для
управления поведением в таких случаях, когда,
скажем,
пользователь
нажимает кнопку на пульте дистанционного управления, чтобы от-
крыть лоток дисковода во время проигрывания диска. В таких сложных
продуктах требования к системе влияют на дизайн архитектуры, а
ар-
хитектура в свою очередь влияет на распределение требований.
При разработке некоторых проектов дизайн ПО немного
изменяется,
тем не менее на дизайн время никогда не бывает потрачено зря. Разно-
образные разработки ПО удовлетворяют большинству требований к
продукту. Они различаются по производительности, эффективности и
устойчивости к сбоям, а также по использованным техническим мето-
дам. Если вы перескакиваете от требований к коду, это означает, что вы
по существу разрабатываете ПО «на лету». Вы разрабатываете какой-то
334 Часть II. Разработка требований к ПО