u/text/302/181130/ html Открытые системы, процессы стандартизации и профили стандартов

Вид материалаДокументы

Содержание


Открытый мир программного обеспечения
Открытые системы #08/2006
Подобный материал:
1   ...   7   8   9   10   11   12   13   14   ...   22

Открытый мир программного обеспечения


Сергей Кузнецов

ссылка скрыта :: ссылка скрыта

Для поддержки возможности производства формально верифицированного корректного программного обеспечения требуется решение двух разных предварительных задач. Разработчики должны формализовать требование к системе (воздействие, которое должно оказать на среду программное обеспечение) и соответствующие свойства среды. Кроме того, они должны применить формализованные требование и свойства среды для порождения формальной спецификации желательного компьютерного поведения на уровне его интерфейса со средой.

Удовлетворение результирующей формальной спецификации — критерий корректности программы. За получение спецификации должны отвечать инженеры. Эта задача относится только к среде и лежит вне граничного барьера. Задача внутри этого барьера относится только к программному обеспечению и формальной спецификации, и за нее должны отвечать специалисты из области компьютерной науки. Внутри барьера полностью формальная природа программирования и верификации программ остается неизменной.

Статью «’Большой вызов’ в информатике: инженерия преимущественно программных систем» (The ‘Grand Challenge’ in Informatics: Engineering Software-Intensive Systems) написал Манфред Брой (Manfred Broy). Информатика включает много областей и охватывает принципы вычисления, хранения, передачи и визуализации информации, а также формализмы для описания процедур обработки информации. Подобно тому как физика является наукой о физических явлениях и их математических основах, химия — наукой о материалах и веществах, биология — наукой о жизни, информация является существенной для понимания реальности, и информатика вносит фундаментальный вклад в постижение мира.

В информатике имеется и инженерный аспект, относящийся к созданию и функционированию систем обработки информации, вычисляющих, сохраняющих, передающих и визуализирующих информацию. Сегодня обработка информации играет существенную роль во всех видах технических и организационных процессов и в широком диапазоне продуктов. Для этих процессов и продуктов все более характерно включение программного обеспечения, существенно повышающего их функциональные возможности. Наличие программного обеспечения и возможности программирования глубоко влияет на их разработку и использование, поэтому преимущественно программные системы представляют собой очень важную разновидность систем обработки информации. Разработка и производство систем обработки информации основывается на использовании вспомогательных программных систем, таких как программные инструментальные средства и репозитарии данных о продуктах. Поэтому ключевые дисциплины для конструирования систем обработки информации — программная и системная инженерия.

Все эти вопросы важны не только с экономических позиций, но также и в отношении к безопасности и надежности повседневной жизни. Важнейшие инфраструктуры человеческой деятельности в значительной степени зависят от возможности разработки и обеспечения функционирования безопасных и надежных, преимущественно программных систем.

Сегодня построение преимущественно программной системы остается нерешенной проблемой. Во многих прикладных областях наблюдается типичная кривая обучения. В начале цикла обучения инженеры расценивают программное обеспечение как незначительный довесок ко всему остальному. По мере изучения прикладной области программное обеспечение постепенно становится центральной инженерной задачей. И тогда инженеры начинают разрабатывать собственные процессы и модели для решения проблем разработки программного обеспечения для конкретной прикладной области.

Для решения проблем разработки сложных программных систем требуется несколько новых технических компетенций. В частности, требуется хорошее понимание моделирования систем и эффективное использование моделей в дисциплинированном инженерном процессе. Потребуется и теория моделирования систем с дискретными событиями, которая обогащает и дополняет классический математический подход к теории систем, основанный на дифференциальных и интегральных уравнениях.

Если основываться на подходе к систематической разработке сложных программных систем, то потребуется инженерная нотация; дисциплина системных архитектур, затрагивающая архитектуру и программного обеспечения, и аппаратуры; соответствующие языки реализации; поддерживающее все это инструментальное средство. Кроме того, нужна методология спецификации и верификации систем с интенсивным использованием программного обеспечения.

Разработка такого подхода представляет собой Большой Вызов, заслуживающий многочисленных исследований. При их выполнении нужно учитывать основы программной и системной инженерии, не забывая одновременно отслеживать конкретные потребности прикладных областей. По мнению автора, наиболее эффективными окажутся практические подходы, специфичные для конкретных прикладных областей, основанные тем не менее на общей теории и методологии моделирования, разработки и обеспечения функционирования программных систем.

Еще одну статью тематической подборки представил Дэвид Грайс (David Gries). Статья называется «Чему мы не научились по поводу обучения программированию?» (What Have We Not Learned about Teaching Programming?). Когда в 1968 году проводилась конференция NATO по программной инженерии, представители академических кругов и индустрии практически в первый раз собрались вместе для обсуждения проблем проектирования и разработки программного обеспечения. И те и другие публично признались в том, что не знают, как хорошо разрабатывать программное обеспечение. Отчетливыми симптомами кризиса программного обеспечения являлись частые нарушения сроков завершения работы, перерасход средств, наличие ошибок в программах и неспособность к обучению программированию. Эта конференция побудила многочисленные исследования в конце 60-х — начале 70-х годов. Наиболее важный вклад в эти исследования внесли Эдсгер Дийкстра, Тони Хоар и Никлаус Вирт. К числу их достижений относятся аксиоматическая основа языков программирования; теория слабейших предусловий, которая привела к созданию методологии формальной разработки алгоритмов; пошаговая детализация; структурное программирование; достижения в области языков программирования. Однако, как считает автор, полученные результаты так и не удалось в должной мере использовать при обучении программированию. В процессе обучения не подчеркиваются достижения этих новаторов, оказавшие громадное воздействие на профессию разработчиков программного обеспечения.

По словам американского ученого-лингвиста Бенджамина Уорфа, они делали акцент на простоте и красоте и полагали, что язык должен способствовать четкости мышления: «Эти принципы теперь редко упоминаются в контексте программирования. Мы продаем свои программистские души, когда начинаем обучение с педагогически вредных и интеллектуально ужасных языков Cи и C++. Они подчеркивали значение методологии, говоря и принципах разработки программ, таких как пошаговая детализация». Сегодня в большинстве учебных материалов содержатся «тексты программ», а не «тексты о программировании»; в них мало говорится о процессе программирования. Вместо этого приводятся тексты программ, и полагается, что студенты смогут писать свои программы по их образу и подобию.

ссылка скрыта    ссылка скрыта    ссылка скрыта    ссылка скрыта    4    ссылка скрыта    ссылка скрыта

Открытые системы #08/2006


ссылка скрыта