Информатика. Курс лекций. Громов Ю.Ю - 147 стр.

UptoLike

обычных текстовых редакторов, приложений электронных таблиц и систем электронной почты, используемых в других при-
ложениях. Однако другие представляют собой достаточно сложные пакеты, предназначенные преимущественно для исполь-
зования при разработке систем программного обеспечения. Например, некоторые CASE-инструменты включают генераторы
кода, которые по заданной спецификации на некоторую часть системы генерируют программу на языке высокого уровня,
представляющую собой реализацию этой части системы.
Вопросы для самопроверки
1. В чем состоит отличие между требованиями к системе и спецификацией на систему?
2. Кратко охарактеризуйте каждый из четырех этапов (анализ, проектирование, реализация и тестирование) фазы разра-
ботки в жизненном цикле программного обеспечения.
3. Охарактеризуйте различия между традиционной моделью разработки программного обеспечения (модель водопада) и
новым подходом, предусматривающим создание прототипов.
6.3. МОДУЛЬНОСТЬ
Одним из ключевых положений в разделе 6.2 было утверждение о том, что для модификации программы необходимо
разобраться в принципах ее работы или, по крайней мере, тех ее частей, которые относятся к делу. Зачастую этого нелегко
достичь даже в небольших программах, а в крупных системах программного обеспечения это было бы практически невоз-
можно, если бы не принцип модульности, предполагающий разделение программного обеспечения на поддающиеся осмыс-
лению элементы, каждый из которых сконструирован так, чтобы выполнять только определенную часть общей задачи.
Реализация модулей. Модульности можно достичь многими способами. В главах 4 и 5 было показано, как можно реа-
лизовать модули в виде отдельных процедур, которые впоследствии используются в качестве конструкционных элементов
для построения систем большего размера. В главе 5 модульность также обсуждалась в контексте объектно-
ориентированного подхода. В этом случае модули принимали форму объектов, каждый из которых имел собственную внут-
реннюю организацию, не зависящую от содержимого других объектов. Фактически рост популярности объектно-
ориентированного подхода к разработке программного обеспечения в значительной степени можно объяснить именно мо-
дульной структурой, изначально присущей этому методу.
Структурная схемаэто традиционное средство представления модульной структуры, достигаемой за счет создания
процедур. На этой схеме каждый модуль (процедура) представляется прямоугольником, а связи между нимистрелками,
соединяющими эти прямоугольники. Структурная схема, представленная на рис. 6.3, отображает модульную структуру про-
стой ролевой игры в жанре фантази, в которой игрок должен передвигаться по комнатам средневекового замка, решая в каж-
дой некоторую задачу, прежде чем ему будет позволено перейти в следующее помещение. На схеме показано, что модуль с
именем CoordinateGame (Координировать игру) использует модули InitializeGame (Инициализировать игру),
SimulateGreatHall (Имитация большого зала), SimulateDungeon (Имитация темницы) и SimulateTurret (Имитация
Рис. 6.3. Структурная схема простой ролевой игры
башни) в качестве абстрактных средств решения задачи. Точнее говоря, процедура CoordinateGame вызывает процедуру
InitializeGame для организации начала игры (узнать имя игрока, установить уровень сложности игрыначинающий, средний
или сложныйи т.д.). После каждого перехода игрока на новый уровень (т.е. перехода в следующую комнату) процедура
CoordinateGame вызывает другую процедуру, выполняющую имитацию требуемой комнаты, чтобы организовать выполне-
ние происходящих в этой комнате событий. Кроме того, на схеме показано, что каждый из модулей имитации комнаты об-
ращается к процедуре UpdateScore (Обновление счета), чтобы записать результаты, достигнутые игроком в данной комнате.
В то время как структурные схемы используются для представления внутренней структуры программного обеспечения
с процедурной организацией, диаграммы классов применяются для представления структуры систем с объектно-
ориентированной организацией. Диаграмма классов определяет набор существующих в системе классов объектов и описы-
вает взаимоотношения этих классов. На рис. 6.4 представлена простая диаграмма классов для упомянутой выше ролевой
игры. На этой диаграмме показано, что система состоит из объектов двух типов, PlayRecord (Запись игрока) и Room (Комна-
та), связанных отношением IsCurrentlyln (В данный момент внутри). Здесь объект типа PlayRecord содержит данные и процеду-
ры, относящиеся к конкретному игроку (имя, уровень, результат), а объект типа Roomданные и процедуры, относящиеся к опре-
деленной комнате (образ комнаты, возникающий на экране, и связанные с этой комнатой задачи).
Модуль
Initialize
Game
Модуль
Simulate
Great Hall
Модуль
Simulate
Dungeon
Модуль
Simulate
Turret
Модуль
Update
Score
Модуль
Coordinate
Game