Глава 5. технологии создания программного
ОБЕСПЕЧЕНИЯ..................................................................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), проект — это временное предприятие, осуществляемое с целью создания уникального продукта или услуги. В любой инженерной дисциплине под проектированием обычно понимается некий унифицированный подход, с помощью которого мы ищем пути решения определенной проблемы, обеспечивая выполнение поставленной задачи. В контексте инженерного проектирования можно определить цель проектированиякак создание системы, которая:
· удовлетворяет заданным (возможно, неформальным) функциональным спецификациям;
· согласована с ограничениями, накладываемыми оборудованием;
· удовлетворяет явным и неявным требованиям по эксплуатационным качествам и потреблению ресурсов;
· удовлетворяет явным и неявным критериям дизайна продукта;
· удовлетворяет требованиям к самому процессу разработки, таким, например, как продолжительность и стоимость, а также привлечение дополнительных инструментальных средств.
В другой формулировке цель проектирования — выявление ясной и относительно простой внутренней структуры, называемой архитектурой системы. Проект есть окончательный продукт процесса проектирования. Проектирование подразумевает учет противоречивых требований. Его продуктами являются модели, позволяющие понять структуру будущей системы, сбалансировать требования и наметить схему реализации.
Таким образом, под проектом ПО будем понимать совокупность спецификаций ПО (включающих модели и проектную документацию), обеспечивающих создание ПО в конкретной программно-технической среде.
Проектирование ПО представляет собой процесс создания спецификаций ПО на основе исходных требований к нему. Проектирование ПО сводится к последовательному уточнению его спецификаций на различных стадиях процесса создания ПО.