Файл: Методы и средства проектирования информационных систем и технологий (Основные понятия проектирования).pdf

ВУЗ: Не указан

Категория: Курсовая работа

Дисциплина: Не указана

Добавлен: 24.04.2023

Просмотров: 1743

Скачиваний: 31

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.

Для реализации программного продукта информационных систем используют наиболее подходящий язык программирования для конкретного проекта. Хотя нередко при разработке сложных систем применяют коллаборацию нескольких языков. Например, основной код пишется на C#, но его возможностей может не хватать, если необходимо обращаться непосредственно к архитектуре информационной системы. Тогда эта часть кода пишется на С++ или же Си.

Язык программирования С++ представляет высокоуровневый компилируемый язык программирования общего назначения со статической типизацией [[22]]. На сегодняшний день С++ является одним из самых популярных и распространенных языков. Своими корнями он уходит в язык Си. Фактически вначале C++ просто дополнял язык Си некоторыми возможностями объектно-ориентированного программирования. Впоследствии новый язык стал набирать популярность. В него были добавлены новые возможности, которые делали его не просто дополнением к Си, а совершенно новым языком программирования.

С++ является мощным языком, унаследовав от Си богатые возможности по работе с памятью. Поэтому С++ находит свое применение в системном программировании, в частности, при создании операционных систем, драйверов, различных утилит, антивирусов. К примеру, большая часть операционной системы Windows написана на С++. Системным программированием применение данного языка не ограничивается. С++ можно использовать в программах любого уровня, где важны скорость работы и производительность.

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

Как видно из приведенных ранее примеров C++ позволяет писать приложения в объектно-ориентированном стиле, представляя программу как совокупность взаимодействующих между собой классов и объектов. Это упрощает создание крупных и сложных программных продуктов.

Для создания программ можно использовать интегрированные среды разработки IDE, такие как Visual Studio, NetBeans, Eclipse.


Язык программирования Java. На сегодняшний момент язык Java, как и С++ является одним из самых распространенных и популярных языков программирования. Первая версия языка появилась в 1996 году в компании Sun Microsystems, которая впоследствии была поглощена компанией Oracle.

Java задумывался как универсальный язык программирования, который можно применять для различного рода задач. Текущей версией является Java 12, которая вышла в марте 2019 года [[23]]. Сегодня, Java превратилась из просто универсального языка в целую платформу и экосистему, которая объединяет различные технологии, используемые для целого ряда задач: от создания десктопных приложений до написания крупных веб-порталов и сервисов.

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

Объектно-ориентированный подход позволяет решить задачи по построению крупных, но в тоже время гибких, масштабируемых и расширяемых приложений. Java является языком с Си-подобным синтаксисом и близок в этом отношении к C/C++ и C#.

Ключевой особенностью языка Java является то, что его код сначала транслируется в специальный байт-код, независимый от платформы. Затем этот байт-код выполняется виртуальной машиной JVM (Java Virtual Machine). В этом плане Java отличается от стандартных интерпретируемых языков как PHP или Perl, код которых сразу же выполняется интерпретатором. В то же время Java не является чисто компилируемым языком, как С или С++.

Подобная архитектура обеспечивает кроссплатформенность и аппаратную переносимость программ на Java, благодаря чему программы без перекомпиляции могут выполняться на различных платформах – Windows, Linux, MacOS и других платформ. Для каждой из них может быть своя реализация виртуальной машины JVM, но каждая из них может выполнять один и тот же код.

Еще одной ключевой особенностью Java является то, что она поддерживает автоматическую сборку мусора. Это означает, что разработчику нет необходимости освобождать вручную память от ранее использовавшихся объектов, как в С++, так как сборщик мусора это сделает автоматически.

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

Язык C# и платформа .NET Core. На сегодняшний момент язык программирования C# один из самых мощных, быстро развивающихся и востребованных языков. Как и Java на нем пишутся самые различные приложения, обслуживающие ежедневно миллионы пользователей.


C# является языком с Си-подобным синтаксисом и близок в этом отношении к C++ и Java. Поэтому, если знать один из этих языков, то овладеть C# будет легче.

C# является объектно-ориентированным и в этом плане много перенял у Java и С++. Например, C# поддерживает полиморфизм, наследование, перегрузку операторов, статическую типизацию. Объектно-ориентированный подход позволяет решить задачи по построению крупных, но в тоже время гибких, масштабируемых и расширяемых приложений информационных систем. C# продолжает активно развиваться, и с каждой новой версией появляется все больше различных функциональностей. Например, лямбды, динамическое связывание, асинхронные методы.

Когда говорят C#, нередко имеют в виду технологии платформы .NET (Windows Forms, WPF, ASP.NET, Xamarin). И, наоборот, когда говорят .NET, нередко имеют в виду C#. Хотя эти понятия связаны, отождествлять их неверно. Язык C# был создан специально для работы с фреймворком .NET.

Фреймворк .NET представляет мощную платформу для создания приложений. Можно выделить следующие ее основные черты [[24]].

Поддержка нескольких языков. Основой платформы является общеязыковая среда исполнения Common Language Runtime (CLR), благодаря чему .NET поддерживает несколько языков: наряду с C# это также VB.NET, C++, а также различные диалекты других языков, привязанные к .NET, например, Delphi.NET. При компиляции код на любом из этих языков компилируется в сборку на общем языке CIL (Common Intermediate Language) – своего рода ассемблер платформы .NET. Поэтому возможно сделать отдельные модули одного приложения на отдельных языках.

.NET является переносимой платформой, хотя и имеются некоторые ограничения. Последняя версия платформы на данный момент .NET Core поддерживается на большинстве современных операционных системах Windows, MacOS, Linux. Используя различные технологии на платформе .NET, можно разрабатывать приложения на языке C# для самых разных платформ – Windows, MacOS, Linux, Android, iOS.

.NET представляет единую для всех поддерживаемых языков богатую библиотеку классов. Какой бы программных продукт не собирались писать на C# -текстовый редактор, чат или сложную систему – так или иначе задействуется библиотека классов .NET.

Общеязыковая среда исполнения CLR и базовая библиотека классов являются основой для целого стека технологий, которые разработчики могут задействовать при построении тех или иных продуктов. Например, для работы с базами данных в этом стеке технологий предназначена технология ADO.NET и Entity Frame Work. Для построения графических приложений с богатым насыщенным интерфейсом – технология WPF и UWP, для создания более простых графических приложений – Windows Forms. Для разработки мобильных приложений - Xamarin. Для создания веб-сайтов - ASP.NET.


Также еще следует отметить такую особенность языка C# и фреймворка .NET, как автоматическая сборка мусора. Это значит, что в большинстве случаев не придется, в отличие от С++, заботиться об освобождении памяти. Вышеупомянутая общеязыковая среда CLR сама вызовет сборщик мусора и очистит память [[25]].

2.3 Преимущества и недостатки объектно-ориентированного подхода

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

Для начала рассмотрим основные преимущества и недостатки структурных методологий.

Преимущества:

  • основаны на классическом системном анализе и процессно-ориентированы, подходят для описания не только информационных систем, идеальны для исследования предметной области, реинжиниринга бизнес-процессов;
  • понятное и относительно простое визуальное представление системы,
  • акцент на командной работе;
  • четко определенные этапы, что облегчает управление проектом и позволяет разрабатывать системы лучшего качества;
  • допускают использование средств проверки требований;
  • используют широко известные классические методологии (SSAD и IDEF0) в области проектирования, существующие на протяжении длительного времени

Недостатки:

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

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

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


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

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

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

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

Наследование ставит вопросы о повторении тестирования наследуемых операций. Например, допустим операция «А» принадлежит базовому классу, и она протестирована. Операция «В» принадлежит производному классу и вызывает операцию «А». Возникает вопрос, должна ли операция «А» тестироваться повторно.

Полиморфизм приводит к неоднозначности с вызовом операций, которая может быть разрешена только на этапе выполнения. Следовательно, заранее построить и спланировать набор тестов становится невозможным.

Объектно-ориентированная технология привносит свои особенности в процесс тестирования систем. Формулируется несколько вопросов, которые необходимо разрешить для успешного проведения тестирования:

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