Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Технологии и методы программирования. Учебное пособие-1

.pdf
Скачиваний:
0
Добавлен:
07.09.2026
Размер:
2 Мб
Скачать
Проектное решение – промежуточное или конечное описание объекта проектирования, необходимое и достаточное для рассмотре­ния и определения дальнейшего направления или окончания проек­тирования [18].
Проектный документ – документ, выполненный по заданной форме, в котором представлено какое-либо проектное решение, полу­ченное при проектировании [18].
Проект – совокупность проектных документов в соответствии с установленным перечнем, в
которых представлен результат проек-
тирования [18].
Проектирование ПО сводится к последовательной формализации проектных решений на различных стадиях жизненного цикла ПО. Ко­нечным итогом проектной деятельности является проект, т. е. комплект документации, предназначенной для реализации программной системы, ее эксплуатации, ремонта и ликвидации, а также для проверки или вос­произведения промежуточных и конечных
решений, на основе которых
была осуществлена реализация.
Проект – попытка действий с определенными начальными и конеч­ными сроками, предпринимаемая для создания продукта или услуги в соответствии с заданными ресурсами и требованиями. Проект может рассматриваться как уникальный процесс, включающий в себя скоорди­нированные и управляемые виды деятельности, а также может быть комбинацией видов
деятельности из процессов проекта и технических
процессов, определенных в стандарте [8].
Для успешной реализации проекта объект проектирования (про­граммное обеспечение) должен быть прежде всего адекватно описан, т. е. должны быть построены полные и непротиворечивые модели ар­хитектуры ПО. Признак добротности архитектуры – ее концептуаль­ное единство и целостность. По утверждению Брукса, «концептуаль­ная целостность является важнейшей характеристикой системного проекта» [12].
Архитектура (системы) – основные понятия или свойства системы в окружающей среде, воплощенной в ее элементах, отношениях и кон­кретных принципах ее проекта и развития [19].
Архитектура ПО – совокупность структурных элементов системы и связей между ними, поведение элементов системы в процессе их вза­имодействия, а также
иерархия подсистем, объединяющих структурные
элементы [14].
21
Прикладная программа [4] – программа, предназначенная для ре­шения задачи или класса задач в определенной области применения си­стемы обработки информации. Прикладные программы могут исполь­зоваться либо автономно, т. е. решать поставленную задачу без помощи других программ, либо в составе программных комплексов или пакетов программ.
Приложение – набор программ или программных компонентов, обеспечивающих непосредственную
поддержку конкретных бизнес-
процессов [20].
Иными словами, приложение – прикладная программа, ориентиро­ванная на решение конкретных задач и рассчитанная на непосредствен­ное взаимодействие с пользователем.
Архитектура приложений – это структурный принцип, определя­ющий, из каких составных частей (компонентов) состоит приложение и как эти части между собой взаимодействуют. Компонент – это про­грамма или программный
модуль, выполняющие отдельные, относи-
тельно изолированные задачи.
Создание архитектуры приложения – это процесс формирования структурированного решения, отвечающего всем техническим и опера­ционным требованиям. При выборе архитектуры необходимо учиты­вать следующее:
1) требования, предъявляемые к приложению – функциональность, безопасность, производительность, возможность параллельной обра­ботки, интернационализация, конфигурация и т. п.;
2) необходимость обеспечить гибкость и и обслуживания в течение всего времени эксплуатации;
3) ментальную модель вателя
2
;
1
пользователя и/или сценарии работы пользо-
удобство развертывания
4) влияние возможных стилей архитектуры на приложение в про-
цессе разработки, развертывания и эксплуатации.
Правильная архитектура позволяет создать успешный программный
продукт, который будет удовлетворять критериям функциональности,
1
Ментальная модельоснованное на предыдущем опыте осмысление спо-
соба взаимодействия с продуктом.
2
Пользовательский сценарийвизуализация предполагаемой последова-
тельности шагов, которые необходимо предпринять пользователю для дости­жения цели внутри продукта/приложения.
22
удобства использования, устойчивости, производительности, по­вторного использования, понятности, экономических и технологиче­ских ограничений, эстетического восприятия и поиска компромис­сов, а в дальнейшем может легко адаптироваться к изменяющимся требованиям заказчика.
Стандартизация архитектурных решений и практика проектирова­ния программного обеспечения выработали множество архитектурных стилей.
Архитектурный стиль (шаблонная архитектура) – абстрактная ар­хитектура, применимая к
некоторому множеству программных продук­тов. Каждый стиль определяет набор правил, которые задают типы ком­понентов, используемых для компоновки системы, и типы отношений, применяемых при компоновке, а также ограничения по способам ком­поновки и допущения о ее семантике.
Стек технологий – набор технологий, на основе которых разраба-
тывается приложение. Формирование такого набора –
основная задача,
которую выполняет архитектура программного обеспечения.
АРХИТЕКТУРНЫЕ СТИЛИ ПРОГРАММНЫХ ПРИЛОЖЕНИЙ [21–24]
Архитектура программной системы практически никогда не ограни­чена лишь одним архитектурным стилем и, как правило, сочетает в себе несколько архитектурных стилей.
На выбор архитектурных стилей влияет множество факторов, например способность организации к проектированию и реализации, возможности и опыт разработчиков, а также ограничения инфраструк­туры и организации.
Наиболее известны и реализуемы следующие
архитектурные стили.
1. Монолитная архитектура – традиционная модель программ- ного обеспечения, которая представляет собой единый модуль, рабо­тающий автономно и независимо от других приложений. Монолитная архитектура – это отдельное самостоятельное приложение с единой базой кода, в которой объединена вся требуемая функциональность. Обладая определенными преимуществами в простоте развертывания (установки), тестировании и отладке, монолитная
архитектура все же имеет существенные недостатки: чтобы изменить или добавить функ­циональность, необходимо выполнить компиляцию и тестирование всего кода; затрудняется разработка и масштабирование большого
23
монолитного приложения; снижается надежность из-за возможных ошибок, приводящих к неработоспособности всего приложения.
2. Компонентная архитектура – приложение разделяется на функ­циональные (логические) компоненты с тщательно проработанными ин­терфейсами связи и обладающими такими характеристиками, как заме­щаемость, возможность повторного использования, расширяемость, не­зависимость от среды и контекста, независимость от других компонен­тов
при сборке и развертывании, инкапсуляция.
Этот подход призван решать задачи разработки и интеграции таких компонентов в целях повторного использования проектных решений (как архитектурных, так и в форме кода).
3. Клиент-серверная архитектура предполагает, что решение за­дач распределено между двумя взаимодействующими самостоятель­ными модулями системы: сервером и клиентом.
На уровне программного
обеспечения разделение на клиента и сер­вер является логическим: процессы клиента и сервера могут физически размещаться как на одной, так и на разных машинах в сети.
4. Сервисно-ориентированная архитектура (SОА) характеризуется наличием самостоятельных программных компонентов, называемых сер­висами, которые предоставляют прикладным программам функциональ­ные возможности.
Эта архитектура применяется для многократного
использования сервисов в различных системах или объединения нескольких независи­мых сервисов для выполнения сложных задач.
Взаимодействие приложений или сервисов между собой происходит через интерфейсы. Интерфейс сервиса определяет, как использовать сервис для выполнения действий или обмена данными. Поскольку сер­висы, как правило, различаются интерфейсами, интеграция сервисов происходит посредством ESB (Enterprise Service Bus –
сервисная шина предприятия) – централизованного сервиса, представляющего про­граммное обеспечение, которое устанавливает связь между сервисами и потребителями сервисов независимо от технологии.
5. Микросервисная архитектура – это архитектурный и органи­зационный подход к разработке программного обеспечения, при кото­ром программное обеспечение состоит из небольших полностью неза­висимых и специализированных программных компонентов (микро­сервисов).
24
Микросервисы взаимодействуют через API (Application Program-
ming Interface – программный интерфейс приложения), который пред-
ставляет набор правил, создаваемых разработчиками микросервисов, чтобы позволить другим программным системам взаимодействовать с микросервисом, используя набор определений и протоколов. Это устраняет необходимость в централизованной ESB.
Знание архитектурных принципов и шаблонов позволяет разработ-
чику и архитектору решения понимать и учитывать в
процессе проекти­рования важные аспекты, которые могут существенно влиять на успех решения в целом.
Проектирование подразумевает учет противоречивых требова­ний. Его продуктами являются модели, позволяющие понять струк­туру будущей системы, сбалансировать требования и наметить схему реализации.
Модель – полное описание системы ПО с определенной точки зре- ния. Модели представляют собой средство
для визуализации, описания, проектирования и документирования архитектуры системы. Построе­ние модели является центральным звеном всей деятельности по созда­нию качественного ПО.
Модели строятся для того, чтобы понять и осмыслить структуру и поведение будущей системы, облегчить управление процессом ее со­здания и уменьшить возможный риск, а также документировать прини­маемые проектные решения
.
В качестве средств разработки и моделирования в архитектурном проектировании используются различные языки, которые принято называть нотациями [26–30].
В связи с возрастающей сложностью разрабатываемых систем визу­ализация и моделирование становятся все более существенными, по­этому от языка моделирования наряду с другими факторами зависит успех проекта.
Язык моделирования – это нотация (обычно графическая), которая используется для описания модели. Он должен включать:
элементы модели (алфавит) – фундаментальные концепции моде- лирования (словарь);
семантику – значения элементов словаря;
синтаксис – правила применения элементов словаря в рамках по-
строения тех или иных типов моделей ПО.
25
5. МЕТОДОЛОГИИ И ТЕХНОЛОГИИ ПРОЕКТИРОВАНИЯ
ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ
Методология – совокупность рабочих процедур, методов, методик или правил, используемых в конкретном проекте или исследуемом про­цессе [31].
Методология проектирования – структурированный подход, предусматривающий использование специализированных процедур, технических приемов, инструментов, документации и ориентирован­ный на поддержку и упрощение процесса проектирования.
Методология проектирования предусматривает разбиение всего процесса на несколько стадий, каждая из которых, в стоит из нескольких этапов. На каждом этапе разработчику предлага­ется набор технических приемов, позволяющих решать задачи, стоящие перед ним на данной стадии разработки. Кроме того, методология пред­лагает методы планирования, координации, управления, оценки хода разработки проекта, а также структурированный подход к анализу и мо­делированию всего набора ляет выполнить эти действия стандартизированным образом [32]. Дру­гими словами, методология заключается в организации процесса по­строения программной системы и обеспечении управления этим про­цессом для того, чтобы гарантировать выполнение требований как к са­мой системе, так и к характеристикам процесса разработки.
Разнообразие задач, решаемых ПС ных типов ПС (системное программное обеспечение, пакеты приклад­ных программ, инструментарий технологии программирования) [33, 34], каждый из которых создает свой набор проблем, связанных с про­ектированием, реализацией и выбором методологии, отсюда вытекает принцип, отмеченный в [35]: «Как только мы пытаемся разобраться,
требований, предъявляемых к ПС, и позво-
, порождает множество различ-
свою очередь, со-
26
из чего же состоит методология”, сразу становится понятно, что ме-
тодологий должно быть много. При этом для каждого конкретного проекта “оптимальной” будет одна какая-то методология».
Таким образом, должно существовать и существует множество ме­тодов и практик разработки ПС [13, 14, 36, 37], применение которых при проектировании ПС зависит от большого числа различных факторов. Заметим, что значительным фактором, влияющим на выбор методоло­гии и результат ее применения, является человеческий фактор [38].
ОБЩИЕ ТРЕБОВАНИЯ К МЕТОДОЛОГИИ И ТЕХНОЛОГИИ
Методологии, технологии и инструментальные средства проектиро­вания составляют основу проекта любого программного продукта. Ме­тодология реализуется через конкретные технологии и поддерживаю­щие их стандарты, методы и инструментальные средства, которые обес­печивают выполнение процессов ЖЦ.
Методы проектирования – способы (приемы, процедуры, алго­ритмы, правила исследования), применяемые для реализации проект­ных функций, выполнения проектных технологических операций, дей­ствий и решения проектных задач.
Технология проектирования – способ производства проектов, представляющий собой совокупность процессов, правил, навыков и других компонентов проектного производства, предназначенных для получения и переработки существующей информации, генерации но­вой
информации и ее представления в виде проекта (комплекса про­ектной документации).
Технология проектирования ПС – совокупность методологии, ме­тодов и средств проектирования ПС, а также методов и средств его ор­ганизации (управление процессом создания и модернизации проекта ПС). В основе технологии проектирования лежит технологический про­цесс, определяющий последовательность действий и требуемые
ре­сурсы: трудовые; финансовые; программные; аппаратные и др. Техно­логический процесс проектирования ПС подразделяется на совокуп­ность последовательно-параллельных, связанных и соподчиненных це­почек действий, каждое из которых имеет определенный предмет. Эле­ментами используемой технологии проектирования служат взаимосвя­занные процессы проектирования ПС и его частей на всех стадиях (эта­пах) жизненного
цикла.
27
Технология проектирования определяется как совокупность трех со-
ставляющих:
пошаговой процедуры, устанавливающей последовательность
технологических операций проектирования;
критериев и правил, используемых для оценки результатов вы-
полнения технологических операций;
нотаций – систем условных обозначений (символов и правил их
применения), принятых в конкретной области знаний и используемых для анализа, оптимизации и фиксации результатов
описания проектиру-
емой системы.
На рис. 6 показано схематичное представление технологической
операции проектирования.
Исходные данные
в стандартном
представлении
(документы, рабочие материалы, результаты предыдущей операции)
Рис. 6. Технологическая операция проектирования
Методические материалы,
инструкции, нормативы
и стандарты, критерии
оценки результатов
Технологическая
операция
Исполнители, программные
и технические средства
Результаты
в стандартном
представлении
Каждая технологическая операция должна обеспечиваться следую-
щими материальными и информационными ресурсами:
данными, полученными на предыдущей операции (или исход-
ными данными), представленными в стандартном виде;
методическими материалами, инструкциями, нормативами и стан-
дартами;
программными и техническими средствами;  исполнителями.
Технологические инструкции, составляющие основное содержание
технологии, должны состоять из описания последовательности
техно­логических операций, условий, в зависимости от которых выполняется та или иная операция, и описаний самих операций.
28
Результаты выполнения операции должны представляться в некото­ром стандартном виде, обеспечивающем их адекватное восприятие при выполнении следующей технологической операции (на которой они бу­дут использоваться в качестве исходных данных).
Технология проектирования, разработки и сопровождения ПС должна удовлетворять следующим требованиям:
поддерживать полный ЖЦ ПО;
обеспечивать гарантированное достижение целей разработки ИС
с заданным качеством и в установленное время;
давать возможность декомпозиции крупных проектов на состав- ные части (подсистемы), разрабатываемые группами исполнителей ограниченной численности (от трех до семи человек) с целью лучшей управляемости), с последующей интеграцией составных частей. При этом следует координировать ведение общего проекта и исключить дуб­лирование результатов работ
каждой группы, которое может возник-
нуть в силу наличия общих данных и функций;
обеспечивать управляемость коллектива и повышение производи- тельности за счет минимизации числа внешних связей;
обеспечивать получение работоспособного программного про- дукта в запланированные сроки. Речь идет не только о сроках готов­ности всего ПС, но и о сроках
реализации отдельных подсистем, по­скольку часто внедрение идет последовательно по отдельным подси­стемам;
предусматривать возможность управления конфигурацией про-
екта, ведения версий проекта и его составляющих, автоматического вы­пуска проектной документации и синхронизации ее версий с версиями проекта;
обеспечивать независимость выполняемых проектных решений
от средств реализации ПС (СУБД, операционных
систем, языков и си-
стем программирования);
поддерживаться комплексом согласованных инструментальных
средств, обеспечивающих автоматизацию процессов, выполняемых на всех стадиях ЖЦ.
Реальное применение любой технологии проектирования, разра­ботки и сопровождения ПС в конкретной организации и конкретном проекте невозможно без использования стандартов (правил, соглаше­ний), которые должны соблюдаться всеми участниками проекта.
29
Использование регламентирующих и нормативных документов де­лает жизненный цикл ПС более определенным, предсказуемым по структуре, содержанию, качеству и стоимости.
Применение стандартов позволяет:
формализовать требования к процессам и продуктам, т. е. описы- вать, как необходимо выполнять то или иное действие, или каким кри­териям должен соответствовать тот или иной продукт;
сконцентрировать лучшие практики в определенной области дея-
тельности, так как стандарты разрабатываются группами специалистов, обладающими значительным опытом в этой области;
унифицировать терминологию, что облегчает общение в среде специалистов.
Для проекта ПС следует определять [39]:
1) стандарт проектирования;
2) стандарт оформления проектной документации;
3) стандарт пользовательского интерфейса.
Стандарт проектирования устанавливает:
набор необходимых моделей (диаграмм и т. д.) на каждой стадии
проектирования и степень их детализации;
правила фиксации проектных решений на диаграммах, в том числе правила именования объектов (включая соглашения по термино­логии), набор атрибутов для всех объектов и правила их заполнения на каждой стадии, правила оформления диаграмм, включая требования
форме и размерам объектов и т. д.;
к
требования к конфигурации рабочих мест разработчиков, вклю- чая настройки операционной системы, настройки инструментальных средств, общие настройки проекта и т. д.;
механизм обеспечения совместной работы над проектом, в том числе правила интеграции подсистем проекта, правила поддержания проекта в одинаковом для всех разработчиков
состоянии (регламент обмена проектной информацией, механизм фиксации общих объек­тов и т. д.), правила проверки проектных решений на непротиворечи­вость и т. д.
Стандарт оформления проектной документации устанавливает:
комплектность, состав и структуру документации на каждой ста-
дии проектирования;
требования к ее оформлению (включая требования к содержанию
разделов, подразделов, пунктов
, таблиц и т. д.);
30
Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]