ВУЗ: Не указан
Категория: Не указан
Дисциплина: Не указана
Добавлен: 20.11.2019
Просмотров: 13468
Скачиваний: 411
Создателем языка является сотрудник Microsoft Андреас Хейлсберг. Он стал известным в мире программистов задолго до того, как пришел в Microsoft. Хейлсберг входил в число ведущих разработчиков одной из самых популярных сред разработки — Delphi. В Microsoft он участвовал в создании версии Java — J++, так что опыта в написании языков и сред программирования ему не занимать. Как отмечал сам Андреас Хейлсберг, С# создавался как язык компонентного программирования, и в этом одно из главных достоинств языка, направленное на возможность повторного использования созданных компонентов. Другие достоинства языка С#:
-
сохраняет лучшие черты популярных языков программирования С/С++, на основе которых он создан. В связи с этим облегчается переход программистов от С++ к С#;
-
является проще и надежнее С++. Простота и надежность главным образом связаны с тем, что на С# хотя и допускаются, но не поощряются такие опасные свойства С++, как указатели, адресация, разыменование, адресная арифметика;
-
является полностью объектно-ориентированным языком, где даже типы, встроенные в язык, представлены классами;
-
реализует возможности наследования и универсализации;
-
учитывает все возможности Framework .Net, так как С# создавался параллельно с данной средой;
-
благодаря каркасу Framework .Net, ставшему надстройкой над операционной системой, программисты С# получают те же преимущества работы с виртуальной машиной, что и программисты Java. Эффективность кода даже повышается, поскольку исполнительная среда CLR представляет собой компилятор промежуточного языка, в то время как виртуальная Java-машина является интерпретатором байт-кода;
-
мощная библиотека каркаса поддерживает удобство построения различных типов приложений на С#, позволяя легко строить Web-службы, другие виды компонентов, достаточно просто сохранять и получать информацию из базы данных и других хранилищ данных;
• является источником надежного и эффективного кода Кроме вышеописанных языков к группе универсальных
принадлежат также Modula, Ada, COBOL, FORTRAN и некоторые другие. Каждый из вышеописанных языков имеет свои особенности и, соответственно, свою область применения. В настоящее время универсальные языки программирования применяются в самых различных областях человеческой деятельности, таких как:
-
научные вычисления (языки С++, FORTRAN, Java);
-
системное программирование (языки С++, Java);
-
обработка информации (языки С++, COBOL, Java);
-
искусственный интеллект (LISP, Prolog);
-
издательская деятельность (Postscript, TeX);
-
удаленная обработка информации (Perl, PHP, Java, С++);
-
описание документов (HTML, XML).
С течением времени одни языки развивались, приобретали новые черты и остались востребованными, другие утратили свою актуальность и сегодня представляют в лучшем случае чисто теоретический интерес (Focal, PL/1 и др.). В значительной степени это связано с такими факторами:
-
наличие среды программирования, поддерживающей разработку приложений на конкретном языке программирования;
-
удобство сопровождения и тестирования программ;
-
стоимость разработки с применением конкретного языка программирования;
-
четкость и ортогональность конструкций языка;
• применение объектно-ориентированного подхода.
Специализированные языки разработчика используют для создания конкретных типов программного обеспечения. К ним относят:
-
языки баз данных;
-
языки создания сетевых приложений;
-
языки создания систем искусственного интеллекта и т. д.
Специализированные языки пользователя обычно являются частью профессиональных сред пользователя, характеризуются узкой направленностью и разработчиками программного обеспечения не используются.
Языки низкого уровня позволяют осуществлять программирование практически на уровне машинных команд. При этом получают самые оптимальные как с точки зрения времени выполнения, так и с точки зрения объема необходимой памяти программы. Недостатком их является то, что они не поддерживают принципов структурного программирования [1].
В настоящее время языки типа ассемблера обычно используют:
-
при написании сравнительно простых программ, для обращения к техническим средствам, например драйверов;
-
в виде вставок в программы на языках высокого уровня, например, для ускорения преобразования данных в циклах с большим количеством повторений.
В большей степени выбор языка программирования определяется опытом разработчика, требованиями ведущей разработку организации или просто устоявшимся мнением.
7.7.3. Выбор среды программирования
Интегрированной средой разработки программного обеспечения
называют систему программных средств, используемую программистами для разработки программного обеспечения [1, 56].
Обычно среда разработки включает в себя текстовый редактор, компилятор и/или интерпретатор, компоновщик, отладчик и справочную систему. Иногда также содержит систему управления версиями и разнообразные инструменты для упрощения конструирования графического интерфейса пользователя. Многие современные среды разработки также включают инспектор объектов, браузер классов и диаграмму иерархии классов, которые используются для объектно-ориентированной разработки ПО. Обычно среда разработки предназначается для одного определенного языка программирования, как, например, Visual Basic или Deiphi, но существуют среды разработки, предназначенные для нескольких языков, такие как Eclipse или Microsoft Visual Studio.
Примеры сред разработки — Turbo Pascal, Borland С++, GNU toolchain, DrPython.
В последнее время, с развитием объектно-ориентированного программирования, широкое распространение получили упоминавшиеся ранее среды визуального программирования, в которых наиболее распространенные блоки программного кода представлены в виде графических объектов.
Наиболее часто используемыми являются визуальные среды Delphi, С++ Builder фирмы Borland (Inprise Corporation), Visual С++, Visual Basic фирмы Microsoft, Visual Ada фирмы IBM и др.
Большую популярность в наши дни получила технология .NET Framework, предложенная фирмой Microsoft в качестве платформы для создания как обычных программ, так и веб-приложений. Основным преимуществом .NET является совместимость различных служб, написанных на разных языках. Например, служба, написанная на С++ для .NET, может обратиться к методу класса из библиотеки, написанной на Delphi; на С# можно написать класс, наследующий от класса, написанного на Visual Basic .NET, а исключение, выброшенное методом, написанным на С#, может быть поймано и обработано в Delphi.
Так же как и в случае с выбором языка программирования, выбор среды программирования определяется характером проекта, привычками и навыками разработчика, веяниями времени, требованиями заказчика и просто общественным мнением: «Все подобные разработки должны выполняться в среде...
7.2. Технологии программирования
7.2.7. Объектно-ориентированное программирование
Рассмотрим сначала, как появилось объектно-ориентированное программирование. Ключевое понятие, помогающее при программировании, — это абстракция. Она позволяет лучше понять сущность программированного объекта или среду. Пусть нужно совершить поездку в Мурманск. Возникают вопросы: «Каким образом это сделать? какой транспорт использовать? сколько это будет стоить?» и т. д. Нужно выделить главное и отбросить лишнее. Тут главным будет вид транспорта. Эту абстракцию и проще всего назвать классом при программировании. У транспорта есть данные (скорость, количество двигателей и др.) и методы (взлет, посадка для самолета). Класс группирует данные и методы в единую сущность. Данные обычно закрыты, и их изменение, как правило, производится посредством методов, т. е. они защищены корректной работой методов.
Первое использование классов как объектов произошло в 1967 г.: Бьерн Страуструп применил язык Simula в своей диссертации для программы, моделирующей компьютерные системы. Этот язык очень выразителен и позволяет работать с высоким уровнем абстракций. Однако при запуске программы оказалось,
что у нее очень низкая производительность и выполнить работу в срок не удастся, поэтому пришлось переписать программу на языке Си. В Си классов нет. Страуструп их добавил, и появился язык С++ [40]
Несколько лет назад в журнале Byte появилась статья «Объектно-ориентированное программирование умерло?». В ней говорилось о том, что объекты не оправдали возложенные на них надежды. Достичь главной цели — повторного использования кода — с помощью объектов сложно, хотя сам процесс программирования они упростили.
В этот же период Microsoft создает Visual Basic. Главным нововведением в нем является возможность вставки управляющих элементов (кнопок, полей ввода) на форму. К каждому элементу можно добавить кусок кода для описания его деятельности. Оказалось очень удобно, и вскоре были созданы тысячи новых элементов — появилось расширение VBX (Visual Basic Extention). Статья Byte описала управляющие элементы VBX как наиболее успешную реализацию мечты о повторном использовании кода.
У многих поклонников ООП статья вызвала недовольство. Элементы VBX не являются объектно-ориентированными. В них нет даже концепции метода, нет наследования и полиморфизма. Тем не менее VBX может рассматриваться как пример программного компонента. Это часть бинарного кода, который может быть легко вставлен в различные приложения. VBX — это любопытная, но тупиковая ветвь эволюции технологии программирования. Однако она сыграла свою роль.
Как же развивалась эволюция программирования? Первоначально существовали статические библиотеки. Такие библиотеки компоновались в выполняемый файл, т. е. каждая программа содержала код библиотеки. Их легко представить в виде перфокарт, которые вставляли программисты в свои программы в «далекие времена».
Для того чтобы снизить затраты памяти, были созданы динамически компонуемые библиотеки DLL. При их применении несколькими приложениями в память загружалась только одна копия библиотеки, и все приложения использовали эту копию. Другое полезное свойство DLL — компоновка в процессе выполнения, т. е. новая версия DLL может быть использована без перестройки приложения. Если новая версия библиотеки совместима со старой, то код может оказаться эффективнее (если улучшены алгоритмы в библиотеки или исправлены ошибки), если нет, приложение может оказаться неработоспособным. Второй случай называется DLL HELL.
Распределение памяти при использовании статических библиотек показано на рис. 7.1.
Приложение 1
Приложение 2
Приложение 3
Код библиотеки
Код библиотеки
Код библиотеки
Рис. 7.1. Распределение памяти при использовании статических библиотек
Приложение 1
Приложение 2
Приложение 3
Код библиотеки DLL
Рис. 7.2. Распределение памяти при использовании DLL
Распределение памяти при использовании DLL отражено на рис. 7.2.
7.2.2. Платформа JAVA и .NET
На данный момент наиболее активно развиваются две конкурирующие линии технологий создания ПО на основе компонентов — технологии Java и .NET. Рассмотрим несколько элементов этих технологий, являющихся ключевыми в создании широко востребованного в настоящее время и достаточно сложного вида приложений. Это Web-приложения, т. е. распределенное программное обеспечение, использующее базовую инфраструктуру Интернета для связи между различными своими компонентами, а стандартные инструменты для навигации по Web-браузеры — как основу для своего пользовательского интерфейса.
Технологии Java представляют собой набор стандартов, инструментов и библиотек, предназначенных для разработки приложений разных типов и связанных друг с другом использованием языка программирования Java. Торговая марка Java принадлежит компании Sun Microsystems, и эта компания во многом определяет развитие технологий Java, но в нем активно участвуют и другие игроки — IBM, Intel, Oracle, Hewlett-Packard, SAP, Bea и пр. В этот набор входят следующие основные элементы:
-
платформа Java Platform Standard Edition (J2SE) [1]. Предназначена для разработки обычных, в основном однопользовательских приложений;
-
платформа Java Platform Enterprise Edition (J2EE) [2]. Предназначена для разработки распределенных веб-приложений уровня предприятия;
-
платформа Java Platform Micro Edition (J2ME) [3]. Предназначена для разработки встроенных приложений, работающих на ограниченных ресурсах, в основном в мобильных телефонах и компьютеризированных бытовых устройствах;
-
платформа Java Card [5]. Предназначена для разработки ПО, управляющего функционированием цифровых карт. Ресурсы, имеющиеся в распоряжении такого ПО, ограничены в наибольшей степени.
С некоторыми оговорками можно считать, что J2ME является подмножеством J2SE, а та, в свою очередь, — подмножеством J2EE. Java Card представляет собой, по существу, особый набор средств разработки, связанный с остальными платформами только поддержкой (в сильно урезанном виде) языка Java.
Язык Java — это объектно-ориентированный язык программирования, который транслируется не непосредственно в машинно-зависимый код, а в так называемый байт-код, исполняемый специальным интерпретатором, виртуальной Java-машиной (Java Virtual Machine — JVM). Такая организация работы Java-программ позволяет им быть переносимыми без изменений и одинаково работать на разных платформах, если на этих платформах есть реализация JVM, соответствующая опубликованным спецификациям виртуальной машины.
Кроме того, интерпретация кода позволяет реализовывать различные политики безопасности для одних и тех же приложений, выполняемых в разных средах, — к каким ресурсам (файлам, устройствам и пр.) приложение может иметь доступ, а к каким нет, можно определять при запуске виртуальной машины. Таким способом можно обеспечить запускаемое пользователем вручную приложение (за вред, причиненный которым, будет отвечать этот пользователь) большими правами, чем аплет, загруженный автоматически с какого-то сайта в Интернете.
Режим интерпретации приводит обычно к более низкой производительности программ по сравнению с программами, оттранслированными в машинно-специфический код. Для преодоления этой проблемы JVM может работать в режиме динамической компиляции (just-in-time-compilation — JIT), в котором байт-код на лету компилируется в машинно-зависимый, а часто исполняемые участки кода подвергаются дополнительной оптимизации.
.NET представляет собой похожий набор стандартов, инструментов и библиотек, но разработка приложений в рамках .NET возможна с использованием различных языков программирования. Основой .NET являются виртуальная машина для промежуточного языка (Intermediate Language — IL, иногда встречается сокращение Microsoft IL — MSIL), в который транслируются все .NET-программы, также называемая общей средой выполнения (Common Language Runtime — CLR), и общая библиотека классов (.NET Framework class library), доступная из всех .NET-приложений.
Промежуточный язык является полноценным языком программирования, но он не предназначен для использования людьми. Разработка в рамках .NET ведется на одном из языков, для которых имеется транслятор, в промежуточный язык —Visual Basic.NET, С++, С#, Java (транслятор Java в .NET называется J#, и он не обеспечивает одинаковой работы программ на Java, оттранслированных в .NET и выполняемых на JVM) и пр. Однако разные языки достаточно сильно отличаются друг от друга, и чтобы гарантировать возможность из одного языка работать с компонентами, написанными на другом языке, необходимо при разработке этих компонентов придерживаться общих правил (Common Language Specifications — CLS), определяющих, какими конструкциями можно пользоваться во всех .NET-языках без потери возможности взаимодействия между результатами. Наиболее близок к промежуточному языку С# — этот язык был специально разработан вместе с платформой .NET.
Некоторым отличием от Java является то, что код на промежуточном языке в .NET не интерпретируется, а всегда выполняется в режиме динамической компиляции (ЛТ).
Компания Microsoft инициировала разработку платформы .NET и принятие стандартов, описывающих ее отдельные эле-
менты (к сожалению, пока не все), и она же является основным поставщиком реализаций этой платформы и инструментов разработки. Благодаря наличию стандартов возможна независимая реализация .NET (например, такая реализация разработана в рамках проекта Mono), но, в силу молодости платформы и опасений по поводу монопольного влияния Microsoft на ее дальнейшее развитие, реализации .NET не от Microsoft используются достаточно редко.
Для Java-технологий базовым языком является Java, а для изучения правил построения компонентов для .NET используется язык С#. Он наиболее удобен при работе в этой среде и наиболее похож на Java.
Оба языка имеют мощные выразительные возможности объектно-ориентированных языков последнего поколения, поддерживающих автоматическое управление памятью и работу в многопоточном режиме. Они весьма похожи, но имеют большое число мелких отличий в деталях. Наиболее существенны для построения программ различия, касающиеся наличия в С# невиртуальных методов, возможности объявления и использования пользовательских типов значений и делегатных типов в С# и возможности передачи значений параметров в С# по ссылке.
7.3. Защита программных продуктов
7.3./. Основные сведения о защите программных продуктов
Программные продукты и компьютерные базы данных являются предметом интеллектуального труда специалистов высокой квалификации. Процесс проектирования и реализации программных продуктов характеризуется значительными материальными и трудовыми затратами, основан на использовании наукоемких технологий и инструментария, требует применения и соответствующего уровня дорогостоящей вычислительной техники. Это обусловливает необходимость принятия мер по защите интересов разработчика программ и создателей компьютерных баз данных от несанкционированного их использования [56].
Программное обеспечение является объектом зашиты также и в связи со сложностью и трудоемкостью восстановления его работоспособности, значимостью программного обеспечения для работы информационной системы.
Защита программного обеспечения преследует цели:
-
ограничение несанкционированного доступа к программам или их преднамеренное разрушение и хищение;
-
исключение несанкционированного копирования (тиражирования) программ.
Программный продукт и базы данных должны быть защищены по нескольким направлениям от воздействия:
-
человека — хищение машинных носителей и документации программного обеспечения; нарушение работоспособности программного продукта и др.;
-
аппаратуры — подключение к компьютеру аппаратных средств для считывания программ и данных или их физического разрушения;
-
специализированных программ — приведение программного продукта или базы данных в неработоспособное состояние (например, вирусное заражение), несанкционированное копирование программ и базы данных и т. д.
Самый простой и доступный способ защиты программных продуктов и баз данных — ограничение доступа. Контроль доступа к программному продукту и базе данных устанавливается с помощью:
-
защиты программ при их запуске паролем;
-
использования ключевой дискеты для запуска программ;
-
ограничения доступных пользователям программных модулей или данных, функций обработки и др.
Могут также использоваться криптографические методы защиты информации базы данных или головных программных модулей.
7.3-2- Криптографические методы защиты информации
Первоначальное значение термина «криптография» — «тайнопись», «тайное письмо».
Криптография — наука о зашите информации от прочтения ее посторонними. Зашита достигается шифрованием, т. е. преобразованием, которое делает защищенные входные данные трудночитаемыми без знания специальной информации — ключа.
Под ключом понимается легко изменяемая часть криптосистемы, хранящаяся в тайне и определяющая, какое шифрующее преобразование из возможных выполняется в данном случае. Криптосистема — семейство выбираемых с помощью ключа обратимых преобразований, которые преобразуют защищаемый открытый текст в шифрограмму, и обратно [56].
По характеру использования ключа известные криптосистемы можно разделить на два типа: симметричные (с секретным ключом) и несимметричные (с открытым ключом).
В первом случае в шифраторе отправителя и дешифраторе получателя используется один и тот же ключ. Шифратор образует шифр-текст, который является функцией открытого текста. Конкретный вид функции шифрования определяется секретным ключом. Дешифратор получателя сообщения выполняет обратное преобразование аналогичным образом. Секретный ключ хранится в тайне, и исключается незаконный перехват ключа. Обычно предполагается правило Кирхгофа: стойкость шифра определяется только секретностью ключа, т. е. криптоаналитику известны все детали процесса шифрования и дешифрования, кроме секретного ключа.
Открытый текст обычно имеет произвольную длину, если его размер велик и он не может быть обработан вычислительным устройством шифратора целиком, он разбивается на блоки фиксированной длины, и каждый блок шифруется в отдельности, независимо от его положения во входной последовательности. Такие криптосистемы называются системами блочного шифрования.
На практике обычно используют два общих принципа шифрования: рассеивание и перемешивание. Рассеивание заключается в распространении влияния одного символа открытого текста на много символов шифра-текста: это позволяет скрыть статистические свойства открытого текста. Развитием этого принципа является распространение влияния одного символа ключа на много символов шифрограммы, что позволяет исключить восстановление ключа по частям. Перемешивание состоит в использовании таких шифрующих преобразований, которые исключают восстановление взаимосвязи статистических свойств открытого и шифрованного текста. Распространенный способ достижения хорошего рассеивания состоит в использовании составного шифра, который может быть реализован в виде некоторой последовательности простых шифров, каждый из которых вносит небольшой вклад в значительное суммарное рассеивание и перемешивание. В качестве простых шифров чаще всего используют простые подстановки и перестановки.
7-3.3. Программные системы защиты от несанкционированного копирования
Данные системы предотвращают нелицензионное использование программных продуктов и баз данных. Программа выполняется только при опознании некоторого уникального ключевого элемента.
Таким ключевым элементом могут быть:
-
дискета, на которой записан не подлежащий копированию ключ;
-
определенные характеристики аппаратуры компьютера;
-
специальное устройство (электронный ключ), подключаемое к компьютеру и предназначенное для выдачи опознавательного кода.
Программные системы защиты от копирования программных продуктов:
-
идентифицируют среду, из которой будет запускаться программа;
-
устанавливают соответствие среды, из которой запущена программа, той, для которой разрешен санкционированный запуск;
-
вырабатывают реакцию на запуск из несанкционированной среды;
-
регистрируют санкционированное копирование;
-
противодействуют изучению алгоритмов и программ работы системы.
Для идентификации запускающих дискет применяются следующие методы:
• нанесение повреждений на поверхность дискеты («лазерная дыра»), которая с трудом может быть воспроизведена в несанкционированной копии дискеты;
• нестандартное форматирование запускающей дискеты. Идентификация среды компьютера обеспечивается за счет:
• закрепления месторасположения программ на жестком магнитном диске (так называемые неперемещаемые программы);
-
привязки к номеру BIOS (расчет и запоминание с последующей проверкой при запуске контрольной суммы системы);
-
привязки к аппаратному (электронному) ключу, вставляемому в порт ввода-вывода, и др.
7-3-4. Правовые методы защиты программных продуктов и баз данных
Правовые методы защиты программ включают:
-
патентную защиту;
-
закон о производственных секретах;
-
лицензионные соглашения и контракты;
• закон об авторском праве. Различают две категории прав:
-
экономические права, дающие их обладателям право на получение экономических выгод от продажи или использования программных продуктов и баз данных;
-
моральные права, обеспечивающие защиту личности автора в его произведении.
Во многих цивилизованных странах несанкционированное копирование программ в целях продажи или бесплатного распространения рассматривается как государственное преступление, карается штрафом или тюремным заключением. Но, к сожалению, само авторское право не обеспечивает защиту новой идеи, концепции, методологии и технологии разработки программ, поэтому требуются дополнительные меры их защиты.
Патентная защита устанавливает приоритет в разработке и использовании нового подхода или метода, примененного при разработке программ, удостоверяет их оригинальность.
Статус производственного секрета для программы ограничивает круг лиц, знакомых или допущенных к ее эксплуатации, а также определяет меру их ответственности за разглашение секретов. Например, используется парольный доступ к программному продукту или базе данных, вплоть до паролей на отдельные режимы (чтение, запись, корректировку и т. п.). Программы, как любой материальный объект большой стоимости, необходимо охранять от кражи и преднамеренных разрушений.
Лицензионные соглашения распространяются на все аспекты правовой охраны программных продуктов, включая авторское право, патентную защиту, производственные секреты. Наиболее часто используются лицензионные соглашения на передачу авторских прав.
Лицензия — договор на передачу одним лицом (лицензиаром) другому лицу (лицензиату) права на использование имени, продукции, технологии или услуги. Лицензиар увеличивает свои доходы сбором лицензионных платежей, расширяет область распространения программного продукта или базы данных; лицензиат извлекает доходы за счет их применения.
В лицензионном соглашении оговариваются все условия эксплуатации программ, в том числе создание копий. На каждой копии программы должны быть те же отметки, что и на оригинале:
-
знак авторского права (обычно ©) и название разработчика, год выпуска программы, прочие ее атрибуты;
-
знак патентной защиты или производственного секрета;
-
торговые марки, соответствующие использованным в программе другим программным изделиям (обычно — ™ и название фирмы — разработчика программного продукта);
-
символ зарегистрированного права на распространение программного продукта (обычно ®).
Существует несколько типов лицензий на программные продукты.
1. Исключительная
лицензия
—
продажа
всех имущественных
прав на программный
продукт или базу данных, покупателю
ли-
цензии предоставляется
исключительное право на их использо-
вание,
а автор или владелец патента отказывается
от самостоя-
тельного их применения
или предоставления другим лицам.
Это самый дорогой вид лицензии, к нему прибегают для монопольного владения с целью извлечения дополнительной прибыли либо с целью прекращения существования на рынке программных средств программного продукта.
2. Простая
лицензия
—
это
лицензия, когда лицензиар пре-
доставляет
право лицензиату использовать программный
про-
дукт или базу данных, оставляя
за собой право применять их и
предоставлять
на аналогичных условиях неограниченному
числу
лиц (лицензиат при этом не
может сам выдавать сублицензии,
может
лишь продать копии приобретенного
программного про-
дукта или базы
данных).
Такой вид лицензии приобретают дилер (торговец) либо фирмы-производители, использующие купленные лицензии как сопутствующий товар к основному виду деятельности. Например, многие производители и фирмы, торгующие компьютерной техникой, осуществляют продажу вычислительной техники с установленным лицензионным программным обеспечением (операционная система, текстовый редактор, электронная таблица, графические пакеты и т. д.).
3. Этикеточная лицензия — лицензия на одну копию программного продукта или базы данных. Данный тип лицензии применяется при розничной продаже. Каждый официальный покупатель заключает лицензионное соглашение с продавцом на их использование, но при этом сохраняется авторское право разработчика.
Закон об охране программных продуктов и компьютерных баз данных автором признает физическое лицо, в результате творческой деятельности которого они созданы. Автору независимо от его имущественных прав принадлежат личные авторские права: авторство, имя, неприкосновенность (целостность) программ или баз данных.
Авторское право действует с момента создания программного продукта или базы данных в течение всей жизни автора и 50 лет после его смерти. Автор может:
-
выпускать в свет;
-
воспроизводить в любой форме, любыми способами;
-
распространять;
-
модифицировать;
-
осуществлять любое иное использование программного продукта или базы данных.
Авторское право не связано с правом собственности на материальный носитель.
Имущественные права на программный продукт или базу данных могут быть переданы частично или полностью другим физическим или юридическим лицам по договору. Имущественные права относятся к категории наследуемых. Если программный продукт или база данных созданы в порядке выполнения служебных обязанностей, имущественные права принадлежат работодателю.
Программные продукты и базы данных могут использоваться третьими лицами — пользователями на основании договора с правообладателем.
Лицо, правомерно владеющее экземпляром программы или базы данных, вправе, без получения дополнительного разрешения правообладателя, осуществлять любые действия, связанные
с функционированием программного продукта или базы данных в соответствии с ее назначением, в том числе:
-
устанавливать один экземпляр, если не предусмотрено иное соглашение с правообладателем программного продукта или базы данных, на компьютер;
-
исправлять явные ошибки;
-
адаптировать программный продукт или базу данных;
-
изготавливать страховые копии.
Контрольные вопросы
-
Назовите известные вам языки программирования и перечислите их особенности.
-
Как происходит выбор среды программирования?
-
Сравните технологию .NET с технологией Java.
-
Перечислите основные сведения о защите программных продуктов.
-
Назовите криптографические средства защиты.
-
Дайте определение программным средствам защиты.
-
Какие правовые средства защиты ПП вам известны?