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