- •Безруков а.И. Экономические и правовые основы разработки программного обеспечения (Тексты лекций)
- •Лекция 1. Знакомство с предметом Введение
- •Программно-информационный продукт – особый вид товара Что такое программный продукт
- •Характеристики качества программного продукта
- •Лекция 2. Маркетинговые исследования Проблема управления производительными силами общества
- •Простое воспроизводство. Закон стоимости
- •Расширенное воспроизводство. Проблема распределения прибавочной стоимости
- •Что такое маркетинг?
- •Проблемы, решению которых может помочь проведение маркетинговых исследований
- •Цели и результаты маркетингового исследования
- •Выбор данных
- •Первичные данные
- •Вторичные данные
- •Сбор первичных данных Определение потребности в данных
- •Подготовка предложения по исследованию
- •Выбор метода
- •Определение выборки
- •Сбор данных
- •Анализ данных
- •Сообщение о результатах
- •Сбор и анализ вторичных данных Внешние данные
- •Внутренние данные
- •Анализ деятельности
- •Отчеты об объемах продаж
- •Выбор метода
- •Определение выборки
- •Сбор данных
- •Анализ данных
- •Сообщение о результатах
- •Сбор и анализ вторичных данных Внешние данные
- •Внутренние данные
- •Анализ деятельности
- •Отчеты об объемах продаж
- •Методы исследования
- •Качественные методы
- •Групповые дискуссии (фокус-группы)
- •Глубинные интервью
- •Проекционные методы
- •Наблюдения
- •Количественные методы
- •Эксперименты
- •Маркетинговая смесь
- •Лекция 3. Экономическая оценка затрат на создание компьютерных программ
- •Классификация видов затрат. Маржинальный анализ
- •Методики расчета различных видов затрат
- •Операционные затраты
- •Пример расчета операционных затрат
- •Операционные затраты
- •Специфические структурные затраты Затраты на оборудование
- •Затраты на оборудование
- •Приведение затрат к одному времени
- •Затраты на нематериальные активы
- •Затраты на лицензии
- •Общефирменные затраты и накладные расходы
- •Использование ms Excel
- •Пример использования электронной таблицы
- •Лекция 4. Оценка эффекта от использования компьютерных программ Классификация программного обеспечения как товара
- •Оценка доли эффекта от собственно разработки программного обеспечения
- •Программное обеспечение массового использования
- •Позиционирование на рынке программных продуктов
- •Пример оценки экономической эффективности программного продукта массового спроса
- •Виды обучающих компьютерных программ на cd
- •Индивидуальные программные продукты
- •Лекция 5. Пример оценки эффекта от внедрения системы управления
- •Описание объекта управления
- •Построение вероятностной модели предприятия
- •Определим условные вероятности последствий
- •Согласование данных
- •Требования к согласованности условных вероятностей
- •Оценка потерь от выбросов
- •Моделирование последствий внедрения системы мониторинга
- •Алгоритм оценки
- •Уровень зрелости фирмы. Стандарт cmm
- •Лекция 6. Управление рисками программного проекта
- •Риски, связанные с реализацией проекта
- •Разделение ответственности
- •Количественная оценка рисков
- •Определение размеров ресурсов, необходимых для снижения рисков
- •Типовые и специфические источники рисков
- •Откуда брать информацию о рисках
- •Лекция 7. Управление персоналом
- •Роль персонала в эффективности проекта
- •Обеспечение условий работы
- •Работа в потоке
- •Организация рабочего места
- •Формирование команды Что такое команда
- •Лидерство
- •Факторы, способствующие формированию команды
- •Факторы, препятствующие формированию команды
- •Инвестиции в человека
- •Лекция 8. Управление качеством Эволюция представлений о качестве Потерянный рай (допромышленное ремесленное производство)
- •Издержки промышленной революции
- •Система Тейлора
- •Главное не наказать, а найти причину (система Шухарта)
- •Новая философия качества (идеи Деминга)
- •Системы управления качеством Роль рынка, ориентация на потребителя
- •Человеческий фактор, роль персонала
- •Международные стандарты серии iso 9000
- •Тотальное управление качеством (tqm)
- •Современные представления об управлении качеством
- •Лекция 9. Система управления качеством программной разработки Требования к системе управления качеством организации Политика в области качества
- •Система менеджмента качества
- •Управленческая деятельность
- •Система требований
- •Информационное обеспечение принятия решений
- •Контроль качества
- •Вовлечение персонала, партнеров, потребителей и общества
- •Требования к развитию
- •Управление качеством при проектировании и разработке
- •Оценка готовности предприятия к выпуску качественного программного продукта
- •Методы управления качеством программных проектов Управление документацией
- •Виды программной документации
- •Управление конфигурацией
- •Элементы конфигурации программного проекта
- •Контроль качества в ходе проектирования
- •Лекция 10. Программный продукт как объект интеллектуальной собственности Что такое интеллектуальная собственность?
- •Авторское право и смежные права
- •Регистрация интеллектуальной собственности
- •Регистрирующие органы
- •Рассмотрение заявки на официальную регистрацию
- •Выдача свидетельства
- •Правовые аспекты использования интеллектуальной собственности
- •Правовое обеспечение создания и использования объектов ис
- •Правовая охрана объектов интеллектуальной собственности
- •Экономические аспекты
Программно-информационный продукт – особый вид товара Что такое программный продукт
Чтобы одинаково понимать даже всем известные термины давайте дадим их точные определения. В различных нормативных документах приводятся разные определения даже основных терминов. Ниже приводятся наиболее часто применяемые определения, приведенные в отечественных терминологических стандартах, гармонизированных (согласованных) с международными стандартами в области программного обеспечения. Определяемые термины выделены курсивом, в скобках указаны английские названия этих терминов.
программа (program) - данные, предназначенные для управления конкретными компонентами системы обработки информации в целях реализации определенного алгоритма. (ГОСТ 19781)
программное средство (software) (ПС) - объект, состоящий из программ, процедур, правил, а также, если предусмотрено, сопутствующих им документации и данных, относящихся к функционированию системы обработки информации (ГОСТ 19781).
Объем понятия, выражаемого производным термином «программные средства», включает в себя как частный случай объем понятия «программное обеспечение», определяемого по ГОСТ 19781.
программный продукт (software product) (ПП) - программное средство, предназначенное для поставки, передачи, продажи пользователю (ГОСТ 28806-901).
Изучая этот курс, Вам часто придется рассматривать программный продукт с точки зрения покупателя или пользователя. Это очень полезный опыт. Кроме навыков оценки чужих программ для собственного использования, Вы лучше поймете: что ожидает пользователь от Ваших программ, как сделать Ваш продукт более привлекательным и желанным для покупателя.
Характеристики качества программного продукта
В условиях насыщенности рынка программных продуктов и жесткой конкуренции на этом рынке качество становится важнейшим свойством программы. Для потребителя от качества программы зависят сложность ее внедрения и эффективность использования. Как показывает опыт, общие затраты на внедрение программы в 2-6 раз превышают стоимость её лицензии. Поэтому, при выборе программы для внедрения, в достаточно широком диапазоне цен именно качество программы, а не её цена является главным фактором.
При выборе программы, потребителя, как правило, не интересует, как она устроена внутри. Для него гораздо важнее, как она поведет себя в деле. Такой взгляд на программу получил название пользовательское качество. В терминологическом стандарте2 ИСО 8402 дано следующее определение:
Качество - совокупность свойств и характеристик изделий или услуг, обеспечивающих удовлетворение обусловленных или предполагаемых потребностей.
На рис. 1.1 изображены комплексные характеристики качества программы, интересующие потребителя. В скобках, курсивом приведены английские названия этих характеристик.
Рис. 1.1. Комплексные характеристики пользовательского качества ПП
Организация, занимающаяся тестированием, сертификацией и продвижением ПС, должна оценить соответствие свойств программы и предъявленных к ней требований, а также сопоставить качество различных программ-конкурентов. При этом, ее, как правило, не интересует, какими проектными решениями достигнут результат. Она смотрит на программу как бы извне. Такой взгляд получил название внешнее качество.
Для фирмы-разработчика, качество программы, вместе с эффективностью её продвижения определяет коммерческий успех. Высокое качество продукции фирмы определяет её место на рынке, формирует доброе имя (бренд), является залогом стабильности и развития.
Для разработчика участие в проекте, завершившемся созданием качественной программы, является важным фактором профессионального и карьерного роста.
В разработке крупной современной программы, как правило, принимают участие сотни человек различных специальностей, а сама разработка может длиться годы. Если мы хотим разработать качественную программу, нам придется организовать и координировать действия всех участников разработки, ориентировав их на выпуск высококачественного продукта. Система действий, обеспечивающих разработку качественного продукта на всех этапах, начиная от замысла до эксплуатации готового продукта, называется системой управления качеством.
Во всех перечисленных случаях и руководству фирмы и разработчикам и работодателям важно уметь объективно оценивать качество программы изнутри. Такой взгляд на качество программы получил название внутреннее качество3.
В тоже время, понятие ‘качество программы’ является трудным для формализации и измерения. Приведем примеры.
Особенностью программного обеспечения является то, что наряду с инструментами решения традиционных задач, разработчик, как правило, передает пользователю свое видение проблемы, свои подходы к организации дела и т.д. Поэтому, программа, признанная высококачественной одним заказчиком, в глазах другого может оказаться низкокачественной.
При обсуждении идеи программы и разработке технического задания одной из основных проблем является согласование фактически разных представлений внешнего, внутреннего и пользовательского качества. Искусство проектировщика во многом заключается в том, чтобы правильно проинтерпретировать представления Заказчика (или потенциальных потребителей) о внешнем качестве программы в терминах её внешнего и внутреннего качества.
При планировании и управлении работами руководитель должен обеспечить единое понимание требований к качеству проекта и правильную интерпретацию этих требований применительно к работе каждого исполнителя.
Из сказанного видно, как важно обеспечить единство понимания качества и измеримость его характеристик.
Для упорядочения использования характеристик качества программного обеспечения разработан стандарт ГОСТ Р ИСО/МЭК 9126-93 [1.4]. Стандарт придерживается определения качества, данного стандартом ИСО 8402 [1.5]. В стандарте определяется шесть групп характеристик, которые с минимальным дублированием описывают различные аспекты качества программного обеспечения (ПС). Эти характеристики определены так, что могут применяться к любому виду ПС. В своей совокупности группы характеристик образуют основу для дальнейшего уточнения и описания качества ПС.
Так как конкретные характеристики существенно зависят от особенностей разработки и применения программ, стандарт не регламентирует, а только рекомендует подхарактеристики (комплексные показатели) и показатели, а также методы их измерения, ранжирования, оценки и использования. Перечень рекомендуемых показателей с указанием их русского и английского названий, а также определения каждого показателя приведен в Приложении 1 к стандарту.
Разработчику предоставляется возможность самому отобрать характеристики из предлагаемого набора. Использование стандарта обеспечит единство понимания и измерения характеристик качества ПС.
Чтобы лучше понять содержание стандарта, давайте посмотрим на программу глазами заказчика, выбирающего программное обеспечение для внедрения.
Итак, на что, в первую очередь, обращают внимание покупатели, выбирая программный продукт? Ниже формулируются пожелания потребителя (выделено жирным) и описываются соответствующие характеристики качества.
Программа должна делать то, что мне нужно. Делать правильно, в приемлемые сроки и с приемлемой трудоемкостью. Для оценки этого аспекта стандарт предлагает группу характеристик “функциональные возможности” (Functionality). Это совокупность свойств программного средства, определяемая наличием и конкретными особенностями набора функций, способных удовлетворять заданные или подразумеваемые потребности.
Я должен быть уверен, что расчеты, проводимые с помощью программы, выполняются правильно. Программа сама отслеживает возможные сбойные ситуации, понятно и однозначно диагностирует их появление.
База данных, используемая программой, содержит верную и актуальную информацию. Если я своевременно введу в ЭВМ правильные данные и правильно ей воспользуюсь, то гарантированно получу правильные результаты в нужные мне сроки.
Приведём некоторые конкретные характеристики этой группы:
Пригодность (Suitability) Степень соответствия набора функций ПП поставленным задачам.
Правильность (Accuracy) Степень правильности получаемых результатов и соответствия реакции программы ожидаемой
Программа должна быть надежной. Программа должна обладать достаточной устойчивостью к нештатным ситуациям: иметь защиту от сбоев оборудования и несанкционированного использования. Данные, используемые программой, должны быть защищены от несанкционированного или случайного просмотра, изменения или удаления. При вводе ошибочной информации программа должна сообщать об обнаруженных ею ошибках. Должен быть предусмотрен «откат» выполняемых действий. За этот аспект качества в стандарте отвечает группа характеристик:
"надежность программного средства" (reliability). Это совокупность свойств, характеризующая способность программного средства сохранять заданный уровень пригодности в заданных условиях в течение заданного периода времени.
Отметим, что в отличие от технических средств, программа не подвержена износу или старению. Ограничения уровня её пригодности являются следствием дефектов и неучтенных ситуаций в процессе постановки и программирования. При длительной эксплуатации программы эти дефекты и ситуации проявляются.
Купленная программа должна помогать мне решать мои проблемы и, по возможности, не создавать дополнительной головной боли. Что это значит? Разработчик должен видеть задачу также как я (пользователь). Алгоритм и все действия, выполняемые программой должны быть одинаково прозрачны и понятны для обеих сторон. Результаты работы программы, их форма должны быть максимально приближены к существующим нормам и практике.
Интерфейс программы должен быть понятен мне, использовать лексику моей (а не программиста) предметной области. Набор функций и доступ к ним должны быть удобны для решения моих задач (а не для программирования!).
К программе должна быть приложена понятная мне инструкция. Желательно также иметь контекстную подсказку, содержательно описывающую возможности каждого шага. Она должна содержать кроме описания операторских действий методические рекомендации по реализации данного шага.
И, наконец, программа должна работать на моей технике и в операционной среде, используемой мной. А если это не возможно, я должен понять, прочему мне придется их модернизировать и какие преимущества мне это даст?
Группа характеристик, отражающих этот аспект качества, называется удобство использования (usability). Это совокупность свойств ПС, характеризующая усилия, необходимые для его использования, и индивидуальную оценку результатов его использования заданным или подразумеваемым кругом пользователей ПС. Подхарактеристиками этой группы являются:
Понимаемость (understandability) - совокупность свойств ПС, характеризующих затраты усилий пользователя на понимание концепции ПС т.е. логики системы основных понятий, принципов и соглашений, позволяющей пользователю самостоятельно разобраться с документацией и работать с ПС.
Осваиваемость (learn ability)" - совокупность свойств, характеризующая затраты усилий, необходимые для освоения правил использования ПС.
Управляемость (operability) - совокупность свойств, характеризующая затраты усилий пользователя непосредственно на эксплуатацию и управление функционированием ПС.
Принципиально важно, что я могу отказаться от некоторых из перечисленных требований только в виде исключения, когда продавец убедит меня, что предлагаемое им видение задачи, новые свойства программы и т.д. с лихвой компенсируют мне все затраты труда, времени и денег, необходимые чтобы приспособиться к новой программе.
Хорошая программа должна быть эффективной. Если у нас есть несколько программ, которые можно использовать для нашей задачи, мы выберем самую эффективную.
Группа эффективность (efficiency) содержит совокупность свойств, характеризующих затраты ресурсов, связанные с функционированием программы. В качестве ресурсов рассматриваются:
труд специалистов;
другие программные и технические средства; материалы (например, бумага и машинные носители);
услуги (например, трафик, консультации) и т.д.
Подхарактеристики этой группы:
Характер изменения во времени (time behavior) – время выполнения функций и обработки, пропускная способность и время реакции программы.
Характер изменения ресурсов (resource behavior) - объемы используемых ресурсов и продолжительность их использования.
Программа должна быть достаточно гибкой и приспособляемой. Я не могу заранее предсказать все изменения, которые могут произойти даже в ближайшем будущем. Поэтому, чтобы воспользоваться программой в изменившихся условиях, я должен иметь возможность настройки программы и данных. Чем чаще возникают изменения, тем более гибкой должна быть программа.
Если программа будет использоваться не в одном месте, настройка нужна и для адаптации программы к конкретному месту использования. Чем больше гибкость программы, тем шире круг ее возможных покупателей.
В стандарте эта группа характеристик называется сопровождаемость (maintainability). В нее входят атрибуты, относящиеся к объему работ, требуемых для проведения изменений: исправлений, усовершенствования, адаптацию ПС к изменениям условий и требований.
В таблице 1.1 приведены группы и составляющие их характеристики качества ПС, предлагаемые стандартом ГОСТ Р ИСО/МЭК 9126-93.
Таблица 1.1
Группы характеристик качества программного обеспечения
Группа |
Характеристики |
Функциональность (Functionality) |
Пригодность (Suitability) |
Правильность (Accuracy) |
|
Способность к взаимодействию (Interoperability) |
|
Защищенность (Security) |
|
Согласованность (с действующими стандартами) (Compliance) |
|
Надежность (Reliability) |
Стабильность (Maturity) |
Устойчивость к ошибке (Fault tolerance) |
|
Восстанавливаемость (Recoverability) |
|
Согласованность (со стандартами надежности) (Reliability compliance) |
|
Удобство использования (Usability) |
Понятность (Understand ability) |
Обучаемость (Learn ability) |
|
Простота использования (Operability) |
|
Привлекательность (Attractiveness) |
|
Согласованность(со стандартами удобства) (Compliance) |
|
Эффективность (Efficiency) |
Характер изменения во времени (Time behavior) |
Характер изменения ресурсов (Resource behavior) |
|
Согласованность (со стандартами эффективности) (Compliance) |
|
Сопровождаемость (Maintainability) |
Анализируемость (Analyzability) |
Изменяемость (Changeabi1ity) |
|
Устойчивость (Stabi1ity) |
|
Тестируемость (Testabi1ity) |
|
Согласованность (со стандартами сопровождаемости) (Compliance) |
|
Мобильность (Portability) |
Адаптируемость (Adaptabi1ity) |
Простота внедрения (Installabi1ity) |
|
Совместимость (Co-existence) |
|
Взаимозаменяемость (Rep1aceabi1i1y) |
|
Согласованность (со стандартами мобильности) (Compliance) |
Критерий Тагути
Как видим, перечень требований к программе, как к товару весьма разнообразен. Как же оценить качество конкретного программного продукта? Как сопоставить характеристики различных программ? Японский ученый Тагути сформулировал следующий критерий оценки качества товара: «Качество товара (продукта или услуги) тем выше, чем меньше совокупные затраты и потери всего общества, связанные с его разработкой, изготовлением, применением и утилизацией».
Если внимательно просмотреть перечисленные раньше требования к программе, мы убедимся: все они удовлетворяют критерию Тагути. Критерий позволяет не только сформулировать требования к качеству, но и:
Оценить полноту перечня требований. Для этого достаточно задать вопрос: «А все ли виды затрат и потерь мы учли?»
Отделить характеристики качества от других характеристик, может быть влияющих на продажу, но к качеству не имеющих прямого отношения. Например, красочность упаковки программного продукта и «раскрученность» его рекламы могут повлиять на объемы продаж. Но характеристиками качества они не являются, так как не влияют на сокращение потерь.
Дать общее правило измерения (сопоставление) качества различных программ. Нужно просто правильно подсчитать все потери и затраты.
К сожалению, последнее свойство критерия Тагути мало чего даст для практического применения. Учет и расчет всех затрат и потерь в реальных условиях потребует столько времени и сил, а главное, столько допущений и предположений, что его реализация с требуемой точностью, как правило, не возможна. Однако для проверки правильности конкретных критериев качества критерий Тагути может быть очень полезен.
