- Любовные романы
- Фантастика и фэнтези
- Ненаучная фантастика
- Ироническое фэнтези
- Научная Фантастика
- Фэнтези
- Ужасы и Мистика
- Боевая фантастика
- Альтернативная история
- Космическая фантастика
- Попаданцы
- Юмористическая фантастика
- Героическая фантастика
- Детективная фантастика
- Социально-психологическая
- Боевое фэнтези
- Русское фэнтези
- Киберпанк
- Романтическая фантастика
- Городская фантастика
- Технофэнтези
- Мистика
- Разная фантастика
- Иностранное фэнтези
- Историческое фэнтези
- LitRPG
- Эпическая фантастика
- Зарубежная фантастика
- Городское фентези
- Космоопера
- Разное фэнтези
- Книги магов
- Любовное фэнтези
- Постапокалипсис
- Бизнес
- Историческая фантастика
- Социально-философская фантастика
- Сказочная фантастика
- Стимпанк
- Романтическое фэнтези
- Ироническая фантастика
- Детективы и Триллеры
- Проза
- Юмор
- Феерия
- Новелла
- Русская классическая проза
- Современная проза
- Повести
- Контркультура
- Русская современная проза
- Историческая проза
- Проза
- Классическая проза
- Советская классическая проза
- О войне
- Зарубежная современная проза
- Рассказы
- Зарубежная классика
- Очерки
- Антисоветская литература
- Магический реализм
- Разное
- Сентиментальная проза
- Афоризмы
- Эссе
- Эпистолярная проза
- Семейный роман/Семейная сага
- Поэзия, Драматургия
- Приключения
- Детская литература
- Загадки
- Книга-игра
- Детская проза
- Детские приключения
- Сказка
- Прочая детская литература
- Детская фантастика
- Детские стихи
- Детская образовательная литература
- Детские остросюжетные
- Учебная литература
- Зарубежные детские книги
- Детский фольклор
- Буквари
- Книги для подростков
- Школьные учебники
- Внеклассное чтение
- Книги для дошкольников
- Детская познавательная и развивающая литература
- Детские детективы
- Домоводство, Дом и семья
- Юмор
- Документальные книги
- Бизнес
- Работа с клиентами
- Тайм-менеджмент
- Кадровый менеджмент
- Экономика
- Менеджмент и кадры
- Управление, подбор персонала
- О бизнесе популярно
- Интернет-бизнес
- Личные финансы
- Делопроизводство, офис
- Маркетинг, PR, реклама
- Поиск работы
- Бизнес
- Банковское дело
- Малый бизнес
- Ценные бумаги и инвестиции
- Краткое содержание
- Бухучет и аудит
- Ораторское искусство / риторика
- Корпоративная культура, бизнес
- Финансы
- Государственное и муниципальное управление
- Менеджмент
- Зарубежная деловая литература
- Продажи
- Переговоры
- Личная эффективность
- Торговля
- Научные и научно-популярные книги
- Биофизика
- География
- Экология
- Биохимия
- Рефераты
- Культурология
- Техническая литература
- История
- Психология
- Медицина
- Прочая научная литература
- Юриспруденция
- Биология
- Политика
- Литературоведение
- Религиоведение
- Научпоп
- Психология, личное
- Математика
- Психотерапия
- Социология
- Воспитание детей, педагогика
- Языкознание
- Беременность, ожидание детей
- Транспорт, военная техника
- Детская психология
- Науки: разное
- Педагогика
- Зарубежная психология
- Иностранные языки
- Филология
- Радиотехника
- Деловая литература
- Физика
- Альтернативная медицина
- Химия
- Государство и право
- Обществознание
- Образовательная литература
- Учебники
- Зоология
- Архитектура
- Науки о космосе
- Ботаника
- Астрология
- Ветеринария
- История Европы
- География
- Зарубежная публицистика
- О животных
- Шпаргалки
- Разная литература
- Зарубежная литература о культуре и искусстве
- Пословицы, поговорки
- Боевые искусства
- Прочее
- Периодические издания
- Фанфик
- Военное
- Цитаты из афоризмов
- Гиды, путеводители
- Литература 19 века
- Зарубежная образовательная литература
- Военная история
- Кино
- Современная литература
- Военная техника, оружие
- Культура и искусство
- Музыка, музыканты
- Газеты и журналы
- Современная зарубежная литература
- Визуальные искусства
- Отраслевые издания
- Шахматы
- Недвижимость
- Великолепные истории
- Музыка, танцы
- Авто и ПДД
- Изобразительное искусство, фотография
- Истории из жизни
- Готические новеллы
- Начинающие авторы
- Спецслужбы
- Подростковая литература
- Зарубежная прикладная литература
- Религия и духовность
- Старинная литература
- Справочная литература
- Компьютеры и Интернет
- Блог
Очерки истории отечественной программной инженерии в 1940-е – 80-е годы - Владимир Липаев
Шрифт:
Интервал:
Закладка:
Первичные ошибки в программах можно анализировать с разной степенью детализации и в зависимости от различных факторов. Практический опыт показал, что наиболее существенными факторами, влияющими на характеристики обнаруживаемых ошибок, являются:
• методология, технология и уровень автоматизации системного и структурного проектирования, а также непосредственного программирования компонентов;
• длительность с начала процесса тестирования и текущий этап разработки или сопровождения, и модификации комплекса программ;
• класс программного продукта, масштаб (размер) и типы компонентов, в которых обнаруживаются ошибки;
• методы, виды и уровень автоматизации верификации и тестирования, их адекватность характеристикам компонентов и потенциально возможным в программах ошибкам.
Первичные ошибки в комплексах программ в порядке уменьшения их влияния на сложность обнаружения и масштабы корректировок можно разделить на следующие группы:
• ошибки вследствие большого масштаба – размера комплекса программ, а также высоких требований к его качеству;
• ошибки планирования и корректности требований модификаций часто могут быть наиболее критичным для общего успеха программного продукта и системы;
• системные ошибки, обусловленные отклонением функционирования реальной системы, и характеристик внешних объектов от предполагавшихся при проектировании;
• алгоритмические ошибки, связанные с неполным формированием необходимых условий решения и некорректной постановкой целей функциональных задач;
• ошибки реализации спецификаций требований – программные дефекты, возможно, ошибки нарушения содержания или структуры компонентов;
• программные ошибки, вследствие неправильной записи текстов программ на языке программирования и ошибок трансляции текстов программ в объектный код;
• ошибки в документации, которые наиболее легко обнаруживаются и в наименьшей степени влияют на функционирование и применение программного продукта.
Сложность проявления, обнаружения и устранения ошибок значительно конкретизируются и становятся измеримой, когда устанавливается связь этого понятия с конкретными ресурсами, необходимыми для решения соответствующей задачи и возможными проявлениями дефектов. При разработке и сопровождении программ основным лимитирующим ресурсом обычно являются допустимые трудозатраты специалистов, а также ограничения на сроки разработки, параметры ЭВМ, технологию проектирования корректировок. Показатели сложности при анализе можно разделить на две большие группы:
• сложность ошибок при создании и корректировках компонентов и комплекса программ – статическая сложность, когда реализуются его требуемые функции, вносятся основные дефекты и ошибки;
• сложность проявления ошибок функционирования программ и получения результатов – динамическая сложность, когда проявляются дефекты и ошибки, отражающиеся на функциональном назначении, рисках и качестве применения версии ПС.
Системные ошибки в крупных комплексах программ возникают, прежде всего, из-за неполной информации о реальных процессах, происходящих в управляемых объектах и внешних источниках информации. На начальных стадиях проектирования не всегда удается точно сформулировать целевую задачу всей системы, а также целевые задачи и характеристики основных функциональных компонентов, и их уточняют в процессе проектирования. В соответствии с этим уточняются и конкретизируются технические задания на отдельные функциональные программы и выявляются отклонения от требований уточненного задания, которые можно квалифицировать как системные ошибки. Ошибки, связанные с неполной формализацией целевой задачи системы, наиболее трудно было квалифицировать и выделять, в большинстве случаев они устранялись в процессе разработки программ.
Характеристики внешних объектов, принятые в процессе разработки алгоритмов за исходные, могут быть результатом аналитических расчетов, моделирования или исследования аналогичных систем. Во всех случаях может отсутствовать полная адекватность предполагаемых и реальных характеристик, что и являлось причиной сложных и трудно обнаруживаемых системных ошибок. Ситуация с системными ошибками дополнительно усложняется тем, что эксперименты по проверке взаимодействия программного продукта с реальной средой во всей области изменения параметров зачастую сложны и дороги, а в отдельных случаях, при создании опасных ситуаций, недопустимы.
Длительность отладки, а, следовательно, и всей разработки непосредственно зависит от допустимого значения показателя отлаженности или от количества прогнозируемых не выявленных ошибок, при котором разработку можно было считать завершенной. Однако в сложных комплексах программ детерминированный подход перестает быть конструктивным, и приходится переходить к статистической оценке уровня не выявленных ошибок и отлаженности комплекса. В этом случае показателем отлаженности может быть вероятность обнаружения ошибок в программе в течение некоторого времени или интенсивность потока искажений результатов в период эксплуатации системы за счет не выявленных ошибок. В серийно выпускаемых программных продуктах реального времени, количество ежегодно обнаруживаемых ошибок сравнительно мало изменяется, что в значительной степени объясняется увеличением количества функционирующих экземпляров объектных ЭВМ и систем.
Взаимосвязь между количеством ошибок в программе, количеством выявляемых ошибок и интенсивностью искажений результатов может являться основой оптимизации суммарных затрат на оперативную защиту и отладку. Установлено, что для этого может использоваться жесткая корреляция между тремя вилами проявления ошибок в сложных комплексах программ [19]:
• суммарным количеством ошибок в комплексе программ или количеством неверных команд в программе по отношению к общему количеству команд;
• количеством ошибок в комплексе программ, выявленных в единицу времени в процессе отладки при постоянных усилиях;
• количеством искажений результатов на выходе комплекса программ вследствие не выявленных ошибок в программах.
Эти три показателя можно связать некоторыми постоянными коэффициентами пропорциональности. Теоретические исследования подтвердили эти связи и позволили создать методы статистического прогнозирования интегрального числа ошибок в зависимости от времени отладки комплекса программ. Созданная методика и проведенные исследования характеристик комплексов программ показали, что их целесообразно применять как ориентиры возможных ошибок и дефектов при разработке и сопровождении крупных программных продуктов.
В 80-е годы при исследованиях за рубежом \]примеров 20 крупных поставляемых программных продуктов, созданных в 13 различных организациях, коллективы специалистов добились среднего уровня 0,06 дефекта на тысячу строк нового и измененного программного кода. При использовании структурного метода в пяти проектах достигнуто 0,04 – 0,075 ошибок на тысячу строк. Таким образом, уровень ошибок около 0,05 на тысячу строк кола в разных публикациях считалось близким к предельному для высококачественных программных продуктов.
Другим примером оценок уровня ошибок особенно высокого качества может служить критический программный продукт бортовых систем Шаттла, созданный NASA. По оценке авторов, в нем содержится менее одной ошибки на 10000 строк кода. Однако стоимость программного продукта достигает 1000 $ за строку кода, что в среднем в сто раз больше, чем для административных систем и в десять раз больше, чем – для ряда ординарных критических управляющих систем реально времени [11].
Приведенные характеристики типов дефектов и количественные данные могут служить ориентирами при прогнозировании возможного наличия не выявленных ошибок различных сложных программных продуктов высокого качества. Следующим логическим шагом процесса их оценивания может быть усреднение для большого числа проектов фактических данных о количестве ошибок на конкретном предприятии, приходящихся на тысячу строк кода, которые обнаружены в различных продуктах. Тогда в следующем проекте будет иметься возможность использования этих данных, в качестве меры количества ошибок, обнаружение которых следует ожидать при выполнении проекта с таким же уровнем качества, или с целью повышения производительности при разработке для оценки момента прекращения дальнейшего тестирования. Подобные оценки гарантируют от избыточного оптимизма при определении сроков и при разработке графиков разработки, сопровождения и реализации программ с заданным качеством. Непредсказуемость конкретных ошибок в программах приводит к целесообразности последовательного, методичного фиксирования и анализа возможности проявления любого типа дефектов и необходимости их исключения на наиболее ранних этапах ЖЦ при минимальных затратах.

