Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
21-30.doc
Скачиваний:
1
Добавлен:
27.09.2019
Размер:
270.34 Кб
Скачать

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

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

• выбор архитектуры программного обеспечения;

• выбор типа пользовательского интерфейса и технологии работы с документами;

• выбор подхода к разработке (структурного или объектного);

• выбор языка и среды программирования.

Другими словами, эти решения определяют, что проектируется, с какими потребительскими характеристиками, как и какими средствами.

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

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

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

• многопользовательскую архитектуру, которая рассчитана на работу в локальной или глобальной сети.

Кроме того, в рамках однопользовательской архитектуры различают:

• программы;

• пакеты программ;

• программные комплексы;

• программные системы.

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

Для решения такой задачи может потребоваться решить несколько подзадач, последовательно вызывая программы комплекса. Вызов программ в программном комплексе осуществляется специальной программой - диспетчером, который обеспечивает несложный интерфейс с пользователем и, возможно, выдачу некоторой справочной информацииМногопользовательские программные системы в отличие от обычных программных систем должны организовывать сетевое взаимодействие отдельных компонентов программного обеспечения, что еще усложняет процесс его разработки. Для разработки подобного программного обеспечения используют специальные технологии или платформы, например, технологии CORBA, COM, Java и т.п. Выбор типа пользовательского интерфейса. Различают четыре типа пользовательских интерфейсов:

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

• меню - реализуют множество сценариев работы, операции которых организованы в иерархические структуры, например, «вставка»: «вставка файла», «вставка символа» и т. д.;

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

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

Кроме того, выбор типа интерфейса включает выбор технологии работы с документами. Различают две технологии:

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

• многодокументная, которая предполагает многодокументный интерфейс (MDI - Multiple Document Interface).

Выбор подхода к разработке. Если выбран интерфейс со свободной навигацией или прямого манипулирования, то, как указывалось выше, это практически однозначно предполагает использование событийного программирования и объектного подхода, так как современные среды визуального программирования, такие как Visual C++, Delphi, Builder C++ и им подобные, предоставляют интерфейсные компоненты именно в виде объектов библиотечных классов.

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

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

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

• организацией, ведущей разработку; например, если фирма владеет лицензионным вариантом C++ Builder, то она будет вести разработки преимущественно в данной среде;

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

• устоявшимся мнением («все разработки подобного рода должны выполняться на C++ или на Java или на ...») и т. п,

Если же все-таки выбор языка реально возможен, то нужно иметь в виду, что все существующие языки программирования можно разделить на следующие группы:

• универсальные языки высокого уровня;

• специализированные языки разработчика программного обеспечения;

• специализированные языки пользователя;

• языки низкого уровня.

В группе у н и в е р с а л ь н ы х я з ы к о в в ы с о к о г о у р о в н я безусловным лидером на сегодня является язык С (вместе с C++). Действительно различные версии С и C++ имеют целый ряд очень существенных до стоинств:

• многоплатформенность - для всех используемых в настоящее время платформ существуют компиляторы с языка С и C++;

• наличие операторов, реализующих основные структурные алгоритмические конструкции (условную обработку, все виды циклов);

• возможность программирования на низком (системном) уровне с использованием адресов оперативной памяти;

• огромные библиотеки подпрограмм и классов.

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

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

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

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

Альтернативой С и C++ среди универсальных языков программирования, используемых для создания прикладного программного обеспечения, на сегодня является Pascal, компиляторы которого в силу четкого синтаксиса обнаруживают помимо синтаксических и большое количество семантических ошибок. Версия Object Pascal, использованная в среде Delphi, сопровождается профессиональными библиотеками классов, упрощающими ведение больших разработок, в том числе и требующих использования баз данных, что делает Delphi достаточно эффективной средой для создания приложений Windows.

Кроме этих языков к группе универсальных принадлежат также Basic, Modula, Ada и некоторые другие. Каждый из указанных языков, так же, как C++ и Pascal, имеет свои особенности и, соответственно, свою область применения.

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

• языки баз данных;

• языки создания сетевых приложений;

• языки создания систем искусственного интеллекта и т. д.

Эти языки изучаются в специальных курсах и в настоящем учебнике рассматриваться не будут.

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

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

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

В настоящее время языки типа Ассемблера обычно используют:

• при написании сравнительно простых программ, взаимодействующих непосредственно с техническими средствами, например драйверов, поскольку в этом случае приходится кропотливо настраивать соответствующее оборудование, преимущества языков программирования высокого уровня становятся несущественными;

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

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

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

Наиболее часто используемыми являются визуальные среды Delphi, C++ Builder фирмы Borland (Inprise Corporation), Visual C++, Visual Basic фирмы Microsoft, Visual Ada фирмы IBM и

Между основными визуальными средами этих фирм Delphi, C++ Builder и Visual C++ имеется существенное различие: визуальные среды фирмы Microsoft обеспечивают более низкий уровень программирования «под Windows». Это является их достоинством и недостатком. Достоинством -так как уменьшается вероятность возникновения «нестандартной» ситуации, т. е. ситуации, не предусмотренной разработчиками библиотеки компонентов, а недостатком - так как это существенно загружает программиста «рутинной» работой, от которой избавлен программист, работающий с Delphi или C++ Builder

Много нареканий вызывает также интерфейс Visual C++, также ориентированный на «низкоуровневое» программирование.

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

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

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

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

• стандарт интерфейса пользователя. Стандарт проектирования должен определять:

• набор необходимых моделей (схем, диаграмм) на каждой стадии проектирования и степень их детализации;

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

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

• механизм обеспечения совместной работы над проектом, в том числе и правила интеграции подсистем проекта и анализа проектных решений на непротиворечивость.

Стандарт оформления проектной документации должен регламентировать:

• комплектность, состав и структуру документации на каждой стадии;

• требования к ее содержанию и оформлению;

• правила подготовки, рассмотрения, согласования и утверждения документов.

Стандарт интерфейса пользователя должен определять:

• правила оформления экранов (шрифты и цветовую палитру), состав и расположение окон и элементов управления;

• правила пользования клавиатурой и мышью;

• правила оформления текстов помощи;

• перечень стандартных сообщений;

• правила обработки реакции пользователя.

29.Метод Варнье Диаграммы Варнье-Орра (также известные как логические конструкции программ/систем) — это вид иерархических блок-схем, которые предоставляют описание организации данных и процедур. Впервые они были разработаны во Франции Жаном-Домиником Варнье и в США Кеннетом Орром. Этот метод помогает разрабатывать структуру программ путём идентификации выходных и обрабатываемых результатов с целью выявления шагов и входных комбинаций, необходимых для получения этих результатов. Простой графический метод, используемый в диаграммах Варнье-Орра, позволяет сделать очевидными как уровни в системе, так и движение информации между ними.

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

Основные элементы

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

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

Использование диаграмм Варнье-Орра

При разработке диаграммы Варнье-Орра, аналитик использует метод «от обратного», начиная с вывода системы и используя анализ, ориентированный на вывод. На бумаге разработка перемещается справа налево. Сначала определяется предполагаемый вывод или результаты обработки. На следующем уровне, показанном включением в скобку, определяются шаги, необходимые для получения требуемого вывода. Аналогично выполняются дальнейшие шаги. Дополнительные скобки группируют процессы, требующиеся для получения результата на следующем уровне.

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

Конструкции диаграмм Варнье-Орра

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

Иерархия

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

Последовательность

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

Повторение

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

В основном, плохая идея жёстко кодировать константы, отличные от «0» или «1» в качестве числа повторов — проект должен быть гибким настолько, чтобы позволять менять число повторов без изменения самого проекта. Например, если в компании работает 38 сотрудников на момент завершения проекта, жёсткое кодирование «38» как «число сотрудников» окажется не таким гибким, как «(1,n)».

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

Чередование

Чередование, или выбор, является традиционным представлением «решения», посредством которого принимается решение о выполнении одного из двух процессов. Оно обозначается как отношение между двумя подмножествами набора. Символ «Исключающее ИЛИ» (знак плюс в кружке) указывают, что наборы непосредственно выше и ниже этого взаимно исключительны (если один присутствует, то другой — нет). Также допустимо использовать «полосу отрицания» выше альтернативы, наподобие технического примечания. Полоса читается просто как слово «нет».

Чередования могут быть не только бинарными, они могут содержать множество альтернатив.

Параллелизм

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

Рекурсия

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

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

При этом данный метод включает следующие основные этапы:

1. Определение и разработка структур данных с использованием трех базовых структур (входные и выходные данные);

2. Построение структуры программы на основе понятия слияния входных и выходных данных;

3. Определение основных операций и составление алгоритма задачи.

  1. Последовательность. Данная структура определяет набор компонентов (В, С, D), которые записываются в указанном порядке слева направо:

  1. Выбор. Данная структура определяет элементы, из которых выбирается только 1:

  1. Повтор (когда есть набор повторяющихся данных). Это структура, которая определяет, что элемент A состоит из повторяющихся элементов B.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]