Уход за лицом: жирная кожа

Функциональная схема программы. Структурное проектирование программ. Примерный перечень функций системы

Функциональная схема программы. Структурное проектирование программ. Примерный перечень функций системы

Тема 3. ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ

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


Структура программного обеспечения

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

· на обеспечение устойчивой работы компьютера и вычислительной сети;

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

· на выполнение вспомогательных операций;

· на диагностику аппаратной части компьюте­ра и вычислительной сети;

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

Базовый подкласс ПО включает:

· операционные системы(ОС) - комплекс программ, управляющих про­цес­сом вы­пол­нения прикладных программ, планированием и управлением вычис­литель­ными ресур­сами ПК (ОС берет на себя выполне­ние таких операций, как кон­троль работоспо­собности оборудова­ния ПК; выпол­не­ние проце­дуры на­чальной за­грузки; управле­ние работой всех уст­ройств ПК; управле­ние фай­ловой систе­мой; взаимодействие пользователя с ПК; за­грузка и выполне­ние при­клад­ных про­грамм; распределение ресурсов ПК - опе­ративной памяти, процессорного вре­мени и пери­ферийных уст­ройств между при­кладными програм­мами ).

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



· сетевые операционные системы - комплекс программ, обес­печивающих обра­ботку, передачу и хранение данных в сети.

До недавнего времени на большинстве ПК была установлена операци­онная сис­тема MS DOS , которая была создана в 1981 г. фир­мой Microsoft (заметим, что она не была ори­гинальной разработкой самой Microsoft - ком­пания Билла Гейтса лишь дорабо­тала «операци­онку» под названием QDOS, созданную другой компанией ). До появления Windows дисковая операцион­ная система MS DOS была самой популярной и массовой в применении. В ее среде создано целое поколение программного продукта. На основе MS DOS в процессе развития компьютерных технологий появился Windows (с 1996 г. MS DOS включена в состав операционной среды Windows 95 ). Основные компоненты ОС, развитые в среде MS DOS, являются классикой, и орга­нично включены в Windows на новом этапе раз­вития программного обеспе­чения в целом и его сердцевины - операционных систем.

MS DOS 16-разрядная однозадачная операционная сис­тема, обладающая «интер­фейсом ко­манд­ной строки», компактна, предъяв­ляет скром­ные требо­ва­ния к аппаратуре и вы­полняет необ­ходимый мини­мум функций для поль­зователей и программ. Основ­ные недос­татки DOS:

· главным ее уяз­вимым ме­стом является работа с ограниченной оператив­ной памятью (в эпоху созда­ния MS-DOS оперативная па­мять большин­ства компьюте­ров не превышала 256 ки­лобайт. DOS мог­ла работать с 640 ки­лобай­тами ОП, и Билл Гейтс ут­верждал, что никому и никогда не понадо­бится больший объем, но время шло и появились программы, ко­то­рым требовался для работы больший объем опера­тив­ной памяти и при­ходи­лось ис­пользовать специальные про­граммы - ме­неджеры памяти, но и они не ре­шали проблему );

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

· третьим недостат­ком MS-DOS была однозадачность.

Операционные системы се­мейства DOS, несмотря на свою про­стоту и экономичность, мо­рально устарели, и на смену им пришли опе­рацион­ные системы нового поко­ления. К числу таких ОС относятся операционные сис­темы се­мейства Windows , операци­онные системы семейства Unix и др.

Сервисные системы - предназначены для обслуживания компьютера (расши­ряют возможности базового ПО ). По функциональному признаку среди сервисного ПО можно выделить:

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

· антивирусные программы (обеспечивающие защиту компь­ютера, обнаруже­ние и восстановление зараженных файлов );

· программы архивирования данных (обеспечивают процесс сжатия ин­форма­ции в файлах с целью уменьше­ния объема памяти для ее хранения );

· программы обслуживания сети.

· программы диагностики работоспособности компьютера;

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

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

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

· интегрированные среды разработчиков программ, обеспечивающие вы­полне­ние комплекса взаимосвязанных работ по созданию программ.

Локальные средства разработки про­грамм включают языки и системы про­грам­мирования, а также инструментальную среду пользователя. Сущест­вуют ма­шинные языки программирования (воспринимаемые аппаратной ча­стью компью­тера ма­шин­ные коды ), машинно-ориентированные языки (языки программирова­ния, кото­рые отражают структуру конкретного типа компью­тера – ассемб­леры ), алго­ритмические (универсальные ) языки, не зависящие от архитектуры компьютера, напри­мер, Фор­тран (Fortran ), Ко­бол (Cobol ), Алгол (Algol ), Пас­каль (Pascal ), Бейсик (Basic ), Си (C ), Си++ (C++ ) и др.; процедурно-ориентированные языки (где име­ется возмож­ность описания про­граммы как совокупности процедур – подпро­граммы ), про­блемно-ориен­тированные языки (предназначенные для решения задач оп­реде­ленного класса ), интегрирован­ные системы программирования. Заметим, что класси­фикация языков программирования не закреплена ГОСТами (в учебных це­лях обычно проводится их классификация по различным призна­кам ). Про­грамма, подго­товленная на языке программи­рования, проходит этап трансля­ции, отладки и тести­рования.

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

Кроме того, существуют средства для создания сложных информацион­ных сис­тем (CASE – технология ). Проектирование информационных систем представ­ляет собой трудоемкую и дли­тельную работу, требующую высокой ква­лификации участ­вующих в ней специалистов. В недале­ком прошлом про­ектирование нередко выпол­нялось на интуитивном уровне неформализован­ными методами, включаю­щими в себя элементы искусства, практический опыт, экспертные оценки и дорого­стоящие экспериментальные проверки ка­чества функционирования. В начале 70-х гг. в США был отмечен кризис про­граммирования (software crisis ). Это выра­жалось в том, что боль­шие проекты стали выполняться с отставанием от гра­фика или с превышением сметы рас­хо­дов, разработанный продукт не обладал тре­буемыми функцио­нальными возможностями, произ­водительность его была низка, ка­чество получаемого про­граммного обеспечения не устраивало потре­бителей. Потребность кон­тролировать процесс разработки ПО, прогнози­ровать и гаран­тировать стои­мость разработки, сроки и качество ре­зультатов привела к необ­ходимости пере­хода от кус­тарных к индустриальным способам создания ПО и по­явле­нию совокупности инже­нерных методов и средств создания ПО, объеди­нен­ных общим названием «программная инжене­рия» (software engineering ). В основе про­граммной инженерии лежит сле­дующая идея: проектиро­вание ПО является фор­мальным процессом, который можно изучать и совершенство­вать. К концу 80-х гг. было проведено много исследований в области про­грамми­рования (разработка и внедрение языков высокого уровня, мето­дов струк­турного и модульного програм­мирования, языков проектирова­ния и средств их под­держки, формальных и нефор­мальных языков описания сис­темных требований и спецификаций и т. д. ). Термин CASE (Computer Aided Software Engineering ) имеет весьма широкое толкование. Первоначально зна­чение термина CASE ограни­чива­лось вопросами автоматизации раз­работки только лишь программного обеспече­ния, а в на­стоящее вре­мя оно при­обрело новый смысл и охватывает про­цесс разра­ботки сложных инфор­мационных систем в целом. CASE-технология представляет собой совокупность методов про­ектирования информационных сис­тем, а также набор инструментальных средств, позво­ляющих в наглядной форме моделировать предметную об­ласть, ана­лизиро­вать эту модель на всех ста­диях раз­работки и со­провожде­ния, разрабатывать приложения в соответствии с информаци­он­ны­ми потреб­ностями пользователей. Большинство существующих CASE-средств осно­вано на методах структурного или объектно-ори­ентированного анализа и проек­тирования, использую­щих специфи­кации в виде диаграмм или текстов для описания внешних требова­ний, свя­зей между моделями системы, дина­мики поведе­ния сис­темы и архитектуры про­граммных средств.

Прикладные программы - предназна­чены для реше­ния прикладных задач пользо­вателя (обеспечивает выполнение необходи­мых пользова­телю за­дач на ком­пью­тере ). Условно (по их назначению ) можно выделить следую­щие под­классы:

· программы обработки текстов;

· графические редакторы;

· программы обработки фото- и видеоизображений;

· программы подготовки презентаций;

· электронные таблицы;

· системы управления базами данных;

· программы эко­номического и статистического анализа;

· сис­темы автомати­зированного проектирования (САПР);

· информационно-поисковые системы;

· сетевое программное обеспечение (программы для работы с электронной почтой, доступ к ви­деоконференциям, браузеры Интернет и т.д. );

· игровые программы.

Прикладное программное обеспе­че­ние состоит из пакетов прикладных про­грамм (ППП) и прикладных про­грамм пользователя.

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

В этом методе разбиение сложной системы на несколько подсистем получило название «разделяй и властвуй » (divide et impera), иерархическая или функциональная декомпозиция и др. При этом базовыми принципами являются:

a) «разделяй и властвуй»;

b) Проектирование «сверху вниз» - от общей постановки задачи к отдельным подзадачам и т.д.;

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

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

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

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

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

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

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

Рис. 4.1. Пример структурной схемы программного комплекса.

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


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


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

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

Функциональная схема или схема данных (ГОСТ 19. 701-90) - схема взаимодействия компонентов программного обеспечения с описанием информационных потоков, состава данных в потоках и указанием используемых файлов и устройств. Для изображения этих схем используют специальные обозначения, установленные стандартом.

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



б)

Рис. 4.4. Примеры функциональных схем: а - комплекс программ, б - программная система.

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

Структурное проектирование использует три основных вида моделей (диаграмм):

1) SADT (Structured Analysis and Design Technique - метод структурного анализа и проектирования) - модели и соответствующие функциональные диаграммы;

2) DFD (Data Flow Diagrams) - диаграммы потоков данных;

3) ERD (Entity-Relationship Diagrams) - диаграммы «сущность-связь».

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

Главным компонентом модели является диаграмма . На ней все функции и интерфейсы представлены в виде блоков и дуг соответственно. Место соединения дуги с блоком определяет тип интерфейса. Управляющая информация входит в блок сверху . Входная информация, которая подвергается обработке, показана с левой стороны блока, а результат (выход) - с правой . Механизм (человек или автоматизированная система), который осуществляет операцию, представляется дугой, входящей в блок снизу (рис. 4.5).

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


Рис. 4.6

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

Основными компонентами диаграмм потоков данных являются:

a) внешние сущности;

b) системы и подсистемы;

c) процессы;

d) накопители данных;

e) поток данных.

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

Подсистема (см. рис. 4.8) или процесс (рис. 4.9) представляются прямоугольником с закругленными краями. Он содержит три поля:

a) Номера;

c) Физической реализации.

Подсистема и процесс отличаются именем. В первой записывается название подсистемы, а во втором – глагол, определяющий, что делает процесс.

Рис. 4.8. ГНИ – Государственная налоговая инспекция

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

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

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

Более сложная диаграмма потоков данных приведена на рис. 4.12.

ER-диаграммы будут рассмотрены позднее.

В курсовом проекте, кроме функциональной диаграммы, необходимо представить схемы алгоритмов наиболее сложных функций (например, сортировки и поиска).

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

Рисунок 1. Классификация ПО

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

    прикладное ПО, обеспечивающее выполнение необходимых работ на ПК: редактирование текстовых документов, создание рисунков или картинок, обработка информационных массивов и т.д.

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

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

Это программы общего пользования не связаны с конкретным применением ПК и выполняют традиционные функции: планирование и управление задачами, управления вводом-выводом и т.д. Другими словами, системные программы выполняют различные вспомогательные функции, например, создание копий используемой информации, выдачу справочной информации о компьютере, проверку работоспособности устройств компьютера и т.п. К системному ПО относятся:

    операционные системы (эта программа загружается в ОЗУ при включении компьютера)

    программы – оболочки (обеспечивают более удобный и наглядный способ общения с компьютером, чем с помощью командной строки DOS, например, Norton Commander)

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

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

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

К утилитам относятся:

    диспетчеры файлов или файловые менеджеры

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

    средства просмотра и воспроизведения

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

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

    средства обеспечения компьютерной безопасности (резервное копирование, антивирусное ПО).

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

Иногда утилиты относят к классу сервисного программного обеспечения

Утилиты используются для:

    Мониторинга показателей датчиков и производительности оборудования - мониторинг температур процессора, видеоадаптера; чтение S.M.A.R.T. жёстких дисков;

    Управления параметрами оборудования - ограничение максимальной скорости вращения CD-привода; изменение скорости вращения вентиляторов.

    Контроля показателей - проверка ссылочной целостности; правильности записи данных.

    Расширения возможностей - форматирование и/или переразметка диска с сохранением данных, удаление без возможности восстановления.

Типы утилит:

Дисковые утилиты

      Дефрагментаторы

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

      Очистка диска - удаление временных файлов, ненужных файлов, чистка «корзины».

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

      Резервное копирование - создание резервных копий целых дисков и отдельных файлов, а также восстановление из этих копий.

      Сжатие дисков - сжатие информации на дисках для увеличения вместимости жёстких дисков.

      • Утилиты работы с реестром

        Утилиты мониторинга оборудования

        Тесты оборудования

Рисунок 2. Место СПО в многоуровневой структуре компьютера

Необходимо отметить, что часть утилит входит в состав операционной системы, а другая часть функционирует автономно. Большая часть общего (системного) ПО входит в состав ОС (рис.2). Часть общего ПО входит в состав самого компьютера (часть программ ОС и контролирующих тестов записана в ПЗУ или ППЗУ, установленных на системной плате). Часть общего ПО относится к автономными программам и поставляется отдельно.

          Прикладное ПО. Прикладные программы могут использоваться автономно или в составе программных комплексов или пакетов. Прикладное ПО – программы, непосредственно обеспечивающие выполнение необходимых работ на ПК: редактирование текстовых документов, создание рисунков или картинок, создание электронных таблиц и т.д.Пакеты прикладных программ – это система программ, которые по сфере применения делятся на проблемно – ориентированные, пакеты общего назначения и интегрированные пакеты. Современные интегрированные пакеты содержат до пяти функциональных компонентов: тестовый и табличный процессор, СУБД, графический редактор, телекоммуникационные средства. К прикладному ПО, например, относятся:

    Комплект офисных приложений MS OFFICE

    Бухгалтерские системы

    Финансовые аналитические системы

    Интегрированные пакеты делопроизводства

    CAD – системы (системы автоматизированного проектирования)

    Редакторы HTML или Web – редакторы

    Браузеры – средства просмотра Web - страниц

    Графические редакторы

    Экспертные системы.

          Инструментальное ПО. Инструментальное ПО или системы программирования - это системы для автоматизации разработки новых программ на языке программирования. В самом общем случае для создания программы на выбранном языке программирования (языке системного программирования) нужно иметь следующие компоненты:1. Текстовый редактор для создания файла с исходным текстом программы. 2. Компилятор или интерпретатор. Исходный текст с помощью программы-компилятора переводится в промежуточный объектный код. Исходный текст большой программы состоит из нескольких модулей (файлов с исходными текстами). Каждый модуль компилируется в отдельный файл с объектным кодом, которые затем надо объединить в одно целое.3. Редактор связей или сборщик, который выполняет связывание объектных модулей и формирует на выходе работоспособное приложение – исполнимый код. Исполнимый код – это законченная программа, которую можно запустить на любом компьютере, где установлена операционная система, для которой эта программа создавалась. Как правило, итоговый файл имеет расширение.ЕХЕ или.СОМ.4. В последнее время получили распространение визуальный методы программирования (с помощью языков описания сценариев), ориентированные на создание Windows-приложений. Этот процесс автоматизирован в средах быстрого проектирования. При этом используются готовые визуальные компоненты, которые настраиваются с помощью специальных редакторов. Наиболее популярные редакторы (системы программирования программ с использованием визуальных средств) визуального проектирования:

    Borland Delphi - предназначен для решения практически любых задачи прикладного программирования

    Borland C++ Builder – это отличное средство для разработки DOS и Windows приложений

    Microsoft Visual Basic – это популярный инструмент для создания Windows-программ

    Microsoft Visual C++ - это средство позволяет разрабатывать любые приложения, выполняющиеся в среде ОС типа Microsoft Windows

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

    Дайте определение операционной системе.

    Какое программное обеспечение относят к системному?

    Назовите служебное программное обеспечение.

    Какое программное обеспечение относят к прикладному?

    Каково назначение программного обеспечения?

    Каковы основные классы программ? Приведите примеры программ в каждом классе по назначению.

Проектирование программного обеспечения начинают с определения его структуры.

5. 1. Разработка структурной и функциональной схем.

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

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

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

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

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

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

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

Структурная схема программного комплекса демонстрирует передачу управления от программы-диспетчера соответствующей программе (рис. 1.1).

Рис. 5.1. Пример структурной схемы программного комплекса.

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


Рис. 5.2. Пример структурной схемы программной системы.

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

Функциональная схема

Функциональная схема или схема данных (ГОСТ 19. 701-90) - схема взаимодействия компонентов программного обеспечения с описанием информационных потоков, состава данных в потоках и указанием используемых файлов и устройств. Для изображения функциональных схем используют специальные обозначения, установленные стандартом.

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



Рис. 5.3. Примеры функциональных схем: а - комплекс программ, б - программная система.

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

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

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

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

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

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

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

Не отделять операции инициализации и завершения от соответствующей обработки, так как модули инициализации и завершения имеют плохую связность (временную) и сильное сцепление (по управлению);

Не проектировать слишком специализированных или слишком универсальных модулей, так как проектирование излишне специальных модулей увеличивает их количество, а проектирование излишне универсальных модулей повышает их сложность;

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

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

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

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

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

5. 3. Структурные карты Константайна.

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

Различают четыре типа вершин (рис. 1.4.):

Модуль - подпрограмма,

Подсистема - программа,

Библиотека - совокупность подпрограмм, размещенных в отдельном модуле,

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

а). б). в). г).

Рис. 5.4. Обозначение вершин по стандартам IBM, ISO и ANSI:

а – модуль; б – подсистема; в – библиотека; г – область данных.

При этом отдельные части программной системы (программы, подпрограммы) могут вызываться последовательно, параллельно или как сопрограммы (рис. 1.5.).


Рис. 5.5. Обозначение типа вызова:

а – последовательный вызов; б – параллельный вызов; в – вызов сопрограммы.

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

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

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

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

5.4. Проектирование структур данных.

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

Вид хранимой информации каждого элемента данных;

Связи элементов данных и вложенных структур;

Время хранения данных структуры («время жизни»);

Совокупность операций над элементами данных, вложенными структурами и структурами в целом

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

Целые и вещественные числа различных форматов;

Символы;

Булевские значения: true и false;

а также некоторые структурные типы данных, например:

Специально объявленные классы.

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

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

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

Представление данных в оперативной памяти

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

Векторная структура представляет собой последовательность байт памяти, которые используются для размещения полей данных (рис. 1.6.).

Рис. 5.6. Векторная структура памяти.

Последовательное размещение организованных структур данных позволяет осуществлять прямой доступ к элементам: по индексу (совокупности индексов) - в массивах или строках или по имени поля - в записях или объектах.

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

Структуры данных в векторном представлении можно размещать как в статической, так и в динамической памяти. Расположение векторных представлений в динамической памяти иногда позволяет существенно увеличить эффективность использования оперативной памяти. Желательно размещать в динамической памяти временные структуры, хранящие промежуточные результаты, и структуры, размер которых сильно зависит от вводимых исходных данных.

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


Рис. 5.7. Примеры списковых структур памяти:

а - линейный односвязный список; б - древовидный список; в - n-связный список.

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

Для хранения указателей необходима дополнительная память;

Поиск информации в линейных списках осуществляется последовательно , а потому требует больше времени;

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

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

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

Представление данных во внешней памяти

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

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

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

При выборе типа памяти для размещения структур данных следует иметь в виду, что:

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

Во внешней - данные, которые должны сохраняться после завершения программы.

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

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

5.5. Проектирование программного обеспечения, основанное на декомпозиции данных.

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

Методика Джексона

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

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

Разработка структур программы в соответствии с методикой выполняется следующим образом:

Строят изображение структур входных и выходных данных;

Выполняют идентификацию связей обработки (соответствия) между этими данными;

формируют структуру программы на основании структур данных и обнаруженных соответствий;

добавляют блоки обработки элементов, для которых не обнаружены соответствия;

Анализируют и обрабатывают несоответствия, т. е. разрешают «столкновения»;

Добавляют необходимые операции (ввод, вывод, открытие/закрытие файлов и т. п.); записывают программу в структурной нотации (псевдокоде).

Методика Варнье-Орра.

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

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

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

5.6. Case-технологии, основанные на структурных методологиях анализа и проектирования.

К нашему времени накоплен опыт успешного использования большинства известных методологий структурного анализа и проектирования в соответствующих CASE-средствах. Наибольшее распространение получили методологии: SADT (3, 3%), структурного системного анализа Гейна-Сарсона (20, 2%), структурного анализа и проектирования Йордана-Де (36, 5%), развития систем Джексона (7, 7%), развития структурных DSSD (Data Structured System Development) Варнье-Орра (5, 8%), анализ проектирования систем реального времени Уорда-Меллора и Хатли, информационного моделирования Мартина (22, 1%).

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

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

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

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

Рис.2 Схема взаимодействия и сязей данных

Разработка функциональной схемы программы.

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

Примерный перечень функций системы.

1) Регистрация обменной операции

· Ввод данных по покупке валюты

· Ввод данных по продаже валюты

· Ввод данных по конверсии валюты

· Печать справки клиента

2) Просмотр документов

· Просмотр списка документов дня

· Просмотр списка архивных документов

3) Ведение справочников

· Ввод данных по кодам ценностей

· Ввод данных по видам документов

· Ввод данных по кодам валют

· Ввод курсов валют по датам

4) Генерация отчетных документов

· Печать реестра наличной иностранной валюты, купленной за наличные рубли;

· Печать реестра наличной иностранной валюты, проданной за наличные рубли;

· Печать реестра по обмену (конверсии) наличной иностранной валюты;

5) Прочие функции

· Ввод данных в поле ввода из справочника

· Перевод числа из цифровой формы в строчную (сумма прописью)

· Изменение вида курсора

· Сохранение данных в архивных файлах

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

Разработка структурной схемы программы.

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

Разработка экранного интерфейса программы

Существующие подходы к проектированию экранного интерфейса

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

Наиболее практичными и удобными с точки зрения пользователя можно считать системы, имеющие экранный интерфейс, построенный на основе системы всплывающих меню. Наиболее распространенными в настоящее время являются две идеологии (имеются в виду DOS-приложения), включающие в себя и определенную форму экранных окон и цветовую гамму и вид всплывающих списков. Это инструментальные Среды фирмы Borland, и операционная оболочка Norton, фирмы Symantec. Обе идеологии предусматривают определенное разбиение экранного пространства на области или зоны, предназначенные для конкретных информационных объектов и действий. Зоны могут быть в некоторой степени переконфигурированы по желанию пользователя: изменены размеры и положение на экране. Команды обработки данных вызываются из системы меню, присутствующего на экране постоянно (Borland), или вызываемого по функциональной клавише (Symantec).

И в том и в другом случае все команды системы распределены по функциональному признаку на группы и в главном меню присутствуют

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

Таким образом, создается система многоуровневого всплывающего меню. Применение такой идеологии обеспечивает удобство ориентировки в системе, имеющей достаточно сложное, многоуровневое меню с множеством выборов. Естественно, что увеличение вложенности и размеров списков выбора, должно иметь разумные границы, которые к счастью имеются в виде ограниченности экранного пространства монитора. В большинстве систем заложена также возможность настройки цветовой палитры по желанию пользователя. В операционной оболочке Norton предлагается выбор гаммы из нескольких стандартных вариантов, в системах фирмы Borland можно создать свою собственную цветовую гамму, вплоть до мельчайших деталей. Примерный вид некоторых экранных объектов приведен на рис.4,5.

Выбор идеологии экранного интерфейса