Студопедия

КАТЕГОРИИ:

АвтоАвтоматизацияАрхитектураАстрономияАудитБиологияБухгалтерияВоенное делоГенетикаГеографияГеологияГосударствоДомЖурналистика и СМИИзобретательствоИностранные языкиИнформатикаИскусствоИсторияКомпьютерыКулинарияКультураЛексикологияЛитератураЛогикаМаркетингМатематикаМашиностроениеМедицинаМенеджментМеталлы и СваркаМеханикаМузыкаНаселениеОбразованиеОхрана безопасности жизниОхрана ТрудаПедагогикаПолитикаПравоПриборостроениеПрограммированиеПроизводствоПромышленностьПсихологияРадиоРегилияСвязьСоциологияСпортСтандартизацияСтроительствоТехнологииТорговляТуризмФизикаФизиологияФилософияФинансыХимияХозяйствоЦеннообразованиеЧерчениеЭкологияЭконометрикаЭкономикаЭлектроникаЮриспунденкция

Эффективность и технологичность программного обеспечения.




 

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

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

И тем более не следует «платить» за увеличение эффективности снижением технологичности разрабатываемого программного обеспечения. Исключения возможны лишь при очень жестких требованиях и наличии соответствующего контроля за качеством.

Частично проблему эффективности программ решают за программиста       компиляторы.

Средства оптимизации, используемые компиляторами, делят на две группы:

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

• машинно-независимые выполняют оптимизацию на уровне входного языка, например,

вынесение вычислений константных (независящих от индекса цикла) выражений из циклов и т. п.

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

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

• избегать «длинных» операций умножения и деления, заменяя их сложением, вычитанием и сдвигами;

• минимизировать преобразования типов в выражениях;

• оптимизировать запись условных выражений - исключать лишние проверки;

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

• избегать использования различных типов в выражении и т. п.

 

Объектно-ориентированное программирование.

 

В центре ООП находится понятие объекта. Объект — это сущность, которой можно посылать сообщения, и которая может на них реагировать, используя свои данные. Данные объекта скрыты от остальной программы. Сокрытие данных называется инкапсуляцией.

Наличие инкапсуляции достаточно для объектности языка программирования, но ещё не означает его объектной ориентированности — для этого требуется наличие наследования.

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

Язык Self, соблюдая многие исходные положения объектно-ориентированного программирования, ввёл альтернативное классам понятие прототипа, положив начало прототипному программированию, считающемуся подвидом объектного.

 

Классификация программных продуктов по функциональному признаку.

 

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

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

Прикладные программы и системы ориентированы на решение конкретных пользовательских задач.

Различают пользователей:

• разработчиков программ;

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

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

 

Эксплуатационные требования к программным продуктам.

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

• правильность - функционирование в соответствии с техническим заданием;

• универсальность - обеспечение правильной работы при любых допустимых данных и защиты от неправильных данных;

• надежность (помехозащищенность) - обеспечение полной повторяемости результатов, т. е.

обеспечение их правильности при наличии различного рода сбоев;

• проверяем ость - возможность проверки получаемых результатов;

• точность результатов - обеспечение погрешности результатов не выше заданной;

• защищенность - обеспечение конфиденциальности информации;

• программная  совместимость  -  возможность  совместного  функционирования  с  другим программным обеспечением;

• аппаратная  совместимость  -  возможность  совместного  функционирования  с  некоторым оборудованием;

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

• адаптируемость  -  возможность  быстрой  модификации  с  целью  приспособления  к изменяющимся условиям функционирования;

• повторная входимость - возможность повторного выполнения без перезагрузки с диска;

• реентерабельность - возможность «параллельного» использования несколькими процессами.

 

Архитектура программного обеспечения.

 

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

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

• многопользовательскую  архитектуру,  которая  рассчитана  на  работу  в  локальной  или глобальной сети.

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

• программы;

• пакеты программ;

• программные комплексы;

• программные системы.

 










Последнее изменение этой страницы: 2018-05-29; просмотров: 392.

stydopedya.ru не претендует на авторское право материалов, которые вылажены, но предоставляет бесплатный доступ к ним. В случае нарушения авторского права или персональных данных напишите сюда...