и CASE-технологии
При компонентном подходе модель построения программы представляет собой совокупность отдельных двоичных объектов-компонентов - физически отдельно существующих частей программы, взаимодействующих между собой через стандартные двоичные интерфейсы. Объекты-компоненты можно собрать в dll-библиотеки или исполняемые файлы, использовать в любом языке программирования, применять в одном или в разных процессах, на одном или на разных компьютерах.
Технологии программирования, использующие компонентный подход, разработаны на базе технологии COM (Component Object Model – компонентная модель объектов) и на базе технологии создания распределенных объектов CORBA (Common Object Request Broker Architecture – общая архитектура с посредником обработки запросов объектов). Обе технологии основаны на общих принципах.
Объекты (компоненты) COM имеют следующие особенности:
· являются объектами (экземплярами) классов COM, содержат поля и наборы виртуальных функций, называемых интерфейсами, могут иметь несколько интерфейсов, обеспечивающих доступ к его полям и функциям;
· представлены в двоичном виде, в виде динамически компонуемых библиотек (dll);
· не зависимы от языков программирования;
Технология COM – это модель взаимодействия типа «клиент – сервер». Клиент – это программа или объект, использующий другой объект. Клиент подсоединяется к объекту через интерфейс. Сервер – это местоположение объектов COM, подключаемых к приложению-клиенту.
Серверы COM разделяются на три группы:
· внутренние серверы – реализованы на базе динамических библиотек и исполняются в том же процессе, что и клиент;
· локальные серверы – реализованы на базе EXE-программ, исполняются в другом процессе по сравнению с клиентом, но на одном компьютере с клиентом;
|
· удаленные серверы – реализованы на базе EXE-программ и исполняются на удаленном компьютере.
Технология COM фирмы Microsoft и ее распределенная версия DCOM явились основой для разработки компонентных технологий программирования.
Технология ActiveX этой фирмы нашла широкое применение за счет следующих преимуществ:
· быстрая разработка программ из компонент;
· использование знакомых современных средств разработки: Visual Basic, Visual C++, Borland Delphi, Borland C++;
· применение визуального программирования для создания использования компонентов – элементов управления ActiveX;
· основана на стандартах Internet и COM.
Технология CORBA использует принципы, аналогичные технологии COM, т.е. это тоже модель взаимодействия типа «клиент – сервер», только организация взаимодействия производится с помощью специального посредника VisiBroker. Технологию можно применять для разработки распределенного программного обеспечения в разнородной вычислительной среде.
CASE-технологии (Computer-Aided Software/System Engineering–разработка программного обеспечения/программных систем с использованием компьютерной поддержки) представляют собой программные средства, автоматизирующие процессы создания и сопровождения программного обеспечения, включая этапы анализа и проектирования программного обеспечения, генерацию кода, тестирования, документирования и другие процессы.
Большинство CASE-технологий основаны на методологии процедурного и объектно-ориентированного проектирования. В настоящее время можно отметить следующие наиболее развитые CASE-технологии: Vantage Team Builder, Designer/2000, Silverrun, Erwin, S-Designer, CASE.Аналитик, Rational Rose.
|
Контрольные вопросы
1. Перечислите этапы эволюции технологий программирования.
2. Какие языки и методы программирования Вы знаете?
3. Охарактеризуйте технологию процедурного программирования.
4. Охарактеризуйте технологию объектно– ориентированного программирования.
5. Что такое компонентные технологии и CASE-технологии?
Тема 2. Жизненный цикл программы и основные
этапы решения задач на ЭВМ
2.1. Дружественность, жизненный цикл программы
Дружественность – это обеспечение дружественного интерфейса для работы пользователя;
Жизненный цикл программного обеспечения – это совокупность взаимосвязанных процессов создания программного обеспечения от формирования к нему исходных требований до окончания его эксплуатации.
Описание структуры жизненного цикла программного обеспечения и состав его процессов регламентируется международным стандартом ISO/IEC 12207: 1995 “Information Technologe – Software Life Cycle Processes” («Информационные технологии – Процессы жизненного цикла программного обеспечения»). Согласно стандарту процесс разработки программного обеспечения предусматривает 13 действий от подготовительной работы до приемки программного обеспечения.
Можно выделить следующие укрупненные этапы разработки программного обеспечения с учетом соответствующих стадий разработки по ГОСТ 19.102-77:
· постановка задачи (стадия «Техническое задание»);
· определение спецификаций (стадия «Эскизный проект»);
|
· проектирование (стадия «Технический проект»);
· реализация (стадия «Рабочий проект»).
По стандарту возможно также наличие отдельного этапа сопровождения, заключающегося в сопровождении и модификации программного продукта. Это деление на этапы является условным и может изменяться при необходимости. Например, тестирование и отладка может быть частью этапа реализации (или программирования), а может быть отдельным этапом.
Постановка задачи – это процесс формулировки назначения программного обеспечения и основных требований к нему.
Спецификациями называют полное и точное описание функций и ограничений разрабатываемого программного обеспечения.
Проектирование – это процесс разработки структурной схемы программного обеспечения с проектированием компонентов и их взаимосвязей.
Реализация – это процесс программирования компонентов программного обеспечения на выбранном языке программирования, их тестирования и отладки.
Рассмотрим эволюцию моделей жизненного цикла программного обеспечения.
На протяжении последних 30 лет в программировании сменились 3 модели жизненного цикла программного обеспечения:
· каскадная модель;
· модель с промежуточным контролем;
· спиральная модель.
Каскадная модель предполагает переход на следующий этап после завершений всех операций предыдущего этапа. Достоинства модели заключаются в следующем:
· получение после этапа законченного набора проектной документации без возврата на предыдущие этапы;
· простота планирования процесса разработки программного обеспечения.
Однако, данная модель приемлема только к созданию систем, для которых точно и полно сформулированы все требования. Такие разработки встречаются редко. Необходимость возвратов на предыдущие этапы обусловлена следующими причинами:
· неточные спецификации, уточнение которых требует пересмотра предыдущих решений;
· изменения требований заказчика;
· моральное устаревание технических и программных средств.
Модель с промежуточным контролем поддерживает итерационный характер процесса разработки, т.е. возврат на предыдущие этапы. Опасность модели состоит в том, что разработка программного обеспечения может затянуться.
Спиральная модель основана на том, что программное обеспечение создается не сразу, а итерационно с использованием метода прототипирования. Прототипом называется программный продукт, реализующий внешние интерфейсы и отдельные функции. Например, на первой итерации создается и поставляется пользователю первая версия программного продукта с реализацией внешних интерфейсов и главных функций, на следующих итерациях – следующие версии программного продукта с реализацией дополнительных функций.
Достоинства спиральной модели заключаются в следующем:
· программный продукт может поставляться пользователю с первой версии;
· сокращение времени появления первых версий программного продукта;
· быстрое продвижение следующих версий продукта на рынке;
· ускорение уточнений спецификаций за счет появления практики использования продукта;
· уменьшение вероятности морального устаревания системы за время разработки.
2.2. Постановка задачи и спецификация программы
Постановка задачи – это процесс формулировки назначения программного обеспечения и основных требований к нему. Описываются функциональные требования, определяющие функции, которые должно выполнять программное обеспечение, и эксплуатационные требования, определяющие характеристики его функционирования. Этап постановки задачи заканчивается разработкой технического задания с принятием основных проектных решений.
Техническое задание в соответствии со стандартом ГОСТ 19.201-78 «Техническое задание. Требования к содержанию и оформлению» имеет следующие основные разделы:
· введение: наименование и краткая характеристика программного обеспечения;
· основание для разработки;
· назначение разработки: описание функционального и эксплуатационного назначения;
· требования к программному изделию: к функциональным характеристикам, к надежности, к техническим средствам;
· требования к программной документации;
· технологические требования.
Технологические требования определяют выбор следующих принципиальных решений, влияющих на процесс проектирования программного обеспечения:
· архитектура программного обеспечения;
· пользовательский интерфейс:
· метод программирования;
· язык программирования;
· среда программирования.
Архитектурой программного обеспечения называют совокупность базовых концепций (принципов) его построения: сложность решаемых задач, число пользователей. Существуют однопользовательская архитектура, рассчитанная на одного пользователя компъютера, и многопользовательская архитектура, рассчитанная для работы в сети. По сложности решаемых задач в рамках однопользовательской архитектуры различают следующие виды архитектуры программного обеспечения: программы, пакеты программ, программные комплексы, программные системы.
Программа – это упорядоченная последовательность команд компъютера, необходимая для решения конкретной задачи. При процедурном программировании модель построения программы – иерархия подпрограмм, при объектно-ориентированном программировании - иерархия классов, совокупность обменивающихся сообщениями объектов классов. При этом простом виде архитектуры программа – это отдельно компилируемая программная единица, используемая при решении небольших задач.
Пакеты программ – это совокупность независимых программ, решающих задачи некоторой прикладной области, представляющая собой библиотеку отдельных программ.
Программные комплексы – это совокупность взаимосвязанных программ, совместно решающих небольшой класс задач некоторой прикладной области. Для решения задачи могут использоваться несколько программ комплекса, управляемые интерфейсом с пользователем, причем исходные данные и результаты желательно хранить в пределах одного проекта.
Программные системы – это совокупность подсистем программ, совместно решающих большой класс сложных задач некоторой прикладной области. Отличие от программных комплексов - взаимодействие программ системы через общие данные и наличие развитых пользовательских интерфейсов.
Пользовательский интерфейс представляет собой совокупность программных и аппаратных средств, обеспечивающих диалог пользователя и компъютера. Диалог – это процесс обмена информацией между пользователем и программой, осуществляемый в реальном масштабе времени и служащий для решения конкретной задачи. Различают следующие типы пользовательских интерфейсов:
· примитивные интерфейсы;
· интерфейсы-меню;
· интерфейсы со свободной навигацией;
· интерфейсы прямого манипулирования.
Примитивный интерфейс реализует единственный сценарий работы программного обеспечения: например, ввод данных – обработка -вывод результатов. Подобный интерфейс применяется крайне редко, например, когда программа имеет только одну функцию.
Интерфейс-меню реализует множество сценариев работы с иерархической структурой команд, выбираемых пользователем. Иерархическая организация меню с графом типа «дерева» задает строго ограниченную навигацию: вверх, вниз по ветвям графа.
Интерфейс со свободной навигацией реализует множество сценариев работы, не привязанных к уровням иерархии команд, а предполагает определение множества команд на конкретном шаге работы. Такие интерфейсы называют графическими пользовательскими интерфейсами (GUI – Graphic User Interface) или интерфейсами WYSIWYG (What You See Is What You Get – что видишь, то и получишь). Преимущества интерфейсов со свободной навигацией по сравнению с интерфейсами-меню заключаются в возможности доступа к любым командам и в выборе команд, имеющих смысл в данный момент. Диалоговые окна программы содержат меню различных видов (кнопочное, ниспадающее, контекстное) и элементы управления вводом/выводом, реализующие диалог с пользователем.
Интерфейс прямого манипулирования реализует множество сценариев работы посредством выбора и перемещения пиктограмм, определяющих объекты предметной области. Этот тип интерфейса реализован в интерфейсе операционной системе Windows, является альтернативой интерфейсу со свободной навигацией.
Два последних типа интерфейса требуют использования современной визуальной среды программирования, ориентированной на объектно-ориентированный подход к разработке программ.
К следующим технологическим требованиям программного обеспечения является:
· выбор метода программирования: процедурный или объектно-ориентированный;
· выбор языка программирования: C++ (безусловный лидер), Pascal, Basic, Ada и др.;
· выбор среды программирования: Visual C++, Visual Basic фирмы Microsoft, Delphi, Turbo C++, C++ Builder фирмы Borland, Visual Ada фирмы IBM и др.
Использование интерфейса со свободной навигацией или интерфейса прямого манипулирования требует выбора объектно - ориентированного подхода к программированию и выбора современной среды визуального программирования, например, Visual C++, Builder C++, Delphi.
Спецификациями называют полное и точное описание функций и ограничений разрабатываемого программного обеспечения. Существуют функциональные спецификации, описывающие функции разрабатываемого программного обеспечения и эксплуатационные спецификации, описывающие требования к техническим средствам. Требование полноты означает строгое соответствие техническому заданию, а требование точности – однозначное толкование спецификаций разработчиком и заказчиком.
Спецификации содержат:
· декомпозицию и содержательную постановку задач;
· эксплуатационные ограничения;
· математические методы решения;
· модели программного обеспечения.
Модели программного обеспечения зависят от технологии программирования (процедурная или объектно-ориентированная).
При процедурном программировании используются следующие модели разрабатываемого программного обеспечения:
· функциональные диаграммы, отражающие взаимосвязи функций разрабатываемого программного обеспечения и ориентированные на иерархию функций, декомпозицию функций;
· диаграммы потоков данных, описывающие взаимодействие источников и потребителей информации и позволяющие специфицировать как функции, так и данные;
· диаграммы структур данных, описывающие базы данных разрабатываемого программного обеспечения;
· диаграммы переходов состояний, описывающие поведение разрабатываемого программного обеспечения при получении управляющих данных извне (например, команды пользователя).
При объектно-ориентированном программировании модели разрабатываемого программного обеспечения основаны на предметах реального мира. На этапе определения спецификаций требуется разработать модель предметной области программного обеспечения на базе иерархии классов (типов, определенных пользователем), объектной декомпозиции. Разрабатываемое программное обеспечение представляется в виде совокупности объектов (экземпляров классов), в результате взаимодействия которых через передачу сообщений происходит выполнение требуемых функций.
В настоящее время стандартным средством описания разрабатываемого программного обеспечения с использованием объектно-ориентированного подхода является фактически графический язык UML (Unified Modeling Language – универсальный язык моделирования), разработанный авторами Буча, Рамбо и Якобсоном в 1995 г.
Язык UML имеет следующие часто используемые диаграммы:
· диаграммы вариантов использования или прецедентов, описывающие основные функции системы;
· диаграммы классов, показывающие отношения классов между собой;
· диаграммы деятельностей, представляющих собой схему потоков управления для решения некоторой задачи по отдельным действиям;
· диаграммы взаимодействия, показывающие взаимодействие объектов в процессе выполнения варианта использования;
· диаграммы состояний объекта, демонстрирующие состояние объекта и переходы из одного состояния в другое;
· диаграммы пакетов, показывающие связи наборов классов, объединенных в пакеты;
· диаграммы компонентов, описывающие компоненты программного обеспечения и их связи между собой;
· диаграммы размещения, позволяющие связывать программные и аппаратные компоненты системы.
Диаграммы используют единую графическую нотацию.
Язык UML поддерживается пакетом Rational Rose – CASE- средством фирмы «Rational Software Corporation», предназначенного для автоматизации проектирования программного обеспечения при объектно-ориентированном подходе. Варианты Rational Rose определяются языком программирования (C++, Smalltalk, Builder, Ada, SQL Windows, ObjectPro). Основной вариант -Rational Rose/C++-разрабатывает документацию на базе диаграмм UML и генерирует программы на C++.
2.3. Проектирование и реализация программы
Проектирование – это процесс разработки структурной схемы программного обеспечения с проектированием компонентов и их взаимосвязей. Тип модели программного обеспечения определяется выбранной технологией - методом программирования (процедурный, объектно-ориентированный, компонентный).
При процедурном подходе модель построения программного обеспечения – иерархия функций, т.е. декомпозиция программы по функциональному принципу.
Методы декомпозиции используют простые пользовательские интерфейсы: простое меню без иерархии команд, меню с иерархической структурой команд, и рассчитаны на проектирование структур данных и программ. Проектирование заключается в декомпозиции программного обеспечения методом пошаговой детализации. В результате декомпозиции получается структурная схема программы, представляющая собой многоуровневую, иерархическую схему взаимодействия подпрограмм по управлению.
Метод пошаговой детализации применяет нисходящую пошаговую разработку алгоритма, когда на каждом шаге происходит разложение функции на подфункции.
При объектно-ориентированном подходе модель построения программы – это иерархия классов, объектная декомпозиция. В результате декомпозиции получается структурная схема программы, представляющая собой многоуровневую, иерархическую схему взаимодействия классов. Следующий этап проектирования программного обеспечения заключается в разработке классов и их интерфейсов с описанием элементов-данных и элементов-функций каждого класса. Для проектирования пользовательских интерфейсов используются сложные интерфейсы: меню с иерархической структурой команд, свободная навигация, не привязанная к уровням иерархии (используется в Windows-приложениях).
Этапы проектирования программного обеспечения при объектно-ориентированном подходе принципиально отличаются от процедурного подхода, так как проектирование программы ведется в терминах (понятиях) прикладной области и отражает ее иерархию.
Реализация – это процесс программирования компонентов программного обеспечения на выбранном языке программирования, их тестирования и отладки.
При процедурном подходе реализация заключается в программировании функций и файлов (модулей) с использованием методов структурного программирования функций и программирования "сверху-вниз" ("top-down").
Этап программирования задачи выполняется в следующей последовательности:
· - программирование функций верхнего уровня схемы;
· - программирование функций нижнего уровня схемы и т.д.
При программировании и отладке функций верхнего уровня функции нижнего уровня, текста которых еще нет, имитируются "заглушками", т.е. выводом сообщений о вызове этих функций.
При объектно-ориентированном подходе этап реализации заключается в программировании элементов-функций целых взаимосвязанных классов, начиная с базовых классов.
Тестирование и отладка являются завершающими этапами процесса реализации программного обеспечения. Тестирование позволяет обнаружить ошибки, а отладка – их исправить.
В соответствии с этапами обработки программы (компиляция, компоновка, выполнение) различают следующие группы ошибок:
· синтаксические ошибки, обнаруживаемые компилятором при синтаксическом и семантическом анализе программы;
· ошибки компоновки, фиксируемые компоновщиком (редактором связей) при объединении модулей программы;
· ошибки выполнения, обнаруживаемые операционной системой или пользователем при выполнении программы.
Из всех групп ошибок самыми сложными для тестирования и отладки являются ошибки выполнения программы, а среди них - логические ошибки, имеющие непредсказуемые причины. Так причинами могут быть ошибки при проектировании программы, разработке алгоритмов, определении структуры данных.
Тестирование – это процесс выполнения программы на тестовых наборах с целью обнаружения ошибок, допущенных при реализации программы. Согласно рекомендациям Microsoft, различают следующие стадии тестирования:
· модульное тестирование, проверяющее небольшие, отдельные части программы – циклы, блоки, подпрограммы;
· компоновочное тестирование, проверяющее следующий уровень – программные файлы (модули), объединение, взаимодействие отдельных частей программы;
· системное тестирование, проверяющее полную версию программы, взаимодействие с операционной системой;
· стресс-тестирование, изучающее работу программы при ограниченных системных ресурсах;
· бета-тестирование, позволяющее узнать мнение специалистов-пользователей;
· тестирование-приемка пользователями в реальных условиях.
Тестовый набор должен содержать для каждого теста: описание тестируемого элемента, цель и инструкция проведения теста, исходные данные и ожидаемые результаты, описание среды тестирования и др.
Отладка – это процесс поиска и исправления ошибок, обнаруженных при тестировании программы. Имеются методы отладки программного обеспечения, основанные на анализе текста программы и результатов тестирования без дополнительной информации. Например, метод индукции включает следующие процессы отладки: выявление симптомов ошибки, изучение фрагмента программы, выдвижение гипотезы об ошибке, проверка гипотезы и при необходимости выдвижение новой гипотезы, нахождение ошибки.
Имеются методы отладки, позволяющие получать дополнительную информацию об ошибке и облегчающие процесс поиска и исправления ошибки. К ним относятся метод отладочного вывода и интегрированные средства отладки. Метод отладочного вывода заключается в добавлении в программу дополнительного отладочного вывода в узловых точках. Но безусловно наиболее эффективными методами являются интегрированные средства отладки, имеющиеся в современных средах программирования (Visual C++, Visual Basic фирмы Microsoft, Delphi, Turbo C++, C++ Builder фирмы Borland). Например, отладчик Visual C++ встроен в среду Visual Studio, имеет свои меню и панели инструментов, позволяют выполнять следующие действия:
· установка различных точек прерывания, связанных с кодом, с данными, с сообщением, условных точек прерывания;
· выполнение программы до точки прерывания;
· просмотр в 6 окнах отладчика информации о текущем состоянии программы при остановке программы в точке прерывания и при пошаговом выполнении;
· пошаговое выполнение программы с заходом в функции и без захода;
· выполнение программы до строки с курсором.
2.4. Способы записи алгоритма
Термин «алгоритм» идет от имени узбекского математика Аль-Хорезми (825 г.), который дал правила выполнения четырех арифметических операций в десятичной системе программирования. С 1747 г. использовался термин «алгорисмус», к 1950 г. появился термин «алгорифм» (смысл – алгорифм Евклида). Большой вклад в теорию алгоритмов в связи с эволюцией ЭВМ внесли математики Гильберт, Гедель, Черч, Клин, Тьюринг, Марков.
Перечислим основные свойства алгоритмов:
· определенность (детерминированность) – точность и понятность, обеспечивающие однозначность результата;
· результативность – получение искомого результата через конечное число этапов (шагов);
· дискретность – расчлененность алгоритма на отдельные этапы (шаги);
· массовость – пригодность алгоритма для решения всех задач данного типа.
Основными требованиями к алгоритму (как и к программе) являются компактность и минимальное время реализации.
Существуют следующие способы записи алгоритмов:
· формульно-словесный – содержание последовательных этапов вычислений задаются с нумерацией в произвольной форме на естественном языке;
· блок - схемный – изображение структуры алгоритма в виде графического представления этапов процесса обработки данных с помощью специальных геометрических символов (блоков);
· алгоритмические языки – непосредственная запись алгоритма решения задачи с помощью операторов языка.
Программы не имеют заранее строго регламентированного набора качественных характеристик, и поэтому, перечислим основные характеристики программ:
· алгоритмическая сложность (логика алгоритмов обработки информации);
· глубина проработки, полнота и системность реализованных функций программы;
· требования к операционной системе и техническим средствам со стороны программы;
· удобство освоения и эксплуатации программы;
2.5. Критерии качества программы
Критериями качества программы являются:
· мобильность - независимость программы от программных и технических средств обработки данных;
· надежность – устойчивость в работе программы, точность выполнения функций обработки;
· эффективность – оценка расходов вычислительных ресурсов (объемов памяти для эксплуатации программы и т.п.);
· дружественность – обеспечение дружественного интерфейса для работы пользователя;
· модифицируемость – способность к внесению изменений и расширений функций обработки;
· коммуникативность – возможность интеграции с другими программами.
На качество программы влияют следующие операции:
· маркетинг рынка и спецификация требований к программе – определение состава функций обработки данных программы, выбор пользовательского интерфейса, требования к комплексу технических и программных средств;
· проектирование структурной схемы программы - алгоритмизация процессов обработки данных, разработка структуры программы и базы данных, выбор метода и средств создания программы – технологии программирования;
· программирование (алгоритмизация, тестирование и отладка) – техническая реализация проекта программы, выполняемая с помощью выбранного инструментария технологии программирования (алгоритмические языки и системы программирования);
· эксплуатация и сопровождение программы – важный этап, связанный с устранением обнаруженных ошибок;
· распространение программы и завершение жизненного цикла – этап, связанный с постоянной программой маркетинговых мероприятий, и заканчивающийся либо отсутствиемом спроса, либо изменением технической политики разработчика.
Этапы жизненного цикла программ соответствуют регламентированному содержанию работ по созданию программ: техническое задание, технический проект, рабочий проект.
Для поддержки всех технологических этапов разработки программ имеется инструментарий технологии программирования – специализированные программные продукты.
Инструментарий технологии программирования - совокупность средств для создания программ, обеспечивающих технологию проектирования, программирования, отладки и тестирования создаваемых программ.
Локальные с редства для создания программ - языки и системы программирования, а также программные комплексы для поддержки создаваемых программ. Язык программирования – формализованный язык для написания алгоритма решения задачи. В настоящее время имеются сотни языков программирования, которые можно условно разделить на три класса по синтаксису образования конструкций и по эволюции использования языков:
· машинные языки (computer language) – языки программирования, содержащие команды компъютеру определенного типа на выполнение операций; это машинно-зависимые языки, не применяемые для создания программ;
· машинно-ориентированные языки (computer-oriented language) – это языки ассемблера, использующие похожие на английский язык аббревиатуры для представления компъютерных операций; транслятор (ассемблер) преобразует программу на языке ассемблера в машинный язык; в настоящее время применяются редко для создания программ;
· языки высокого уровня - алгоритмические языки (algorithmic language), использующие для написания структуры алгоритма задачи специальные типовые операторы, напоминающие повседневный английский и общепринятую математическую нотацию; компилятор преобразует программу на алгоритмическом языке в машинный язык; это основные локальные средства для создания программ.
Системы программирования (programming system) – это совокупность следующих частей: интегрированной среды программирования, языка, компилятора, редактора связей, различных библиотек и т.д. Рассмотрим этапы выполнения программы:
· редактирование файла: создается программа редактором программ и сохраняется на диске;
· компиляция программы: компилятор переводит программу в машинный код, создает объектный код и сохраняет его на диске;
· компоновка программы: компоновщик связывает объектный код с библиотеками, создает исполняемый загрузочный модуль и сохраняет его на диске;
· загрузка программы: загрузчик считывает исполняемый загрузочный модуль с диска и перемещает его в оперативную память для выполнения;
· поочередное выполнение команд программы.
Контрольные вопросы
1. Объясните основные этапы решения задач на ЭВМ.
2. Что такое жизненный цикл программного обеспечения?
3. Объясните эволюцию моделей жизненного цикла программного обеспечения.
4. Каковы основные результаты постановки задачи и спецификации программы?
5. Каковы основные результаты проектирования и реализации программы?
6. Расскажите о способах записи алгоритма.
7. Приведите критерии качества программы.
8. Охарактеризуйте этапы технологии процедурного программирования.
9. Охарактеризуйте этапы технологии объектно– ориентированного программирования.
Тем3. Среды разработки программ
3.1. Классификация программных продуктов
Visual C++ - это язык программирования C++, служащий для разработки 32-разрядных Windows-приложений и.NET- приложений на базе программной платформы Microsoft Visual Studio 2005.
Visual Studio – это единая среда разработки и инструментарий, служащие для создания программного кода на различных языках программирования: Visual C++, Visual C#, Visual Basic, Visual Java Script. Наша цель – изучение разработки Windows-приложений на последней версии Visual C++, входящей в состав Visual Studio 2005.
В состав Visual Studio.NET входят средства разработки, позволяющие эффективно и на более высоком уровне создавать C++-программы.
Основу программирования в Visual C++ составляет библиотека классов Microsoft Foundation Classes (MFC), содержащая много стандартных функций для Windows-программирования. Применение библиотеки MFC позволит:
· освободить программиста от рутинной работы, связанной с написанием общих функций, например, главной функции WinMain, и стандартных каркасов функций приложения;
· обеспечить программиста более простой, структурированной библиотекой MFC по сравнению с библиотекой Win32 API;
· уменьшить размер исходного кода (приблизительно в 2-3 раза).
Также для генерации программных кодов различных типов приложений имеется набор разных мастер -блоков, позволяющих быстро генерировать шаблон работающего Windows-приложения. Для программирования пользовательского интерфейса используются стандартные элементы управления Windows, что ведет к экономии времени.
Следует также отметить наличие интегрированной среды разработки Visual Studio, выполняющей создание и редактирование файлов и проектов, формирование графического интерфейса приложения.
Язык Visual C++ по сравнению с другими языками характеризуется высоким быстродействием написанных программ, наличием больших библиотек функций. Согласно информации сайта www.optim.ru проведенное тестирование продуктов таких фирм как Borland, Intel, Microsoft показало, что компилятор Visual C++ создает наиболее быстрые приложения. Сравнение компиляторов Visual C++ и Borland C++ 5.02 выявило преимущество Visual C++ не только в компактности программного кода, но и в оптимизации откомпилированных кодов.
Модель программирования в Windows значительно отличается от модели программирования в MS-DOS. Самое главное отличие – это обработка сообщений. Например, в Windows-приложении нельзя использовать напрямую функции чтения данных с клавиатуры, а требуется обработка сообщения. На любое событие, например, нажатие клавиши или кнопки мыши, порождается сообщение. Сообщения – это основной элемент программирования в Windows, для обработки которых требуется написать функции-обработчики. Главная функция WinMain обнаруживает последовательность сообщений и вызывает необходимые функции-обработчики.
Интегрированная среда разработки (Integrated Development Environment) - это общая рабочая область средств работы с языками и библиотеки MSDN, входящие в комплект Visual Studio. Visual C++ является одним из компонентов пакета Visual Studio. Проект – это создаваемое приложение: совокупность файлов заголовков, кодов, ресурсов, а также файлов, содержащих информацию об установках и конфигурации проекта. По умолчанию каждый проект расположен в папке, одноименной с именем проекта. Решение – это приложение, состоящее из одного или нескольких проектов.
При запуске Visual Studio 2005 появляется стартовая страница Start Page. Вкладка Open Projects позволяет открыть существующий проект из списка проектов, вкладка Create Project - открыть новый проект.
3.2. Основные понятия Visual C++
Библиотека классов MFC
Библиотека классов Microsoft Foundation Classes (MFC) содержит более 200 уже написанных классов для Windows - программирования.
Функции классов MFC внутри себя вызывают функции библиотеки Windows Win32 API (1000 функций), т.е. можно сказать, что в MFC включен Win32 API. Преимущество MFC по сравнению с Win32 API заключаются в упрощении и ускорении разработки Windows-приложений.
Библиотека классов MFC имеет следующие преимущества:
· использует удобно внутри себя библиотеку Win 32 API;
· упрощает и ускоряет разработку Windows-приложений;
· создает компактность программного кода;
· сокращает время разработки графического интерфейса пользователя;