Опубликован: 05.11.2013 | Доступ: свободный | Студентов: 543 / 46 | Длительность: 11:51:00
Лекция 1:

Предисловие

Лекция 1: 12 || Лекция 2 >

Программная инженерия

Сильное влияние на развитие технологии программирования оказал Э. Дейкстра (Edsger W. Dijkstra) [1], предложивший метод структурного программирования. Одновременно с публикациями его идей стали достоянием гласности работы Ч. Хоара, показавшего, что любая программа может быть математически (формально) проанализирована, и это позволяет избежать части ошибок при использовании соответствующих формальных приемов проверки программ и алгоритмов.

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

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

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

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

Примером такого документа может служить ГОСТ Р 51904-2002 "Программное обеспечение встроенных систем. Общие требования к разработке и документированию". Во многих случаях он требует выполнения в процессе тестирования каждой команды машинного программного кода. Это позволяет убедиться не только в том, что программа делает то, что нужно, но и быть уверенным, что она не делает того, что не предусмотрено требованиями.

Системы реального времени

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

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

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

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

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

ТЕРМИНЫ И СОКРАЩЕНИЯ

AK AcKnowledgement

DDD Detailed Design Description

ETX End of TeXt

FA Functional Area

HRD Hardware Requirements Document

NAK No AcKnowledgement

ORD Organizational Requirements Document

RTS Request To Send

SOW Statement Of Work

SRD Software Requirements Document

STX Start of TeXt

SUT Software Under Test

SYS SYStem requirements

АТД Абстрактный тип данных

ВНУ Внешнее устройство

ЖЦ Жизненный цикл

ОС Операционная система

ПО Программное обеспечение

РБНФ Расширенная Бэкуса-Наура форма

ЯВУ Язык высокого уровня

ЯП Язык(и) программирования

Лекция 1: 12 || Лекция 2 >