ОБЕСПЕЧЕНИЯ..................................................................384
5.1. Определение технологии...............................................................384
5.2. Общие требования, предъявляемые к ТС ПО..............................387
5.3. Внедрение ТС ПО в организации.................................................388
5.3.1. Общие сведения............................................................................388
5.3.2. Определение потребностей в ТС ПО..........................................392
5.3.3. Оценка и выбор ТС ПО................................................................401
5.3.4. Критерии оценки и выбора ТС ПО.............................................407
5.3.5. Выполнение пилотного проекта.................................................419
5.3.6. Практическое внедрение ТС ПО.................................................431
5.4. Примеры ТС ПО.............................................................................442
5.4.1. Технология RUP (Rational Unified. Process)...............................443
5.4.2. Технология Oracle........................................................................456
5.4.3. Технология Borland......................................................................463
5.4.4. Технология Computer Associates.................................................466
Глава 6. ОЦЕНКА ТРУДОЕМКОСТИ СОЗДАНИЯ
ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ.............................470
6.1.Методы оценки и их классификация............................................471
6.2. Методика оценки трудоемкости разработки ПО на основе
функциональных точек..................................................................479
6.2.1. Определение функциональных типов........................................481
6.2.2. Определение количества и сложности функциональных
типов по данным..........................................................................484
6.2.3. Определение количества и сложности транзакционных
функциональных типов...............................................................485
6.2.4. Подсчет количества функциональных точек.............................487
6.2.5. Оценка трудоемкости разработки...............................................495
6.3. Алгоритмическое моделирование трудоемкости разработки
программного обеспечения...........................................................499
6.3.1. Теоретические (математические) модели..................................499
6.3.2. Статистические (регрессионные) модели..................................501
6.4. Методика оценки трудоемкости разработки ПО
на основе вариантов использования (по материалам компании
Rational Software)............................................................................511
6.4.1. Определение весовых показателей действующих лиц.............511
6.4.2. Определение весовых показателей вариантов
использования..............................................................................513
6.4.3. Определение технической сложности проекта.........................514
6.4.4. Определение уровня квалификации разработчиков.................516
6.4.5. Оценка трудоемкости проекта....................................................517
6.5. Методы, основанные на экспертных оценках.............................518
6.5.1. Метод Дельфи...............................................................................519
6.5.2. Метод декомпозиции работ.........................................................520
6.6. Средства оценки трудоемкости....................................................521
6.7. Планирование итерационного процесса создания ПО...............523
Глава 7. ОСОБЕННОСТИ СОВРЕМЕННЫХ ПРОЕКТОВ........527
7.1. Категории «безнадежных» проектов............................................528
7.2. Причины, порождающие «безнадежные» проекты.....................529
7.3. Причины разногласий между участниками проекта...................532
7.4. Переговоры в «безнадежном» проекте........................................534
7.5. Человеческий фактор в «безнадежных» проектах......................540
7.6. Процессы в «безнадежных» проектах..........................................553
7.7. Динамика процессов......................................................................556
7.8. Контроль над продвижением проекта..........................................563
7.9. Технология и инструментальные средства
«безнадежных» проектов...............................................................569
Дополнительная литература..............................................................579
Краткий словарь терминов................................................................582
Список основных сокращений..........................................................590
Software Desingn....................................................................................594
ПРЕДИСЛОВИЕ
Цель учебника — введение в современные методы и средства проектирования программного обеспечения информационных систем (ПО ИС), основанные на международных стандартах и использовании CASE-технологии, а также формирование навыков их самостоятельного практического применения. При отборе материала автор стремился к следующему:
· осветить с системных позиций основные направления, существующие в области инженерного проектирования ПО или программной инженерии, не углубляясь в их детали, с тем чтобы сформировать у читателя целостное представление о данной области (в противном случае учебник мог бы превратиться в многотомную энциклопедию);
· заполнить пробел, имеющийся в отечественной учебной литературе по программной инженерии;
· учесть официально утвержденные и признанные де-факто международные и отечественные стандарты в области программной инженерии и прежде всего стандарт ISO 12207 «Процессы жизненного цикла ПО», на котором базируются почти все современные промышленные технологии создания ПО;
· рассмотреть современное состояние развития CASE-средств и промышленных технологий проектирования ПО.
В новом издании на основе опыта, накопленного автором в учебном процессе, а также новых материалов, появившихся с момента выпуска первого издания учебников 2002 и 2003 г., существенно пересмотрено и дополнено описание методов объектно-ориентированного анализа и проектирования ПО, добавлены новые разделы и примеры, изменена структура.
Учебник подготовлен в соответствии с Государственным образовательным стандартом по специальности 351400 «Прикладная информатика», но может быть использован также студентами и преподавателями других специальностей, связанными с проектированием информационных систем и программного обеспечения, в частности 351500 «Математическое обеспечение и администрирование информационных систем» и 010200 «Прикладная математика и информатика». Он состоит из введения и семи глав.
Во введении рассматриваются основные проблемы современных проектов, причины их возникновения и способы разрешения.
В главе 1 описываются процессы и модели жизненного цикла (ЖЦ) ПО, модель оценки зрелости процессов создания ПО СММ и уровни зрелости процессов создания ПО. В качестве примеров процессов рассмотрены управление требованиями и управление конфигурацией ПО.
Глава 2 посвящена методическим аспектам проектирования ПО. Рассматриваются общие принципы проектирования систем, структурный и объектно-ориентированный подходы к анализу и проектированию ПО, унифицированный язык моделирования UML.
В главе 3 даны описание моделирования бизнес-процессов и спецификации требований к ПО. Представлены различные подходы к моделированию бизнес-процессов — структурные методы (диаграммы потоков данных, метод ARIS) и объектно-ориентированный подход к моделированию бизнес-процессов с использованием языка UML, а в главе 4 — методы анализа и проектирования ПО на основе структурного и объектно-ориентированного подхода.
Основная часть материала третьей и четвертой глав построена на методической базе одной из наиболее развитых современных технологий Rational Unified Process, ее применение иллюстрируется на примере учебного проекта.
Глава 5 посвящена технологиям создания ПО. Приводится система понятий, описывающих технологию создания ПО, состав компонентов технологии, требования, предъявляемые к технологии, факторы выбора технологии и пример технологии Rational Unified Process.
В главе 6 рассматриваются различные методы и стандартные метрики, применяемые для оценки трудоемкости создания ПО.
В главе 7 обсуждаются особенности управления современными проектами создания ПО в условиях жестких ресурсных ограничений.
В конце книги даются дополнительная литература, краткий словарь терминов и список основных сокращений.
Подготовка второго издания учебника во многом стала возможной благодаря той положительной реакции, которую я получал от своих многочисленных слушателей — специалистов различных организаций России и ближнего зарубежья, а также студентов факультета вычислительной математики и кибернетики МГУ.
Автор выражает также глубокую благодарность рецензентам — профессору Георгию Николаевичу Калянову и доценту Алексею Алексеевичу Сорокину, взявшим на себя труд прочитать рукопись и сделавшим ряд конструктивных замечаний. Я благодарен своей семье — жене Марине и дочери Александре за поддержку и терпение, которое они проявили в период написания книги.
ВВЕДЕНИЕ
Прочитав введение, вы узнаете:
· Что представляет собой системный подход к проектированию программного обеспечения.
· В чем заключаются основные особенности и проблемы проектов современных систем программного обеспечения.
· Каковы современные тенденции в программной инженерии.
ОСНОВНЫЕ ОПРЕДЕЛЕНИЯ.
СИСТЕМНЫЙ ПОДХОД
К ПРОЕКТИРОВАНИЮ ПО
Методологическую основу проектирования ПО составляет системный подход. Под словом «система» понимается совокупность взаимодействующих компонентов и взаимосвязей между ними. Весь мир можно рассматривать как сложную взаимосвязанную совокупность естественных и искусственных систем. Это могут быть достаточно сложные системы (например, планеты в составе Солнечной системы), системы средней сложности (космический корабль) или сверхсложные системы (системы молекулярных взаимодействий в живых организмах). Искусственные системы, к которым относится ПО, по своей сложности, как правило, занимают среднее положение. Например, всемирная телефонная сеть содержит десятки или даже сотни тысяч переключателей, однако количество взаимодействий этих переключателей не идет ни в какое сравнение с количеством взаимодействий молекул даже в небольшом стакане воды. С точки зрения общей теории систем такие системы обычно рассматриваются как системы средней сложности.
Системный подход — это методология исследования объектов любой природы как систем, которая ориентирована на:
· раскрытие целостности объекта и обеспечивающих его механизмов;
· выявление многообразных типов связей объекта;
· сведение этих связей в единую картину.
Системный подход реализует представление сложного объекта в виде иерархической системы взаимосвязанных моделей, позволяющих фиксировать целостные свойства объекта, его структуру и динамику.
ПО как система, в свою очередь, является подсистемой некоторой информационной системы (ИС). По определению стандарта специальности 351400 «Прикладная информатика», информационная система — это совокупность:
· функциональных и информационных процессов конкретной предметной области;
· средств и методов сбора, хранения, анализа, обработки и передачи информации, зависящих от специфики области применения;
· методов управления процессами решения функциональных задач, а также информационными, материальными и денежными потоками в предметной области.
С другой стороны, ориентируясь на различные международные стандарты, ИС можно определить как совокупность следующих составных частей:
· система баз данных (база данных (БД) вместе с системой управления базами данных (СУБД));
· прикладное программное обеспечение;
· персонал;
· организационно-методическое (нормативное) обеспечение;
· технические средства.
Такая ИС функционирует: на конкретном уровне мирового хозяйства, в муниципальных, государственных, негосударственных и международных организациях различного назначения; в органах управления, министерствах, ведомствах и подчиненных им организациях; в экономических, банковских, налоговых учреждениях; на предприятиях различной организационно-правовой формы; в различных отраслях хозяйства страны или региона.
Программное обеспечение, в свою очередь, определяется как набор компьютерных программ, процедур и, возможно, связанной с ними документации и данных.
По определению Института управления проектами (Project Management Institute, PMI), проект — это временное предприятие, осуществляемое с целью создания уникального продукта или услуги. В любой инженерной дисциплине под проектированием обычно понимается некий унифицированный подход, с помощью которого мы ищем пути решения определенной проблемы, обеспечивая выполнение поставленной задачи. В контексте инженерного проектирования можно определить цель проектирования как создание системы, которая:
· удовлетворяет заданным (возможно, неформальным) функциональным спецификациям;
· согласована с ограничениями, накладываемыми оборудованием;
· удовлетворяет явным и неявным требованиям по эксплуатационным качествам и потреблению ресурсов;
· удовлетворяет явным и неявным критериям дизайна продукта;
· удовлетворяет требованиям к самому процессу разработки, таким, например, как продолжительность и стоимость, а также привлечение дополнительных инструментальных средств.
В другой формулировке цель проектирования — выявление ясной и относительно простой внутренней структуры, называемой архитектурой системы. Проект есть окончательный продукт процесса проектирования. Проектирование подразумевает учет противоречивых требований. Его продуктами являются модели, позволяющие понять структуру будущей системы, сбалансировать требования и наметить схему реализации.
Таким образом, под проектом ПО будем понимать совокупность спецификаций ПО (включающих модели и проектную документацию), обеспечивающих создание ПО в конкретной программно-технической среде.
Проектирование ПО представляет собой процесс создания спецификаций ПО на основе исходных требований к нему. Проектирование ПО сводится к последовательному уточнению его спецификаций на различных стадиях процесса создания ПО.