Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
posobie_po_pri.doc
Скачиваний:
1
Добавлен:
01.04.2025
Размер:
3.02 Mб
Скачать

4 Качество и эффективность в программной инженерии 193

4.1 Обеспечение качества программного обеспечения 193

4.1.1 Качество программного продукта 193

4.1.2 Культура и этика программной инженерии 193

4.1.3 Значение и стоимость качества 194

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

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

4.1.6 Количественная оценка качества программного обеспечения 199

4.2 Модели качества процессов конструирования 200

4.2.1 Качество процессов 201

4.2.2 CMM/CMMI 201

4.2.3 TickIT 206

4.2.4 Прочие подходы 208

4.3 Процессы управления качеством программного обеспечения 210

4.3.1 Подтверждение качества программного обеспечения 211

4.3.2 Проверка (верификация) и аттестация 212

4.3.3 Оценка и аудит 212

4.3.4 Характеристика дефектов 215

4.3.5 Методы управления качеством программного обеспечения 216

4.4 Стандартизация качества программного обеспечения 218

4.4.1 Стандарты в сфере программной инженерии 218

4.4.2 Стандартизация программных продуктов в ЕСПД 220

4.4.3 Виды стандартных программных документов 222

4.4.4 Действующие международные стандарты в сфере разработки программных средств и информационных технологий 226

4.5 Документирование программных средств 230

4.6 Сертификация программных средств 230

4.6.1 Правовые акты по сертификации программных продуктов 230

4.6.2 Сертификация ПС 233

4.6.3 Перечень объектов, подлежащих сертификации и их характеристики 235

Заключение 237

Библиография 238

Введение

1Основы программной инженерии

1.1Кризисы программирования и возникновение программной инженерии

На рубеже 60-х – 70-х годов прошлого века стоимость программного обеспечения стала приближаться к стоимости аппаратного обеспечения (компьютеров), а динамика её роста позволяла прогнозировать, что к середине 90-годов все человечество будет заниматься разработкой программ Это событие явилось первым кризисом программирования. Благодаря ему появилась идея для сокращения стоимости программ использовать инженерные методы в производстве программ, которая постепенно оформилась в программную инженерию (или технологию программирования в нашей стране).

С тех пор программная инженерия бурно развивается. Причём этапы её развития связаны с решением очередной системной проблемы:

  1. Появление модульного подхода к программированию

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

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

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

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

  1. Формирование структурного подхода к программированию

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

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

  • использование нисходящего функционального проектирования, основанном на методе пошаговой структурной декомпозиции;

  • применение специальных языков проектирования, которые сейчас принято называть CASE-средствами и средств автоматизации использования этих языков;

  • стандартизация всех этапов жизненного цикла программного комплекса;

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

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

  1. Становление объектно-ориентированного подхода

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

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

  1. Инкапсуляция – объединение в классе свойств и методов.

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

  3. Полиморфизм – определение свойств и методов объекта по контексту.

Объектно-ориентированный подход позволил успешно перейти к спиральной модели разработки программных продуктов, значительно снизив потери от необходимости учёта всё новых требований заказчика.

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

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]