Студопедия
Случайная страница | ТОМ-1 | ТОМ-2 | ТОМ-3
АрхитектураБиологияГеографияДругоеИностранные языки
ИнформатикаИсторияКультураЛитератураМатематика
МедицинаМеханикаОбразованиеОхрана трудаПедагогика
ПолитикаПравоПрограммированиеПсихологияРелигия
СоциологияСпортСтроительствоФизикаФилософия
ФинансыХимияЭкологияЭкономикаЭлектроника

Проектирование программных систем

Читайте также:
  1. III. АНАТОМИЯ КРОВЕНОСНОЙ СИСТЕМЫ.
  2. Internet/Intranet-технологии в корпоративных информа­ционных системах.
  3. IV. АНАТОМИЯ ЦЕНТРАЛЬНОЙ НЕРВНОЙ СИСТЕМЫ.
  4. IV. Загальна характеристика, елементи та класифікація виборчих систем………………………………………………………………... c.242-304
  5. joule [ʤu:l] Единица измерения работы, энергии и количества теплоты в Международной системе мер. J | дж | Дж
  6. QA-система Start
  7. Quot;НАЦІОКРАТІЯ" МИКОЛИ СЦІБОРСЬКОГО В СИСТЕМІ ІДЕЙНИХ ЗАСАД УКРАЇНСЬКОГО НАЦІОНАЛІЗМУ

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

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

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

- удовлетворяет заданным (возможно, неформальным) функциональным спецификациям;

- согласована с ограничениями, накладываемыми оборудованием;

- удовлетворяет явным и неявным требованиям по эксплуатационным качествам и ресурсопотреблению;

- удовлетворяет явным и неявным критериям дизайна продукта;

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

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

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

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

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

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

- процесс - правила проектирования модели;

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

Хороший метод проектирования базируется на прочной теоретической основе и при этом дает программисту известную степень свободы самовыражения.

Объектно-ориентированные модели. Существует ли наилучший метод проектирования? На этот вопрос нет однозначного ответа.

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

В основе любой технологии проектирования программ лежат:

- представления о логической и физической, статическо й и динамической моделях;

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

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

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

 

Объектно-ориентированные модели

Рис. 2.2

 

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

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

Объектно-ориентированный анализ и проектирование отражают эволюционное, а не революционное развитие проектирования; новая методология не порывает с прежними методами, а строится с учетом предшествующего опыта. К сожалению, многие программисты в настоящее время формально и неформально натренированы на применение только методов структурного проектирования. Разумеется, многие хорошие проектировщики создали и продолжают совершенствовать большое количество программных систем на основе этой методологии. Однако алгоритмическая декомпозиция помогает только до определенного предела, и обращение к объектно-ориентированной декомпозиции необходимо. Более того, при попытках использовать объектно-ориентированные языки C++ или Object Pascal в качестве алгоритмически ориентированных мы не только теряем их внутренний потенциал - скорее всего результат будет даже хуже, чем при использовании обычных языков С и Pascal. Дать электродрель плотнику, который не слышал об электричестве, значит использовать ее в качестве молотка. Он согнет несколько гвоздей и разобьет себе пальцы, потому что электродрель мало пригодна для замены молотка. Скажем более жестко: техника в руках дикаря – это груда металла.

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

2.2.5. Объектно-ориентированные анализ, проектирование и программирование. Объектно-ориентированный анализ направлен на создание моделей реальной действительности на основе объектно-ориентированного мировоззрения.

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

Объектно-ориентированное проектирование основное внимание уделяет правильному и эффективному структурированию сложных систем. Определим объектно-ориентированное проектирование следующим образом:

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

В данном определении содержатся две важные части объектно-ориентированного проектирования:

1) основывается на объектно-ориентированной декомпозиции;

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

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

Объектно-ориентированное программирование определим следующим образом:

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

В данном определении можно выделить три части объектно-ориентированного программирования:

1) использует в качестве базовых элементов объекты, а не алгоритмы;

2) каждый объект является экземпляром какого-либо определенного класса;

3) классы организованы иерархически.

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

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

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

- объекты относятся к соответствующим классам (типам);

- классы (типы) могут наследовать атрибуты суперклассов (супертипов).

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

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

Контрольные вопросы

1) Сформулируйте своими словами смысл проектирования.

2) Охарактеризуйте четыре основных модели программной системы.

3) Назовите и охарактеризуйте семь принципов проектирования программных систем.

Здесь нет материала

 

4) Сформулируйте определение объектно-ориентированного анализа.

5) Сформулируйте определение объектно-ориентированного проектирования.

6) Сформулируйте определение объектно-ориентированного программирования.

 

 


Дата добавления: 2015-11-14; просмотров: 60 | Нарушение авторских прав


<== предыдущая страница | следующая страница ==>
Среда и объект проектирования| Принципы и инструменты объектно-ориентированного анализа

mybiblioteka.su - 2015-2024 год. (0.012 сек.)