Научная статья на тему 'Подводные камни при разработке программных решений'

Подводные камни при разработке программных решений Текст научной статьи по специальности «Компьютерные и информационные науки»

CC BY
487
64
i Надоели баннеры? Вы всегда можете отключить рекламу.
Ключевые слова
ПРОГРАММНЫЕ СИСТЕМЫ / РАЗРАБОТКА / ПРОЕКТИРОВАНИЕ / ОШИБКИ ПРИ РАЗРАБОТКЕ ПРОГРАММНЫХ ПРОДУКТОВ / SOFTWARE SYSTEMS / DEVELOPMENT / DESIGN / ERRORS IN THE DEVELOPMENT OF SOFTWARE PRODUCTS

Аннотация научной статьи по компьютерным и информационным наукам, автор научной работы — Лебедева Т.Н., Носова Л.С.

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

i Надоели баннеры? Вы всегда можете отключить рекламу.
iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.
i Надоели баннеры? Вы всегда можете отключить рекламу.

SUBMARINE STONES WHILE DEVELOPING SOFTWARE SOLUTIONS

In the article, the main difficulties encountered in the development of software, and possible errors are discussed. The authors analyzed the regulatory framework governing the creation of software solutions, the classification of errors, their critical impact on humanity. Also there are ways to prevent errors in application development related to automation of the programmer's activities for their exclusion, search and fixation.

Текст научной работы на тему «Подводные камни при разработке программных решений»

УДК 004.052.44 ББК 3.30.2

ПОДВОДНЫЕ КАМНИ ПРИ РАЗРАБОТКЕ ПРОГРАММНЫХ РЕШЕНИЙ

Т.Н. Лебедева, к.п.н., доцент ОУВО «Южно-Уральский институт управления и экономики»

E-mail: lebedevatn@mail.ru Л.С. Носова, к.п.н., доцент ОУ ВО «ЮУИУиЭ» E-mail: nosovals@mail.ru

Аннотация

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

Ключевые слова: программные системы, разработка, проектирование, ошибки при разработке программных продуктов.

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

Несмотря на такое многообразие аппаратно-программного обеспечения, любая система должно иметь качественные показатели его разработки. Все мировое сообщество программистов придерживается набора стандартов ISO 9000, регулирующих общие принципы обеспечения качества во всех отраслях. Наиболее важными стандартами в разработке программного обеспечения являются:

- ISO 9000:2000 Quality management systems — Fundamentals and vocabulary;

- ISO 9001:2000 Quality management systems — Requirements. Models for quality assurance in design, development, production, installation, and servicing;

- ISO 9004:2000 Quality management systems — Guidelines for performance improvements;

- ISO/IEC 90003:2004 Software engineering — Guidelines for the application of ISO 9001:2000 to computer software1.

В России основными стандартами, регламентирующими и качество программного обеспечения, являются:

- ГОСТ 28806-90 «Качество программных средств. Термины и определения»;

- ГОСТ 28195-89 «Оценка качества программных средств. Общие положения»;

- ГОСТ 15467-79 «Управление качеством продукции. Основные понятия, термины и определения»2.

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

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

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

Свойство «Удобство в использовании» заключается в практичности программного продукта, т. е. наличие набора атрибутов, которые будут отнесены к использованию и индивидуальной оценке такого использования конкретных пользователей.

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

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

Свойство «Мобильность» означает возможность переноса программного обеспечения с одной платформы на другую3.

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

В наше время было большое количество ситуаций, когда ошибка в программном обеспечении приводила к катастрофическим последствиям. Например, испытания американского истребителя F-16 при попытке перевести его в режим автопилота привели его к развороту вверх ногами, испытания бомбардировщика Су-24 - с отказом аппаратуры бомбометания из-за превышения машинной точности, взрыв ракеты-носителя Ariane-5, банкротство компании Knight Capital, увеличение дозы облучения на аппарате Therac-25 и последующая гибель пациентов и т. д.

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

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

Стоимость

Разработка Кодирование Тестирование Тестирование Выпуск готового

модулей есего продукта продукта

Рис. 1. Стоимость ошибок на разных этапах разработки программного продукта

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

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

И.В. Степанченко предложена следующая типология ошибок:

1) по времени появления ошибки:

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

- ошибки компиляции (ошибки в синтаксисе, неверное использование конструкций языка (операторов ветвления и циклов), использование несуществующих объектов или свойств, методов у объектов);

- ошибки периода выполнения (выполнение недопустимых или невозможных действий, например, деление на ноль);

2) по степени нарушения логики на:

- синтаксические (нарушение грамматических правил языка (правописание, пунктуации) в записи выражений, операторов, и употреблении выражений и т. п.);

- семантические (нарушение порядка следования операторов, параметров функций);

- прагматические (нарушение логики вычислений и пр.)4.

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

Обобщая различные классификации5, мы можем привести обобщенную типологию ошибок (рис. 2).

Рис. 2. Классификация ошибок

По факту человеческие ошибки - это обычное явление.. В общем случае под ошибкой подразумевается «неправильность, погрешность или неумышленное искажение объекта или процесса, что может быть причиной ущерба - риска при функционировании и применении программы»6.

Человеческие ошибки в области ПО делятся на 4 основных типа:

- ошибки, вызванные нехваткой знаний в данной области;

- опечатки;

- не считывание показаний системы;

- моторные ошибки.

Рассмотри особенности каждой из ошибок.

1) Ошибки, вызванные нехваткой знаний в данной области.

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

2) Опечатки.

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

3) Не считывание показаний системой

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

4) Моторные ошибки

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

Для того чтобы пользователю было комфортно работать с создаваемым программным продуктом и для повышения качества его работы, необходимо направлять усилия на следующие факторы:

- плавное обучение пользователей в процессе работы;

- снижение требований к бдительности пользователей;

- повышение разборчивости и заметности индикаторов.

Рассмотрим возможности программного обеспечения по предотвращению возможных ошибок разработчиков. С точки зрения разработки программной системы рекомендуется использовать вставку основных конструкций, используя встроенные средства современных сред программирования, например, для Microsoft Visual Studio (рис. 3, 4).

int з = 10;

if

пД if

■-О I Form at Provider Фрагмент кода для инструкции tf

ю IFormattable Чтобы вставить фрагмент кода, дважды нажмите клавишу TAB.

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

фрагмент. Разработчики создают свои фрагменты кода или текста, которые затем используют в программах (средах разработки программ), поисковых системах или текстовых процессорах. Сниппет в среде разработки облегчает процесс написания программного кода за счет его повторного использования. Это не замена внутренних функций или процедур языка программирования. Сниппеты могут быть статическими (схожи с макросами) в виде блока текста для вставки в указанное курсором место; динамическими - блока текста и динамических элементов, которые могут быть представлены переменными типа дата/время (схожи с шаблонами); и скриптовыми - коды на языке скриптов, самых гибкий вид сниппетов. Возможности сниппетов зависят от среды разработки. Они широко применяются в Microsoft Visual Studio, 1С-Битрикс, 1С:Предприятии, Embarcadero и в веб-программировании.

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

1. Набор кода и нажатие Ctrl+Q. При наборе слова «Проц» и нажатия горячих клавиш покажет следующее (рис. 5):

2.

(рис. 6).

Рис. 5. Выбор шаблона Вызов контекстного меню, пункт «Шаблоны текста» в редакторе кодов

Вставить £ ) Поиск в Синтакс-Помоиинике

CM-V Gr1«-F1

Шаблоны текста у

Выделить асе СМ+А

Повторить попе*

Найти следующий ЬЗ

"д Найти предыдущий

| ^ Переход к строке... Ог1+Са

Конструктор затх»са.. Конструктор запроса с обработкой результата. .

Рис. 6. Варианты шаблонов текста Автодополнение кода также по нажатию СМ+ « ».

Перечисление

Получить Функциональную опцию Получить функциональную опцию интерфейса Сообшеше Форшалная стрскв Подоврачь шаблон... 0 Шайлоьы текста Qrt+Shft+T

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

Помимо автоматизации процесса создания кода, некоторые языки программирования имеют программные конструкции (операторы) по предотвращению возможных ошибок. Например, обработка исключений try... except в Object Pascal, try... catch в C# и т. д.

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

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

Таким образом, можно выделить несколько направлений по предотвращению ошибок.

1. Использование встроенных возможностей системы программирования на этапе разработки программы (дозапись кода, работа с шаблонами, отладка программы и др.).

2. Разработка кода по отраслевым и специальным стандартам программирования.

3. Использование программ для автоматического и автоматизированного тестирования разработанного приложения.

Если первое направление можно освоить в процессе работы с конкретным программным обеспечением, то последнему направлению необходимо обучать в рамках дисциплины «Программирование» во избежание ошибок, приводящих к критическим последствиям. Последний класс программного обеспечения целесообразно использовать при написании отдельных модулей программы и их сборке для создания жизнеспособного приложения.

Примечания

1 Показатели качества программного обеспечения. Методы их оценки. Принципы обеспечения показателей качества программного обеспечения. Электронный ресурс. - URL: http://ftioredu.ru/card/29400/pokazateli-kachestva-programmnogo-obespecheniya-metody-ih-ocenki-principy-obespecheniya-pokazateley.html.

iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.

2 Липаев, В.В. Программная инженерия. Методологические основы: Учебник.. - М.: ТЕИС, 2006. 608 с.

3 Качество программного обеспечения. Электронный ресурс. - URL: http://www.viva64.com/ru/t70077/

4 Степанченко, И.В. Методы тестирования программного обеспечения: Учеб. пособие / ВолгГТУ, Волгоград, 2006. 74 с.

5 Винниченко, И.В. Автоматизация процессов тестирования. — СПб.: Питер, 2005. 203 с : ил.; Канер, С. Тестирование программного обеспечения. Фундаментальные концепции менеджмента бизнес-приложений: Пер. с англ. / С. Канер, Д. Фолк, Е. Нгуен. - К.: Изд-во «ДиаСофт», 2001. 544 с.

6 Липаев, В.В. Программная инженерия. Методологические основы: Учебник.- М.: ТЕИС, 2006. С. 258

SUBMARINE STONES WHILE DEVELOPING SOFTWARE SOLUTIONS

T.N. Lebedeva, South-Ural Institute of Management and Economics

E-mail: lebedevatn@mail.ru L.S. Nosova, South-Ural Institute of Management and Economics E-mail: nosovals@mail.ru

Abstract

In the article, the main difficulties encountered in the development of software, and possible errors are discussed. The authors analyzed the regulatory framework governing the creation of software solutions, the classification of errors, their critical impact on humanity. Also there are ways to prevent errors in application development related to automation of the programmer's activities for their exclusion, search and fixation.

Keywords: software systems, development, design, errors in the development of software products.

i Надоели баннеры? Вы всегда можете отключить рекламу.