Разработка модели программного обеспечения для телевизора в среде Rational Rose
СОДЕРЖАНИЕ: Специфика системы управления телевизором. Особенности модели вариантов использования. Анализ основных вариантов использования телевизора: просмотр, переключение каналов, изменение громкости и настроек. Проектирование и реализация системы, генерация кода.КУРСОВАЯ РАБОТА
по дисциплине «Проектирование информационных систем»
на тему: «Разработка модели программного обеспечения для телевизора в среде Rational Rose »
СОДЕРЖАНИЕ
ВВЕДЕНИЕ
2.ГЛОССАРИЙ ПРОЕКТА
3.МОДЕЛЬ ВАРИАНТОВ ИСПОЛЬЗОВАНИЯ
4.АНАЛИЗ ВАРИАНТОВ ИСПОЛЬЗОВАНИЯ
5.1Иерархия классов системы
5.3Диаграмма классов
5.5Диаграмма состояний
6.1Диаграмма компонентов
ЗАКЛЮЧЕНИЕ
ВВЕДЕНИЕ
Тенденции развития современных информационных технологий приводят к постоянному возрастанию сложности информационных систем (ИС), создаваемых в различных областях экономики.
Для успешной реализации проекта объект проектирования (ИС) должен быть прежде всего адекватно описан, должны быть построены полные и непротиворечивые функциональные и информационные модели ИС. Однако до недавнего времени проектирование ИС выполнялось в основном на интуитивном уровне с применением неформализованных методов, основанных на искусстве, практическом опыте, экспертных оценках и дорогостоящих экспериментальных проверках качества функционирования ИС.
В 70-х и 80-х годах при разработке ИС достаточно широко применялась структурная методология, предоставляющая в распоряжение разработчиков строгие формализованные методы описания ИС и принимаемых технических решений. Она основана на наглядной графической технике: для описания различного рода моделей ИС используются схемы и диаграммы. Наглядность и строгость средств структурного анализа позволяла разработчикам и будущим пользователям системы с самого начала неформально участвовать в ее создании, обсуждать и закреплять понимание основных технических решений. Однако, широкое применение этой методологии и следование ее рекомендациям при разработке конкретных ИС встречалось достаточно редко, поскольку при неавтоматизированной (ручной) разработке это практически невозможно. Действительно, вручную очень трудно разработать и графически представить строгие формальные спецификации системы, проверить их на полноту и непротиворечивость, и тем более изменить. Если все же удается создать строгую систему проектных документов, то ее переработка при появлении серьезных изменений практически неосуществима.
Это и поспособствовало появлению программно-технологических средств специального класса - CASE-средств, реализующих CASE-технологию создания и сопровождения ИС. Термин CASE (Computer Aided Software Engineering) используется в настоящее время в весьма широком смысле.
CASE-технология представляет собой методологию проектирования ИС, а также набор инструментальных средств, позволяющих в наглядной форме моделировать предметную область, анализировать эту модель на всех этапах разработки и сопровождения ИС и разрабатывать приложения в соответствии с информационными потребностями пользователей.
Успешное внедрение CASE-средств должно обеспечить такие выгоды как:
· высокий уровень технологической поддержки процессов разработки и сопровождения ПО;
· положительное воздействие на некоторые или все из перечисленных факторов: производительность, качество продукции, соблюдение стандартов, документирование;
· приемлемый уровень отдачи от инвестиций в CASE-средства.
ПОСТАНОВКА ЗАДАЧИ
Требуется разработать средствами Rational Rose модель встроенной системы управления работой телевизора.
В телевизоре имеются следующие устройства: приемник телевизионного сигнала, устройство отображения картинки, память каналов, память настроек, управляющие кнопки, пульт дистанционного управления (ДУ). Управление телевизором осуществляется при помощи кнопок на корпусе (их четыре: «ВКЛ / ВЫКЛ», « – », « + », кнопка начальной установки) и пульта ДУ. Кнопка «ВКЛ / ВЫКЛ» позволяет включать и выключать телевизор. После включения телевизора на экран отображается передача, идущая по каналу №1, при этом используются параметры изображения и значение громкости, сохраненные в памяти настроек. Память каналов телевизора хранит до 60 каналов. Каналы нумеруются, начиная с нуля. Последовательное переключение каналов осуществляется при помощи кнопок «–» и «+». Нажатие на «+» переключает телевизор на канал с номером, на единицу большим (с 59-го канала телевизор переключается на 0-ой). Нажатие на «–» переключает телевизор на канал с номером, на единицу меньшим (с 0-го канала телевизор переключается на 59-ый). При нажатии на кнопку начальной установки очищается память каналов телевизора, после чего осуществляется поиск передач и сохранение их частот в памяти каналов. Поиск начинается с нижней границы рабочего диапазона телевизора. На экран телевизора выводится «синий экран». Рабочая частота постепенно увеличивается до тех пор, пока приемник не обнаружит телевизионный сигнал. Найденная передача выводится на экран в течение 10 секунд. Затем поиск продолжается до тех пор, пока не достигнута верхняя граница диапазона, или пока не заполнена вся память каналов.
Телевизор принимает управляющие сигналы с пульта ДУ. На пульте ДУ расположены следующие кнопки:
– кнопки с цифрами «0»...«9» для прямого переключения канала (по номеру);
– кнопки «П–» и «П+» для последовательного переключения каналов;
– кнопки «Г–» и «Г+» для изменения громкости;
– кнопки «МЕНЮ», « » и « » для доступа к экранному меню.
Для прямого переключения на нужный канал его номер набирается с помощью кнопок с цифрами. После нажатия первой цифры в течение 5 секунд ожидается нажатие второй. Если вторая цифра не была нажата, то номер канала считается состоящим из одной цифры и осуществляется переключение на него.
Кнопки «П–» и «П+» на пульте имеют те же функции, что и кнопки «-» и «+» на корпусе телевизора. Кнопки «Г–» и «Г+» позволяют увеличивать или уменьшать громкость. Каждое нажатие на «Г–» уменьшает громкость на одну единицу, пока она больше нуля, «Г+» увеличивает громкость на единицу, пока не достигнуто максимальное значение. Текущее значение громкости сохраняется в памяти настроек.
Кнопки «МЕНЮ», «» и «» позволяют устанавливать значения настоек, хранящихся в памяти телевизора. При нажатии на кнопку «МЕНЮ» внизу экрана возникает надпись «ЯРКОСТЬ» и полоса, отображающая текущее значение яркости. Кнопками «» и «» яркость можно уменьшить или увеличить. При работе с меню нажатия на все остальные кнопки игнорируются. После повторного нажатия на кнопку «МЕНЮ» значение яркости запоминается в памяти настроек, и осуществляется переход к настройке контрастности. Настройка контрастности и остальных параметров (четкости, цветовой гаммы) происходит аналогично. Нажатие на кнопку «МЕНЮ» по окончании настройки цветовой гаммы (последнего пункта меню) приводит к окончанию работы с меню.
ГЛОССАРИЙ ПРОЕКТА
TVScreen | Экран телевизора, на который выводится изображение |
TVButtons | Кнопки на корпусе телевизора (Вкл/Выкл, кнопка сброса настроек) |
TVReceiver | Приемник телевизионного сигнала |
TVConsole | Пульт дистанционного управления телевизором – кнопки с цифрами «0»...«9» для прямого переключения канала (по номеру); – кнопки «П–» и «П+» для последовательного переключения каналов; – кнопки «Г–» и «Г+» для изменения громкости; – кнопки «МЕНЮ», « » и « » для доступа к экранному меню. |
ChannelMemory | Запоминающее устройство телевизора, используемое для хранения каналов |
SettingsMemory | Запоминающее устройство телевизора, используемое для хранения настроек яркости, контрастности, четкости и цветовой гаммы |
МОДЕЛЬ ВАРИАНТОВ ИСПОЛЬЗОВАНИЯ
Варианты использования предназначены в первую очередь для определения функциональных требований к системе и управляют всем процессом разработки. Все основные виды деятельности такие как анализ, проектирование, тестирование выполняются на основе вариантов использования. Во время анализа и проектирования варианты использования позволяют понять как результаты, которые хочет получить пользователь влияют на архитектуру системы и как должны себя вести компоненты системы, для того чтобы реализовать нужную для пользователя функциональность.
Рисунок 1 - Диаграмма вариантов использования
АНАЛИЗ ВАРИАНТОВ ИСПОЛЬЗОВАНИЯ
Вариант использования Просмотр телевизора
Описывает процесс просмотра телевизора. Данный вариант использования начинает выполняться, когда пользователь включает телевизор.
Основной поток событий
1. Пользователь включает телевизор.
2. На экран телевизора выводится передача, идущая по каналу №1.
3. Настройки громкости и цветопередачи берутся из памяти.
Вариант использования Переключение канала
Описывает переключение каналов пользователем. Начинает выполняться, когда пользователь хочет переключить канал телевизора. Переключение осуществляется цифровыми клавишами на пульте управления (0..9) или клавишами «Следующий канал» и «Предыдущий канал».
Основной поток событий
1. Пользователь нажимает на кнопку нужного канала.
2. Система проверяет правильность ввода (номер канала должен лежать в диапазоне от 0 до 59)
3. На экран телевизора выводится передача, идущая по выбранному каналу.
Альтернативные потоки
Нажатие кнопки «Следующий канал»
1. Пользователь нажимает кнопку «Следующий канал»
2. Система проверяет значение текущего канала и переключает его на следующий.
3. Если значение канала больше 59, то происходит переключение на канал №0
Нажатие кнопки «Предыдущий канал»
1. Пользователь нажимает кнопку «Предыдущий канал»
2. Система проверяет значение текущего канала и переключает его на предыдущий.
3. Если значение канала меньше 0, то происходит переключение на канал №59
Введенный номер канала выходит за пределы допустимых значений
Если введенный номер канала выходит за пределы допустимых значений, то переключение канала телевизора не происходит.
Вариант использования Изменение громкости
Описывает изменение громкости телевизора пользователем. Данный вариант использования начинает выполняться, когда пользователь желает изменить громкость. Изменение громкости осуществляется кнопками «Г+» и «Г-» для увеличения и уменьшения громкости соответственно.
Основной поток событий
1. Пользователь нажимает на кнопку «Г+».
2. Система проверяет текущее значение громкости.
3. Если значение громкости не превышает максимального значения, то происходит увеличение громкости.
Альтернативные потоки
Нажатие кнопки «Г-»
1. Пользователь нажимает на кнопку «Г-».
2. Система проверяет текущее значение громкости.
3. Если значение громкости больше минимального значения, то происходит уменьшение громкости
Вариант использования Изменение настроек
Описывает изменение настроек телевизора пользователем. Данный вариант использования начинает выполняться, когда пользователь хочет изменить настройки телевизора. Изменение настроек осуществляется кнопками “” и ””. Предварительно нажимается кнопка «Меню» для вывода на экран меню настроек.
Основной поток событий
1. Пользователь нажимает кнопку «Меню».
2. Система проверяет текущее значение яркости и выводит его на экран.
3. Кнопками “” и ”” пользователь регулирует яркость.
4. Пользователь нажимает кнопку «Меню».
5. Система проверяет текущее значение контрастности и выводит его на экран.
6. Кнопками “” и ”” пользователь регулирует яркость.
7. Пользователь нажимает кнопку «Меню».
8. Система проверяет текущее значение четкости и выводит его на экран.
9. Кнопками “” и ”” пользователь регулирует четкость.
10. Пользователь нажимает кнопку «Меню».
11. Система проверяет текущее значение цветовой гаммы и выводит его на экран.
12. Кнопками “” и ”” пользователь регулирует цветовую гамму.
Альтернативные потоки
Значение параметра выходит за допустимые пределы
Если значение параметра выходит за допустимые пределы, то изменение данного параметра не производить.
Вариант использования Сканирование каналов
Описывает поиск передач и сохранение их частот в памяти каналов. Данный вариант использования начинает выполняться, когда пользователь хочет осуществить поиск телепередач. Поиск передач начинается после нажатия кнопки Начальной установки.
Основной поток событий
1. Пользователь нажимает кнопку Начальной установки
2. Начинается поиск телепередач, на экран выводится «синий экран»
3. Рабочая частота постепенно увеличивается до тех пор, пока не обнаружит телевизионный сигнал. Найденная передача выводится на экран в течение 10 секунд.
4. Поиск продолжается пока не заполнена вся память каналов.
ПРОЕКТИРОВАНИЕ СИСТЕМЫ
Иерархия классов системы
Рисунок 2 - Иерархия классов системы
Описание классов
Класс TVScreen
Реализует функции дисплея телевизора.
Включает в себя такие методы как:
1. OutputTVSignal(int) – вывод ТВ сигнала на монитор.
2. DisplayMenu() – вывод «Меню» на экран телевизора.
3. DisplayVolumeState(int) – вывод на экран текущего значения громкости.
Класс TVButtons
Реализует функции кнопок на корпусе телевизора.
Включает в себя такие методы как:
1. IntPowerOnOffButton() – обработать нажатие кнопки включения/выключения телевизора.
Класс TVReceiver
Реализует функции приемника телевизионного сигнала.
Включает в себя такие методы как:
1. ReceiveTVSignal(int) – принять телевизионный сигнал.
2. IntChannelScan() – поиск телевизионных каналов.
Класс ChannelMemory
Реализует функции памяти каналов телевизора.
Включает в себя такие методы как:
1. SaveChannels() – сохранить частоты каналов в память телевизора
2. ClearSettings() – очистить память каналов телевизора.
Класс TVController
Реализует главный управляющий блок телевизора.
Включает в себя такие методы как:
1. OpenChannel(int) – переключить на выбранный пользователем канал.
2. SetVolume(int) – установить значение громкости.
3. Menu() – послать сообщение на вывод «Меню».
4. PowerOnOff() – включить/выключить телевизор.
5. FirstSetup() – послать сообщение на поиск телепередач.
Класс TVConsole
Реализует функции пульта дистанционного управления.
Включает в себя такие методы как:
1. IntDigitalButton() – обработать нажатие цифровых кнопок (0..9).
2. IntMoreLessVolumeButton() – обработать нажатие кнопок увеличения/уменьшения громкости.
3. IntPrevNextChannelButton() – обработать нажатие кнопок следующий/предыдущий канал.
4. IntMenuButton() – обработать нажатие кнопки «Меню».
5. IntDefaultSettingsButton() – обработать нажатие кнопки Начальной установки.
Класс SettingsMemory
Реализует функции памяти настроек телевизора.
Включает в себя такие методы как:
1. SaveSettings() – сохранить настройки яркости / контрастности / четкости / цветовой гаммы в память телевизора.
2. LoadSettings() – загрузить параметры яркости / контрастности / четкости / цветовой гаммы из памяти телевизора.
3. ClearSettings() – восстановить значения яркости / контрастности / четкости / цветовой гаммы по умолчанию.
Диаграмма классов
Диаграмма классов описывает структуру системы, показывая её классы, их атрибуты и операторы, и также взаимосвязи этих классов.
Рисунок 3 - Диаграмма классов
Диаграмма кооперации
Диаграмма кооперации предназначена для описания поведения системы на уровне отдельных объектов, которые обмениваются между собой сообщениями, чтобы достичь нужной цели или реализовать некоторый вариант использования.
Рисунок 4 - Диаграмма кооперации
Диаграмма состояний
Диаграмма состояний описывает возможные последовательности состояний и переходов, которые в совокупности характеризуют поведение моделируемой системы в течение всего ее жизненного цикла. Диаграмма состояний представляет динамическое поведение сущностей, на основе спецификации их реакции на восприятие некоторых конкретных событий.
Рисунок 5 - Диаграмма состояний
РЕАЛИЗАЦИЯ СИСТЕМЫ
Диаграмма компонентов.
Диаграмма компонентов применяется для моделирования статического вида системы с точки зрения реализации. Сюда относится моделирование физических сущностей, развернутых в узле, например исполняемых программ, библиотек, таблиц, файлов и документов.
телевизор программный проектирование настройка
Рисунок6 - Диаграммакомпонентов
Генерация кода
ChannelMemory.cpp
#include ChannelMemory.h
//##ModelId=4930347402CE
bool ChannelMemory::SaveChannels()
{
}
//##ModelId=4947C0C900FA
ChannelMemory::ClearSettings()
{
}
ChannelMemory.h
#ifndef CHANNELMEMORY_H_INCLUDED_B6AEDCE5
#define CHANNELMEMORY_H_INCLUDED_B6AEDCE5
//##ModelId=4930341A0232
//##Documentation
//## Устанавливаетсявтелевизоре
class ChannelMemory
{
public:
//##ModelId=4930347402CE
//##Documentation
//## Сохраняетканал
bool SaveChannels();
//##ModelId=4947C0C900FA
ClearSettings();
};
#endif /* CHANNELMEMORY_H_INCLUDED_B6AEDCE5 */
SettingsMemory.cpp
#include SettingsMemory.h
//##ModelId=49441168035B
bool SettingsMemory::SaveSettings()
{
}
//##ModelId=4944118303A9
int SettingsMemory::LoadSettings()
{
}
//##ModelId=4947C0D40186
SettingsMemory::ClearSettings()
{
}
SettingsMemory.h
#ifndef SETTINGSMEMORY_H_INCLUDED_B6AEB25E
#define SETTINGSMEMORY_H_INCLUDED_B6AEB25E
//##ModelId=4944114C03C8
class SettingsMemory
{
public:
//##ModelId=49441168035B
bool SaveSettings();
//##ModelId=4944118303A9
int LoadSettings();
//##ModelId=4947C0D40186
ClearSettings();
};
#endif /* SETTINGSMEMORY_H_INCLUDED_B6AEB25E */
TVButtons.cpp
#include TVButtons.h
//##ModelId=494B86E901B5
TVButtons::PowerOnOffButton()
{
}
TVButtons.h
#ifndef TVBUTTONS_H_INCLUDED_B6AEBEB2
#define TVBUTTONS_H_INCLUDED_B6AEBEB2
//##ModelId=4947BF1F0261
class TVButtons
{
public:
//##ModelId=494B86E901B5
PowerOnOffButton();
};
#endif /* TVBUTTONS_H_INCLUDED_B6AEBEB2 */
TVConsole.cpp
#include TVConsole.h
//##ModelId=493031890167
int TVConsole::DigitalButton(int ButtonNumber)
{
}
//##ModelId=494B88DF0119
int TVConsole::MoreLessVilumeButton(int Volume)
{
}
//##ModelId=494B88F20148
int TVConsole::PrevNextChannelButton(int Channel)
{
}
//##ModelId=494B8918033C
int TVConsole::MenuButton()
{
}
//##ModelId=494B893D038A
int TVConsole::DefaultSettingsButton()
{
}
TVConsole.h
#ifndef TVCONSOLE_H_INCLUDED_B6AE884F
#define TVCONSOLE_H_INCLUDED_B6AE884F
//##ModelId=4930314B03C8
//##Documentation
//## Пульт управления
class TVConsole
{
public:
//##ModelId=493031890167
int DigitalButton(int ButtonNumber);
//##ModelId=494B88DF0119
int MoreLessVilumeButton(int Volume);
//##ModelId=494B88F20148
int PrevNextChannelButton(int Channel);
//##ModelId=494B8918033C
int MenuButton();
//##ModelId=494B893D038A
int DefaultSettingsButton();
};
#endif /* TVCONSOLE_H_INCLUDED_B6AE884F */
TVController.cpp
#include TVController.h
//##ModelId=4951639A03A9
bool TVController::OpenChannel(int ChannelNumber)
{
}
//##ModelId=4951639A03AB
bool TVController::SetVolume(Integer Volume)
{
}
//##ModelId=4951639A03AD
TVController::Menu()
{
}
//##ModelId=4951639A03B9
bool TVController::PowerOnOff()
{
}
//##ModelId=4951639A03BA
TVController::FirstSetup()
{
}
TVController.h
#ifndef TVCONTROLLER_H_INCLUDED_B6AE96AB
#define TVCONTROLLER_H_INCLUDED_B6AE96AB
//##ModelId=4951638D02BF
class TVController
{
public:
//##ModelId=4951639A03A9
bool OpenChannel(int ChannelNumber);
//##ModelId=4951639A03AB
bool SetVolume(Integer Volume);
//##ModelId=4951639A03AD
Menu();
//##ModelId=4951639A03B9
bool PowerOnOff();
//##ModelId=4951639A03BA
FirstSetup();
};
#endif /* TVCONTROLLER_H_INCLUDED_B6AE96AB */
TVReceiver.cpp
#include TVReceiver.h
//##ModelId=493033FA00BB
bool TVReceiver::ReceiveTVSignal(int ChannelNumber)
{
}
//##ModelId=4947C118000F
int TVReceiver::ChannelScan()
{
}
TVReceiver.h
#ifndef TVRECEIVER_H_INCLUDED_B6AE952B
#define TVRECEIVER_H_INCLUDED_B6AE952B
//##ModelId=493033CE006D
class TVReceiver
{
public:
//##ModelId=493033FA00BB
//##Documentation
//## Принимает ТВ сигнал
bool ReceiveTVSignal(int ChannelNumber = 1);
//##ModelId=4947C118000F
int ChannelScan();
};
#endif /* TVRECEIVER_H_INCLUDED_B6AE952B */
TVScreen.cpp
#include TVScreen.h
//##ModelId=493031280261
bool TVScreen::OutputTVSignal(int ChannelNumber)
{
}
//##ModelId=49453D82007D
TVScreen::DisplayMenu()
{
}
//##ModelId=49453DF1033C
TVScreen::DisplayVolimeState()
{
}
TVScreen.h
#ifndef TVSCREEN_H_INCLUDED_B6AE8410
#define TVSCREEN_H_INCLUDED_B6AE8410
//##ModelId=493030A8004E
//##Documentation
//## Устанавливается на телевизоре
classTVScreen
{
public:
//##ModelId=493031280261
bool OutputTVSignal(int ChannelNumber = 1);
//##ModelId=49453D82007D
DisplayMenu();
//##ModelId=49453DF1033C
DisplayVolimeState();
};
#endif /* TVSCREEN_H_INCLUDED_B6AE8410 */
ЗАКЛЮЧЕНИЕ
Разработав модель и специфицировав ее на языке UML, разработчик имеет все основания быть понятым и по достоинству оцененным своими коллегами. При этом могут быть исключены ситуации, когда тот или иной разработчик применяет свою собственную графическую нотацию для представления тех или иных аспектов модели, что практически исключает ее понимание другими специалистами в случае нетривиальности исходной модели.
Последующая разработка модели системы, направленная на решение определенных проблем, может потребовать привлечения знаний из различных дисциплин. С этой точки зрения язык UML может быть использован не только для унификации представлений этих знаний, но что не менее важно - для их интеграции, направленной на повышение адекватности много-модельных представлений сложных систем.
Возможно со временем язык UML станет тем эсперанто, на котором смогут общаться математики, системные аналитики, физики, программисты, менеджеры, экономисты и специалисты других профессий, представляя свои профессиональные знания в унифицированном виде. Ведь, по существу, каждый из специалистов оперирует модельными представлениями в своей области знаний. И именно этот модельный аспект может быть специфицирован средствами языка UML.
В связи с этим значение языка UML существенно возрастает, поскольку он все более приобретает черты языка представления знаний. При этом наличие в языке UML изобразительных средств для представления структуры и поведения модели позволяет достичь адекватного представления декларативных и процедурных знаний и, что не менее важно, установить между этими формами знаний семантическое соответствие. Все эти особенности языка UML позволяют сделать вывод о том, что он имеет самые серьезные перспективы уже в ближайшем будущем.
СПИСОК ЛИТЕРАТУРЫ
1. Черемных С.В., Ручкин В.С., Семенов И.О. Структурный анализ систем. IDEF-технологии - М.: Финансы и статистика, 2001
2. Смирнова Г.Н.,Сорокин А.А., Тельнов Ю.Ф. Проектирование экономических информационных систем. Учебник - М.: «Финансы и статистика», 2002
3. Маклаков С.В. Создание информационных систем с AllFusion Modelling Suite - М.: Диалог-МИФИ, 2003
4. Буч Г. Объектно-ориентированное проектирование с примерами применения - М.: Конкорд, 1992
5. Нейбург Э. Д., Максимчук Р.А. Проектирование баз данных с помощью UML - М.: Издательский дом «Вильямс», 2002
6. Вендров А.М. Проектирование программного обеспечения экономических информационных систем - М: «Финансы и статистика», 2000
7. Колтунова Е. Требования к информационной системе и модели жизненного цикла Автоматизированные Системы Стадии создания. ГОСТ 34.601-90. Комплекс стандартов на автоматизированные системы - ИПК издательство стандартов. 1997
8. Буч Г., Рамбо Д., Джекобсон А. Язык UML. Руководство пользователя: Пер. с англ. - М.: ДМК, 2000
9. Козленко Л. Проектирование информационных систем.
10. Смирнова Г.Н., Сорокин А.А., Тельнов Ю.Ф. Проектирование экономических информационных систем - М.: Финансы и статистика, 2002
11. Кондратьев В.В., Краснова В.Б. Модульная программа для менеджеров. Реструктуризация управления компанией - М.: Инфра-М, 2000
12. Калянов Г.Н. Теория и практика реорганизации бизнес-процессов - М.: СИНТЕГ, 2000
13. Калянов Г.Н. Структурный системный анализ - М.: Лори, 1996