Автор Анна Евкова
Преподаватель который помогает студентам и школьникам в учёбе.

Алгоритмизация как обязательный этап разработки программы (Моделирование как средство поддержки принятия решений в профессиональной области.)

Содержание:

Введение


Внедрение электронно-вычислительных машин, современных средств переработки и передачи информации послужило началом нового процесса, называемым информатизацией общества. Широкое распространение получил научно-технический прогресс. В настоящее время одним из направлений научно-технического прогресса является компьютеризация практически всех сфер человеческой деятельности.
Сейчас компьютер является неотъемлемой частью работы людей. Компьютеры используются в школах и университетах. Они помогают систематизации полученные данных, как в рабочих целях, так и в учебных. Но, ни один компьютер не обходится без программ и программных обеспечений.
Развитие современной техники идёт по пути все большего усложнения
конструкции вновь создаваемых изделий. При их создании используются все
более сложные технологии и технологические процессы. Процесс проектирования новых изделий требует привлечения и использования новых нестандартных решений.
Одним из наиболее бурно развивающихся направлений новой техники является создание средств вычислительной техники, которые, постепенно, из области непосредственных вычислений стали применяться в процессе решения все более усложняющихся инженерных задач. В настоящее время, процесс проектирования образцов новой техники и разработки новых технологий уже немыслим без использования средств вычислительной техники.

1.Языки программирования высокого уровня их основные элементы

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

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

Такого рода оторванность высокоуровневых языков от аппаратной реализации компьютера помимо множества плюсов имеет и минусы. В частности, она не позволяет создавать простые и точные инструкции к используемому оборудованию. Программы, написанные на языках высокого уровня, проще для понимания программистом, но менее эффективны, чем их аналоги, создаваемые при помощи низкоуровневых языков. Одним из следствий этого стало добавление поддержки того или иного языка низкого уровня (язык ассемблера) в ряд современных профессиональных высокоуровневых языков программирования.
Примеры: C++, Visual Basic, Python, Perl, Delphi (Pascal), строковых типов, объектов, операций файлового ввода-вывода и т. П.
Первым языком программирования высокого уровня считается компьютерный язык Plankalkül разработанный немецким инженером Конрадом Цузе ещё в период 1942—1946 гг. Однако, широкое применение высокоуровневых языков началось с возникновением Фортрана и созданием компилятора для этого языка (1957).

1. Переносимость программ


Распространено мнение, что программы на языках высокого уровня можно написать один раз и потом использовать на компьютере любого типа. В действительности же это верно только для тех программ, которые мало взаимодействуют с операционной системой, например, выполняют какие-либо вычисления или обработку данных. Большинство же интерактивных (а тем более мультимедийных) программ обращаются к системным вызовам, которые сильно различаются в зависимости от операционной системы. Например, для отображения графики на экране компьютера программы под Microsoft Windows используют функции Windows API, которые недоступны в системах, поддерживающих стандарт программный интерфейс X-сервера.
К настоящему времени создан целый ряд программных библиотек (например, библиотека wxWidgets), скрывающих несоответствия системных вызовов различных операционных систем от прикладных программ. Однако такие библиотеки, как правило, не позволяют полностью использовать все возможности конкретных операционных систем.


2. Новые тенденции

Новой тенденцией является появление языков программирования еще более высокого уровня (ультра-высокоуровневых). Такого рода языки характеризуются наличием дополнительных структур и объектов, ориентированных на прикладное использование. Прикладные объекты, в свою очередь, требуют минимальной настройки в виде параметров и моментально готовы к использованию. Использование ультра-высокоуровневых языков программирования снижает временные затраты на разработку программного обеспечения и повышает качество конечного продукта за счет, опять таки, уменьшения объема исходных кодов.
Пример:
• ApplicationXML;
• JavaFx Scene;

2. Моделирование как средство поддержки принятия решений в профессиональной области.

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

  1. Система поддержки принятия решений

СППР (Decision Support Systems, DSS) — это компьютерная система, которая путем сбора и анализа большого количества информации может влиять на процесс принятия решений организационного плана в бизнесе и предпринимательстве. Интерактивные системы позволяют руководителям получить полезную информацию из первоисточников, проанализировать ее, а также выявить существующие бизнес-модели для решения определенных задач. С помощью СППР можно проследить за всеми доступными информационными активами, получить сравнительные значения объемов продаж, спрогнозировать доход организации при гипотетическом внедрении новой технологии, а также рассмотреть все возможные альтернативные решения.
Система поддержки решений СППР решает две основные задачи:
выбор наилучшего решения из множества возможных (оптимизация),
упорядочение возможных решений по предпочтительности (ранжирование).
В обеих задачах первым и наиболее принципиальным моментом является выбор совокупности критериев, на основе которых в дальнейшем будут оцениваться и сопоставляться возможные решения (будем называть их также альтернативами). Система СППР помогает пользователю сделать такой выбор.

2. Динамическое моделирование

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


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

устраивают.

2. Формулировка и анализ физической задачи
Формулировка задачи – это само её объявление, её постановка.
Но просто формулировка ничем не поможет программистам. Для этого и существует второй подэтап – это анализ задачи.
Анализ задачи – это подробный просмотр задачи с определением и выявлением входной и выходной информации. (Входная информация по задаче — это данные, поступающие на вход задачи и используемые для её решения. Выходная информация – это результат.)
После проведения анализа поставленной задачи программисту более или менее понятно, с какими проблемами ему придется столкнуться.

  1. Составление математической модели
    Начнем опять же с определения. Для более четкого понимания рассмотрим определения математической модели, объявленные в разных (математических, физических, экономических и т.д.) источниках и попробуем создать собственное определение, подходящее для программирования.
    «Математическая модель — это математическое представление реальности» - это определение созданное математиками.
    Делаем выводы: математическая модель в программировании – это система математических соотношений, приближенно отражающий сформулированную задачу. И она позволяет осуществить предварительный выбор оптимальных вариантов решений по определенным критериям.
    Создание математической модели не займет у нас много времени, т.к. мы должны были подробно разобрать задачу по предыдущему пункту.
     
  2. 4. Составление алгоритма задачи

    Изначально появление алгоритма связывают с возникновением математики. Алгоритм – описание последовательности действий (план), строгое исполнение которых приводит к решению поставленной задачи за конечное число шагов.
    У алгоритма есть 2 обязательных условия:
    • Алгоритм должен быть представлен в форме, понятной человеку, который его разрабатывает.
    • Алгоритм должен быть представлен в форме, понятной тому объекту (в том числе и человеку), который будет выполнять описанные в алгоритме действия.
    Так же у алгоритмов есть свойства:
    1. Дискретность, т. е. алгоритм должен состоять из конкретных действий, следующих в определенном порядке.
    2. Детерминированность, т. е. любое действие должно быть строго и недвусмысленно определено в каждом случае.
    3. Конечность, т. е. каждое действие и алгоритм в целом должны иметь возможность завершения.
    4. Массовость, т. е. один и тот же алгоритм можно использовать с разными исходными данными.
    5. Результативность, т. е. отсутствие ошибок, алгоритм должен приводить к правильному результату для всех допустимых входных значениях.
    В мире существует несколько видов алгоритмов:
    • Линейный алгоритм (описание действий, которые выполняются однократно в заданном порядке);
    • Циклический алгоритм (описание действий, которые должны повторятся указанное число раз или пока не выполнено условие);
    • Разветвляющий алгоритм (алгоритм, в котором в зависимости от условия выполняется либо одна, либо другая последовательность действий);

5. Создание программы


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

6.Тестирование и семантическая отладка

Тестирование – это динамический контроль программы, т.е. проверка правильности программы при ее выполнении на компьютере.
Каждому программисту известно, сколько времени и сил уходит на отладку и тестирование программ. На этот этап приходится около 50% общей стоимости разработки программного обеспечения. Но не каждый из разработчиков программных средств может верно, определить цель тестирования. Нередко можно услышать, что тестирование - это процесс выполнения программы с целью обнаружения в ней ошибок. Но эта цель недостижима: ни какое самое тщательное тестирование не дает гарантии, что программа не содержит ошибок. Другое определение: это процесс выполнения программы с целью обнаружения в ней ошибок. Отсюда ясно, что “удачным” тестом является такой, на котором выполнение программы завершилось с ошибкой. Напротив, “неудачным” можно назвать тест, не позволивший выявить ошибку в программе. Определение также указывает на

объективную трудность тестирования: это деструктивный ( т.е. обратный созидательному ) процесс. Поскольку программирование - процесс конструктивный, ясно, что большинству разработчиков программных средств сложно “переключиться” при тестировании созданной ими продукции.

7.Документирование программы


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

8. Запуск готовой программы и анализ полученных результатов.


После полученного нами файла с *.exe (обычно) разрешением мы можем запустить его и ещё раз проверить (проанализировать) верно, ли работает программа. На этом этапы создания программы закончены.

4. Алгоритмы
Алгоритм должен обладать следующими четырьмя свойствами:
• дискретностью;
• определенностью;
• результативностью;
• массовостью.
Дискретность. Задача должна быть разбита на конечное число действий
(шагов, тактов). Причем каждое последующее действие должно базироваться на
результатах, полученных в предыдущих действиях.
Определенность (детерминированность). Каждое действие должно быть
описано четко и однозначно (только так и никак по-другому). Необходимо исключить произвольность толкования как самих действий, так и порядка их следования.
Результативность (конечность). Алгоритм должен обязательно приводить к решению задачи (к получению результата), причем за конечное число шагов, или сообщить через определенное число шагов о невозможности дальнейшего решения задачи.
Массовость. Алгоритм разрабатывается в общем виде, чтобы его можно
было применить для различных исходных данных (область применимости алгоритма).


1. Алгоритмизация и программирование


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

 

2. Понятие алгоритма и способы его описания
Выше отмечалось, что один и тот же алгоритм может быть записан по-разному. Можно записывать алгоритм естественным языком. В таком виде мы используем рецепты, инструкции и т.п. Для записи алгоритмов, предназначенных формальным исполнителям, разработаны специальные языки программирования. Любой алгоритм можно описать графически в виде блок-схемы. Для этого разработана специальная система обозначений: |Действие |В вычислительных алгоритмах так обозначают присваивание|
|[pic] |Развилка |Развилка - компонент, необходимый для реализации |
| | |ветвлений и циклов |
|[pic] |Начало цикла с параметром |  |
|[pic] |Типовой процесс |В программировании - процедуры или подпрограммы |
|[pic] |Переходы между блоками | |

5. Инструментарии решения функциональных задач


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

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

фирмы Adobe, с довольно сложным интерфейсом и системой команд, но в то же время с высокой производительностью и богатыми возможностями, особенно при работе с цветом.
3. Corel Ventura Publisher - альтернативный пакет фирмы Corel, несколько утративший в последнее время свои позиции, но вследствие своей универсальности (имеет широкие функции обычных текстовых и графических редакторов, интеграция с Web, поддержка различных платформ) не потерявший актуальности.
4. QuarkXPress - достаточно легкая в освоении и гибкая издательская система, которая традиционно используется многими издательствами газет, журналов, рекламными агентствами.

6. Архитектура программных систем
Архитектура программного обеспечения (англ. software architecture) — это структура программы или вычислительной системы, которая включает программные компоненты, видимые снаружи свойства этих компонентов, а также отношения между ними. Этот термин также относится к документированию архитектуры программного обеспечения. Документирование архитектуры ПО упрощает процесс коммуникации между заинтересованными лицами (англ. stakeholders), позволяет зафиксировать принятые на ранних этапах проектирования решения о высокоуровневом дизайне системы и позволяет использовать компоненты этого дизайна и шаблоны повторно в других проектах.


1. История возникновения архитектуры ПО
Начало архитектуре программного обеспечения как концепции было положено в научно-исследовательской работе Эдсгера Дейкстры в 1968 году и Дэвида Парнаса в начале 1970-х. Эти ученые подчеркнули, что структура системы ПО имеет важное значение, и что построение правильной структуры — критически важно. Популярность изучения этой области возросла с начала 1990-х годов вместе с научно-исследовательской работой по исследованию архитектурных стилей (шаблонов), языков описания архитектуры, документирования архитектуры, и формальных методов.
В развитии архитектуры программного обеспечения как дисциплины играют важную роль научно-исследовательские учреждения. Мэри Шоу и Дэвид Гэрлан из университета Carnegie Mellon написали книгу под названием «Архитектура программного обеспечения: перспективы новой дисциплины в 1996 году», в которой выдвинули концепции архитектуры программного обеспечения, такие как компоненты, соединители (connectors), стили и так далее. В калифорнийском университете институт Ирвайна по исследованию ПО в первую очередь исследует архитектурные стили, языки описания архитектуры и динамические архитектуры.
Первым стандартом программной архитектуры является стандарт IEEE 1471: ANSI / IEEE 1471—2000: Рекомендации по описанию преимущественно программных систем. Он был принят в 2007 году, под названием ISO ISO / IEC 42010:2007.

7. Программное обеспечение и технологии программирования

Технология программирования - это совокупность методов и средств разработки (написания) программ и порядок применения этих методов и средств.
На ранних этапах развития программирования, когда программы писались в виде последовательностей машинных команд, какая-либо технология программирования отсутствовала. Первые шаги в разработке технологии состояли в представлении программы в виде последовательности операторов. Написанию последовательности машинных команд предшествовало составление операторной схемы, отражающей последовательность операторов и переходы между ними. Операторный подход позволил разработать первые программы для автоматизации составления программ - так называемые составляющие программы.
С увеличением размеров программ стали выделять их обособленные части и оформлять их как подпрограммы. Часть таких подпрограмм объединялась в библиотеки, из которых подпрошраммы можно было включать в рабочие программы и затем вызывать из рабочих программ. Это положило начало процедурному программированию - большая программа представлялась совокупностью процедур-подпрограмм. Одна из подпрограмм являлась главной и с нее начиналось выполнение программы.
В 1958 году были разработаны первые языки программирования, Фортран и Алгол-58. Программа на Фортране состояла из главной программы и некоторого количества процедур - подпрограмм и функций. Программа на Алголе-58 и его последующей версии Алголе-60 представляла собой единое целое, но имела блочную структуру, включающую главный блок и вложенные блоки подпрограмм и функций. Компиляторы для Фортрана обеспечивали раздельную трансляцию процедур и последующее их объединение в рабочую программу, первые компиляторы для Алгола предполагали, что транслируется сразу вся программа, раздельная трансляция процедур не обеспечивалась.
Процедурный подход потребовал структурирования будущей программы, разделения ее на отдельные процедуры. При разработке отдельной процедуры о других процедурах требовалось знать только их назначение и способ вызова. Появилась возможность перерабатывать отдельные процедуры, не затрагивая остальной части программы, сокращая при этом затраты труда и машинного времени на разработку и модернизацию программ.
Следующим шагом в углублении структурирования программ стало так называемое структурное программирование, при котором программа в целом и отдельные процедуры рассматривались как последовательности канонических структур: линейных участков, циклов и разветвлений. Появилась возможность читать и проверять программу как последовательный текст, что повысило производительность труда программистов при разработке и отладке программ. С целью повышения структурности программы были выдвинуты требования к большей независимости подпрограмм, подпрограммы должны связываться с вызывающими их программами только путем передачи им аргументов, использование в подпрограммах переменных, принадлежащих другим процедурам или главной программе, стало считаться нежелательным.
Процедурное и структурное программирование затронули прежде всего процесс описания алгоритма как последовательности шагов, ведущих от варьируемых исходных данных к искомому результату. Для решения специальных задач стали разрабатываться языки программирования, ориентированные на конкретный класс задач: на системы управления базами данных, имитационное моделирование и т.д.
При разработке трансляторов все больше внимания стало уделяться обнаружению ошибок в исходных текстах программ, обеспечивая этим сокращение затрат времени на отладку программ.

Объектно-ориентированный подход в программировании


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

• Объект описывается набором параметров, значения которых определяют состояние объекта, и набором операций (действий), которые может выполнять объект.
• Взаимодействие между объектами осуществляется посылкой специальных сообщений от одного объекта к другому. Сообщение, полученное объектом, может потребовать выполнения определенных действий, например, изменения состояния объекта.
• Объекты, описанные одним и тем же набором параметров и способные выполнять один и тот же набор действий представляют собой класс однотипных объектов.
С точки зрения языка программирования класс объектов можно рассматривать как тип данного, а отдельный объект - как данное этого типа. Определение программистом собственных классов объектов для конкретного набора задач должно позволить описывать отдельные задачи в терминах самого класса задач (при соответствующем выборе имен типов и имен объектов, их параметров и выполняемых действий).
Таким образом, объектно-ориентированный подход предполагает, что при разработке программы должны быть определены классы используемых в программе объектов и построены их описания, затем созданы экземпляры необходимых объектов и определено взаимодействие между ними.
Классы объектов часто удобно строить так, чтобы они образовывали иерархическую структуру. Например, класс “Студент”, описывающий абстрактного студента, может служить основой для построения классов “Студент 1 курса”, “Студент 2 курса” и т.д., которые обладают всеми свойствами студента вообще и некоторыми дополнительными свойствами, характеризующими студента конкретного курса. При разработке интерфейса с пользователем программы могут использовать объекты общего класса “Окно” и объекты классов специальных окон, например, окон информационных сообщений, окон ввода данных и т.п. В таких иерархических структурах один класс может рассматриваться как базовый для других, производных от него классов. Объект производного класса обладает всеми свойствами базового класса и некоторыми собственными свойствами, он может реагировать на те же типы сообщений от других объектов, что и объект базового класса и на сообщения, имеющие смысл только для производного класса. Обычно говорят, что объект производного

класса наследует все свойства своего базового класса.

8. Основы создания программного продукта
Известно, что технологический цикл конструирования программной системы (ПС) включает три процесса – анализ, синтез и сопровождение. В ходе анализа определяется ответ на вопрос: «Что должна делать будущая система?». Именно на этой стадии закладывается фундамент успеха всего проекта. Известно множество неудачных реализаций из-за неполноты и неточностей в определении требований к системе. В процессе синтеза формируется ответ на вопрос: «Каким образом система будет реализовывать предъявляемые к ней требования?». Выделяют три этапа синтеза: проектирование ПС, кодирование ПС, тестирование ПС. Рассмотрим информационные потоки процесса синтеза.
Этапы проектирования опираются на требования к ПС, представленные информационной, функциональной и поведенческой моделями анализа. Иными словами, модели анализа поставляют этапу проектирования исходные сведения для работы.
Функциональная модель определяет перечень функций обработки. Поведенческая модель фиксирует желаемую динамику системы (режимы её работы). На выходе этапа проектирования – разработка данных, разработка архитектуры и процедурная разработка ПС.
Разработка данных – это результат преобразования информационной
модели анализа в структуры данных, которые потребуются для реализации программной системы.
Разработка архитектуры выделяет основные структурные компоненты и фиксирует связи между ними.Процедурная разработка описывает последовательность действий в структурных компонентах, т.е. определяет их содержание.
Далее создаются тексты программных модулей, проводится тестирование для объединения и проверки ПС. На проектирование, кодирование
и тестирование приходится более 75% стоимости конструирования ПС.
Принятые здесь решения оказывают решающее воздействие на успех реализации ПС и лёгкость, с которой ПС будет сопровождаться.
Следует отметить, что решения, принимаемые в ходе проектирования, делают его стержневым этапом процесса синтеза. Важность проектирования можно определить одним словом – качество. Проектирование – этап, на котором «выращивается» качество разработки ПС. Справедлива следующая аксиома разработки: может быть плохая ПС при хорошем проектировании, но не может быть хорошей ПС при плохом проектировании. Проектирование обеспечивает нас такими представлениями ПС, качество которых можно оценить. Проектирование – единственный путь, обеспечивающий правильную трансляцию требований заказчика в конечный программный продукт.

Компиляторы и интерпретаторы

1. Компиляторы

Компиляторы — это программы, которые преобразуют исходные тексты программ, написанные на языке программирования высокого уровня, в программу на машинном языке, «понятную» компьютеру. Полученный код, называемый исполняемой программой, можно устанавливать и запускать на нужном компьютере без дополнительных преобразований. Интерпретаторы выполняют аналогичную функцию, но делают это построчно всякий раз во время исполнения программы. Байт-код — это промежуточный подход, при котором программа преобразуется в промежуточный двоичный вид, интерпретируемый некой «виртуальной машиной» во время исполнения.
Причиной вновь вспыхнувшего интереса к компиляторам стало появление быстрых и сложных 64-разрядных микропроцессоров, типичным представителем которых можно считать Intel Itanium. Все усовершенствования в архитектуре процессоров, такие как распараллеливание и предсказание ветвления, а также возможность резкого увеличения производительности, окажутся бесполезны до тех пор, пока программисты не начнут их реально использовать.
Забота о создании кода, ориентированного на эффективную параллельную обработку, серьезно усложняет и без того непростую задачу современного программирования. В итоге ответственность за увеличение производительности, на которое потенциально способны будущие 64-разрядные процессоры, ложится на компиляторы нового поколения.
Компиляторы, которым предстоит обеспечить значительное увеличение скорости вычислений, уже создаются в исследовательских лабораториях ряда компаний — Hewlett-Packard, Intel, MetaWare, Microsoft и других. В феврале прошлого года компания Silicon Graphics объявила о том, что ее оптимизированные компиляторы позволяют увеличить на 30-100% по сравнению с существующими продуктами производительность программ, работающих на компьютерах с процессорами Itanium и операционной системой Linux.
Как и их предшественники, оптимизированные компиляторы преобразуют программы на высокоуровневом языке в машинный код. Однако помимо этого они гарантируют максимально эффективное использование памяти (и в первую очередь процессорного кэша и механизма распараллеливания).
Например, процессоры Itanium предназначены для того, чтобы одновременно обрабатывать до шести команд на каждый такт процессора. Но для этого компилятор должен поддерживать стабильную передачу данных через конвейер команд.

 Интерпертаторы

Интерпретаторы также преобразуют код, написанный на языке программирования высокого уровня, но они делают это построчно всякий раз, когда программа запускается на выполнение. Для того чтобы программа была «понятна» компьютеру, на котором предполагается исполнять высокоуровневый код непосредственно, на нем также должна работать программа интерпретации. Интерпретаторы полезны для тестирования нового или модифицированного кода или при обучении программированию.
Заранее скомпилированное программное обеспечение работает быстрее, чем интерпретируемые программы, поэтому скомпилированные программы предпочтительны для крупных и устоявшихся приложений. За это приходится расплачиваться зависимостью исполняемого кода от конкретной аппаратной платформы. Но такой подход не всегда оправдывает себя в случае с Internet-апплетами, для которых нельзя сказать априори, в какой именно среде они будут работать.
Идеология Java опирается на третий, своего рода компромиссный подход — байт-код. При использовании байт-кода высокоуровневые программы преобразуются в промежуточный вид, способный исполняться на различных аппаратных платформах. Байт-код Java преобразуется в машинный код с помощью специального интерпретатора, называемого виртуальной машиной Java (Java Virtual Machine — JVM). JVM формирует выделенное пространство в памяти, которое отделено от памяти основной системы, для хранения байт-кода и порождаемых структур.
Использование динамических (just-in-time, JIT — «точно в срок») компиляторов увеличивает производительность Java-приложений. В этом случае не JVM исполняет байт-код, а JIT-компилятор преобразует его в «родной» для данной машины код. Таким образом, с одной стороны, повышается производительность скомпилированного кода, а с другой — сохраняется переносимость, свойственная Java.
Hewlett-Packard придерживается аналогичной тактики со своим TurboChai — средой Java для встроенных приложений. В TurboChai производительность увеличивается за счет преобразования наиболее часто используемого кода в данном встроенном приложении. С помощью выборочной компиляции в HP стараются оптимальным образом управлять использованием памяти, в то же время достигая скоростей, сравнимых с теми, которых позволяют добиться JIT-компиляторы. TurboChai использует байт-код Java в качестве входной информации и генерирует исходные тексты ANSI C, а затем использует любой компилятор для языка Си для получения оптимизированного «родного» машинного кода.
В прошлом году Microsoft анонсировала C#, объектно-ориентированный язык программирования, согласованный с XML. Корпорация подает новый язык как логическое продолжение Си и C++ для Web-приложений. Ключевыми модулями станут Common Language Runtime для C# и специальный компилятор, который преобразует текст, написанный на традиционных языках Кобол, Perl, Фортран или других, в промежуточный язык, который будет работать на новой платформе Microsoft .Net.
Конечные пользователи вряд ли будут уделять много внимания компиляторам. Тем не менее может появиться новое поколение компиляторов, позволяющих увеличить производительность до уровня, позволяющего убедить профессионалов в необходимости использовать 64-разрядные аппаратные архитектуру.

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

Кардинально облегчило жизнь программистов появление визуального программирования, возникшего в Visual Basic и нашедшего блестящее воплощение в Delphi и C++Builder фирмы Borland. Визуальное программирование позволило свести проектирование пользовательского интерфейса к простым и наглядным процедурам, которые дают возможность за минуты или часы сделать то, на что ранее уходили месяцы работы.
Интегрированная среда разработки предоставляет программисту формы, на которых размещаются компоненты. Обычно это оконная форма, хотя могут быть и невидимые формы. На форму с помощью мыши переносятся и размещаются пиктограммы компонентов, имеющихся в библиотеках системы программирования. С помощью простых манипуляций программист может изменять размеры и расположение этих компонентов. При этом результаты проектирования видны на экране даже без компиляции программы, немедленно после выполнения какой-то операции с помощью мыши.
Самое главное достоинство визуального программирования заключается в том, что во время проектирования формы и размещения на ней компонентов автоматически формируются коды программы. В программу включаются соответствующие фрагменты, описывающие данный компонент. А затем в соответствующих диалоговых окнах программист может изменить заданные по умолчанию значения каких-то свойств этих компонентов и, при необходимости, написать обработчики каких-то событий. То есть проектирование сводится, фактически, к размещению компонентов на форме, заданию некоторых их свойств и написанию, при необходимости, обработчиков событий.

Благодаря визуальному объектно-ориентированному программированию была создана технология, получившая название быстрая разработка приложений – RAD. Эта технология характерна для нового поколения систем программирования.

Сегодня имеется немало систем программирования, выпускаемых различными фирмами и ориентированных на различные модели ПК и операционные системы. Наиболее популярны следующие визуальные среды быстрого проектирования программ для Windows:
• Basic: Microsoft Visual Basic;

• Pascal: Borland Delphi;

• C++: Borland C++Bulider.

1. Компоненты систем программирования
Служебные программы системы программирования:
• Текстовые редакторы, предназначенные для набора и исправления текстов программ на языках программирования.
• Трансляторы (компиляторы) с одного языка на другой (например, программа Ассемблера транслирует с языка Ассемблер на язык объектных модулей).
• Редакторы внешних связей, собирающие программы из модулей.
• Загрузчики.
• Отладчики, помогающие пользователям искать и исправлять ошибки в программах в диалоговом режиме.
• Оптимизаторы, позволяющие автоматически улучшать программу, написанную на определённом языке.
• Профилировщики, которые определяют, какой процент времени выполняется та или иная часть программы. Это позволяет программирования. С помощью простых манипуляций программист может изменять размеры и расположение этих компонентов. При этом результаты проектирования видны на экране даже без компиляции программы, немедленно после выполнения какой-то операции с помощью мыши.
Самое главное достоинство визуального программирования заключается в том, что во время проектирования формы и размещения на ней компонентов автоматически формируются коды программы. В программу включаются соответствующие фрагменты, описывающие данный компонент. А затем в соответствующих диалоговых окнах программист может изменить заданные по умолчанию значения каких-то свойств этих компонентов и, при необходимости, написать обработчики каких-то событий. То есть проектирование сводится, фактически, к размещению компонентов на форме, заданию некоторых их свойств и написанию, при необходимости, обработчиков событий.
Благодаря визуальному объектно-ориентированному программированию была создана технология, получившая название быстрая разработка приложений – RAD. Эта технология характерна для нового поколения систем программирования.
Сегодня имеется немало систем программирования, выпускаемых различными фирмами и ориентированных на различные модели ПК и операционные системы. Наиболее популярны следующие визуальные среды быстрого проектирования программ для Windows:
• Basic: Microsoft Visual Basic;
• Pascal: Borland Delphi;

• C++: Borland C++Bulider.
Конец формы

Заключение


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

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

В этой работе рассмотрены основные темы линии «Алгоритмизация и программирование» и приведены некоторые методические особенности преподавания данных тем.







 

Список литературы


1. Красс М. С., Чупрынов Б. П. Основы математики и ее приложения в экономическом образовании: Учеб. - 2-е изд., испр. - М.: Издательство «Дело», 2001. - 688 с.
2. Леонтьев В. П. Новейшая энциклопедия персонального компьютера 2005. - М.: ОЛМА-ПРЕСС Образование, 2005. - 800 с.
3.  Материалы ГИА-9 по информатике 2012-2013 год.
4. Софронова Н.В. Теория и методика обучения информатике / Софронова Н.В. -М.: Высшая школа, 2004.
5. Лапчик М.П. Методика преподавания информатики / Лапчик М.П. - М.: Мир, 2003. - 440с