Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ВМ.doc
Скачиваний:
3
Добавлен:
21.09.2019
Размер:
159.74 Кб
Скачать

1)Основные понятия информатики и программирования.

Информатика – это наука, изучающая законы и методы накопления, обработки и передачи информации с помощью компьютера.

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

Программирование можно рассматривать как науку, так и искусство.

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

Приложение – это программная реализация решения задачи на компьютере.

В свою очередь ПО является совокупностью программных продуктов и тех.документации.

Программный продукт – это комплекс взаимосвязанных программ, предназначенный для решения задач массового спроса (1С, Offis).

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

В программировании чётко разделены следующие подразделы:

- структуры данных и представления их в памяти (файловая структура);

- информационный поиск – упорядочивание линейных массивов и файлов;

- формальные языки грамматики, автоматы и другие абстрактные машины;

- синтактический анализ программ;

- оценка трудоёмкости и теория сложности алгоритмов;

- эквивалентные преобразования алгоритмов и экономия памяти;

- спецификация задач (компоненты, методы, свойства);

- док-во св-в программы;

- автоматический синтез программы (CASE-технологии);

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

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

Методология программирования изучает методы основ построения программ.

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

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

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

Этот раздел имеет определённую дату рождения – 1968 год. Причина появления такого раздела – это кризис ПО. (Основоположники – Буч и Фредерик Брукс).

2). Классические направления в области создания технологии программирования.

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

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

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

В структурном программировании применяются следующие простейшие алгоритмы в виде блок-схем и согласно ГОСТа имеют сл. названия: «следования», «ветвления», «циклы».

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

  1. цели предметной области (подцели);

  2. состав приложений, обеспечивающий реализацию поставленной цели (компоненты на форме);

  3. характер взаимосвязи приложений;

  4. процедуры обработки.

Концепции модального программирования включает в себя сл. понятия: 1) Функциональная декомпозиция задачи, т.е. разбиение на самостоятельные части в виде модуля; 2) Модуль («чёрный ящик») имеет только 1 вход и 1 выход; 3) Реализуемые решения каждого модуля должны быть очень просты и ясны.

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

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

Кроме того, современное ООП невозможно без понятия событие, кроме того в литературе возможно увидеть это направление как событийно – ориентированное программирование. Первый язык – Симула 1967 г.

С приходом этого языка программирования появились идеи, связ. объектом, классом. Но, тем не менее, самые широкие концепции ООП появились в Smalltalk.

В настоящее время количество языков ООП является наибольшим по отношению к другим парадигмам. Например, в области системного программирования парадигма процедурного программирования основана на применении процедурного программирования на базе языка Си. В ООП такие языковые средства как Делфи, Java, Basik, VB, Power Builder. Их много.

Обычно сравнивают объектное и процедурное программирование.

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

  2. Объектное – когда важны управляемость проекта и его модифицируемость. (открытая система) высокая скорость разработки.

3) Развитие CASE-технологий.

К ним относятся Case-технологии. Computer Aided Soft wave Engineering- Разработка ПО с помощью компьютера. ГОСТ 19781-90. ПО – совокупность программ системы обработки информации и программных документов, необходимых для их эксплуатации. В Америке, из-за сильнейшей конкуренции case-средства используются подавляющим большинством фирм, разработчикам ПО. Case – технология – это методология проектирования ИС, а также набор инструментальных средств, позволяющих в наглядной форме моделировать предметную область и анализировать на модели все этапы её разработки (средства функционального моделирования). Большинство существующих Case-средств основано на двух методологиях:

-структурного или

- ООП исп. в своей спецификации либо диаграммы, либо тексты для описания внешних требований, а также связь между моделями системы, динамики поведения системы и архитектуры программных средств. Case-средства получили широкое развитие в период широкого применения ООП, когда проектирования «сверху-вниз» стало явно недостаточно и особенно для сложных проектов. Эта технология проектирования определяется совокупностью 3 составляющих: 1) пошаговые процедуры, определяющие последовательность технологических операций проектирования, 2) критерий и правило, исп. для оценки результатов выполнения технологических операций; 3) нотации – графическое имя текстового средства, исп. для описания проектирования системы.

Технологические инструкции составляют основное содержание сase-технологии, которая включает в себя описания последовательности технологических операций и условий, в зависимости от которых выполняется та или иная операция. В мире имеется уже порядка 300 case-средств. Лидером считается система Rational Rose корпорации Rational Soft Wave на основе специального языка UML, который относится к современной группе языков ООП. Российский рынок ПО, по мнению Вендрова, располагает сл. наиболее развитыми CASE-cредствами.

  1. Vantage Team Builder;

  2. Design 12000;

  3. ERWin+BPWin;

  4. S-Designor;

  5. Case аналитик.

Для успешного внедрения Case-средств необходимы сл. качества:

  1. Технология, понимание ограниченности сущ.возможностей;

  2. Культура – готовность к внедрению новых процессов и взаимоотношение между разработчиком и пользователем;

  3. Управление – чёткое руководство и организованность по отношению к наиболее важным этапам и процессам внедрения.

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

Внедрение case-средств обеспечивает 1)высокий технологический уровень тех.поддержки процесса разработки; 2)положительное воздействие на производительность, качество продукции, соблюдение стандартов, документирование; 3) приемлемый уровень отдачи от инвестиций в case-средства.

4) Современные подходы к технологиям программирования.

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

Пользователь-Алгоритмист-Программист-ЭВМ

Эта цепочка или схема оказывается неэффективной по целому ряду причин. Пользователь не всегда знает точно и формулирует задачу. Т.е. он либо упрощает, либо отбрасывает важное для алгоритмиста. Получаемая после этого модель программируется и реализуется на ЭВМ, но результатом её зачастую недоволен пользователь. И только теперь пользователь понимает, что ему нужно и начинается второй раунд взаимодействия. Почему так происходит? Скорее всего потому, что пользователи, работающие в своей области процесса формализации не понимает в полной мере. Сейчас такой процесс принято называть плохо структурированными проблемными областями. Первоначально идея в этом смысле заключается в том, чтобы убрать из тех.схемы алгоритмиста. На первый взгляд сохраняется путь пользователя к ЭВМ. Пользователь обращается непосредственно к программисту, но для этого необходимо, чтобы программист повысил свой профессиональный уровень и овладел смежной профессией алгоритмиста. Но тогда программисты станут более дефицитными, чем сейчас. Программистов-10%, алгоритмистов-5%. Этот путь-тупик и не решение проблемы прямого доступа пользователя к ЭВМ. Существует сл. путь: он связан с удалением программиста. Пользователь-ЭВМ. Этот путь связан с приобщением специалиста к современной вычислительной технике, т.е. повышению возможностей самих ЭВМ за счёт повышения уровня их интеллекта. Программиста можно убрать из технологической цепи решения задачи только в том случае, когда в ЭВМ появится «автоматический программист», который и будет взаимодействовать с пользователем и помогать ему в программировании задачи. Такая идея и заключается в ЭВМ 5-го поколения. В отличие от ЭВМ предшествующих моделей ЭВМ должны иметь средства взаимодействия с пользователем на профессиональном языке. Другими словами не пользователь приближается к ЭВМ, а наоборот.

5) Развитие индустрии искусственного интеллекта.

В 70-е годы прошлого столетия бурно начал развиваться искусственный интеллект, который привёл к созданию новой отрасли в промышленности по 3 причинам:

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

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

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

Первая успешно действующая система R1 появилась в компании ДЕС. Эта программа помогала составлять конфигурацию для выполнения заказов на новой системе. DuPont/ 10млн долларов в Японии в 81 г был развёрнут.

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

Экспортные системы впервые появились в медицине. Возникла идея интеграции знаний в области медицины в некоторую электронную форму – советника для принятия решений по врачебным ситуациям. Выбор области медицины объясняется слишком большой ценой ошибок и здоровья людей. Затем эта технология распространилась и в другие сферы. ЭС могут не только найти решения той или иной задачи, но и объяснить пользователю как и почему оно получено. Т.е. имеется возможность самоанализа и рассуждения о знаниях, а значит появилась возможность иметь знания о знаниях, т.е. метазнания. В ЭС сделан важный шаг – знания, хранящиеся в системе, которые стали объектом её собственных исследований. В действительности можно провести аналогию с классическим выражением Николаса Вирта в своей оригинальной книге по Паскалю. Алгоритм+Структура данных=Программа.

Применительно к экспертным системам это выражение выглядит следующим образом: Знания+Логический вывод=ЭС.

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

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

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

В любой ЭС имеются основные составляющие: системы общения, решатель и системы объяснения.

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

Решатель осуществляет поиск ввода решения на основе тех знаний, которые хранятся в базе системы. Это мозговой центр в системе. Информация в базе знаний не хранится как зерно в элеваторе. Поэтому в ЭС существует специальный комплекс свойств, с помощью которых в базе знаний наводится необходимый порядок. Информация здесь классифицируется, обобщается, оценивается её противоречивость, отдельные единицы объединяются и т.д. Другими словами в БЗ возникает структурированная модель предметной области. Всеми такими процессами заведует система поддержки БЗ.

Система объяснения – наиболее важный компонент ЭС. К ней пользователь обращается напрямую с вопросами типа: что есть х? как получен у? почему получен у а не z?. За каждым таким вопросом в ЭС скрывается свой комплекс процедур, выполнение которых и формирует ответ. Например, на вопрос что есть х? система выдаёт пользователю все х о которых она располагает. Причём реализация может реализоваться в решателе. И ответ формируется не только из фактов, хранимых в базе, но может быть получен логическим путём из новых произв. фактов. Почти также, как и консультативные устроены исследовательские системы, но в них установлен дополнительный блок, который выполняет расчёты. Современные экспертные системы такого типа являются симбиозом 5 поколения ЭВС.

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

7) Основные понятия ООП.

ООП получило широкое распространение ввиду осознания 3-х важнейших проблем программирования:

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

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

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

Решение всех этих проблем в ОО технологии выставляется стронниками этой технологии как достоинства. ООП является методом программирования, имитирующим то, как человек выполняет какую-либо работу. ООП – это результат естественной эволюции более ранних методологий программирования. Оно более структурировано и более модульно и абстрактно, чем традиционное программирование. Эта технология является прогматическим воплощением к 1980 году идеи абстрактных типов данных как идеальной основой прогр. индустрии и нашего времени. Считается, что первой полной реализацией абстрактных типов данных в языках программирования является язык Симула, который в свою очередь опирался на язык Модула, CLU, Euclid и др. Появление объектно-ориентированных методов и технологий произошло на основе сущ. методов разработки ПО. И этому способствовало развитие: 1)Вычислительной техники, 2)Построение функционально и объектно-ориентированных ОС, 3)Достижение методологии программирования, 4)Развитие теории построения и моделирования СУБД. (построение отношений между объектами-один к одному, один ко многим), 5)Исследование систем с искусственным интеллектом (теория фреймов) позволили лучше осознать механизмы абстракции, 6) Развитие философии и теории познания, концепция образов и шаблонов теории выч.устройств.

8) Основные признаки ООП технологий.

7 основных признаков характеризуют ОО технологию программирования.

1) Объекты. Являются базовым понятием. Множество предметов реального мира, все предметы в нем имеют одни и те же характеристики и правила поведения (методы обработки данных). Тогда объект – это типичный представитель (экземпляр, абстрактный представитель) своего класса.

2) Инкапсуляция. Данные объединены с процедурами и функциями, которые позволяют манипулировать этими данными. Причём целостной структуре для получения объекта.

3) Наследование – использование объекта для построения иерархически производных объектов. Прочём каждый производный объект – потомок наследует доступ к коду и данным всех своих прародителей. Создавать новые классы можно на смену существующим.

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

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

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

7) Устойчивость. Под устойчивостью понимается продолжительность времени существования объектов в системе. Это свойство реализуется в основном в языках объектно-ориентированных данных.

9) Категории и характеристики объектов.

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

Пример. Клиент Иванов-объект, счёт 105-объект. Тем не менее определение понятия объект- сложная задача.

Абстракция-предмет моделирования при построении различен и можно выделить несколько типов абстракций про построении объектов.

  1. Абстракция понятия. Объект-это модель некоторого понятия предметной области.

  2. Абстракция действий. Объект- это набор операций для выполнения какой-либо функции.

  3. Абстракция виртуальной машины. Объект объединяет операции, которые используются другими, более высокими уровнями абстракции.

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

Однако можно выделить наиболее часто встречающиеся категории объектов:

  1. реальные объекты - абстракции фактического существования некоторых предметов в физическом мире.

  2. роли- абстракции, цели и назначения чего-то, части оборота и организации (студент, налогоплательщик);

  3. Инциденты-абстракции чего-то произошедшего или случившегося(выборы, несчастный случай);

  4. Взаимодействия- объекты, полученные из отношения между другими объектами (контракты, перекрёсток);

  5. Спецификация – использование для предоставления стандартов или критериев качества (меню, рецепт);

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

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