- •О. В. Шишов технология разработки программных продуктов
- •1. Программы и программирование
- •1.1 Основные определения
- •1.2. Классификация программ и различные виды программирования
- •1.3. Категории специалистов, занятых разработкой и эксплуатацией программ
- •2. Жизненный цикл программного обеспечения
- •2.1 Основные этапы жизненного цикла и их взаимосвязь
- •2.2 Стратегии и модели жизненного цикла
- •3. Качество по
- •3.1 Критерии оценки качества по
- •3.2 Методы оценки качества программного средства
- •4. Надежность программных продуктов
- •4.1 Надежность и виды отказов
- •4.2 Надежность и правильность программы
- •4.3. Вероятностный подход к оценке надежности
- •4.4 Факторы надежности
- •4.5 Приемы надежного программирования
- •6.2. Стандарты технологии создания программных продуктов
- •6.3. Основные этапы технологического процесса разработки программ
- •7. Структурное проектирование программных продуктов
- •7.1. Модули. Сцепление и связность модулей
- •7.2. Структура программных продуктов
- •7.3. Методы структурного программирования
- •8. Алгоритмическое представление задачи программирования
- •8.1. Свойства алгоритмов
- •8.2. Формы записи алгоритмов
- •8.3. Базовые алгоритмические структуры
- •9. Языки программирования
- •9.1. Основные понятия и элементы языков программирования
- •9.2. Классификация языков программирования
- •9.3. Развитие языков программирования
- •10. Пользовательский интерфейс
- •10.1. Типы интерфейсов
- •10.2. Этапы разработки пользовательского интерфейса
- •10.3. Критерии оценки интерфейса пользователем
- •11. Порядок работы эвм при выполнении программ. Трансляторы, интерпритаторы, компиляторы
- •12. Оптимизация программ
- •13. Отладка и тестирование программного обеспечения
- •13.1. Классификация неисправностей и ошибок в программе
- •13.2. Порядок и способы отладки и тестирования программ
- •13.3. Методы тестирования
- •13.4. Требования и рекомендации по тестированию программ
- •13.4. Программирование «с защитой от ошибок»
- •14. Аттестация программного средства
- •15. Сопровождение по
- •16. Защита программных продуктов
- •16.1. Обеспечение защищенности программных средств
- •16.3. Правовые методы защиты программных продуктов
- •17. Документорование программных продуктов
- •17.1. Виды программных документов
- •17.2. Содержание документации по еспд
- •17.3. Стиль оформления программы
- •Содержание
3. Качество по
Как любой другой продукт человеческой деятельности, программу можно охарактеризовать с самых разных сторон и установить, в какой мере она обладает необходимыми свойствами. Программные продукты в отличие от традиционных изделий не имеют строго регламентированного набора качественных характеристик, задаваемых при их создании, либо эти характеристики невозможно заранее точно указать или оценить. Даже время и затраты на разработку программных продуктов не могут быть заранее определены с большой степенью точности.
Характеристиками программ не требующими комментариев являются:
-
состав и глубина проработки реализованных функций обработки;
-
полнота и системность функций обработки;
-
объем;
-
требования к техническим средствам обработки со стороны программ;
-
размер оперативной памяти для запуска программ;
-
тип процессора.
-
объем дисковой памяти;
-
версия операционной системы;
-
наличие вычислительной сети и др.
В условиях существования рынка программных продуктов важными характеристиками являются:
-
стоимость;
-
трудоемкость создания;
-
длительность создания;
-
количество продаж;
-
время нахождения на рынке (длительность продаж);
-
известность фирмы-разработчика и программы;
-
наличие программных продуктов аналогичного назначения.
Программные продукты имеют многообразные показатели, которые отражают различные профессиональные аспекты их создания и эксплуатации. С этой точки зрения ПО в первую очередь характеризуются достигаемым качеством программ при применении соответствующих технологий и надежностью.
3.1 Критерии оценки качества по
Существует большое разнообразие определений понятия «качество», а также его восприятий. Например, субъективное понятие и восприятие качества может представлять собой степень удовлетворения потребности. В соответствии с ГОСТом 15467-79 качество – совокупность свойств объекта, обуславливающих его пригодность удовлетворять определенные потребности в соответствии с его назначением. По МС ИСО 8402-86, качество – совокупность свойств и характеристик продукции или услуги, которые придают им способность удовлетворять обусловленные или предполагаемые потребности.
Качество продукции – это критическая оценка потребителем степени соответствия ее свойств, показателей качества, индивидуальным и общественным ожиданиям, обязательным нормам в соответствии с ее назначением.
Мнение о качестве меняется со временем, оно зависит от уровня информации об объекте, от технических средств обнаружения характеристик объекта и т. д. Качество объекта не сводится к отдельным его свойствам, а связано с объектом, как целым, охватывая его полностью, и неотделимо от него.
Критерии качества представляют собой измеряемые числовые показатели, в виде некоторой целевой функции, характеризующие степень выполнения объектом своего назначения. В общем случае критерии качества должны отображать обобщенную «полезность» для общества, анализируемого объекта, эффективность технологии проектирования.
В процессе формирования технического задания на ПС, выявляются доминирующие показатели, устанавливается относительная важность каждого из них и строится обобщенная функция требуемого качества конкретного ПС, кроме того устанавливаются допустимые затраты и длительность разработки программных средств, которые должна обеспечить соответствующая технология.
По мере создания комплекса программ, после завершения отладки и испытаний, уточняется достигнутое реальное значение каждого из показателей и обобщенные функции качества всего комплекса. Показатели качества могут уточняться также в процессе эксплуатации. Анализ критериев качества ПО программы является основой для оценки эффективности технологии проектирования.
Разработчики ПС стремятся выделить и определить единый критерий эффективности программ который должен:
-
Численно и в наиболее общем виде характеризовать степень выполнения системой своей основной целевой функции.
-
Позволять выявить и оценить степень влияния на эффективность системы различных факторов и параметров, и в том числе затрат различного вида на ее реализацию.
-
Быть простым и иметь малую дисперсию, т. е. мало зависеть от неконтролируемых, случайных факторов.
Показатели качества могут уточняться также в процессе эксплуатации, в результате чего обеспечивается долгосрочная перспектива объективного измерения и повышения качества программ.
-
Функциональные критерии качества отражают основную специфику применения и степень соответствия ПС их целевому назначению. Функциональные критерии весьма различны и соответствуют разнообразию целевого назначения, функций и областей применения ПС. В системах обработки данных функциональные показатели отражают номенклатуру исходных данных, достоверность результатов, разнообразие функций и другое. Для программ управления в них входят показатели точности выходных данных, диапазоны изменения параметров, время реакции, адаптивность к внешним воздействиям и т. д.
-
Конструктивные критерии качества ПС более или менее инвариантны к их целевому назначению и основным функциям. К ним относятся сложность программ, надежность функционирования, используемые ресурсы, корректность программ и т. п. Некоторые конструктивные критерии могут быть важны с позиции прямого функционального назначения, определяемых программными средствами. Особо следует выделить временные показатели ЖЦ программ:
-
длительность проектирования
-
продолжительность эксплуатации очередной версии
-
длительность проведения каждой модификации
При проектировании ПО полезно придерживаться двух общих принципов:
-
сначала необходимо обеспечить требуемую функциональность и надежность ПС, а затем уже доводить остальные критерии качества до приемлемого уровня их присутствия в ПС;
-
нет никакой необходимости и может быть даже вредно добиваться более высокого уровня присутствия в ПС какого-либо примитива качества, чем тот, который определен в спецификации качества ПС.
Качество характеризуется не одним параметром, т. е. можно говорить о существовании спецификации этих параметров или спецификации качества.
Разработка спецификации качества сводится, по-существу, к построению своеобразной модели качества разрабатываемой ПС. В этой модели должен быть перечень всех тех достаточно элементарных свойств, которые требуется обеспечить в разрабатываемом ПС и которые в совокупности образуют приемлемое для пользователя качество ПС. При этом каждое из этих свойств должно быть в достаточной степени конкретизировано с учетом определения требований к разрабатываемому ПС и возможности оценки его наличия у разработанного ПС или необходимой степени обладания им этим ПС.
Для конкретизации качества ПС по каждому из критериев используется стандартизованный набор достаточно простых свойств ПС, однозначно интерпретируемых разработчиками. Такие свойства мы будем называть примитивами качества ПС. Некоторые из примитивов могут использоваться по нескольким критериям.
Ниже даются определения используемых примитивов качества ПС.
Полезность
Завершенность – свойство, характеризующее степень обладания ПС всеми необходимыми частями и чертами, требующимися для выполнения своих явных и неявных функций.
Точность – мера, характеризующая приемлемость величины погрешности в выдаваемых программами ПС результатах с точки зрения предполагаемого их использования.
Автономность – свойство, характеризующее способность ПС выполнять предписанные функции без помощи или поддержки других компонент программного обеспечения.
Устойчивость – свойство, характеризующее способность ПС продолжать корректное функционирование, несмотря на задание неправильных (ошибочных) входных данных.
Защищенность – свойство, характеризующее способность ПС противостоять преднамеренным или нечаянным деструктивным (разрушающим) действиям пользователя.
С-документировапнность – свойство, характеризующее с точки зрения наличия документации, отражающей требования к ПС и результаты различных этапов разработки данной ПС, включающие возможности, ограничения и другие черты ПС, а также их обоснование.
П-документированность – свойство, характеризующее наличие, полноту, понятность, доступность и наглядность учебной, инструктивной и справочной документации, необходимой для применения ПС.
Информативность – свойство, характеризующее наличие в составе ПС информации, необходимой и достаточной для понимания назначения ПС, принятых предположений, существующих ограничений, входных данных и результатов работы отдельных компонент, а также текущего состояния программ в процессе их функционирования.
Коммуникабельность – свойство, характеризующее степень, в которой ПС облегчает задание или описание входных данных, а также обеспечивает выдачу полезных сведений в форме и с содержанием, простыми для понимания.
Временная эффективность – мера, характеризующая способность ПС выполнять возложенные на него функции за определенный отрезок времени.
Эффективность по памяти – мера, характеризующая способность ПС выполнять возложенные на него функции при определенных ограничениях на используемую память.
Эффективность по устройствам – мера, характеризующая экономичность использования устройств машины для решения поставленной задачи.
Понятность – свойство, характеризующее степень в которой ПС позволяет изучающему его лицу понять его назначение, сделанные допущения и ограничения, входные данные и результаты работы его программ, тексты этих программ и состояние их реализации. Этот примитив качества синтезирован нами из таких примитивов ИСО, как согласованность, самодокументированность, четкость и, собственно, понятность.
Структурированность – свойство, характеризующее программы ПС с точки зрения организации взаимосвязанных их частей в единое целое определенным образом (например, в соответствии с принципами структурного программирования).
Удобочитаемость – свойство, характеризующее легкость восприятия текста программ ПС (отступы, фрагментация, формативность).
Расширяемость – свойство, характеризующее способность ПС к использованию большего объема памяти для хранения данных или расширению функциональных возможностей отдельных компонент.
Модульность – свойство, характеризующее ПС с точки зрения организации его программ из таких дискретных компонент, что изменение одной из них оказывает минимальное воздействие на другие компоненты.
Независимость от устройств – свойство, характеризующее способность ПС работать на разнообразном аппаратном обеспечении (различных типах, марках, моделях ЭВМ).
Адаптируемость
Расширяемость
Требование программной совместимости может варьироваться от возможности совместной установки с указанным программным обеспечением до обеспечения взаимодействия с ним, например обмена данными и т. п. Чаще всего приходится обеспечивать функционирование программного обеспечения под управлением заданной операционной системы. Однако может потребоваться предусмотреть получение данных из какой-то программы или передачу некоторых данных ей. В этом случае необходимо точно оговорить форматы передаваемых данных.
Требование аппаратной совместимости в основном формулируют в виде минимально возможной конфигурации оборудования, на котором будет работать программное обеспечение. Если предполагается использование нестандартного оборудования, то для него должны быть указаны интерфейсы или протоколы обмена информацией. При этом для операционных систем класса Windows нестандартными считают устройства, для которых в системе отсутствуют драйверы – программы, обеспечивающие взаимодействие устройства с операционной системой.
Ниже приводится зависимость критериев качества от примитивов качества ПС.
Функциональность: завершенность.
Надежность: завершенность, точность, автономность, устойчивость, защищенность.
Легкость применения: П-документированность, информативность (только применительно к документации по применению), коммуникабельность, устойчивость, защищенность.
Эффективность: временная эффективность, эффективность по памяти, эффективность по устройствам.
Сопровождаемость. С данным критерием связано много различных примитивов качества. Однако их можно распределить по двум группам, выделив два подкритерия качества: изучаемость и модифицируемость. Изучаемость – это характеристики ПС, которые позволяют минимизировать усилия по изучению и пониманию программ и документации ПС. Модифицируемость – это характеристики ПС, которые упрощают внесение в него необходимых изменений и доработок.
Изучаемость: С-документированность, информативность (здесь применительно и к документации по сопровождению), понятность, структурированность, удобочитаемость.
Модифицируемость: расширяемость, структурированность, модульность.
Мобильность: независимость от устройств, автономность, структурированность, модульность.
Помимо технического взгляда на качество программного обеспечения, существует и оценка качества с позиции пользователя. Наиболее важные из вопросов, влияющие на оценку пользователя можно сформулировать следующим образом:
-
Является ли пользовательский интерфейс интуитивно понятным?
-
Насколько легко выполнять простые, частые операции?
-
Насколько легко выполняются сложные операции?
-
Выдаёт ли программа понятные сообщения об ошибках?
-
Всегда ли программа ведёт себя так как ожидается?
-
Имеется ли документация и насколько она полна?
-
Всегда ли задержки с ответом программы являются приемлемыми?