Лекция № 8. Принципиальные решения начальных этапов проектирования

Содержание лекции: архитектура программного обеспечения; типы пользовательских интерфейсов; технологии работы с документами; языки и среды программирования.

Цель лекции: ознакомиться с особенностями принятия принципиальных решений начальных этапов проектирования.

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

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

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

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

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

Программные системы - организованная совокуп­ность программ (подсистем), позволяющая решать широкий класс задач из некоторой прикладной области. Про­граммы, входящие в программную систему, взаимодействуют через общие данные. Программные системы обычно имеют развитые пользовательский и внутренние интерфейсы, что требует их тщательного проектирования. Многопользовательские программные системыдолжны организовывать сетевое взаимодействиеот­дельных компонентов ПО, что усложняет про­цесс его разработки, поэтому для разработки используют специальные технологии или платформы (технологии CORBA, COM, Java).

Тип пользовательского интерфейса во многом определяет сложность и трудоемкость разработки. По последним данным до 80 % программного кода может реализовывать именно пользовательский интерфейс [14]. Различают четыре типа пользовательских интерфейсов:

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

б) меню - реализуют множество сценариев работы, операции которых ор­ганизованы в иерархические структуры;

в) со свободной навигацией - реализуют множество сценариев, операции которых не привязаны к уровням иерархии, и предполагают определение множества возможных операций на конкретном шаге работы; интерфейсы данной формы в основном используют Windows-приложения;

г) прямого манипулирования - реализуют множество сценариев, пред­ставленных в операциях над объектами, инициируемых перемещением пиктограмм объектов мышью; данная форма реализована в интерфейсе операционной системы Windows.

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

а) однодокументная, которая предполагает однодокументный интерфейс (SDI - Single Document Interface) и используется, если одновременная работа с несколькими документами не обя­зательна;

б) многодокументная, которая предполагает многодокументный интер­фейс (MDI - Multiple Document Interface) и используется, если программное обеспе­чение должно работать с несколькими документами одновременно, напри­мер, с несколькими текстами или несколькими изображениями.

Трудоемкость реализации многодокументных интерфейсов с использо­ванием современных библиотек примерно на 3...5 % выше, чем однодокументных, однако тип влияет на трудоемкость более существенно.

При выборе интерфейса прямого манипулирования или со свободной на­вигацией практически однозначно предполагается использование объектного подхода и событийного програм­мирования, так как современные среды визуального программирования, такие как Visual C++, Delphi, Builder C++, предоставляют интерфейсные компоненты именно в виде объектов библио­течных классов. При этом в зависимости от сложности предметной области программное обеспечение может реализовываться как с использованием объектов и, соответственно, классов, так и чисто процедурно. Исключение составляют случаи использования специализированных языков разработки Интернет-приложений (Perl), построенных по совершенно другому принципу. Примитивный интерфейс и интерфейс типа меню совместимы как со структурным, так и с объектным подходами к разработке. Поэтому выбор подхода осуществляют с использованием дополнительной информации.

Практика показывает, что объектный подход эффективен для разработки очень больших программных систем (более 100000 операторов) и в случаях, когда объектная структура предметной области ярко выражена. Следует осторожно использовать объ­ектный подход при жестких ограничениях на эффективность разрабатывае­мого ПО (при разработке систем реально­го времени). Во всех прочих случаях выбор подхода остается за разработчиком.

В большинстве случаев проблемы выбора языка программирования реально не существует. Язык мо­жет быть определен организацией, ведущей разработку; программистом, который по возможности всегда будет использовать хорошо знакомый язык, или устоявшимся мнением. Все существующие языки программирования модно разделить на четыре группы, которые позже будут рассмотрены более подробно [2].

Среда программирования - программный комплекс, включающий тексто­вый редактор, встроенные компилятор, компоновщик, отладчик, справочную систему и другие программы, использование которых упрощает процесс на­писания и отладки программ. Последнее время широкое распространение получили среды визуального программирования, позволяющие визуально подключать к программе коды из специальных библиотек компонентов. Наиболее часто используют визуальные среды Delphi, C++ Builder фирмы Borland (Inprise Corporation), Visual C++, Visual Basic фирмы Microsoft, Visual Ada фирмы IBM. Причем, среды фирмы Microsoft обеспечивают более низкий уровень программирования «под Windows». Это является их достоинством (уменьшается вероятность возникновения «нестандартной» ситуации) и недостатком (существенно загружает программиста «рутинной» работой, от которой избавлен программист, работающий с Delphi или C++ Builder). В общем случае, выбор среды в значительной степени должен определяться характером проекта.

Реальное приме­нение любой технологии проектирования требует формирования или выбора ряда стандартов, которые должны соблюдаться всеми участниками проекта:

а) стандарт проектирования;

б) стандарт оформления проектной документации;

в) стандарт интерфейса пользователя.

Стандарт проектирования должен определять набор необходимых моделей (схем, диаграмм) на каждой стадии про­ектирования и степень их детализации, правила фиксации проектных решений на диаграммах (включая правила именования объектов и соглашения по терминологии, набор атрибу­тов для всех объектов и правила их заполнения на каждой стадии, правила оформления диаграмм, включая требования к форме и размерам объектов), требования к конфигурации рабочих мест разработчиков (включая на­стройки операционной системы и используемых CASE-средств), механизм обеспечения совместной работы над проектом (включая и правила интеграции подсистем проекта и анализа проектных решений на непротиворечивость).

Стандарт оформления проектной документации регламентирует: комплектность, состав и структуру документации на каждой стадии; требования к ее содержанию и оформлению; правила подготовки, рассмотрения, согласования и утверждения доку­ментов.

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

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

Дополнительную информацию по теме можно получить в [1, 2, 4, 14].



Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: