Файл: Учебное пособие.doc

ВУЗ: Не указан

Категория: Не указан

Дисциплина: Не указана

Добавлен: 04.12.2020

Просмотров: 6481

Скачиваний: 15

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.

СОДЕРЖАНИЕ

Введение

1.Введение в технологии разработки программного обеспечения

1.1.Основные этапы развития технологии разработки

1.1.1.Первый этап – «стихийное» программирование.

1.1.2.Второй этап – структурный подход к программированию (60-70-е годы XX в)

1.1.3.Третий этап – объектный подход к программированию (с середины 80-х годов до нашего времени)

1.1.4.Четвертый этап – компонентный подход и CASE-технологии (с середины 90-х годов до нашего времени)

1.1.5.Пятый этап – разработка, ориентированная на архитектуру и CASE-технологии (с начала XXI в. до нашего времени)

1.2.Эволюция моделей жизненного цикла программного обеспечения

1.2.1.Каскадная модель

1.2.2.Спиральная модель

1.2.3.Макетирование

1.2.4.Быстрая разработка приложений

1.2.5.Компонентно-ориентированная модель

1.2.6.XP-процесс

1.3.Стандарты, регламентирующие процесс разработки программного обеспечения

1.3.1.ГОСТ Р ИСО 9000-2001. Системы менеджмента качества. Основные положения и словарь

1.3.1.1.Предисловие

1.3.1.2.Введение

1.3.1.3.Область применения

1.3.1.4.Основные положения систем менеджмента качества

1.3.2.ГОСТ Р ИСО/МЭК ТО 15504

1.3.2.1.Обзор

1.3.2.2.Область применения

1.3.2.3.Состав ИСО/МЭК ТО 15504

1.3.2.4.Связь с другими международными стандартами

1.3.3.ГОСТ Р ИСО/МЭК 12207-99. Информационная технология. Процессы жизненного цикла программных средств

1.3.3.1.Введение

1.3.3.2.Область применения

1.3.3.3.Прикладное применение настоящего стандарта

2.Анализ проблемы и постановка задачи

2.1.Введение в системный анализ

2.2.Системные ресурсы

2.3.Анализ проблемы и моделирование предметной области с использованием системного подхода

2.3.1.Основные положения

2.3.2.Этап 1. Достижение соглашения об определении проблемы

2.3.3.Этап 2. Выделение основных причин – проблем, стоящих за проблемой

2.3.3.1.Устранение корневых причин

2.3.4.Этап 3. Выявление заинтересованных лиц и пользователей

2.3.5.Этап 4. Определение границ системы-решения

2.3.6.Этап 5. Выявление ограничений, налагаемых на решение

2.4.Методология ARIS

2.4.1.Организационная модель

2.4.2.Диаграмма цепочки добавленного качества

2.4.3.Модели eEPC

2.5.Стандарты IDEF0 - IDEF3

2.5.1.Методология описания бизнес процессов IDEF3

2.5.1.1.Синтаксис и семантика моделей IDEF3

2.5.1.2.Требования IDEF3 к описанию бизнес-процессов

2.5.2.Методология функционального моделирования IDEF0

2.5.2.1.Синтаксис и семантика моделейIDEF0

2.5.2.2.Построение моделей IDEF0

3.Анализ требований и их формализация

3.1.Методы определения требований

3.1.1.Интервьюирование

3.1.1.1.Этапы проведения интервью

3.1.2.Мозговой штурм и отбор идей

3.1.2.1.Генерация идей

3.1.2.2.Отбор идей

3.1.3.Совместная разработка приложений (JAD – Joint application design)

3.1.3.1.Роли в сеансах JAD

3.1.3.2.Сеансы JAD

3.1.3.3.Результаты проведения сеанса JAD

3.1.3.4.Недостатки метода JAD

3.1.4.Раскадровка

3.1.4.1.Типы раскадровок

3.1.5.Обыгрывание ролей

3.1.5.1.Суть метода обыгрывания ролей

3.1.5.2.Сценарный просмотр

3.1.6.CRC-карточки (Class-Responsibility-Collaboration, класс-обязанность-взаимодействие)

3.1.7.Быстрое прототипирование

3.2.Формализация требований

3.2.1.Метод вариантов использования и его применение

3.2.1.1.Построение модели вариантов использования

3.2.1.2.Спецификация вариантов использования

3.2.1.3.Преимущества

3.2.2.Псевдокод

3.2.3.Конечные автоматы

3.2.4.Графические деревья решений

3.2.5.Диаграммы деятельности

3.3.Техническое задание (ГОСТ 34.602-89)

3.3.1. Общие сведения

3.3.2.Назначение и цели создания (развития) системы

3.3.2.1.Назначение системы

3.3.2.2.Цели создания системы

3.3.3.Характеристики объекта автоматизации

3.3.4.Требования к системе

3.3.4.1.Требования к системе в целом

3.3.4.2.Требования к функциям (задачам)

3.3.4.3.Требования к видам обеспечения

3.3.5.Состав и содержание работ по созданию системы

3.3.6.Порядок контроля и приемки системы

3.3.7.Требования к составу и содержанию работ по подготовке объекта автоматизации к вводу системы в действие

3.3.8.Требования к документированию

3.3.9.Источники разработки

4.Архитектуры программных систем

4.1.Планирование архитектуры

4.1.1.Архитектурно-экономический цикл

4.1.2.Программный процесс и архитектурно-экономический цикл

4.1.2.1.Этапы разработки архитектуры

4.1.3.Суть программной архитектуры

4.1.3.1.Архитектурные образцы, эталонные модели и эталонные варианты архитектуры

4.1.3.2.Архитектурные структуры и представления

4.2.Проектирование архитектуры

4.2.1.Атрибутный метод проектирования

4.2.1.1.Этапы ADD

4.2.2.Создание макета системы

4.3.Документирование программной архитектуры

4.3.1.Варианты применения архитектурной документации

4.3.2.Представления

4.3.2.1.Выбор значимых представлений

4.3.3.Документирование представления

4.3.3.1.Документирование поведения

4.3.3.2.Документирование интерфейсов

4.4.Методы анализа архитектуры

4.4.1.Метод анализа компромиссных архитектурных решений – комплексный подход к оценке архитектуры

4.4.1.1.Этапы АТАМ

4.4.2.Метод анализа стоимости и эффективности — количественный подход к принятию архитектурно-проектных решений

4.4.2.1.Контекст принятия решений

4.4.2.2.Реализация СВАМ

5.Технология MDA.

5.1.Использование архитектуры, управляемой моделью

5.1.1.Концепция архитектуры, управляемой моделью

5.1.2.Модельные точки зрения и модели MDA

5.2.Язык объектных ограничений OCL

5.2.1.Типы данных и операции OCL

5.2.2.Инфиксная форма записи выражений OCL

5.2.3.Последовательности доступа к объектам в языке OCL

5.2.4.Операции над коллекциями

5.2.4.1.Стандартные операции

5.2.4.2.Операция select

5.2.4.3.Операция reject

5.2.4.4.Выделение элементов коллекции

5.2.4.5.Упорядочение набора

5.2.4.6.Логические итераторы

5.2.4.7.Операции для работы со строками

5.2.4.8.Работа с датами

5.3.Возможности технологии ECO

5.3.1.Введение в технологию ЕСО

5.3.2.Модель ЕСО

5.3.3.Пространство имен ЕСО

5.4.Разработка приложений на основе ECO

5.4.1.Этапы создания приложения по технологии ECO

5.4.2.Создание простого MDA-приложения

5.4.2.1.Создание модели UML

5.4.2.2.Создание интерфейса

5.4.2.3.Связывание интерфейса с моделью

5.4.2.4.Создание логики на OCL

6.Документирование программных систем в соответствии с ГОСТ

6.1.Управление документированием программного обеспечения

6.1.1.Предисловие

6.1.2.Область применения

6.1.3.Роль руководителей

6.1.4.Функции программной документации

6.1.4.1.Информация для управления

6.1.4.2.Связь между задачами

6.1.4.3.Обеспечение качества

6.1.4.4.Инструкции и справки

6.1.4.5.Сопровождение программного обеспечения

6.1.4.6.Исторические справки

6.1.5.Установление стратегии документирования

6.1.6.Определение стандартов и руководств по документированию

6.1.6.1.Выбор модели жизненного цикла программного обеспечения

6.1.6.2.Определение типов и содержания документов

6.1.6.3.Определение качества документов

6.1.6.4.Определение форматов документов

6.1.6.5.Определение системы обозначения документов

6.1.7.Установление процедуры документирования

6.1.8.Распределение ресурсов для документирования

6.1.8.1.Персонал

6.1.8.2.Средства

6.1.8.3.Финансирование

6.1.9.Планирование документирования

6.2.Требования к содержанию документов на автоматизированные системы

6.2.1.Общие положения

6.2.2.Требования к содержанию документов по общесистемным решениям

6.2.2.1.Ведомость эскизного (технического) проекта

6.2.2.2.Пояснительные записки к эскизному, техническому проектам

6.2.2.3.Схема функциональной структуры

6.2.2.4.Описание автоматизируемых функций

6.2.2.5.Описание постановки задачи (комплекса задач)

6.2.2.6.Локальная смета и локальный сметный расчет

6.2.2.7.Паспорт

6.2.2.8.Формуляр

6.2.2.9.Проектная оценка надежности системы

6.2.2.10.Общее описание системы

6.2.2.11.Программа и методика испытаний (компонентов, комплексов средств автоматизации, подсистем, систем)

6.2.3.Требования к содержанию документов с решениями по организационному обеспечению

6.2.3.1.Описание организационной структуры

6.2.3.2.Методика (технология) автоматизированного проектирования

6.2.3.3.Технологическая инструкция

6.2.3.4.Руководство пользователя

6.2.3.5.Описание технологического процесса обработки данных

6.2.4.Требования к содержанию документов с решениями по программному обеспечению

6.2.4.1.Описание программного обеспечения

6.2.5.Другие разделы

6.3.Принципы разработки руководства программиста

6.3.1.Общие положения

6.3.2.Содержание разделов

6.4.Разработка руководства пользователя

6.4.1.Общие замечания

6.4.2.Содержание разделов руководства

6.4.2.1.Общие сведения

6.4.2.2.Описание применения

6.4.2.3.Требования к процедурам функционирования системы

Заключение

Библиографический список

Рисунок 4.1 – Архитектурно-экономический цикл (АЭЦ)

Цикл этот выглядит следующим образом.

1. Архитектура влияет на структуру компании-разработчика. Архитектура обусловливает структуру системы; в частности (в этом мы сможем убедиться), она устанавливает набор блоков программного обеспечения, которое надлежит реализовать (или обеспечить их наличие другим путем), а затем интегрировать в рамках системы. Эти блоки составляют основу разработки структуры проекта. Группы разработчиков укомплектовываются именно по блокам; операции в рамках процессов разработки, тестирования и интеграции также выполняются в отношении блоков. Согласно графикам и бюджетам, ресурсы выделяются частями в расчете на отдельные блоки. Если компания наработала опыт конструирования семейств сходных систем, она будет вкладывать средства в повышение профессионального уровня участников сформированных по блокам групп разработчиков. Следовательно, группы встраиваются в структуру организации. Такой представляется обратная связь от архитектуры к компании-разработчику.

2. Архитектура способна оказывать воздействие на задачи компании-разработчика. Сконструированная на ее основе успешная система предоставляет компании возможность укрепиться в данном сегменте рынка. Такая архитектура предусматривает дальнейшее эффективное производство и размещение сходных систем, вследствие чего компания может откорректировать свои задачи и, воспользовавшись новым преимуществом, занять рыночную нишу. Так выглядит обратная связь от системы к компании-разработчику и конструируемым ею системам.

3. Архитектура может оказывать воздействие на требования, выдвигаемые заказчиком относительно следующей системы, — ее (если она основана на той же архитектуре, что и предыдущая) он может получить в более надеж ном варианте, быстрее и экономичнее, чем в том случае, если бы она конструировалась «с чистого листа». Возможно, заказчик откажется от некоторых требований в пользу повышения экономичности. Готовые программные продукты несколько изменили требования, предъявляемые заказчиками, — не предназначенные для удовлетворения индивидуальных потребностей, они недороги и отличаются высоким качеством. На заказчиков, не слишком гибких по части своих требований, аналогичное воз действие оказывают линейки продуктов.

4. Процесс конструирования систем пополняет опыт архитектора, который он может применить при работе над последующими архитектурами, и, соответственно, расширяет базу опыта компании. Успех системы, построенной на основе инструментальных магистралей, .NET или инкапсулированных конечных автоматов, стимулирует построение аналогичных систем в дальнейшем. С другой стороны, неудачные варианты архитектуры редко используются повторно.


5. Иногда оказать сильное воздействие, и даже внести изменения в культуру программной инженерии (техническую базу, в рамках которой обучаются и работают конструкторы), способны отдельные системы. Такой эффект на индустрию в 1960-х и начале 1970-х годов оказали первые реляционные базы данных, генераторы компиляторов и табличные операционные системы; в 1980-х — первые электронные таблицы и системы управления окнами. В 1990-х годах в качестве такого рода катализатора выступила Всемирная паутина — с ней, между прочим, связан конкретный пример, приведенный в главе 13. В главе 16 мы предполагаем, что в первом десятилетии XXI века аналогичный эффект окажет J2EE. Подобные инновации всегда находят отражение в последующих системах.

Из этих и некоторых других механизмов обратной связи и образуется архитектурно-экономический цикл. На рисунке 11.1 изображены факторы влияния культуры и экономики компании-разработчика на программную архитектуру. В свою очередь архитектура оказывается основным определяющим фактором при задании свойств разрабатываемой системы или систем.

4.1.2.Программный процесс и архитектурно-экономический цикл

Программным процессом (software process) называются действия по организации, нормированию и управлению разработкой программного обеспечения. Ниже приведён перечень операций направленных на создание программной архитектуры, ее применение для реализации проектного решения, а впоследствии — на реализацию или управление развитием целевой системы или приложения:



  • создание экономической модели системы;

  • выявление требований;

  • создание новой или выбор существующей архитектуры;

  • документирование и распространение сведений об архитектуре;

  • анализ или оценка архитектуры;

  • реализация системы на основе архитектуры;

  • проверка соответствия реализации архитектуре.

4.1.2.1.Этапы разработки архитектуры

Как следует из структуры АЭЦ, между различными этапами разработки архитектуры существуют развернутые отношения обратной связи.

Создание экономической модели системы

Создание экономической модели не ограничивается оценкой потребности в системе на рынке. Этот этап исполняет существенную роль в контексте создания и сужения требований. Сколько должен стоить продукт? Каков целевой сегмент рынка? Насколько быстро продукт должен выйти на рынок? Должен ли он взаимодействовать с другими системами? Есть ли какие-нибудь системные ограничения, в рамках которых он должен существовать?

Все эти вопросы решаются с привлечением архитектора. Одного его, конечно, недостаточно, однако если при создании экономической модели консультации с архитектором не проводились, то возможность достижения коммерческих задач становится проблематичной.

Выявление требований

Способов узнать, чего же, наконец, хотят заинтересованные лица, множество. В частности, в рамках объектно-ориентированного анализа для фиксации требований используются сценарии, или элементы Use Case. Для системы с повышенными требованиями к безопасности применяются более строгие методики — например, модели конечных автоматов и языки формальных спецификаций.


Применительно к конструируемой системе необходимо принять центральное, основополагающее решение — насколько в ней будут отражены другие, уже сконструированные системы. Поскольку в сегодняшних условиях найти систему, не имеющую сходств с другими системами, весьма непросто, методики выявления требований предполагают знание характеристик предшествующих систем.

Еще один способ выявления требований подразумевает моделирование. Опытные системы помогают моделировать нужное поведение, проектировать пользовательские интерфейсы и проводить анализ потребления ресурсов. Таким образом, в глазах заинтересованных лиц система становится «реальной», а процесс принятия решений по проектированию системы и ее пользовательского интерфейса значительно ускоряется.

Вне зависимости от методики выявления требований, желаемые атрибуты качества конструируемой системы обусловливают ее конечный вид. Для обеспечения отдельных атрибутов качества архитекторами уже давно применяются те или иные тактики. Архитектурные решения компромиссны, однако при специфицировании требований не все эти компромиссы очевидны. Со всей ясностью они проявляются только после создания архитектуры; тогда же принимаются решения относительно сортировки требований в соответствии с приоритетами.

Создание или выбор архитектуры

Фредерик Брукс (Fred Brooks) в своей знаменитой книге «Мифический человеко-месяц» красноречиво и убедительно доказывает, что основным условием стабильного проектирования системы является соблюдение концептуальной целостности, а она может проявиться лишь в узком кругу людей, совместно работающих над проектированием ее архитектуры.

Распространение сведений об архитектуре

Для того чтобы архитектура действительно стала основой проекта, ее суть необходимо четко и недвусмысленно донести до всех заинтересованных лиц. Разработчики должны понимать, что от них требуется, тестировщики должны осознавать структуру своих задач, менеджмент должен знать график и т. д. Для того чтобы этой цели можно было добиться, документирование архитектуры должно быть информативным, ясным и понятным людям различных профессий.

Анализ или оценка архитектуры

В процессе проектирования всегда рассматривается множество вариантов проекта. Некоторые из них забраковываются сразу. Из числа остальных в конечном итоге отбирается наиболее подходящий. Одна из глобальных задач, стоящих перед любым архитектором, заключается именно в том, чтобы сделать этот выбор рационально.

Оценить архитектуру на предмет атрибутов качества, которые она обеспечивает, совершенно необходимо — без этого нельзя быть уверенным в том, что конечная система сможет удовлетворить все потребности заинтересованных лиц. Все большее распространение получают методики анализа, ориентированные на оценку сообщаемых системе архитектурой атрибутов качества. Сценарные методики обеспечивают наиболее универсальную и эффективную оценку архитектуры. Самая зрелая методическая база характерна для метода анализа компромиссных архитектурных решений (Architecture Tradeoff Analysis Method, ATAM); метод анализа стоимости и эффективности (Cost Benefit Analysis Method, CBAM), с другой стороны, предусматривает крайне ценную возможность увязки архитектурных решений с их экономическим содержанием.


4.1.3.Суть программной архитектуры

Программная архитектура программы или вычислительной системы — это структура ее структур, то есть изложение ее программных элементов, их внешних свойств и установленных между ними отношений.

Внешними (externally visible) свойствами называются те предположения, которые сторонние элементы могут выдвигать в отношении данного элемента, — в частности, они касаются предоставляемых элементом услуг, рабочих характеристик, устранения неисправностей, совместного использования ресурсов и т. д. Проанализируем представленное определение более подробно.

Во-первых, архитектура определяет программные элементы. В составе архитектуры приводится информация о взаимоотношениях элементов. Собственно говоря, все, что архитектура сообщает нам об элементах, ограничивается информацией об их взаимодействии. Итак, архитектура — это, в первую очередь, абстракция системы, в которой отсутствует информация об элементах, не имеющая отношения к тому, как они используют, используются, соотносятся или взаимодействуют с другими элементами. Практически во всех современных системах взаимодействие между элементами осуществляется посредством интерфейсов, которые поддерживают деление информации об элементах на публичную и приватную части. Так вот, архитектура имеет дело только с публичной частью; приватные детали элементов — те, что относятся исключительно к их внутренней реализации, — в состав архитектуры не входят.

Во-вторых, из вышеприведенного определения ясно, что в состав любой системы может входить и входит целый ряд структур, а, следовательно, ни одной отдельно взятой структуры, которую можно было бы уверенно назвать архитектурой, не существует. В частности, все нетривиальные проекты делятся на блоки реализации; между этими блоками распределяются некоторые обязанности, и они же в большинстве случаев выступают в качестве базы для разделения задач между группами программистов. В таких элементах, наряду с программами и данными, доступными для вызова или обращения со стороны других программных средств и блоков реализации, содержатся приватные программы и данные. В крупных проектах эти элементы почти всегда разделяются на мелкие части, а обязанности по работе с ними распределяются между несколькими мелкими группами разработчиков. Довольно часто описания систем составляются при помощи таких структур. Ориентированные на разделение функций системы между различными группами исполнителей реализации, они отличаются чрезмерной статичностью.

Другие структуры в большей степени ориентируются на взаимодействие элементов в период прогона с целью исполнения функции системы. Представим, что систему предполагается сконструировать в виде ряда параллельных процессов. В этом случае часто применяется другая структура, включающая процессы периода прогона, программы из вышеописанных блоков реализации, совместно формирующие отдельные процессы, а также установленные между этими процессами отношения синхронизации.


Можем ли мы взять любую из этих структур в отдельности и назвать ее архитектурой? Нет, не можем — и это несмотря на то, что все они содержат архитектурные сведения. В состав любой архитектуры эти структуры входят наравне со многими другими. В этой связи, очевидно, что, поскольку в составе архитектуры может содержаться несколько структур, в ней должны присутствовать несколько элементов (например, блок реализации и процессы), несколько вариантов взаимодействия между элементами (например, разбиение на составляющие и синхронизация) и даже несколько контекстов (например, время разработки и время прогона). Представленное определение не устанавливает сущность архитектурных элементов и отношений. Является ли программный элемент объектом? процессом? библиотекой? базой данных? коммерческим изделием? Он может быть чем угодно, причем возможности не ограничиваются вышеприведенными вариантами.

В-третьих, согласно нашему определению, программная архитектура есть у любой вычислительной системы с программным обеспечением — связано это с тем, что любую систему можно представить как совокупность ее элементов и установленных между ними отношений. В простейшем случае система сама по себе является элементом — не представляющим, вероятно, никакого интереса и бесполезным, однако, тем не менее, согласующимся с понятием «архитектура». То обстоятельство, что архитектура есть у каждой системы, совершенно не означает, что она является общеизвестной. Кто знает — быть может, специалистов, спроектировавших систему, уже не найти, документация тоже куда-то исчезла (или ее никогда не существовало), исходный код потерян (или не поставлялся), а остался лишь исполняемый двоичный код. Именно в этом случае различие между архитектурой системы и ее представлением становится очевидным. К сожалению, архитектура иногда существует самостоятельно, без описаний и спецификаций; в этой связи существенную важность приобретают документирование и реконструкция архитектуры.

В-четвертых, если поведение отдельно взятого элемента можно зафиксировать или выявить с точки зрения других элементов, то это поведение входит в состав архитектуры. Именно оно позволяет элементам взаимодействовать друг с другом, а взаимодействие, как известно, отражается в архитектуре в обязательном порядке. Этим, помимо прочего, объясняется, почему схемы из прямоугольников и линий, выдаваемые за архитектуры, таковыми не являются. Это не более чем рисунки; самое лучшее, что о них можно сказать, — это то, что они намекают на существование более четкой информации относительно фактических функций обозначенных элементов. Взглянув на наименования изображенных на подобной схеме прямоугольников (например, на них написано «база данных», «пользовательский интерфейс», «исполняемый файл» и т. д.), читатель хотя бы получит представление о функциональности и поведении соответствующих элементов.