1. Задачи проектирования программных систем. Программное обеспечение (ПО)
![]()
|
1.Задачи проектирования программных систем. Программное обеспечение (ПО) - наряду с аппаратными средствами, важнейшая составляющая информационных технологий, включающая компьютерные программы и данные, предназначенные для решения определённого круга задач и хранящиеся на машинных носителях. Программное обеспечение представляет собой либо данные для использования в других программах, либо алгоритм, реализованный в виде последовательности инструкций для процессора [http://ru.wikipedia.org]. Понятие программная система (ПС) включает в себя представление ПО как системы, т.е. совокупности множества взаимосвязанных объектов, организованных некоторым образом в единое целое. Представление ПО как системы дает возможность применять в программировании методы системного анализа, например, метод декомпозии – структуризации сложной задачи с целью замены ее решения большим количеством более простых задач. Технология программирования (ТП) - совокупность методов и средств, используемых в процессе разработки программного обеспечения [2, c. 12]. В литературе можно встретить термин Технология конструирования программного обеспечения (ТКПО) - система инженерных принципов для создания экономичного ПО, которое надежно и эффективно работает в реальных компьютерах [1, с. 15]. В рамках данного курса мы будем вкладывать одинаковый смысл в термины: технология программирования, технология конструирования, технология проектирования; программное обеспечение, программная система. Технология программирования включает в себя методы, средства и процедуры проектирования ПО. Методы проектирования ПО обеспечивают решение следующих задач: планирование и оценка проекта; анализ системных и программных требований; проектирование алгоритмов, структур данных и программных структур; кодирование; тестирование; сопровождение. Средства (утилиты) проектирования ПО обеспечивают автоматизированную или автоматическую поддержку методов. Средства проектирования могут объединяться в единые комплексы, образуя системы автоматизированного конструирования ПО, так называемые CASE-системы. Computer Aided Software Engineering (CASE) – программная инженерия с компьютерной поддержкой. Процедуры проектирования ПО объединяют методы и средства в единую технологическую цепочку. Процедуры решают следующие задачи: определение порядка применения методов и средств проектирования ПО; формирование форм и отчетов, удовлетворяющих определенным требованиям; контроль качества; координация процесса проектирования; формирование «контрольных точек», по которым оценивается ход проектирования. Процесс проектирования разбивается на этапы, каждый из которых включает определенный набор методов, средств и процедур. Совокупность этапов проектирования ПС и последовательность их выполнения и представляют собой в широком смысле значение термина технология программирования. Часто используется более удачный термин – парадигма: парадигма проектирования ПО, парадигма конструирования ПС, или просто – парадигма программирования. Под парадигмой (от греч. παράδειγμα, «пример, модель, образец»), в общем случае понимается исходная концептуальная схема, модель постановки проблем и их решения, методов исследования, господствующих в течение определённого исторического периода в научном сообществе [http://ru.wikipedia.org]. 2.Классификация программного обеспечения. В состав программного обеспечения входят :
Прикладные программы, ориентированные на конкретное выполнение работ, необходимых пользователю 3.Типы прикладных программ. К ним относятся :
4.Стандартные процедуры ввода-вывода. Операторы READ и READLN используются для ввода значений переменных с клавиатуры , причем оператором READ можно ввести значения нескольких переменных. Эти операторы требуют обязательного ввода информации. Операторы WRITE и WRITELN дают возможность установить необходимый формат для вывода числовой информации , указывая для выводимого значения как общее число позиций , так и их количество после запятой. 5.Условные операторы Часто определенная часть программы может выполняться при соблюдении некоторых условий. Общая форма условного оператора IF … THEN … ELSE такова: IF Условие THEN BEGIN Оператор1; … ОператорN; END ELSE BEGIN Оператор_1; … Оператор_N; END; Допустима конструкция IF … THEN без ветви ELSE .
Оператор множественного выбора CASE … OF предназначен для обработки ситуаций ,когда условие может принимать более двух значений . Его общий вид таков : CASE порядковая_переменная OF Значение_1: BEGIN оператор1_1; … оператор1_n; END …. Значение_n: BEGIN операторN_1; …операторN_n; END; ELSE BEGIN операторE_1; …операторE_n; END; END; 6.Циклические операторы Циклы позволяют многократно выполнять один или несколько операторов. Существует несколько конструкций циклических операторов. Конструкция FOR … TO ( DOWNTO ) … DO имеет следующий вид : FOR Переменная_цикла :=Начальное_значение TO (DOWNTO) Конечное_значение BEGIN Оператор1; … ОператорN; END; Общий вид конструкции WHILE … DO : WHILE Условие DO BEGIN Оператор1; … ОператорN; END; Общий вид конструкции REPEAT … UNTIL REPEAT Оператор1; … ОператорN; UNTIL Условие; 7. Структурированные типы данных Массив обьединяет элементы одного типа данных. Одномерный массив представляет упорядоченную совокупность элементов некоторого типа ,для получения доступа к которой достаточно одной индексной переменной, и обьявляется так : Имя_массива : ARRAY[нач_индекс .. кон_индекс] OF Тип_данных ; Аналогично обьявляются и многомерные массивы. Например, обьявление двумерного символьного массива B из 5 строк и 6 столбцов имеет вид : B : ARRAY[1..5,1..6] OF CHAR ; Записи – тип данных, позволяющий хранить вместе переменные, имеющие различные типы данных. Например, запись A, имеющая символьное поле B и целочисленное поле C, обьявляется так : A=RECORD B : CHAR; C : INTEGER; END ; Множества –тип данных , задающий некоторую совокупность элементов, определённого типа. Например, множество всех символов обьявляется так : M : SET OF CHAR ; 8. Символьные строки Переменная строкового типа обьявляется путём указания после её имени типа STRING и максимальной длины строки (до 255) ,причем, если длина не указана , она принимается равной 255. Например, строка A ,имеющая не более 10 символов , обьявляется так : A : STRING [10] ; Для доступа к символу c номером i в строке используется обозначение A[i] . Укажем некоторые наиболее часто используемые функции и процедуры для обработки строк. Для нахождения длины строки A используется встроенная функция LENGTH(A). Функция UPCASE(A[i]) позволяет заменить i строчный символ строки на прописной. Процедура INSERT вставляет в исходную строку, начиная с указанной позиции, какую-либо другую строку. Например, если нужно в строку A , начиная с 4-ой позиции, вставить строку B ,то воспользуемся оператором INSERT(B , A , 4). 9. Обработка файлов Турбо Паскаль поддерживает текстовые (типа TEXT) , типизированные, (типа FILE OF Тип_данных_элементов) а также нетипизированных файлов (типа FILE). Файловые переменные соответственно обьявляются так : Имя_переменной_файла : TEXT ; Имя_переменной_файла : FILE OF Тип_данных_элементов ; Имя_переменной_файла : FILE ; Отметим некоторые процедуры для работы с файлами . Процедура ASSIGN ( f , FileName) связывает файловую переменную f (логическое имя файла) c именем физического файла , заданным в строке FileName. Процедура RESET ( f ) открывает файл с логическим именем f для чтения. Процедура REWRITE ( f ) открывает файл с логическим именем f для записи. Процедура CLOSE ( f ) закрывает канал ввода-вывода файла с логическим именем f. 10. Графика в Паскале Для работы с графикой используется процедура инициализации графического режима INITGRAPH. Для её использования нужно подключить модуль GRAPH оператором USES GRAPH; Например, оператор INITGRAPH (GraphDriver ,GraphMode,’C:\TP\BGI’); в котором первые две целочисленные переменные указывают соответственно тип драйвера и режим графики, а третья путь к драйверу, в случае наличия оператора GraphDriver := DETECT ; т.е. перехода системы в режим автоопределения, инициализирует соответствующий BGI-драйвер и включает графический режим с максимальным разрешением для используемого адаптера. Когда все действия с графикой завершены с помощью процедуры CLOSEGRAPH ,не имеющей параметров, осуществляется выход из графического режима. В графическом режиме видимого курсора нет, но есть невидимый текущий указатель, который выполняет те же функции, что и курсор в текстовом режиме. Процедура MOVETO (X , Y) ; перемещает этот указатель в точку с целочисленными координатами X ,Y. 11. Процедуры и функции Процедуры и функции обеспечивают реализацию принципов структурного программирования. Можно разделить большую программу на меньшие, оформив их как процедуры или функции , затем использовать в основном блоке программе. Общая структура процедур и функций приведена в 4-ом слайде. Типы прикладных программ К ним относятся : Популярные профессиональные программы ,Графические системы,Системы управления базами данных,Программы для работы со звуком и видео Программы общего назначения Текстовые редакторы Электронные таблицы Персональные органайзеры Программы для работы с Интернет
Вызов процедуры имеет вид : <Имя процедуры >(Список параметров); Эти параметры называются фактическими ,причём их тип указан в соответствующих формальных параметрах в заголовке процедуры. Функция , как и процедура ,может иметь список параметров ,но с именем функции связывается её значение, тип которого указывается в заголовке функции. 12. Структурный подход к программированию. Модульное программирование Программирование в Delphi строится на тесном взаимодействии двух процессов: процесса конструирования визуального проявления программы (т. е. ее Windows-окна) и процесса написания кода, придающего элементам этого окна и программе в целом необходимую функциональность. Для написания кода используется окно кода, для конструирования программы - остальные окна Delphi, и прежде всего - окно формы. Приложения, разработанные в среде Delphi, построены по модульному принципу. Модули - это программные единицы, предназначенные для размещений фрагментов программ. С помощью содержащегося в них программного кода реализуется вся поведенческая сторона программы. Все объекты компонентов размещаются в объектах-формах. Для каждой формы в Delphi создается отдельный модуль. В программе может быть и, чаще, бывает не одна, а несколько - иногда несколько десятков форм и связанных с ними модулей. Компоненты представляют собой элементы, из которых конструируется видимое изображение, создаваемое работающей программой. Кроме того, существует значительное количество компонентов, которые не создают видимого изображения, но которые тем не менее играют важную роль в тех или иных случаях. С точки зрения программирования компоненты представляют собой заранее написанные фрагменты программы, которые можно вставлять, если в этом есть необходимость, в разрабатываемую программу. Библиотеки компонентов для разных версий Delphi строятся по принципу расширения: в первой версии было около 70 компонентов, в то время как в состав Delphi 6 входит более 300 компонентов. При написании программы в Delphi создаются файлы с расширениями pas, dfm и dcu для каждого модуля: pas-файл содержит копию текста из окна кода программы, в файле с расширением dfm хранится описание содержимого окна формы, а в dcu-файле - результат преобразования в машинные инструкции текста из обоих файлов. Файлы dcu создаются компилятором и дают необходимую базу для работы компоновщика, который преобразует их в единый загружаемый файл с расширением ехе. Совокупность файлов разрабатываемого приложения (модули, формы и т.д.) образуют проект (project) Delphi. Файл проекта имеет расширение dpr. Один из модулей является главным. Наряду с основной формой, он создается при создании нового проекта Delphi. Для написания текста программ в Delphi используется язык Object Pascal. 13.Структура модуля в Delphi В общем виде модуль имеет следующую структуру: Unit <имя>; interface <интерфейсная секция> implementation <исполняемая секция (секция реализации)> initialization < секция инициализации> finalization <секция завершения> end. Здесь unit - зарезервированное слово (единица); начинает заголовок модуля; <имя> - имя модуля (правильный идентификатор); interface - зарезервированное слово (интерфейс); начинает интерфейсную часть модуля; implementation - зарезервированное слово (выполнение); начинает исполняемую часть; initialization -зарезервированное слово (инициация); начинает инициирующую часть модуля; finalization - зарезервированное слово (завершение); начинает завершающую часть модуля; end - зарезервированное слово - признак конца модуля. В секции интерфейсных объявлений описываются программные элементы (типы, классы, процедуры и функции), которые будут “видны” другим программным модулям. Например, объявляются заголовками процедуры и функции. В секции реализации раскрывается механизм работы этих элементов. Например, в эту секцию помещаются тела процедур и функций, а также локальные (доступные только в самом модуле) объекты (типы, классы, переменные, процедуры и функции, необъявленные в интерфейсной секции). Рассмотрим структуру главного модуля, на форме которого расположена одна командная кнопка. ![]() unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs; type TForm1 = class(TForm) Button1: TButton; procedure Button1Click(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form1: TForm1; implementation {$R *.dfm} procedure TForm1.Button1Click(Sender: TObject); begin end; end. Прокомментируем части программы: uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs; Объявление подключаемых модулей(сейчас это только стандартные основных модули Delphi). type TForm1 = class(TForm) . . . end; Описание типа TForm1 как класса, созданного по образцу стандартного класса TForm , но с изменениями (добавлена командная кнопка и процедура обработки щелчка по ней). Каждый компонент в Delphi принадлежит к строго определенному классу, Классы в Delphi - функционально законченные фрагменты программ, служащие образцами для создания подобных себе экземпляров. Однажды создав класс, программист может включать его экземпляры (копии) в разные программы или в разные места одной и той же программы. Такой подход способствует максимально высокой продуктивности программирования за счет использования ранее написанных фрагментов программ. В состав Delphi входит несколько сотен классов, созданных программистами корпорации Borland (так называемых стандартных классов). Все конкретные экземпляры компонентов, вставляемые в форму, получают имя класса с добавленным числовым индексом. По используемому в Delphi соглашению все имена классов начинаются с буквы Т. Таким образом, имя TForm1 означает имя класса, созданного по образцу стандартного класса TForm. Стандартный класс TForm реализует все нужное для создания и функционирования пустого Windows-окна. Button1: TButton; Запись указывает, что компонент Button1 (Кнопка1) представляет собой экземпляр стандартного класса TButton. |