Публикация научных статей.
Вход на сайт
E-mail:
Пароль:
Запомнить
Регистрация/
Забыли пароль?

Научные направления

Поделиться:
Разделы: Информационные технологии
Размещена 28.02.2015. Последняя правка: 28.02.2015.
Просмотров - 7726

Перспективы развития программного обеспечения

Забалуева Диана Геннадьевна

Студент

СамГТУ

Студент

Забержинский Б.Э. кандидат технических наук, доцент Самарский Государственный Технический Университет


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


Abstract:
In the near future, the world of software can smoothly be changed in directions that were not previously anticipated. Parts of these areas are already in active stages of research and development


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

Keywords:
software development; system programming; data storage; interface; technology; data processing; modernization; maintenance requests; resources; memory


УДК 004.457

Существующая система

Вероятно, многие программисты сталкивались с ситуацией, когда почти невозможно использовать для построения новой системы уже готовые наработки от предыдущей, поэтому новую систему строят как перенастроенную предыдущую. В этом случае сама разработка реально сводится к программированию в заданных рамках этого единого монолитного фреймворка. Подобный вариант обычно дает не очень полезные результаты, хотя они и рассчитаны на гарантированный успех прикладной разработки. Общий принцип построения систем почти всегда или в подавляющем большинстве случаев может быть сведен к разбиению с двух точек зрения - является ли данный код библиотечным или специфичным для приложения и является ли он интерфейсным, кодом логики обработки или кодом хранения данных. Отсюда следует, что, сохраняя код специфики хранения данных, можно модернизировать логику приложения. Или же оставляя неизменной логику приложения, можно модернизировать и даже полностью заменить интерфейс, создав его аналог с использованием другой технологии. Это предполагает одновременное существование нескольких приложений, имеющих самостоятельную логику обработки данных, но использующих одни утилиты их обработки. Или же, использование в работе одних и тех же утилит хранения данных одновременно несколькими приложениями. Отсутствие подобных возможностей сделало бы модернизацию и наращивание программного обеспечения очень трудозатратным процессом. Кроме того, такая вещь, как «утилиты интерфейса» обычно строится так, чтобы его можно было применять в любом существующем или разрабатываемом приложении. В существующей системе модернизации или полного изменения существующей прикладной разработки все достаточно ясно и понятно: как ввести в систему еще один интерфейс пользователя, к какой группе и в каких соглашениях отнести новый программный код, где искать проблемы во время отладки и, как, вообще, модернизировать существующую систему. Однако, некоторые направления развития современного программного обеспечения заставляют задуматься о его дальнейшем будущем и наводят на мысли о том, что это, уже недалекое будущее, может оказаться совсем не таким, как представляется сейчас. [1] 

Распараллеливание выполнения

Когда параллельность обслуживания запросов или выполнения процессов помогает работе, а когда она может сильно помешать?

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

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

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

Поэтому, в качестве одного из направлений развития софтвера, возможна разработка стратегий выполнения алгоритмов и обработки данных, ориентированных на физическое распараллеливание. [2] 

Структуры и алгоритмы быстрой памяти

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

Время доступа к жестким дискам, повсеместно применявшимся ранее и применяющимся сейчас в качестве основных накопителей, гораздо больше времени доступа к оперативной памяти. Как уже было сказано, ранее использовавшиеся стратегии и алгоритмы в разработке баз данных были направлены на нивелирование этого фактора. Например, методы блочной организации файлов данных в СУБД, а также кэширования оперативной памяти компьютера. На сегодняшний день мы видим настоящий бум для твердотельных накопители SSD, которые отличаются тем, что имеют чрезвычайно большую скорость доступа к данным, и соотношение времени доступа оперативной памяти и к дискам существенно изменилось. Логически отсюда следует, что направление ближайших исследований в области организации СУБД будет меняться, и ведущие разработчики баз данных, возможно поменяют сам основополагающий принцип, на котором работают большинство существующих разработок и заменят структуру индексация с B*-дерева, например, на более многообещающий RB-дерево, или даже будут разработаны новые механизмы, на сегодняшний день неизвестные. [3] 

Проблема портирования  (переноса программного обеспечения с одной операционной системы на другую)

 Вообще-то не секрет, что указанная проблема достаточно серьезна. На сегодняшний день абсолютно переносимых языков программирования не существует. Да,  мы привыкли считать, что наиболее переносимый язык программирования - это язык СИ и его клоны. Однако несовместимость компиляторов имеет место быть. На текущий момент сделано много попыток разработать портируемый компилятор. Но факт остается фактом: язык СИ стандартизирован, и достаточно давно, но 90% программного обеспечения, компилируемого, например в Linux, не сможет быть скомпилирован, скажем в Windows XP без изменения исходного кода. И, думается, усилия ведущих разработчиков, компиляторов будут направлены и на решение этой проблемы. Как следствие этого, к перспективам рынка программного обеспечения относится возможность портирования софта. Тут можно использовать различные подходы – использовать средства виртуализации, интерпретирующие системы,  кросскопиляцию и т.д. [3] 

Линейные алгоритмы и структуры

Процессоры компьютерных систем, применявшиеся ранее в качестве ядра, почти не имели внутренних кэшей. К ним программисты относились, можно с уверенностью утверждать, просто никак. Средства встроенных или дополнительных кэшей процессоров могли быть хоть как-то использованы только при выборе аппаратной части компьютера. На все остальное, т.е.: работу программистов, планирование алгоритмов и структур данных - это совершенно не влияло. На сегодняшний день ситуация кардинально изменилась. Размеры кэшей  стали настолько велики, что не учитывать их при разработке СУБД стало попросту невозможно. Существенно возросла сложность структуры кэшэй.  И теперь невозможно себе представить СУБД, где бы с максимальной эффективностью не использовались алгоритмы и структуры кэширования данных. Использование кэща становится правилом хорошего тона и является показателем степени качества работы программиста.

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

 И если ранее разработчики предпочитали, разрабатывать не линейные, а сложные структуры, что существенно повышало скорость поиска записи, то в настоящее время линейные структуры оказываются более эффективным, так как вторичное обращение к следующему элементу отрабатывается намного быстрее, чем к элементу, не находящемуся в кэше процессора. Еще одно направление в линейности представлено исследованиями в области алгоритмов, выполняющихся линейно, или содержащих минимизированное число переходов. Выполнение подобного алгоритма значительно улучшается именно из-за кэширования последовательности исполняемых кодов, а так же и из-за встроенных в процессоры и достаточно давно использующихся средств конвейеризации выполнения. Одним из таких направлений, в частности и для примера, является метод развертывания циклов. [3] 

Направления поиска перспектив

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

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

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

Характерным примером того,  что не все новые способы переноса и обработки информации жизнеспособны, можно назвать устройство для хранения информации на  ZIP-drive носителе на 100Мб, которые буквально за год, два после появления их на ранке были вытеснены более удобными перезаписываемыми CD на 650/700 Мб. [4]

Библиографический список:

1. Викикак – совместное решение вопросов [Электронный ресурс]: Тенденции развития программного обеспечения – Режим доступа: http://life-prog.ru/
2. REFSRU [Электронный ресурс]: Автоматическое распараллеливание программ для распределенных систем. Статическое построение расширенного графа управления – Режим доступа: http://www.refsru.com/
3. TURBO PASCAL [Электронный ресурс]: Программное обеспечение компьютера – Режим доступа: http://www.borlpasc.narod.ru/docym/shay/teor/chapter6/1_6.htm
4. YourLib.net Твоя библиотека [Электронный ресурс]: Тенденции развития программного обеспечения – Режим доступа: http://yourlib.net/content/view/12775/151/




Рецензии:

28.02.2015, 9:17 Давлеткиреева Лилия Зайнитдиновна
Рецензия: В данной статье страдает научный стиль подачи. Также название статьи слишком размытое. Требует доработки, хотя тема интересная.



Комментарии пользователей:

28.02.2015, 8:33 Шангина Елена Игоревна
Отзыв: Статья "Перспективы развития программного обеспечения" соответствует требованиям журнала и рекомендуется к публикации.


Оставить комментарий


 
 

Вверх