Еще совсем недавно трудно было представить, чтобы рядовой пользователь мог «повесить» программу своего мобильника. Но, увы, и такие устройства не застрахованы от ошибок программного обеспечения. На очереди — современные цифровые фотокамеры и другие бытовые устройства, которые ничуть не уступают по «интеллекту» ПК. Если еще никто и не сообщал об ошибках в их программной «начинке», то это слабое утешение.
Все более глубокое проникновение в повседневную жизнь каждого жителя планеты решений, предлагаемых ИТ-специалистами, составляющих мизерную часть этого самого человечества, побуждает вновь и вновь обращаться к основам — технологиям программирования, которые во многом и определяют комфортность пользователей высокотехнологичных изделий. В конце концов, если автомобиль едет не в том направлении, то совсем неважно какой у него двигатель, расход топлива и скорость.
Несмотря на обилие терминов и формулировок, содержащихся в статьях по технологиям программирования, ИТ-сообществу, в конечном итоге, более всего важны сегодня лингвисты, без искажения смысла транслирующие язык технологий в язык бизнеса и наоборот. Бизнес, технология и человек со своим субъективным началом не должны оказаться в роли лебедя, рака и щуки, бредущих в разные стороны по информационному пространству. Для получения суммарного положительного градиента от такого движения путем синхронизации людей и процессов, компьютерное сообщество придумало немало методик. О некоторых из них и пойдет речь в данном выпуске журнала.
Множество проблем технического характера, возникающих при создании сложных приложений, обусловлено ограниченностью средств, предоставляемых наиболее часто используемыми языками программирования. Особенно остро ощущается недостаточный уровень абстракции при описании универсальных структур данных и процедур их обработки. В жизненном цикле программного проекта львиную долю занимает не написание первоначального кода, а его сопровождение и поддержка. Поэтому, начиная работу, стоит задуматься, удастся ли сохранить строгое разделение функциональности между модулями, достаточной ли будет первоначально планируемая параметризация функций и не окажется ли, в конце концов, в проекте трех разномастных реализаций одной и той же структуры данных. В какой-то мере знакомство с функциональными языками позволит по иному взглянуть на многие нынешние проблемы программирования.
На фоне роста популярности операционной системы Linux сегодня наблюдается острая нехватка развитых инструментальных средств и приложений, обеспечивающих комфортную работу конечных пользователей. Важное качество таких систем — возможность создания и использования переносимых приложений, одинаково хорошо функционирующих на разных платформах. В одной из статей тематического блока речь идет о системе разработки кросс-платформных приложений, позволяющей быстро создавать полноценные переносимые программы, интегрированные в распределенную компонентную среду. Еще одна статья посвящена автоматизации тестирования — одного из важнейших этапов создания программного продукта, которая может реально повлиять на конкурентоспособность и успех проекта.
Рынок сегодня не испытывает дефицита в инструментарии обеспечения информационной безопасности. Однако рынок учебных программ по подготовке соответствующих специалистов не отличается адекватным изобилием — все знают, что делать, а кто делать-то будет? Курсы, имеющие отношение к этой тематике, по большей части связаны с конкретными технологиями от определенных поставщиков. Но, защита не покупается, а строится для каждого конкретного бизнеса и для того, чтобы создать действительно безопасную информационную среду, мало инсталлировать подходящие продукты — нужно разработать и следовать стратегии поддержки информационной безопасности на предприятии.
Известные фантасты не раз предрекали гибель человеческой цивилизации из-за «глюка» в программе, причем уже в самом скором времени. Чтобы как-то отдалить такой бесславный конец от рук своего же детища, нелишне изучить и освоить технологии и методы, которые уже накопило ИТ-сообщество, а не начинать каждый проект с чистого листа, веруя, что для новых условий никак не подойдут старые, опробованные методы и технологии, а будут нужны исключительно новые инструменты. В конечном итоге, руками профессионалов обычно и создаются заслуживающие внимания решения, а изощренные инструменты понадобятся, возможно, на этапе промышленного производства программного обеспечения, когда потребуется точное согласование действий его субъектов с процессами.