Математика, алгебра, логика

         

Алгебра и пакет Mathematica 5

С давних времен человек мечтал о машине, которая могла бы выполнять вычисления. Однако что значит вычислять! Когда компьютеры только появились, они, в основном, были предназначены для численных расчетов. Затем они начали применяться для решения задач управления. И хотя в этих приложениях численные расчеты играют весьма важную роль, всегда были ученые, которые понимали, что результаты вычислений могут интерпретироваться не только как числовые значения физических величин. Еще Лейбниц мечтал построить машину для "вычисления истины".
Впрочем, в самом понятии "научные вычисления" всегда была двусмысленность: прежде чем на сцене появился компьютер, вычисления представляли смесь численного счета с тем, что многие называют "алгебраическими вычислениями", т.е. с операциями над математическими формулами.
Единственным примером чисто численных расчетов является, по-видимому, деятельность неординарных вычислителей, таких как Иноди. Несомненно, что авторы таблиц, в особенности логарифмических, выполняют огромный объем численных расчетов, однако этим расчетам предшествует разработка алгебраических формул и методов, необходимая для того, чтобы работа оказалась в пределах человеческих возможностей.

Введение
После изучения школьного курса информатики вы панически боитесь компьютеров, программ и всего, что связано с ними? Тогда вам нужно напрочь забыть этот школьный ужастик и прочесть сначала какую-нибудь совсем простую книгу, с помощью которой вы научитесь нажимать клавиши и будете относиться к монитору так же, как к телевизору. (Впрочем, считаю своим долгом предупредить об опасности телевизоров (и компьютеров): их так легко включить, а оторваться от них иногда просто невозможно.)

Исторический обзор и первое знакомство
С давних времен человек мечтал о машине, которая могла бы выполнять вычисления. Однако что значит вычислять! Когда компьютеры только появились, они, в основном, были предназначены для численных расчетов. Затем они начали применяться для решения задач управления. И хотя в этих приложениях численные расчеты играют весьма важную роль, всегда были ученые, которые понимали, что результаты вычислений могут интерпретироваться не только как числовые значения физических величин. Еще Лейбниц мечтал построить машину для "вычисления истины".

Первое знакомство — калькулятор
Большое белое окно слева- блокнот. Именно в него вводится информация, и именно в нем отображаются результаты. Окно в середине - заставка-приветствие и справка. Окно справа - панель для ввода математических символов греческих букв и т.п. После запуска системы Mathematica в блокнот можно вводить информацию.

Числа, их представление и операции над ними
Что такое число? Однозначного ответа на этот вопрос нет. Например, комплексное число — это число или все-таки вектор? А действительное число — это число или сечение во множестве рациональных чисел? А если комплексные числа все-таки числа, то кватернионы — тоже числа или уже объекты другой природы? Ну а если даже кватернионы — все-таки числа, то разве не следует к числам причислить и октавы Кэли? Иногда очень удобно считать, что числа — это элементы любого кольца. Но тогда и матрицы (элементы кольца матриц) тоже ведь нужно считать числами! Впрочем, это совсем не глупо, как может показаться на первый взгляд: в кольце матриц размера 2x2, элементами которых являются вещественные числа, можно выделить подкольцо, которое на самом деле является полем, изоморфным полю комплексных чисел.

Арифметика: разложение целых чисел на простые множители
В ряде задач очень важно знать, насколько быстро можно разложить целое число на простые множители. По этой причине давайте рассмотрим, какие числа функция FactorInteger может разложить на простые множители за приемлемое время. Конечно, мы не собираемся факторизовать все числа подряд (для этого не хватило бы и многотомного труда), а займемся только классическими последовательностями.

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

Арифметика: наибольший общий делитель и наименьшее общее кратное
Для нахождения наибольшего общего делителя чисел (целых, рациональных или гауссовых) в системе Mathematica предусмотрено две функции: GCD и ExtendedGCD.

Модулярная арифметика: деление с остатком, вычеты, сравнения
При выполнении операции деления с остатком получается частное и остаток. Для нахождения частного и остатка в системе Mathematica предусмотрены функции Quotient и Mod.

Числовые функции
Если в полной системе вычетов по модулю nоставить только вычеты, взаимно простые с модулем, получим приведенную систему вычетов по модулю n. Мощность приведенной системы вычетов по модулю n как множества обозначается ?(n), а функция ?:n->?(n) называется функцией Эйлера. Найдем, для примера, приведенную систему вычетов по модулю 10.

Мультимедиа: геометрия, графика, кино, звук
Компьютерная графика в своем историческом развитии повторяет путь аналитической геометрии. Когда-то давно', когда возникла аналитическая геометрия, т.е. во времена Пьера Ферма и Ренэ Декарта, она мыслилась в основном как аналитическая геометрия на плоскости (а зачастую даже как аналитическая геометрия в первом квадранте). Это был способ изучения плоских образов (кривых) с помощью метода координат на плоскости. Распространение методов аналитической геометрии на пространственные образы (линии и поверхности) было сделано столетием позже французским математиком Клеро (1713—1765). Облик, близкий традиционному, придал аналитической геометрии Леонард Эйлер в 1748 году, посвятив ей второй том "Введения в анализ". Однако еще более столетия курс аналитической геометрии делился на два раздела: аналитическая геометрия на плоскости и аналитическая геометрия в пространстве.

Алгебра и анализ
Одним из наиболее распространенных видов алгебраических преобразований является замена выражений, часто называемая также подстановкой, в результате выполнения которой какая-либо часть алгебраического выражения заменяется новым выражением. В системе Mathematica предусмотрено два способа подстановок. Первый способ выполняется с помощью функции Set.

За гранью простого
Боюсь, я несколько превысил отведенный мне лимит времени, хотя и не успел полностью познакомить вас ни со всей Математикой, ни со всеми функциями системы Mathematica. Памятуя опыт Никола Бурбаки, я и не ставил перед собой такой задачи. Просто я хотел показать, что с помощью пятистрочечных программ, написанных на языке системы Mathematica, школьники, студенты, аспиранты, инженеры и научные сотрудники самых разных профилей могут успешно решать свои задачи. И если вы готовы идти дальше и применять систему Mathematica в своей работе, — я достиг цели, поставленной перед написанием этой книги. Жаль, конечно, что нет такой одной универсальной книги, в которой была бы изложена вся-вся Математика. Даже в этой тоненькой книжечке были затронуты вопросы, о которых пятитомная Математическая энциклопедия даже не упоминает. И уж тем более это справедливо для пятитомного (в семи книгах!) курса высшей математики, написанного В. И. Смирновым.

Введение в экспертные системы

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

Введение
Язык CLIPS послужит вам удобным инструментом для выполнения упражнений, поскольку он не требует разработки модулей кода значительного объема.
Для аспирантов, интересующихся проблемами искусственного интеллекта, особый интерес представляет материал следующих глав.

Что такое экспертная система?
Экспертная система может полностью взять на себя функции, выполнение которых обычно требует привлечения опыта человека-специалиста, или играть роль ассистента для человека, принимающего решение. Другими словами, система (техническая или социальная), требующая принятия решения, может получить его непосредственно от программы или через промежуточное звено — человека, который общается с программой. Тот, кто принимает решение, может быть экспертом со своими собственными правами, и в этом случае программа может "оправдать" свое существование, повышая эффективность его работы.

Обзор исследований в области искусственного интеллекта
Что такое искусственный интеллект? Барр и Файгенбаум предложили следующее определение, которое никем не оспаривается почти два десятка лет [Barr and Feigenbaum, 1981]. "Искусственный интеллект (ИИ) — это область информатики, которая занимается разработкой интеллектуальных компьютерных систем, т.е. систем, обладающих возможностями, которые мы традиционно связываем с человеческим разумом, — понимание языка, обучение, способность рассуждать, решать проблемы и т.д."

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

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

Системы, основанные на знаниях
В области искусственного интеллекта и в современной психологии утверждение, что разумное поведение направляется правилами, превратилось уже в аксиому. Даже в "большом" мире люди склонны связывать уровень интеллектуальности со следованием правилам, и мы все чаще при объяснении разумности обращаем внимание на то, насколько при этом соблюдаются правила. Возьмем для примера манеру разговаривать на естественном языке. Мы все ведем себя так, как если бы обладали знанием всех правил того языка, на котором говорим, например английского, хотя, конечно, мы знаем далеко не все. (Любой, кто запишет эти правила, может рассчитывать на ослепительную карьеру в лингвистике.)

Ассоциативные сети и системы фреймов
Следуя Нильсону [Nilsson, 1982], я буду использовать термин структурированный объект по отношению к любой схеме представления, базовые блоки которой аналогичны узлам и дугам в теории графов или слотам и заполнителям структур записей. Я буду систематически сравнивать этот вид представления со схемами, производными от правил формальных грамматик или формализмов разнообразных логик. Представление с помощью структурированных объектов является весьма удобным средством для группирования информации более или менее естественным путем.

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

Логическое программирование
Еще в конце 1970-х годов стала отчетливо просматриваться тенденция к использованию в исследованиях в области искусственного интеллекта "формальных" методов, т.е. основанных на аппарате математической логики. Эти методы противопоставлялись более интуитивным и менее формализованным эвристическим методам, скажем, таким, которые были использованы в системе MYCIN. Для того чтобы стало ясно, что все это значит, нужно познакомить вас с логическими языками, а затем показать, как соотносятся их свойства с теми методами рассуждений, которые должны поддерживать типовые экспертные системы.

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

Приобретение знаний
Термин приобретение знаний носит обобщенный характер и совершенно нейтрален к способу передачи знаний. Например, передача может осуществляться с помощью специальной программы, которая в процессе обработки большого массива историй болезни устанавливает связь между симптомами и заболеваниями. А вот термин извлечение знаний (knowledge elicitation) относится именно к одному из способов передачи знаний — опросу экспертов в определенной проблемной области, который выполняется аналитиком или инженером по знаниям. Последний затем создает компьютерную программу, представляющую такие знания (или поручает это кому-нибудь другому, обеспечивая его всей необходимой информацией).

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




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

Иерархическое построение и проверка гипотез
В данной главе будут рассмотрены три системы, реализующие комбинированный метод решения проблем, который получил в литературе наименование иерархического построения и проверки гипотез (hierarchical hypothesize and test). С методом эвристической классификации этот метод сходен в том, что в нем используется отображение множества абстрактных категорий данных на множество абстрактных категорий решений, но этот подход усложнен тем, что элементы решений могут комбинироваться и объединяться в составные гипотезы. Цель такого усложнения — построение гипотезы, которая могла бы объяснить все симптомы и признаки анализируемой ситуации.

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

Решение проблем конструирования (II)
В предыдущей главе мы рассматривали экспертные системы для решения проблем конструирования, в которых по ходу процесса никогда не возникала необходимость отмены уже принятых решений. Однако такая стратегия подходит далеко не для всех задач конструирования, поскольку мы не всегда располагаем всеми необходимыми для этого знаниями о предметной области. В этой главе мы проанализируем применение двух стратегий — наименьшего принуждения (least commitment) и предложение и пересмотр (propose and revise). Завершит главу обзор некоторых инструментальных средств приобретения знаний, которые используются в системах решения проблем конструирования.

Средства формирования пояснений
Эту главу мы начнем с краткого обзора ранних работ, касающихся включения в экспертные системы специальных средств, формирующих для пользователя информацию о ходе рассуждений (в дальнейшем для краткости мы будем называть ее поясняющей информацией). Затем более детально будут рассмотрены средства формирования пояснений экспертной системы CENTAUR, о которой уже упоминалось в главе 13. И в заключение мы обсудим одно из последних исследований в этой области, выполненное в рамках проекта Explainable Expert Systems, в котором основное внимание было уделено обеспечению прозрачности экспертной системы с точки зрения инженеров по знаниям, т.е. была предпринята попытка рассмотреть в комплексе вопросы формирования поясняющей информации и извлечения знаний.

Инструментальные средства разработки экспертных систем
Как и в предыдущих главах, при необходимости проиллюстрировать те или иные методы программирования мы пользуемся языком CLIPS, хотя вы встретите и несколько фрагментов программ на других языках. Более сложные и специализированные инструментальные средства, в частности системы с доской объявлений и системы обработки правдоподобия, будут детально рассмотрены в главах 18 и 19. В этой же главе мы представим общие тенденции в разработке и использовании инструментальных средств для построения экспертных систем.

Системы с доской объявлений
В последние годы в разработке архитектуры экспертных систем появилось новое направление, которое получило название системы с доской объявлений (blackboard sys-tems)u. Системы с такой архитектурой могут эмулировать режим построения как прямой цепочки логического вывода, так и обратной, а также попеременно применять эти режимы в процессе работы. Кроме того, применение систем с доской объявлений побуждает инженеров по знаниям к иерархической организации и знаний относительно предметной области, и пространства частичных и полных решений. Таким образом, эта архитектура очень хорошо подходит для решения задач проектирования, для которых характерно большое, но факторизуемое многомерное пространство решений. Системы с подобной архитектурой уже успешно применяются для интерпретации данных (например, распознавания графических изображений и речи), анализа и синтеза многокомпонентных структур (например, структуры протеинов) и планирования.

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

Формирование знаний на основе машинного обучения
За последние 10 лет в области исследования методов формирования знаний на основе машинного обучения (в дальнейшем для краткости мы будем употреблять термин машинное обучение — machine learning) наблюдается бурный прогресс. Но мы не будем в этой главе делать широкого, а следовательно, и поверхностного обзора имеющихся работ, а сконцентрируемся на тех методах, которые имеют прямое отношение к проблематике экспертных систем

Сети доверия
В этой главе мы рассмотрим два количественных метода реализации логических рассуждений при наличии неопределенности в структурированном пространстве гипотез, базирующихся на теории свидетельств Демпстера—Шефера [Gordon and Shortliffe, 1985] и Байесовском формализме [Pearl, 1986]. Каждый из этих подходов предполагает, что на множестве гипотез каким-то способом определена функция доверия (belieffunction), а затем по мере накопления новых свидетельств применяется специфический механизм обновления текущего множества допущений.

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

Гибридные системы
Системы, которые мы рассмотрим в этой главе, ознаменовали дальнейшее продвижение по этому пути — в них объединяются традиционные программы решения проблем и компоненты самообучения и критического анализа. Система ODYSSEUS [Wilkins, 1990] способна обучаться тому, как уточнять базу знаний. Для этого используются две разные методики: одна основана на анализе прецедентов, а вторая — на анализе пояснений. Обе методики являются сравнительно новыми, и читатель сможет вкратце ознакомиться с ними в данной главе. Далее будет описана программа, в которой логический вывод на основе прецедентов используется для обработки исключений из правил, а основным инструментом решения проблем являются порождающие правила.

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

Программирование на языке CLIPS
Это Приложение организовано следующим образом. В разделе А.2 рассмотрены основные функции языка описания правил и процедурного языка. В разделе А.З представлены методы работы с объектами и показано, как использовать их в сочетании с правилами и процедурами. В разделе А.4 описан пример, демонстрирующий некоторые приемы программирования правил, а в разделе А.5 резюмируются характеристики этого программного продукта и предлагаются темы для более углубленного изучения.

Логические игры

Все началось на дне рождения Алисы. Не Алисы из Страны Чудес, а моей знакомой девочки по имени Алиса. Каким образом в этой истории появилась другая Алиса, вы скоро поймете. Разумеется, на дне рождения были младший брат Алисы Тони, а также ее друзья Майкл, Лиллиан и еще несколько мальчиков и девочек. После того как было сыграно бессчетное число игр и показаны все фокусы, ребятам захотелось послушать какие-нибудь логические задачи-головоломки. Сборник из 88 задач на самые разные темы. И что характерно с правильными ответами.

Собственно, игры здесь

Основы современных компьютерных технологий

Эффективность функционирования информационной системы во многом зависит о г ее архитектуры. В настоящее время перспективной является архитектура клиент-сервер. В достаточно распространенном варианте она предполагает наличие компьютерной сети и распределенной базы данных, включающей БД корпоративную (БДК) и БД персональные (БДП). БДК размещается на компьютере-сервере, БДП размещаются на компьютерах сотрудников подразделений, являющихся клиентами корпоративной БД.
Сервером определенного ресурса в компьютерной сети называется компьютер (программа), управляющий этим ресурсом, клиентом - компьютер (программа), использующий этот ресурс. В качестве ресурса компьютерной сети могут выступать, к примеру, базы данных, файловые системы, службы печати, почтовые службы. Тип сервера определяется видом ресурса, которым он управляет. Например, если управляемым ресурсом является база данных, то соответствующий сервер называется сервером базы данных.
Достоинством организации информационной системы по архитектуре клиент-сервер является удачное сочетание централизованного хранения, обслуживания и коллективного доступа к общей корпоративной информации с индивидуальной работой над персональной информацией.

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

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

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

Статистические пакеты
Методы математической статистики позволяют выявлять закономерности на фоне случайностей, делать обоснованные выводы и прогнозы, оценивать вероятности их выполнения. Методы обладают высокой степенью универсальности, а их применимость и технология использования практически не зависит от предметной области.

Современные технологии создания программного обеспечения

Накопленный к настоящему времени опыт создания систем ПО показывает, что это сложная и трудоемкая работа, требующая высокой квалификации участвующих в ней специалистов. Однако до настоящего времени создание таких систем нередко выполняется на интуитивном уровне с применением неформализованных методов, основанных на искусстве, практическом опыте, экспертных оценках и дорогостоящих экспериментальных проверках качества функционирования ПО. По данным Института программной инженерии (Software Engineering Institute, SEI) в последние годы до 80% всего эксплуатируемого ПО разрабатывалось вообще без использования какой-либо дисциплины проектирования, методом "code and fix" (кодирования и исправления ошибок).
Проблемы создания ПО следуют из его свойств. Еще в 1975 г. Фредерик Брукс, проанализировав свой уникальный по тем временам опыт руководства крупнейшим проектом разработки операционной системы OS/360, определил перечень неотъемлемых свойств ПО: сложность, согласованность, изменяемость и незримость.

Особенности современных проектов