Архитектура Аудит Военная наука Иностранные языки Медицина Металлургия Метрология Образование Политология Производство Психология Стандартизация Технологии |
Современные подходы к управлению проектом
Став бригадиром, я упростил этот процесс до мыслимого предела. Продолжающиеся непрерывные неудачи в крупных программных проектах заставили министерство обороны США сформировать подразделение, которое получило название Сеть менеджеров по разработке программного обеспечения (Software Program Managers Network - SPMN) (http: //www.spmn.com). Для этой организации были сформулированы четыре главных цели ее работы.
Одним из основных результатов работы данной организации стал документ, рекомендующий 16 основных практик (навыков), включающих 9 основных и 7 поддерживающих. Перечислим основные практики.
2.3. Анализ требований и проектирование 2.3.1. Введение в анализ требований и проектирование Анализ и проектирование - два достаточно близких и тесно связанных процесса. Они выполняют общую задачу, результатом которой должно стать четкое представление о системе, на основе которого будет создан программный код. Поэтому мы будем их рассматривать совместно, проводя разделение по методологиям - анализ и проектирование на основе структурной методологии и на основе объектно-ориентированной методологии. Анализ требований - процесс жизненного цикла программы, во время которого требования заказчика уточняются, формализуются и документируются. Основной вопрос, который решается в это время - " Что должна делать будущая система? " Проектирование - процесс жизненного цикла программы, во время которого исследуется ее структура и взаимосвязи элементов. Проектирование, как правило, является итерационным процессом. Основной вопрос, который решается в это время - " Как система будет удовлетворять полученным требованиям? ". Проектирование должно проводиться на двух уровнях:
Результатом анализа и проектирования должен стать проект, содержащий достаточное количество информации для реализации системы на его основе. На сегодняшний день в профессиональном программировании применяются две основные методологии - структурная и объектно-ориентированная. На этапе анализа и проектирования нам важно принципиальное различие между этими методологиями, заключающееся в разных способах декомпозиции систем [Вендров 2000].
Далее мы перечислим основные методы структурного и объектно-ориентированного анализа и проектирования. Обратим внимание на то, что в основе многих объектно-ориентированных методов лежит структурный подход, которому придана объектно-ориентированная окраска. В основе ведения процессов анализа и проектирования лежат методы, поддерживаемые языками и системами. Методы, объединенные в некоторую совокупность (комбинацию), образуют подходы к анализу и проектированию. Подходы имеют названия, среди которых много именных. Примеры подходов - подход Йордона и ДеМарко (структурная методология) и подход Шлеер и Меллора (объектно-ориентированная методология). 2.3.2. Отступление " о спецификациях" - Вовочка, ты уже покрасил окна? Спецификация - достаточно точное и достаточно полное описание задачи, которое человеку, участвующему в решении, написать, понять и прочесть легче, чем программу решения этой задачи на доступном ему языке программирования. Более коротко спецификацию можно определить как подробное описание некоторой работы, подлежащей выполнению. Средства спецификации - любые средства получения или построения таких описаний. Язык спецификации - рационально оформленный и синтаксически организованный набор таких средств. В спецификациях программ имеет смысл выделить две существенно отличающиеся части.
Существует точка зрения об относительности понятия спецификации [Агафонов 1984]. Имея дело с одной и той же задачей, данные люди в данном окружении (включающем их знания, языки и т. п.) будут склонны считать спецификацией одно, а другие люди в другой обстановке - совсем другое. Например " х: = х + i" будет лучшей спецификацией задачи " увеличить х на единицу" для человека, знакомого с оператором присваивания и его обозначением. Средства спецификации, которые допускают машинную обработку, мы будем классифицировать по уровню формализации и по способу представления [Деметрович, Кнут, Радо 1989]. По уровню формализации выделим три класса.
Существует два основных способа представления спецификаций:
2.3.3. Отступление " об архитектуре" Архитектура программного продукта - это его строение как оно видно (или должно быть видно) извне его, т. е. представление программного продукта как системы, состоящей из некоторой совокупности взаимодействующих подсистем [Жоголев 1996]. В качестве таких подсистем обычно выступают отдельные программы. Следующее определение принадлежит Криспену (http: //www.sei.cmu.edu/architecture/definitions.html): Архитектура состоит из (а) стратегии разделения и (б) стратегии объединения. Стратегия разделения заключается в делении монолитной системы на дискретные, полностью покрывающие ее части (или компоненты). Стратегия объединения заключается в явном определении интерфейсов между этими компонентами. И, наконец, еще одно определение содержится в работе [Буч, Рамбо, Джекобсон 2000]: Архитектура - это совокупность существенных решений, касающихся:
Выделяют следующие классы архитектур программных продуктов [Майерс 1980], такие как:
Можно определить четыре структуры, которые в совокупности описывают программную архитектуру [Ахтырченко, Леонтьев 2001].
Кроме этих четырех часто используются и другие структуры.
Практически все технологические подходы содержат рекомендации по моделированию большинства перечисленных структур. Мэри Шоу (Mary Shaw) и Дэвид Гарлан (David Garlan) предложили использовать каталог архитектурных стилей [Shaw, Garlan 1996].
Идентификация и документирование таких архитектурных стилей позволяет программистам использовать их в качестве стартовой точки. Хорошие примеры архитектурных паттернов (шаблонов) и каркасов проектирования приведены в книге [Гамма, Хелм, Джонсон, Влиссидес 2001]. 2.3.4. Отступление " о классификации всего сущего" Женщина. Во многих ситуациях (например, для разработки диаграммы " сущность-связь" ) нам потребуется выделить совокупность сущностей из окружающего нас мира. Следует разобраться - как удобно классифицировать окружающий нас мир. Большинство окружающих нас объектов относится к категориям, рассмотренных в книге [Шлеер, Меллор 1993].
Образование иерархий широко используется человеком как стратегия организации информации. Иерархия предпочтений, выявленная Килем в Ходе психологических экспериментов с детьми, представлена на рис. 3.3. Классифицировать можно даже ненаблюдаемые объекты. Их можно разбить на четыре категории, расположенные в порядке убывания научного интереса, который они представляют [Физики 1968].
2.3.5. Проектирование архитектуры (проектирование " в большом" ) Верите ли, это бредовое сооружение Ирода, - прокуратор махнул рукою Структурная методология Проектирование архитектуры (проектирование " в большом" ) для структурной методологии включает следующие основные методы:
В случае структурной методологии в качестве модульной структуры программы принято использовать древовидную структуру. В узлах такого дерева размещаются программные модули, а направленные дуги показывают статическую подчиненность модулей. Методы нисходящего и восходящего проектирования имеют достаточно большое количество разновидностей и модификаций (например, зависящих от того - начинается кодирование до окончательного завершения проектирования или нет). Метод нисходящего проектирования представляет собой подход функциональной декомпозиции на основе двух стратегий.
Метод восходящего проектирования - подход, при котором в первую очередь определяются вспомогательные модули, которые потребуются для проектируемой программы. Метод расширения ядра - подход, при котором основное внимание уделяется выявлению множества вспомогательных модулей, а не определению функции всей программы в целом. |
Последнее изменение этой страницы: 2019-10-04; Просмотров: 168; Нарушение авторского права страницы