Программа –формализованное описание процесса обработки данных. Основные понятия

Лекция 3.

Надежность программного обеспечения(ПО). Надежное ПО как продукт технологии программирования

[ http://tehprog.ru/index.php_page=lecture.html ]

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

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

 

Рис 1. Зависимости стоимости и вероятности обнаружения и исправления ошибок от времени проектирования программного обеспечения

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

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

Надежность также не является внутренним свойством прог­раммы. Она во многом связана с тем, как программа исполь­зуется.

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

Надежность является составной частью более общего понятия — качества. Качественная программа, например, не только надежна, но и

компактна,

совместима с другими программами,

эффективна,

удобна в сопровождении,

интуитивно понятна.

Можно добавить: программа должна быть разработана в срок и в пределах бюджетной стоимости.

Среди прочих характеристик качества программ надежность одна из наиболее важных, поэтому вопросы раз­работки ПО рассматриваются через приз­му надежности.

 

Программа –формализованное описание процесса обработки данных. Основные понятия

Целью программирования является описание процессов обработки данных.

Данные (data)-представление фактов и идей в формализованном виде, пригодном для передачи и обработки в некотором процессе.

Информация (information) - это смысл, который придается данным при их представлении.

Обработка данных (dataprocessing) - выполнение систематической последовательности действий с данными. Данные представляются и хранятся на т.н. носителяхданных.

Информационной средой (datamedium) будем называтьсовокупность носителей данных, используемых при какой-либо обработке данных, будем называть.

Состоянием информационной среды это набор данных, содержащихся в какой-либо момент в информационной среде.

Процесс – последовательность сменяющих друг друга состояний некоторой информационной среды.

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

 

Принято выделять семь видов обеспечения вычислительных систем (ВС):

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

Из всех видов обеспечения ПО занимает особое место, поскольку основная доля затрат из этих 7 видов приходится именно на ПО. Часто используются такие термины как: программа, программный ком­плекс,программная система,программный продукт,программное средство, программное обеспе­чение. Есть ли между ними разница?

Строго говоря, под программой понимают:

1) совокупность кода и данны х, пригодных для исполнения процессорам (исполняемая программа);

2) самостоятельный компонент, пред­назначенный для решения локальной задачи (программа как компонент сис­темы).

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

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

Программное обеспечение (ПО) — наиболее общее понятие, согласно ГОСТ 19781-90 ПО – совокупность программ системы обработки информации и программных документов, необходимых для их эксплуатации.

 

Условно можно делить программные продукты на малые, средние и крупные в зависимости от объема исходного кода:

код малых программ – сотни операторов языка высокого уровня,

средних — десятки тысяч операторов,

крупных —миллионы.

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

 

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

 

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

 

Жизненный цикл ПО

Это старейшая парадигма процесса разработки ПО (автор Уинстон Ройс, 1970). Очень часто классический жизненный цикл называют каскадной или водопадной моделью, подчеркивая, что разработка рассматривается как последовательность этапов, причем переход на следующий, иерархически нижний этап происходит только после полного завершения работ на текущем этапе.

Системный анализ задает

· роль каждого элемента в компьютерной системе,

· взаимодействие элементов друг с другом.

Анализ требований начинается с определения требований ко всем элементам системы и назначения подмножества этих требований программному «элементу». На этом же этапе определяются

· объем проектных работ,

· оценка их риска,

· необходимые трудозатраты,

· формируются рабочие задачи,

· план-график работ.

 

Анализ требований относится прежде всего к программному элементу (ПО). Уточняются и детализируются его функции, характеристики и интерфейс. Все определения документируются в спецификациях.

Проектирование определяет:

· архитектуру ПО;

· модульную структуры ПО;

· алгоритмические структуры ПО;

· структуры данных;

· входной и выходной интерфейса (входных и выходных форм данных).

В ходе проектирования выполняется трансляция требований к ПО во множество проектных представлений.

Архитектура ПО. Общепринятого определения «архитектуры ПО» не существует. Архитектурный стиль направляет всю организацию — все элементы, их интерфейсы, их взаимодействие и соединение. Существует немало языков, позволяющих описывать архитектуру ПО. Общими элементами для всех этих языков являются понятия компонента, коннектора и конфигурации. Помимо специализированных языков, для описания архитектуры часто используется унифицированный язык моделирования UML, который в настоящее время является стандартом для моделирования программных систем.

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

Архитектурные виды можно поделить на 3 основных типа:

1. Модульные виды (moduleviews) — показывают систему как структуру из различных программных блоков (точка зрения программиста-разработчика).

2. Компоненты-и-коннекторы (component-and-connectorviews) — показывают систему как структуру из параллельно запущенных элементов (компонентов) и способов их взаимодействия (коннекторов) (точка зрения проектироващика).

3. Размещение (англ. allocationviews) — показывает размещение элементов системы во внешних средах.

Примеры модульных видов:

· Декомпозиция (англ. decompositionview) — состоит из модулей в контексте отношения «является подмодулем»

· Использование (англ. usesview) — состоит из модулей в контексте отношения «использует» (т.е. один модуль использует сервисы другого модуля)

· Вид уровней (англ. layeredview) — показывает структуру, в которой связанные по функциональности модули объединены в группы (уровни)

· Вид классов/обобщений (англ. c lass/generalizationview) — состоит из классов, связанные через отношения «наследуется от» и «является экземпляром»

Примеры видов компонентов-и-коннекторов:

· Процессный вид (англ. processview) — состоит из процессов, соединённых операциями коммуникации, синхронизации и/или исключения

· Вид обмена данными (англ. shared-data (repository) view) — состоит из компонентов и коннекторов, которые создают, сохраняют и получают постоянные данные

· Вид клиент-сервер (англ. client-serverview) — состоит из взаимодействующих клиентов и серверов и коннектором между ними (например, протоколов и общих сообщений)

 

Примеры видов размещения:

· Развертывание (англ. deploymentview) — состоит из программных элементов, их размещения на физических носителях и коммуникационных элементов

· Распределение работы (англ. workassignmentview) — состоит из модулей и описания того, кто ответственен за внедрение каждого из них


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: