Перспективы развития программного обеспечения
Общий принцип построения систем, оперативная память. Параллельное выполнение процессов на деле. Последовательное выполнение задач системой. Смена однопроцессорных или многопроцессорных систем на системы, имеющие большое количество ядер или процессоров.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | реферат |
Язык | русский |
Дата добавления | 09.02.2014 |
Размер файла | 13,6 K |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Размещено на http://www.allbest.ru/
Перспективы развития программного обеспечения
Существующая система
Думаю, что многие программисты сталкивались с ситуацией, когда почти невозможно использовать для построения новой системы уже готовые наработки от предыдущей, поэтому новую систему строят как перенастроенную предыдущую. В этом случае сама разработка реально сводится к программированию в заданных рамках этого единого монолитного фреймворка. Подобный вариант обычно дает не очень полезные результаты, хотя они и рассчитаны на гарантированный успех прикладной разработки.
Общий принцип построения систем почти всегда или в подавляющем большинстве случаев может быть сведен к разбиению с двух точек зрения - является ли данный код библиотечным или специфичным для приложения и является ли он интерфейсным, кодом логики обработки или кодом хранения данных. Отсюда следует, что, сохраняя код специфики хранения данных, можно модернизировать логику приложения. Или же оставляя неизменной логику приложения, можно модернизировать и даже полностью заменить интерфейс, создав его аналог с использованием другой технологии.
Это предполагает одновременное существование нескольких приложений, имеющих самостоятельную логику обработки данных, но использующих одни утилиты их обработки. Или же, использование в работе одних и тех же утилит хранения данных одновременно несколькими приложениями. Отсутствие подобных возможностей сделало бы модернизацию и наращивание программного обеспечения очень трудозатратным процессом.
Кроме того, такая вещь, как «утилиты интерфейса» обычно строится так, чтобы его можно было применять в любом существующем или разрабатываемом приложении.
В существующей системе модернизации или полного изменения существующей прикладной разработки все достаточно ясно и понятно: как ввести в систему еще один интерфейс пользователя, к какой группе и в каких соглашениях отнести новый программный код, где искать проблемы во время отладки и, как, вообще, модернизировать существующую систему.
Однако, некоторые направления развития современного программного обеспечения заставляют задуматься о его дальнейшем будущем и наводят на мысли о том, что это, уже недалекое будущее, может оказаться совсем не таким, как представляется сейчас.
Распараллеливание выполнения
однопроцессорная многопроцессорная система
Когда параллельность обслуживания запросов или выполнения процессов помогает работе, а когда она может сильно помешать?
Параллельное выполнение процессов на деле означает равноправие любого из них и значительно ухудшает характеристики быстродействия системы. При параллельном обслуживании запросов система ставит все задания на исполнение, и периодически останавливает обслуживание какого-либо процесса, с сохранением его контекста, передает управление другому процессу с восстановлением его контекста исполнения. Цикл повторяется внутри очереди заданий до полного выполнения каждого из них. В итоге каждое задание тратит определенное время на выполнение, но, возможно, еще большее количество времени уходит на ожидание в очереди на исполнение.
При последовательном выполнении задач система ставит запросы в ожидание исполнения. После чего монопольно выполняет первый попавшийся, затем берет следующий - и все повторяется до полного обслуживания всего списка запросов.
Однако, смена однопроцессорных или многопроцессорных систем на системы, имеющие большое количество ядер или процессоров, т. е., физически параллельно выполняющих операции аппаратных модулей многое меняет. Но приобретение подобной мощной техники отнюдь не гарантирует реального повышения производительности компьютерных систем, так как далеко не все современные программные средства умеют использовать такое количество ядер или процессоров.
Поэтому, в качестве одного из направлений развития софтвера, возможна разработка стратегий выполнения алгоритмов и обработки данных, ориентированных на физическое распараллеливание.
Алгоритмы и структуры оперативной памяти
Раньше наиболее ценным, но весьма ограниченным, ресурсом была оперативная память. Все алгоритмы и структуры разрабатывавшихся программ были в значительной степени нацелены на минимизацию ее использования. Сейчас стандартная, коммерчески доступная компьютерная система, имеет в своем распоряжении оперативную память в несколько гигабайт, что превосходит весь объем жестких дисков, применявшихся ранее.
Поэтому следующим направлением перспектив представляется разработка алгоритмов и структур данных, занимающих большие объемы, размещаемые в оперативной памяти. Ранее такие методы применялись, в частности, в таблицах предвычисленых значений и в табличных вычислениях. Представляется перспективным и развитие алгоритмов и структур данных, применяющих для сокращения объемов вычислений намного большие объемы оперативной памяти. Например, применение табличных вычислений, а также того, что будет изобретено в этом направлении, для решения задач преобразований, например, кодирования и декодирования данных: СУБД, видео, звук, графика, задачи поиска и т. д.
Структуры и алгоритмы быстрой памяти
Время доступа к жестким дискам, повсеместно применявшимся ранее и применяющимся сейчас в качестве основных накопителей, гораздо больше времени доступа к оперативной памяти. И разрабатывавшиеся основные алгоритмы и стратегии баз данных были ориентированы на компенсацию этого фактора. В частности, методы кеширования и блочной организации файлов данных в СУБД.
В настоящее время получают распространение твердотельные накопители SSD, имеющие колоссальную скорость доступа, и фактор соотношения времени доступа к диску и оперативной памяти изменился. Как следствие этого, можно предположить направление исследований по изменению принципов доступа к базам данных, например замена структур B*-tree на RB-tree или другие, отход от принципов кеширования блоков и изобретение чего-то иного.
Быстрое портирование на разные операционные системы
Когда-то давно, если кем-то применялась определенная операционная система, то и все программное обеспечение подбиралось под нее. Со временем фактор доступности программного обеспечения для определенной операционной системы изменился из-за огромной работы, проделанной программистами, по портированию программ на различные операционки. Множество программ общего и специального назначения более чем доступны для самых разных операционных систем.
Вопрос выбора и привязки к определенной операционной системе в настоящее время не настолько актуален, так что, это придется учитывать при планировании перспектив как программистам, так и управляющему персоналу. Чем дальше тем более легко пользователи меняют операционки, руководствуясь лишь собственными эстетическими предпочтениями. Попытка влиять на выбор операционки или как-либо ее навязывать уже не имеет никаких оснований. Фактор привязки, ранее действовавший, изменился.
Как следствие этого, к перспективам софтвера относится возможность портирования программного обеспечения. К ним относятся различные средства - от применения интерпретирующих систем и средств виртуализации до средств кросскомпиляции. Но пытливые умы программистов вполне могут придумать что-нибудь новое.
В семействе операционных систем Windows x86-32 применялось интересное решение - операционная система легко выполняет программы, написанные для других систем - DOS, Win16, Win32, подмножество OS/2 и Posix, и не будет удивительным, если появится операционная система, ну например UniOS, выполняющая программы для самых разных других операционных систем без применения отдельных промежуточных виртуальных систем или эмуляторов. В различных операционных системах такие подходы уже применяются, охватывая пока лишь архитектурно близкие операционные системы.
Линейные алгоритмы и структуры
Процессоры компьютерных систем, применявшиеся ранее в качестве ядра, почти не имели внутренних кешей. К ним программисты относились, можно с уверенностью утверждать, просто никак. Средства встроенных или дополнительных кешей процессоров могли быть хоть как-то использованы только при выборе аппаратной части компьютера. На все остальное, т. е. : работу программистов, планирование алгоритмов и структур данных - это совершенно не влияло.
В настоящее время размеры кешей и их сложность стали такими, что их влияние и характеристики работы стали реально действующим фактором для программистов. Эффективность алгоритмов и структур с точки зрения эффективности попадания данных в кеш-линейки современных процессоров уже постепенно входят в руководства для разработчиков по оптимизации программного обеспечения. Уже есть множество примеров, когда простая перестановка полей в структуре данных может приводить к росту производительности программы на десятки процентов, если по схеме выполнения алгоритма второе обращение к полю в структуре данных попадает в кеш процессора, в уже прочитанные при предыдущем обращении данные.
Если ранее разработчики видели, что переход от линейных структур к сложным давал ускорение общего времени выполнения, то в настоящее время из-за увеличения кешей процессоров преимущество могут получить именно линейные структуры, ориентированные на последовательные проходы, так как вторичное обращение к следующему элементу отрабатывается намного быстрее, чем к элементу, не находящемуся в кеше процессора.
Еще одно направление в линейности представлено исследованиями в области алгоритмов, выполняющихся линейно, или содержащих минимизированное число переходов. Выполнение подобного алгоритма значительно улучшается именно из-за кеширования последовательности исполняемых кодов, а так же и из-за встроенных в процессоры и достаточно давно использующихся средств конвейеризации выполнения. Одним из таких направлений, в частности и для примера, является метод развертывания циклов.
Направления поиска перспектив
Другие направления перспектив могут выглядеть как незначимыми, так и наоборот, гораздо более значимыми в каких-то областях. Как же понять, что появился и уже начал действовать фактор перспективы? Общим правилом, которым могут руководствоваться программисты, может быть появление новых средств обмена информацией, новых носителей или принципов и изменение ключевых факторов, вызывавших применение определенных методов. Часть из них, конечно, уйдет в прошлое практически сразу, другая часть будет применяться еще долго.
Вообще говоря, появление почти любого нового способа обмена информацией, ее передачи или обработки приводило к небольшой технической а иногда и политической революции:
письменность
книгопечатание
массовая печать
радио
телевидение
перфокарты
дискеты
CD / DVD
Internet
беспроводный доступ
оптические каналы
Из событий недавнего прошлого:
Ключевым фактором беспорядков на Британских островах стало распространение смартфонов BlackBerry, применяющих настоящие средства криптографии и не дававшие полиции возможность понять содержание передаваемой сообщниками погромов информации.
Ключевым фактором беспорядков и революций «арабской весны» стали социальные сети, в которых множество людей легко распространяло и получало информацию пособнического и координирующего характера.
Не все новые способы переноса и обработки информации закрепились в применении. Так, появившиеся в свое время ZIP-drive носители на 120 Mb были с легкостью убиты перезаписываемыми CD на 650/700 Mb, а вот средства Wi-Fi так и остались в эксплуатации и массовом применении, хотя к беспроводным средствам относятся еще, видимо, с десяток иных технологий.
Размещено на Allbest.ru
...Подобные документы
Принцип работы ядра процессора, типы архитектур ядер операционных систем. Сокет(Socket), кэш-память, контроллер ОЗУ, северный мост. Внутренняя архитектура процессоров Intel и AMD: расшифровка названий, технологии процессоров, сравнение производительности.
реферат [214,9 K], добавлен 05.05.2014История создания и развития компьютерных процессоров Intel. Изучение архитектурного строения процессоров Intel Core, их ядра и кэш-память. Характеристика энергопотребления, производительности и систем управления питанием процессоров модельного рядя Core.
контрольная работа [7,6 M], добавлен 17.05.2013Достоинства многопроцессорных систем. Создание программы, реализующей работу мультипроцессорной системы с общей памятью по обработке различного количества заявок, а также различного количества процессоров. Модели вычислений на векторных и матричных ЭВМ.
курсовая работа [162,2 K], добавлен 21.06.2013Основные области проектирования информационных систем: базы данных, программы (выполнение к запросам данных), топология сети, конфигурации аппаратных средств. Модели жизненного цикла программного обеспечения. Этапы проектирования информационной системы.
реферат [36,1 K], добавлен 29.04.2010Концепция построения виртуальной лаборатории (ВЛ) "Программирование микроконтроллерных систем". Принцип построения лабораторного практикума. Архитектура аппаратного обеспечения ВЛ. Аппаратные способы реализации генератора сигналов произвольной формы.
магистерская работа [669,4 K], добавлен 29.06.2009Классификация основных видов памяти компьютера. Использование оперативной памяти для временного хранения данных, используемых для работы программного обеспечения. Расчет потребления электроэнергии, формирование квитанции для потребителя в Microsoft Excel.
курсовая работа [1,5 M], добавлен 23.04.2013Система контроля и управления доступом как базовый компонент интегрированных систем. Структура и основные элементы систем видеонаблюдения. Области применения и обзор программного обеспечения систем видеонаблюдения. Интегрированные системы безопасности.
дипломная работа [1,8 M], добавлен 25.07.2015Понятие высоконагруженных компьютерных систем. Традиционные качества, интерактивность, распределенная система, большое количество пользователей. Распределение задач сервером. Балансировка нагрузки. Исследование высоконагруженных систем Google и Вконтакте.
дипломная работа [552,9 K], добавлен 11.12.2015История появления и развития первых процессоров для компьютеров. Общая структура центрального процессора. Устройство блока интерфейса. Основные характеристики процессора. Кеш-память разных уровней. Разрядность и количество ядер. Частота и системная шина.
презентация [1,4 M], добавлен 11.04.2019Разновидности, производительность современных процессоров. Предназначение оперативной памяти. Микросхемы персонального компьютера. Постоянное запоминающее устройство. Тактико-технических характеристики процессоров. Перспективы развития памяти компьютера.
реферат [61,9 K], добавлен 22.11.2016Методология структурного анализа и проектирования информационных систем. Базовый стандарт процессов жизненного цикла программного обеспечения. Цели и принципы формирования профилей информационных систем. Разработка идеальной модели бизнес-процессов.
презентация [152,1 K], добавлен 07.12.2013Исследование алгоритма планирования вычислительного процесса мультипроцессорных систем при пакетной обработке задач. Создание программы на языке Turbo Pascal 7.0, реализующей демонстрацию вычислительного процесса систем при обработке пакетов данных.
курсовая работа [388,7 K], добавлен 24.06.2013Анализ существующего программного обеспечения, технических систем: eM-Workplace, eM-Spot, eM-Arc, tecnomatix Robcad, Human Performance. Структура программного продукта. Руководство программиста, оператора. Выполнение анализа на тестируемой выборке данных.
курсовая работа [45,0 K], добавлен 03.04.2012Функциональные элементы в составе компьютера: основная (оперативная) и внешняя память, процессор, устройства ввода и вывода информации, коммуникационные устройства; их характеристики. Заполнение таблиц и построение формул в текстовом редакторе Word.
контрольная работа [24,8 K], добавлен 27.02.2010История развития и классификация информационных систем. Применение информационных систем в образовании. Практические аспекты использования прикладного программного обеспечения при разработке сайта. Функциональные возможности программного приложения.
курсовая работа [47,9 K], добавлен 19.01.2017Оперативная память - часть памяти компьютера: назначение, функции, способ передачи данных процессору. Современные запоминающие устройства: голографическое, молекулярное, на основе графеновой наноленты и нанотрубках; принцип работы и перспективы развития.
реферат [1,3 M], добавлен 21.04.2011Несоответствие процессов разработки программного обеспечения международным стандартам. Фазы, развитие вычислительной инфраструктуры. История развития компьютерных систем. Этапы разработки программ и их тестирование. Ошибки в программном обеспечении.
реферат [176,2 K], добавлен 27.08.2009Текстовые документы в текстовом процессоре, автоматизация обработки электронных таблиц. Операционные системы, их версии; определение информатики, информации, компьютера, определение аппаратного и программного обеспечения, формулы и расчеты на компьютере.
лабораторная работа [23,5 K], добавлен 17.09.2010Основные характеристики микропроцессоров: тактовая частота, кэш память, дополнительные инструкции, разрядность, архитектура, количество ядер. История развития микропроцессоров, главные фирмы-производители. Разработка программы работы с массивом.
курсовая работа [139,4 K], добавлен 24.06.2011История развития операционных систем. Основные элементы современной компьютерной системы: процессор, сетевой интерфейс, оперативная память, диски, клавиатура, принтер, монитор. Аппаратное обеспечение, системные программы и приложения компьютерной системы.
презентация [249,3 K], добавлен 24.07.2013