WWW.DISSERS.RU

БЕСПЛАТНАЯ ЭЛЕКТРОННАЯ БИБЛИОТЕКА

   Добро пожаловать!


Pages:     || 2 | 3 | 4 | 5 |   ...   | 9 |
Министерство образования и науки Российской Федерации Государственное образовательное учреждение высшего профессионального образования «Тамбовский государственный технический университет» И.В. МИЛОВАНОВ, В.И. ЛОСКУТОВ ОСНОВЫ РАЗРАБОТКИ ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ ВЫЧИСЛИТЕЛЬНЫХ СИСТЕМ Утверждено Учёным советом университета в качестве учебного пособия для студентов 2 – 4 курсов дневного отделения специальностей 231000, 230100, 010400 Тамбов Издательство ГОУ ВПО ТГТУ 2011 1 УДК 004.415.2 ББК 32.973.26.32.973.26-018.2 М605 Р е ц е н з е н т ы:

Доктор технических наук, профессор, проректор по информатизации ГОУ ВПО ТГТУ В.Е. Подольский Доктор технических наук, профессор, заведующий кафедрой «Компьютерное и математическое моделирование» ГОУ ВПО ТГУ им. Г.Р. Державина А.А. Арзамасцев Милованов, И.В.

М605 Основы разработки программного обеспечения вычислительных систем : учебное пособие / И.В. Милованов, В.И. Лоскутов. – Тамбов : Изд-во ГОУ ВПО ТГТУ, 2011. – 88 с. – 100 экз.

ISBN 978-5-8265-0990-6.

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

Предназначено для студентов 2 – 4 курсов дневного отделения специальностей 231000 «Программная инженерия», 230100 «Информатика и вычислительная техника», 010400 «Прикладная математика и информатика».

УДК 004.415.2 ББК 32.973.26.32.973.26-018.2 ISBN 978-5-8265-0990-6 © Государственное образовательное учреждение высшего профессионального образования «Тамбовский государственный технический университет» (ГОУ ВПО ТГТУ), 2011 2 ВВЕДЕНИЕ В настоящее время вычислительные системы находят всё более и более широкое применение. При этом, программное обеспечение (ПО) является неотъемлемой частью таких систем. Программные системы весьма сложны, например, операционные системы и системы автоматизированного проектирования, другие программы, как системы домашней бухгалтерии, наоборот ясны и понятны широкому кругу пользователей.

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

Учебное пособие посвящено основам проектирования программных систем, объектно-ориентированному подходу к реализации систем и инструментарию построения объектно-ориентированных моделей.

В первом разделе рассматривается содержание этапа проектирования и его место в жизненном цикле конструирования программных систем.

Даётся обзор архитектурных моделей ПО, обсуждаются классические проектные характеристики: модульность, информационная закрытость, сложность, связность, сцепление и метрики для их оценки.

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

Третий раздел посвящён определению базовых понятий языка визуального моделирования UML.

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

1. ОСНОВЫ ПРОЕКТИРОВАНИЯ ПРОГРАММНЫХ СИСТЕМ ОСОБЕННОСТИ ПРОЦЕССА СИНТЕЗА ПРОГРАММНЫХ СИСТЕМ Известно, что технологический цикл конструирования программной системы (ПС) включает три процесса – анализ, синтез и сопровождение.

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

В процессе синтеза формируется ответ на вопрос: «Каким образом система будет реализовывать предъявляемые к ней требования». Выделяют три этапа синтеза: проектирование ПС, кодирование ПС, тестирование ПС (рис. 1.1).

Рассмотрим информационные потоки процесса синтеза.

Этапы проектирования опираются на требования к ПС, представленные информационной, функциональной и поведенческой моделями анализа. Иными словами, модели анализа поставляют этапу проектирования исходные сведения для работы. Информационная модель описывает инфор- Рис. 1.1. Информационные потоки процесса синтеза ПС мацию, которую, по мнению заказчика, должна обрабатывать ПС. Функциональная модель определяет перечень функций обработки. Поведенческая модель фиксирует желаемую динамику системы (режимы её работы).

На выходе этапа проектирования – разработка данных, разработка архитектуры и процедурная разработка ПС.

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



Разработка архитектуры выделяет основные структурные компоненты и фиксирует связи между ними.

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

Далее создаются тексты программных модулей, проводится тестирование для объединения и проверки ПС. На проектирование, кодирование и тестирование приходится более 75% стоимости конструирования ПС.

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

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

ОСОБЕННОСТИ ЭТАПА ПРОЕКТИРОВАНИЯ Проектирование – итерационный процесс, при помощи которого требования к ПС транслируются в инженерные представления ПС. Вначале эти представления дают только концептуальную информацию (на высоком уровне абстракции), последующие уточнения приводят к формам, которые близки к текстам на языках программирования.

Обычно в проектировании выделяют две ступени: предварительное проектирование и детальное проектирование. Предварительное проектирование формирует абстракции архитектурного уровня, детальное проектирование уточняет эти абстракции, добавляет подробности алгоритмического уровня. Кроме того, во многих случаях выделяют интерфейсное проектирование, цель которого – сформировать графический интерфейс пользователя (GUI). Схема информационных связей процесса проектирования приведена на рис. 1.2.

Рис. 1.2. Информационные связи процесса проектирования Предварительное проектирование обеспечивает:

идентификацию подсистем;

определение основных принципов управления подсистемами, взаимодействия подсистем.

Предварительное проектирование включает три типа деятельности:

1. Структурирование системы. Система структурируется на несколько подсистем, где под подсистемой понимается независимый программный компонент. Определяются взаимодействия подсистем.

2. Моделирование управления. Определяется модель связей управления между частями системы.

3. Декомпозиция подсистем на модули. Каждая подсистема разбивается на модули. Определяются типы модулей и межмодульные соединения.

Рассмотрим вопросы структурирования, моделирования и декомпозиции более подробно.

СТРУКТУРИРОВАНИЕ СИСТЕМЫ Известны четыре модели системного структурирования:

модель хранилища данных;

модель клиент-сервер;

трёхуровневая модель;

модель абстрактной машины.

В модели хранилища данных (рис. 1.3) подсистемы разделяют данные, находящиеся в общей памяти. Как правило, данные образуют базу данных (БД). Предусматривается система управления этой базой.

Модель клиент-сервер используется для распределённых систем, где данные распределены по серверам (рис. 1.4). Для передачи данных применяют сетевой протокол, например TCP/IP.

Анализатор проекта Рис. 1.3. Модель хранилища данных Рис. 1.4. Модель клиент-сервер Рис. 1.5. Трёхуровневая модель Трёхуровневая модель является развитием модели клиент-сервер (рис. 1.5).

Рис. 1.6. Модель абстрактной машины Уровень графического интерфейса пользователя запускается на машине клиента. Бизнес-логику образуют модули, осуществляющие функциональные обязанности системы. Этот уровень запускается на сервере приложения. Реляционная СУБД хранит данные, требуемые уровню бизнес-логики. Этот уровень запускается на втором сервере – сервере БД.

Преимущества трёхуровневой модели:

упрощается такая модификация уровня, которая не влияет на другие уровни;

происходит отделение прикладных функций от функций управления БД упрощает оптимизацию всей системы.

Модель абстрактной машины отображает многослойную систему (рис. 1.6).

Каждый текущий слой реализуется с использованием средств, обеспечиваемых слоем-фундаментом.

МОДЕЛИРОВАНИЕ УПРАВЛЕНИЯ Известны два типа моделей управления:

модель централизованного управления;

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

В модели централизованного управления одна подсистема выделяется как системный контроллер. Её обязанности – руководить работой других подсистем. Различают две разновидности моделей централизованного управления: модель вызов-возврат (рис. 1.7) и модель менеджера (рис. 1.8), которые используются в системах параллельной обработки.

Рис. 1.7. Модель вызов-возврат Рис. 1.8. Модель менеджера Рис. 1.9. Широковещательная модель В широковещательной модели (рис. 1.9) каждая подсистема уведомляет обработчика о своём интересе к конкретным событиям. Когда событие происходит, обработчик пересылает его подсистеме, которая может обработать это событие. Функции управления в обработчик не встраиваются.

В модели событийного управления системой управляют внешние события. Используются две разновидности модели событийного управления: широковещательная модель и модель, управляемая прерываниями.

Рис. 1.10. Модель, управляемая прерываниями В модели, управляемой прерываниями (рис. 1.10), все прерывания разбиты на группы-типы, которые образуют вектор прерываний. Для каждого типа прерывания есть свой обработчик. Каждый обработчик реагирует на свой тип прерывания и запускает свой процесс.





ДЕКОМПОЗИЦИЯ ПОДСИСТЕМ НА МОДУЛИ Известны два типа моделей модульной декомпозиции:

модель потока данных;

модель объектов.

В основе модели потока данных лежит разбиение по функциям.

Модель объектов основана на слабо сцепленных сущностях, имеющих собственные наборы данных, состояния и наборы операций.

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

МОДУЛЬНОСТЬ Модуль – фрагмент программного текста, являющийся строительным блоком для физической структуры системы. Как правило, модуль состоит из интерфейсной части и части-реализации.

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

По определению Г. Майерса, модульность – свойство ПО, обеспечивающее интеллектуальную возможность создания сколь угодно сложной программы [1]. Проиллюстрируем эту точку зрения.

Пусть С(х) – функция сложности решения проблемы х, Т(х) – функция затрат времени на решение проблемы х. Для двух проблем р1 и р2 из соотношения С(р1) > С(р2) следует, что T(pl) > T(p2). (1.1) Этот вывод интуитивно ясен: решение сложной проблемы требует большего времени.

Далее. Из практики решения проблем человеком следует С(р1 + р2) > С(р1) + С(р2).

Отсюда с учётом соотношения (4.1) запишем T(p1 + p2) > T(pl) + T(p2). (1.2) Соотношение (1.2) – это обоснование модульности. Оно приводит к заключению «разделяй и властвуй» – сложную проблему легче решить, разделив её на управляемые части. Результат, выраженный неравенством (1.2), имеет важное значение для модульности и ПО. Фактически, это аргумент в пользу модульности.

Однако здесь отражена лишь часть реальности, ведь здесь не учитываются затраты на межмодульный интерфейс. Как показано на рис. 1.11, с увеличением количества модулей (и уменьшением их размера) эти затраты также растут.

Таким образом, существует оптимальное количество модулей Opt, которое приводит к минимальной стоимости разработки. Увы, у нас нет необходимого опыта для гарантированного предсказания Opt. Впрочем, разработчики знают, что оптимальный модуль должен удовлетворять двум критериям:

снаружи он проще, чем внутри;

его проще использовать, чем построить.

Рис. 1.11. Затраты на модульность ИНФОРМАЦИОННАЯ ЗАКРЫТОСТЬ Принцип информационной закрытости утверждает: содержание модулей должно быть скрыто друг от друга [2]. Как показано на рис. 1.12, модуль должен определяться и проектироваться так, чтобы его содержимое (процедуры и данные) было недоступно тем модулям, которые не нуждаются в такой информации (клиентам).

Информационная закрытость означает следующее:

1) все модули независимы, обмениваются только информацией, необходимой для работы;

2) доступ к операциям и структурам данных модуля ограничен.

Достоинства информационной закрытости:

обеспечивается возможность разработки модулей различными, независимыми коллективами;

обеспечивается лёгкая модификация системы (вероятность распространения ошибок очень мала, так как большинство данных и процедур скрыто от других частей системы).

Идеальный модуль играет роль «чёрного ящика», содержимое которого невидимо клиентам. Он прост в использовании – количество «ручек и органов управления» им невелико (аналогия с эксплуатацией телевизора). Его легко развивать и корректировать в процессе сопровождения программной системы. Для обеспечения таких возможностей система внутренних и внешних связей модуля должна отвечать особым требованиям.

Обсудим характеристики внутренних и внешних связей модуля.

Рис. 1.12. Информационная закрытость модуля СВЯЗНОСТЬ МОДУЛЯ Связность модуля (Cohesion) – это мера зависимости его частей [3], [4], [5]. Связность – внутренняя характеристика модуля. Чем выше связность модуля, тем лучше результат проектирования, т.е. тем «черней» его ящик (капсула, защитная оболочка модуля), тем меньше «ручек управления» на нём находится и тем проще эти «ручки».

Для измерения связности используют понятие силы связности (СС).

Существует 7 типов связности:

1. Связность по совпадению (СС = 0). В модуле отсутствуют явно выраженные внутренние связи.

2. Логическая связность (СС = 1). Части модуля объединены по принципу функционального подобия. Например, модуль состоит из разных подпрограмм обработки ошибок. При использовании такого модуля клиент выбирает только одну из подпрограмм.

Недостатки:

сложное сопряжение;

большая вероятность внесения ошибок при изменении сопряжения ради одной из функций.

3. Временная связность (СС = 3). Части модуля не связаны, но необходимы в один и тот же период работы системы.

Недостаток: сильная взаимная связь с другими модулями, отсюда сильная чувствительность внесению изменений.

4. Процедурная связность (СС = 5). Части модуля связаны порядком выполняемых ими действий, реализующих некоторый сценарий поведения.

5. Коммуникативная связность (СС = 7). Части модуля связаны по данным (работают с одной и той же структурой данных).

6. Информационная (последовательная) связность (СС = 9). Выходные данные одной части используются как входные данные в другой части модуля.

7. Функциональная связность (СС = 10). Части модуля вместе реализуют одну функцию.

Pages:     || 2 | 3 | 4 | 5 |   ...   | 9 |










© 2011 www.dissers.ru - «Бесплатная электронная библиотека»

Материалы этого сайта размещены для ознакомления, все права принадлежат их авторам.
Если Вы не согласны с тем, что Ваш материал размещён на этом сайте, пожалуйста, напишите нам, мы в течении 1-2 рабочих дней удалим его.