ТЕХНОЛОГИЯ РАЗРАБОТКИ ПРИКЛАДНОГО ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ
Соловьев С. В., Цой Р. И., Гринкруг Л. С.,
Определение. Этапы развития
Прикладной называют программу для решения конкретной задачи пользователя.
С развитием компьютерных технологий были выделены наборы взаимосвязанных задач, которые требовалось решать в интересах определенных групп пользователей. Естественно было объединить прикладные программы связанных задач в комплекс программ, разработать такой комплекс централизованно и поставлять его отдельным пользователям и заинтересованным организациям. С конца 1960-х годов многофункциональные комплексы взаимосвязанных программ стали называть пакетами прикладных программ (ППП).
Формальной границы между прикладной программой и ППП нет, поскольку любой ППП можно рассматривать как прикладную программу. По мере разработки все большего числа прикладных программ появлялись и новые определения того, что следует понимать под пакетом программ.
Вместе с тем концепция ППП, переход от отдельных программ к пакетам - это переход к новому качеству прикладного программного обеспечения (ПО).
Рассмотрим концепцию ППП на примере программ для решения расчетных задач. Все многообразие прикладного ПО можно разделить на два больших класса: «расчетчики» и «анализаторы».
Расчетными будем называть задачи, в которых входные и выходные данные являются числовыми, решение задачи получается в результате применения математических методов. К расчетным задачам можно отнести выполнение расчетов по формулам, решение систем линейных и нелинейных уравнений, численное дифференцирование и интегрирование, определение экстремумов функций и т.п.
Исходные данные для решения расчетной задачи могут задаваться или все сразу в начале выполнения программы, или поступать порциями (записями, сообщениями).
Решение многих расчетных задач укладывается в типовую схему, включающую последовательные шаги ввода исходных данных, выполнения вычислений и вывода результатов. В ряде случаев решение расчетных задач сводится к последовательному применению нескольких алгоритмов (программ). Например, при решении систем обыкновенных дифференциальных уравнений может потребоваться сначала провести расчет начальных условий и коэффициентов уравнений, а затем вычислить обобщенные характеристики исследуемого процесса по заданным формулам.
Можно выделить несколько типовых подходов к организации применения ЭВМ для решения расчетных задач. Эти подходы, рассматриваемые в историческом плане, можно считать этапами развития ППП:
1. При возникновении потребности в решении конкретной задачи составляется и отлаживается программа или несколько последовательно выполняемых программ. Для программирования используется один из универсальных языков программирования (Basic, Pascal, Fortran, С, C++, Assembler и т.д.).
2. Заранее составляются подпрограммы реализации типовых шагов алгоритмов, например, для реализации методов численного анализа, преобразования форм представления данных и т.п. Такие готовые подпрограммы накапливаются в форме исходных или объектных модулей в библиотеке. При составлении прикладной программы в нее включаются обращения к библиотечным подпрограммам. Сами библиотечные подпрограммы присоединяются к прикладной программе в процессе трансляции (исходные модули) или при редактировании связей (объектные модули).
Библиотеку готовых подпрограмм уже можно рассматривать как ППП, используемый совместно с прикладной программой.
3. Для совокупности родственных задач разрабатывается ППП, охватывающий некоторую предметную область. Здесь ППП - это совокупность программных модулей, между которыми установлены связи по управлению и по данным в соответствии с решаемой прикладной задачей. Модули пакета могут объединяться в программы, а программы - использовать общие файлы данных. Для запуска программ пакета в нужной последовательности могут использоваться средства операционной системы. Для решения новой прикладной задачи нужно готовить соответствующие исходные данные и разрабатывать последовательность обращений к операционной системе (ОС) для выполнения программ пакета в требуемой последовательности.
4. Дальнейшим развитием ППП стало построение пакетов с собственным языком управления - входным языком пакета (ВЯ). От пользователя требуется составление описания задачи, которую требуется решить на ВЯ пакета и подготовка необходимых данных. Для запуска такого пакета обычно требуются минимальные сведения об используемой ОС.
Перечисленные выше четыре подхода к применению ЭВМ предполагают различную квалификацию пользователей.
Для реализации первого подхода требуется знание языка программирования, языка управления ОС и знание прикладной предметной области. То есть первый подход типичен для специалиста в области прикладного программирования.
Это в полной мере относится и ко второму подходу, где применение библиотек подпрограмм обеспечивает повышение производительности труда прикладного программиста.
В третьем подходе функции прикладного программиста и пользователя пакета разделены. Прикладной программист разрабатывает пакет программ, для чего обычно требуется более высокий уровень квалификации, чем для разработки отдельных программ. От пользователя пакета требуются знание правил применения пакета и квалификация в той предметной области, к которой относятся задачи, решаемые с применением пакета, а также ограниченные сведения об используемой ОС.
Четвертый подход требует от пользователя пакета еще меньшей квалификации в области программирования, для него достаточно изучить сравнительно несложный входной язык пакета.
В настоящее время термин «пакет прикладных программ» применяется к комплексам программ различной сложности и назначения. Отметим, что наряду с этим термином все чаще используются понятия программного приложения или информационно-вычислительной системы.
ППП - это совокупность совместимых программ для решения задач определенного класса. ППП всегда ориентируется на пользователей определенной квалификации, как в программировании, так и в области, к которой относятся задачи, решаемые с применением этого ППП.
Совместимость программ, составляющих ППП, означает возможность их взаимного использования, общность структуры управляющих данных и используемых информационных массивов. Кроме того, ППП следует рассматривать как самостоятельное программное изделие, как особый вид прикладного ПО.Исходя из определения, можно выделить некоторые общие свойства ППП:
1. Пакет состоит из нескольких программных единиц.
2. Пакет предназначен для решения определенного класса задач, и в пределах своего класса обладает определенной универсальностью, т.е. позволяет решать большинство задач этого класса.
3. Пакет допускает настройку на конкретные условия применения, т.е. в пакете предусмотрены средства управления, позволяющие выбирать конкретные возможности из числа предусмотренных.
4. Пакет разработан с учетом возможности его использования за пределами той организации, в которой он создан, и удовлетворяет общим требованиям к программному изделию:
соответствует существующим стандартам;
снабжается пользовательской документацией;
допускает возможность послепродажного обслуживания;
имеет установленную цену;
документация и способы применения пакета ориентированы на пользователя, имеющего определенный уровень квалификации в той области знаний, к которой относятся решаемые пакетом задачи.
Поскольку ППП предназначен для решения задач определенного класса, можно говорить о функциональном назначении пакета.
Классификация ППП
Классификация ППП по их функциональному назначению приведена на рис. 1
Рис. 1. Классификация пакетов прикладных программ
Рассмотрим каждый пакет подробнее.
ППП общего назначения
Данный класс содержит широкий перечень программных продуктов, поддерживающих преимущественно информационные технологии конечных пользователей. Кроме конечных пользователей этими программными продуктами, за счет встроенных средств технологии программирования, могут пользоваться и программисты для создания программ обработки данных.
Представители данного класса программных продуктов:
1. Настольные системы управления базами данных (СУБД), обеспечивающие организацию и хранение локальных баз данных на автономно работающих компьютерах, либо централизованное хранение баз данных на файл-серверах и сетевой доступ к ним.
В настоящее время наиболее широко представлены реляционные СУБД для персональных компьютеров, осуществляющие:
• работу с базой данных через экранные формы;
• организацию запросов на поиск данных с помощью специальных языков запросов высокого уровня, например, SQL (Structured Query Language);
• генерацию отчетов различной структуры данных с подведением промежуточных и окончательных итогов;
• вычислительную обработку путем выполнения встроенных функций, программ, написанных с использованием языков программирования и макрокоманд.
Пользовательские приложения (прикладные, программы), функционирующие в среде СУБД, создаются по типу меню работы конечного пользователя, каждая команда которого обеспечивает автоматизированное выполнение определенной функции.
В современных СУБД содержатся элементы CASE-технологии процесса проектирования, в частности:
• визуализирована схема баз данных, позволяющая пользователю в диалоговом режиме создавать таблицы, формы, запросы, отчеты и макросы;
• осуществлена автоматическая поддержка целостности баз данных при различных видах обработки (включение, удаление или модификация данных баз данных);
• предоставляются мастера, автоматизирующие процесс проектирования (режим «конструктор») - мастер таблиц, мастер форм, мастер отчетов, построитель меню и т.д.;
• наличие собственного языка программирования.
Все это свидетельствует о расширении функциональных возможностей СУБД как инструментального средства для создания приложений (dBase, Clipper, FoxPro, Approach, Paradox, Access).
2. Серверы баз данных - успешно развивающийся вид программного обеспечения, предназначенный для создания и использования при работе в сети интегрированных баз данных в архитектуре клиент-сервер, в сети Интернет.
Многопользовательские СУБД (Paradox, Access, FoxPro и др.) в сетевом варианте обработки данных хранят информацию на файл-сервере - специально выделенном компьютере в централизованном виде, но сама обработка данных ведется на рабочих станциях. Серверы баз данных, напротив, всю обработку (хранение, поиск, извлечение и передачу данных клиенту) данных выполняют самостоятельно, одновременно обеспечивая данными большое число пользователей сети.
Общим для различных видов серверов баз данных является использование реляционного языка для реализации запросов к данным.
Большинство серверов баз данных может использовать одновременно несколько платформ (Windows NT, Unix, OS/2 и др.) и поддерживать широкий спектр протоколов передачи данных (IPX, TCP/IP, X.25 и др.).
Некоторые серверы реализуют распределенное хранение информации в сети, поддерживают интерфейсы на уровне вызова типа:
• ODBC - Open Data Base Connectivity для доступа к разнородным базам данных;
• DAL - Data Access Language для создания запроса на выборку данных, распределенных в сети;
• SAG/CLI - SQL Access Group/ Call Level Interface для распределенных запросов и др.
Самой большой проблемой применения серверов баз данных являются обеспечение целостности (непротиворечивости) баз данных, решение вопроса, связанного с дублированием (тиражированием) данных по узлам сети и их синхронным обновлением (MS SQL Server, Oracle Internet Application Server).
3. Генераторы (серверы) отчетов - самостоятельное направление развития программных средств, обеспечивающих реализацию запросов и формирование отчетов в печатном или экранном виде в условиях сети с архитектурой клиент-сервер.
Сервер отчетов подключается к серверу баз данных, используя все уровни передач и драйверы сервера баз данных. Серверы отчетов включают:
• программы планирования - учет времени для формирования отчетов по требованию пользователей, составление расписания выдачи и распространения отчетов по сети;
• программы управления очередью запросов на формирование отчетов;
• программы ведения словаря пользователей для разграничения доступа к сформированным отчетам;
• программы ведения архивов отчетов и др.
Подготовленные отчеты рассылаются клиентам по электронной почте или с помощью другого транспортного агента. Серверы отчетов обычно поддерживают разнородные платформы, тем самым они эффективно работают в неоднородных вычислительных сетях (Crystal Report, Report Smith).
4. Текстовые процессоры (текстовые редакторы) - пакеты прикладных программ для подготовки текстовых документов; предоставляют возможности автоматического форматирования документов, вставки рисованных объектов, графики, формул, составления оглавлений и указателей, проверки орфографии, шрифтового оформления, подготовки шаблонов документов и т.п. (MS Word, Corel Word Perfect, Chi Writer, ЛЕКСИКОН).
Развитием данного направления программных продуктов являются настольные издательские системы.
5. Табличные процессоры (электронные таблицы) - предназначены для хранения данных в двумерной табличной форме и работы с этими данными: вычисления по формулам, решение задач оптимизации, статистическая обработка данных, построение диаграмм и графиков, создание простых баз данных и т.д. (MS Excel, Lotus 1-2-3, Quattro Pro, Super Calc).
6. Графические редакторы - предназначены для обработки графических документов, включая иллюстрации, фотографии, диаграммы, чертежи, схемы (MS Paint, MS PhotoDraw, Photo Paint Shop Pro, Adobe Photoshop, Corel Draw, Macromedia Freehand, 3D Studio Max, VISIO Pro, Smart Draw).
7. Средства презентационной графики - специализированные программы, предназначенные для подготовки мультимедиа-презентаций (слайд-фильмов), состоящих из нескольких слайдов, на которых размещаются рисунки, таблицы, графики, диаграммы, текстовая информация. Их показ может сопровождаться звуковыми эффектами, анимацией (MS Power Point, Adobe Persuasion, Lotus Freelance Graphics, Gold Disk Astound, Novell Presentations, Harvard Graphics).
8. Интегрированные пакеты - набор нескольких программных продуктов, функционально дополняющих друг друга, поддерживающих единые информационные технологии, реализованные на общей вычислительной и операционной платформе.
Наиболее распространены интегрированные пакеты, компонентами которых являются:
• СУБД;
• текстовый редактор;
• табличный процессор;
• органайзер;
• средства поддержки электронной почты;
• программы создания презентаций;
• графический редактор.
Отличительными особенностями данного класса программных средств являются:
• полнота информационных технологий для конечных пользователей;
• однотипный интерфейс конечного пользователя для всех программ, входящих в состав интегрированного пакета;
• общий сервис для программ интегрированного пакета (словарь и средства орфографии для проверки правописания, построитель диаграмм и др.);
• легкость обмена и ссылок на объекты, созданные программами интегрированного пакета (применяется два метода: DDE -динамический обмен данными и OLE - динамическая компоновка объектами), единообразный перенос объектов (метод drag-and-drop);
• наличие единой языковой платформы для разработки макрокоманд, пользовательских программ;
• возможность создания документов, интегрирующих в себе возможности различных программ, входящих в состав интегрированного пакета (MS Office, MS Works, MS Suite 2000, Lotus SmartSuite, Perfect Office, Star Office, Claris Works).
Офисные ППП
Данный класс программных продуктов охватывает программы, обеспечивающие организационное управление деятельностью офиса.
1. Органайзеры (планировщики, личные информационные системы) - программное обеспечение для планирования рабочего времени, бюджета, учета расходов, составления протоколов встреч, расписаний, ведения записной и телефонной книжки (Lotus Organizer, MS Money, MS Outlook, Daily Journal, Day-Timer Organizer, Any Time).
2. Программы переводчики, средства проверки орфографии и распознавания текста включают:
• программы переводчики, предназначенные для создания подстрочника исходного текста на указанном языке;
• словари орфографии, используемые при проверке текстов;
• словари синонимов, используемые для стилевой правки текстов;
• программы для распознавания считанной сканерами информации и преобразования в текстовое представление (OCR - программы).
3. Справочные базы данных и информационно-поисковые системы.
4. Коммуникационные ППП - предназначены для организации взаимодействия пользователя с удаленными абонентами или информационными ресурсами сети.
В условиях развития глобальной информационной сети Internet появился новый класс программного обеспечения - браузеры, средства создания WWW страниц. Они различаются возможностями поддержки языка HTML, использованием цвета при оформлении фона, текста, форматирование текста, использованием графических форматов изображений, таблиц, фонового звука, мультипликации и т.п. Большинство браузеров использует язык Java (MS Internet Explorer, Netscape Navigator, Opera).
Проблемно-ориентированные ППП
Это класс программных продуктов, внутри которого проводится классификация по следующим признакам:
• типам предметных областей;
• информационным системам;
• функциям и комплексам задач, реализуемым программным способом, и др.
Основные тенденции в области развития проблемно-ориентированных программных средств:
• создание программных комплексов в виде автоматизированных рабочих мест (АРМ) управленческого персонала;
• создание интегрированных систем управления предметной областью на базе вычислительных сетей, объединяющих АРМы в единый программный комплекс с архитектурой клиент-сервер;
• организация данных больших информационных систем в виде распределенной базы данных на сети ЭВМ;
• наличие простых языковых средств конечного пользователя для запросов к базе данных;
• настройка функций обработки силами конечных пользователей;
• защита программ и данных от несанкционированного доступа.
Для подобного класса программ предъявляются высокие требования к оперативности обработки данных.
Для данного класса программных продуктов важно создание дружественного интерфейса для конечных пользователей.
Данный класс программных продуктов весьма динамичен как по составу реализуемых ими функций, так и по используемому для их создания инструментарию разработчика.
ППП автоматизированного проектирования
Программы этого класса (Computer Aided Design, CAD - программы) предназначены для поддержания работы конструкторов и технологов, связанных с разработкой чертежей, схем, диаграмм, графическим моделированием и конструированием.
Отличительной особенностью этого класса программных продуктов являются высокие требования к технической части системы обработки данных, наличие библиотек встроенных функций, библиотек стандартных элементов чертежей объектов, интерфейсов с графическими системами и базами данных.
ПО САПР включает следующие виды обеспечений: математическое, лингвистическое, информационное, программное, техническое, методическое и организационное.
Методо-ориентированные ППП
Данный класс включает программные продукты, обеспечивающие, независимо от предметной области и функций информационных систем, математические, статистические и другие методы решения задач.
Наиболее распространены методы математического программирования, имитационного моделирования, исследования операций (MathLab, MathCAD, Mathematica, Statistica, Statgraphics Plus).
Настольные издательские системы
Данный класс программ включает ППП, обеспечивающие информационную технологию компьютерной издательской деятельности:
• форматирование и редактирование текстов;
• автоматическую разбивку текста на страницы;
• создание заголовков;
• компьютерную верстку печатной страницы;
• монтирование графики и многостраничных цветных иллюстраций и т.п. (Corel Ventura, Adobe PageMaker, MS Publisher, Quark Xpress).
Программные средства мультимедиа
Этот класс программных продуктов сформировался в связи с изменением среды обработки данных, появлением лазерных дисков высокой плотности записи с хорошими техническими параметрами, расширением состава периферийного оборудования, развитием сетевой технологии обработки, появлением региональных и глобальных информационных сетей. Основное назначение программных продуктов мультимедиа - создание и использование аудио- и видеоинформации для расширения информационного пространства пользователя.
Их можно разбить на два класса.
К первому относятся мультимедийные продукты (обучающие программы, тренажеры, игры, мультимедийные энциклопедические издания, музыкальные диски, путеводители, видеофильмы, картинные галереи и пр.).
Ко второму классу относятся ППП, обеспечивающие создание, редактирование и воспроизведение мультимедийных продуктов (MS Windows Media Player, QuickTime Pro, Adobe Systems Premiere).
Системы искусственного интеллекта
Данный класс программных продуктов реализует отдельные функции интеллекта человека. Основными компонентами систем искусственного интеллекта (СИИ) являются база знаний, интеллектуальный интерфейс с пользователем и программа формирования логических выводов. Их разработка идет по следующим направлениям:
• программы-оболочки для создания экспертных систем путем наполнения баз знаний и правил логического вывода;
• готовые экспертные системы для принятия решений в рамках определенных предметных областей;
• системы управления базами знаний для поддержания семантических моделей;
• системы анализа и распознавания речи и др.
Как правило, интеллектуальный интерфейс включает:
• диалоговый процессор на естественном языке;
• планировщик, преобразующий описание задачи в программу решения на основе информации базы знаний;
• монитор, осуществляющий управление компонентами интерфейса.
Работа пользователя заключается в подготовке максимального числа примеров, включающих в себя совокупность входных данных и соответствующих им ответов. В процессе обучения СИИ оптимизирует свою внутреннюю структуру, чтобы добиться наилучшего совпадения с введенными данными и рассчитать выходы.
Информационные технологии программирования
В этот класс программного обеспечения входят программы и программные комплексы, обеспечивающие технологию разработки, отладки и внедрения создаваемых программных продуктов («программы для программ»), относящихся как к системному ПО, так и прикладному.
Можно выделить два направления развития информационных технологий программирования (рис. 2):
• средства для создания программных приложений (RAD - Rapid Application Development), работающих в различных операционных системах (системы программирования и инструментальные среды разработки на базе различных языков программирования);
• средства компьютерной поддержки разработки программного обеспечения и автоматизации создания сложных информационных систем (Computer Aided Software Engineering, CASE технологии).
Системы программирования включают в себя:
• компилятор или интерпретатор языка программирования;
• отладчик и средства оптимизации кода программ;
• набор стандартных библиотек;
• редактор связей;
• справочные системы.
Примеры: Turbo Pascal, Borland Pascal, MS Visual Basic, MS Visual C++, Visual FORTRAN.
Рис. 2. Классификация технологий программирования
Инструментальные интегрированные среды разработки (IDE - Integrated Development Environment) объединяют единым графическим интерфейсом набор средств коллективной разработки программ для комплексного их применения на всех технологических этапах создания программы.
Основное их назначение - повышение производительности труда программистов, автоматизация создания кодов программ, разработка приложений для архитектуры клиент-сервер, запросов и отчетов. Они обладают широкой функциональностью, совместимы со многими распространенными платформами и стандартами программирования (Oracle JDeveloper, Visual Age for Java, Forte for Java).
Современное проектирование больших и сложных информационных систем невозможно без CASE (Computer Aided Software Engineering) -
технологий.
CASE технологии выделяют логические процессы преобразования информации, определяют группы элементов данных и их хранилища (базы данных), предоставляют специальные графические средства для изображения различного типа моделей, используемых при описании сложной системы: диаграмму потоков данных (DFD - Data Flow Diagrams), устанавливающую связь источников информации с потребителями, диаграмму «сущность-связь» (ERD - Entity Relationship Diagrams), являющуюся информационной моделью рассматриваемой предметной области и другие виды диаграмм.
CASE технологии обеспечивают автоматическую генерацию кодов программ на основе их спецификаций, проверку корректности описания моделей данных и схем потоков данных, документирование программ в соответствии с принятыми стандартами, тестирование и отладку программ. В рамках CASE технологий происходит поддержка полного жизненного цикла программного продукта, обеспечивается функциональная целостность проекта, поддержка одновременной работы групп разработчиков, возможность разработки приложений «клиент-сервер» требуемой конфигурации. Они обладают открытой архитектурой и возможностью экспорта/импорта (Design/IDEF, САSЕ Аналитик, ERwin, BPwin, Silverrun, Oracle Designer).
Современные CASE-системы - это средства разработки не только программных систем, но и организационно-управляющих систем, т.е. эту аббревиатуру можно расшифровать и как Computer Aided System Engineering. CASE технология фактически представляет собой совокупность методологий проектирования, моделирования, анализа и реорганизации бизнес-процессов (BPR - Business Process Reengineering, реинжиниринг бизнес-процессов) предприятий, поддержанную комплексом взаимоувязанных средств автоматизации.
В состав бизнес-модели должны входить следующие базовые компоненты:
бизнес-функции, описывающие, ЧТО делает бизнес;
бизнес-процессы, описывающие, КАК предприятие выполняет свои бизнес-функции;
организационная структура, определяющая, ГДЕ исполняются бизнес-функции и бизнес-процессы;
роли, определяющие, КТО исполняет бизнес-процессы;
фазы, определяющие, КОГДА (в какой последовательности) должны быть внедрены те или иные бизнес-функции;
правила, определяющие связь между ЧТО, КАК, ГДЕ, КОГДА и КТО (рис. 3).
Рис. 3. Структура бизнес-модели
Здесь TQM (Total Quality Management) - управление качеством.
Принципиальное отличие CASE-среды для бизнес-процессов от соответствующей среды для программного обеспечения заключается в том, что хотя в обоих случаях решаются задачи анализа и проектирования, задача генерации для бизнес-процесса гораздо сложнее, т.к. ПО является лишь одним из его компонентов (BFS - Business Framework System, BPR-Tools, Workflow-BPR).