Рассмотрим более подробно те понятия, ключевые, понятия,
которые у нас будут встречаться в курсе и,
которыми мы будем оперировать.
Что такое кризис и что такое корпорация, мы в целом обсудили.
Кризис — это у нас, напомню, дисбаланс ресурсов и ограничений
при разработке программного обеспечения.
Корпорация — это распределенная производственная структура,
в рамках которой мы рассматриваем координацию процессами
разработки программного обеспечения и которое
осуществляет учет планирования и управления различными
видами ресурсов: финансовыми ресурсами, людскими ресурсами,
документами и иными корпоративными ресурсами.
Для того что бы преодолеть кризис возникла специальная
дисциплина научно-техническая, которая называется
«программная инженерия». И на слайде мы видим
несколько определений программной инженерии, на которых
хотелось бы остановиться более подробно, для того что бы
выделить ключевые аспекты существенные для данного курса.
Первое определение, которое мы видим, это определение
Стивена Шаха. О чем здесь сказано.
Цель программной инженерии — производство систем,
не содержащих ошибок, отвечающих требованиям заказчика,
срокам и бюджету. То есть по сути дела речь идет о том
проектном треугольнике, о котором мы говорили,
мы должны уложиться в сроки, мы должны уложиться в
в бюджет и мы должны обеспечить те функции и тот уровень
качества, который заказчику необходим для программного продукта.
Если мы посмотрим на следующее определение
отечественного классика Липаева, то мы увидим,
что речь идет о похожих вещах.
Комплекс задач, методов, средств и технологий,
это те самые модели, методы и средства, о которых
мы говорили, для того что бы проектировать и реализовать
сложные расширяемые тиражируемые программные системы,
возможно с базами данных. Что здесь следует отметить.
Прежде всего, это высокая сложность, то есть
на самом деле программная инженерия это дисциплина
для создания действительно больших систем.
Использовать программную инженерию для создания каких-то
тривиальных систем или небольших, относительно,
учебных программ, наверное, существенного смысла не имеет.
Просто потому что, тот груз ресурсов, который
нам необходим для создания большого количества
артефактов, документальных артефактов, прежде всего,
конечно избыточно для не больших и относительно
не сложных программ. Здесь речь идет
именно о том, что мы создаем программные системы
и программные системы достаточно высокой
сложности, с точки зрения, как объема так и структуры.
То есть большого количества взаимодействующих модулей,
компонент, программных комплексов, корпоративных
программных комплексов и систем. Эти системы
настолько большие, что требуется база данных, в
которых мы храним информацию о корпоративных ресурсах,
прежде всего это опять-таки, людские ресурсы,
финансовые ресурсы и иные ресурсы с этим связанные.
Третье определение Ен Сомервиль, автор на которого
мы так же ссылаемся в нашей библиографии,
если вы посмотрите последний слайд к предыдущей лекции,
на самом деле к каждой лекции, вот эти
ведущие книги Сомервиля, Шаха и Липаева у нас
непременно там присутствуют. Сомервиль определяет
программную инженерию, как дисциплину, охватывающую
по сути дела, все этапы жизненного цикла, от разработки
требований, до практического использования, до эксплуатации.
Если мы рассмотрим все эти три определения,
какие важные вещи мы можем увидеть на пересечении.
Прежде всего, программная инженерия это дисциплина
научно-техническая, которая создана для разработки и поддержки,
то есть для поддержки всего жизненного цикла, крупномасштабных
больших и сложных систем, которое призвано обеспечивать
должный уровень качества этих программных систем,
которые призваны обеспечивать необходимую функциональность.
И естественно при производстве такого рода программных
систем мы должны уложиться в сроки и бюджет.
Таким образом, у нас есть, по крайней мере, три критерия —
это сроки, стоимость и функциональность, ну и конечно
если мы функциональность понимаем шире, то вместе с качеством,
по которым мы ведем оптимизацию производства
такого рода программных систем.
Таким образом, разработка программных систем,
в том числе и в кризис, это многофакторная оптимизация.