У встроенных систем, управляющих различными, в том числе критичными для человека, техническими комплексами, нет времени на раздумья, так как их задача — настолько идеально отработать сценарий реагирования на поступившее событие, чтобы выполнять это почти мгновенно. Ясно, что технологии и инструментарий создания таких «невидимых» систем существенно отличаются от принятых в среде разработчиков систем обычных, не говоря уже о менталитете и культуре программирования. Вместе с тем, жизненные пути всех категорий современных компьютеров: универсальных, суперкомпьютеров и встроенных, начались из одной точки и в последующем периодически переплетались.
Традиционно передовые идеи по улучшению производительности и надежности отрабатывались на встроенных системах и доходили до стадии промышленной эксплуатации раньше, чем в универсальных машинах. Пока последние мало влияли на реальную жизнь, управляя объектами естественной среды, такое положение было приемлемым, но сегодня ошибки и просчеты в их архитектуре оказываются весьма болезненными для общества. Вероятно, как отмечают авторы этого номера журнала, посвященного встроенным системам, пришло время конвергенции всех типов компьютерных систем.
Аналитики в один голос заявляют, что до 75% всех затрат на ИТ, основой которых являются универсальные системы, в ближайшем будущем уйдет только на эксплуатацию. Надежность и адаптивность встраиваемых систем, самостоятельно решающих большинство эксплуатационных задач, будет здесь как нельзя кстати. Однако и встраиваемым системам нужна «встряска» — им уже недостаточно производительности специализированных сигнальных процессоров для выполнения современных приложений. Как отмечается в данном номере журнала, это привело к появлению высокопроизводительных встроенных компьютерных систем, использующих многоядерные многопотоковые процессоры, параллельные многопроцессорные архитектуры и программное обеспечение для работы в распределенных средах.
Однако камнем преткновения на пути конвергенции традиционных и встроенных высокопроизводительных систем могут стать существенные различия этих двух миров: акцент на целочисленные операции в универсальных системах и работа с вещественными числами в системах встроенных; статичные обычно массивы данных на дисках для работы универсальных систем и преобладание недетерминированных потоков данных, подаваемых на вход встроенным системам; наконец, главное, по мнению наших авторов, — различия в школах программирования. Недостаточную производительность и ненадежность программ для универсальных систем всегда можно было компенсировать наращиванием вычислительной мощности и установкой избыточного оборудования и, напротив, оптимизация работы аппаратуры встроенных систем всегда требовала скрупулезной проработки программ. В какой-то степени программирование универсальных систем в условиях спокойной жизни при почти полном отсутствии ограничений оказалось в стороне активных изысканий, характерных для программирования встроенных систем. А жизнь на обочине, как известно, приводит к запыленности ума.
Почему, несмотря на то, что отрасль ИТ существует уже почти 50 лет, говорить о ее зрелости по-прежнему не приходится? Почему мы до сих пор проектируем, разрабатываем и реализуем программное обеспечение, в котором так много ошибок? Информация о том, что делается в ИТ-отрасли для создания безошибочного программного обеспечения, оптимизма не внушает, — возможно, мы смотрим на проблему со слишком близкого расстояния, долгое время идем, не зная куда, а сегодня удивляемся, что оказались не там, где хотели. Как отмечают наши авторы, незрелость ИТ-отрасли объясняется многими факторами, ряд которых нам понять не подвластно, однако уменьшить их влияние можно, в частности, особого внимания требует управление требованиями.
Глобализация мировой экономики не обошла стороной разработку программного обеспечения — развитие аутсорсинга привело к тому, что отношения между заказчиком и подрядчиком обрели характер многостороннего сотрудничества многочисленных удаленных друг от друга организаций. Учитывая, что разработка требований — наиболее важная стадия программного проекта, от которой во многом зависит его успех, проблемы ее организации в условиях географической распределенности приобрели особую остроту, причем отдельное место здесь занимает выстраивание отношений между заказчиком и подрядчиком в условиях офшорного аутсорсинга. Наши авторы на основе собственного опыта и рекомендаций аналитиков, определили факторы успеха и предложили методы решения проблем, возникающих при разработке требований.
Вообще говоря, проектирование современных ИТ-систем требует участия специалистов с солидным образованием, дополненным скрупулезным практическим обучением; что давно уже осознали в других сформировавшихся отраслях — пора бы обратить на это внимание и при разработке программных систем, которые стали неотъемлемой частью повседневной жизни и касаются практически каждого. В свете этого настало время самому ИТ-сообществу привести в порядок свои дела, прежде чем более широкое общество вне данной отрасли заставит его это сделать.