Классификация программных продуктов по их назначению Системные операционные системы, оболочки, утилиты Программные продукты прикладные, для разработчиков программ, для непрограммистов Гибридные автоматизированные системы управления реального времени
правильность - функционирование в соответствии с техническим заданием; универсальность - обеспечение правильной работы при любых допустимых данных и защиты от неправильных данных; надежность (помехозащищенность) - обеспечение полной повторяемости результатов, т. е. обеспечение их правильности при наличии различного рода сбоев; проверяемость - возможность проверки получаемых результатов; точность результатов - обеспечение погрешности результатов не выше заданной; защищенность - обеспечение конфиденциальности информации
программная совместимость - возможность совместного функционирования с другим программным обеспечением; аппаратная совместимость - возможность совместного функционирования с некоторым оборудованием; эффективность - использование минимально возможного количества ресурсов технических средств, например, времени микропроцессора или объема оперативной памяти; адаптируемость - возможность быстрой модификации с целью приспособления к изменяющимся условиям функционирования.
Целью исследований является преобразование общих нечетких знаний о предназначении будущего программного обеспечения в сравнительно точные требования к нему. Существуют два варианта неопределенности: неизвестны методы решения формулируемой задачи - такого типа не определенности обычно возникают при решении научно-технических задач; неизвестна структура автоматизируемых информационных процессов - обычно встречается при построении автоматизированных систем управления предприятиями.
определяют: структуру и взаимосвязи автоматизируемых информационных процессов; распределение функций между человеком и системой, а также между аппаратурой и программным обеспечением; функции программного обеспечения; внешние условия его функционирования и особенности его интерфейсов, как с пользователями, так и при необходимости - с аппаратной частью; требования к программным и информационным компонентам, необходимые аппаратные ресурсы, требования к базам данных и физические характеристики программных компонент.
Техническое задание представляет собой документ, в котором сформулированы основные цели разработки, требования к программному продукту, определены сроки и этапы разработки и регламентирован процесс приемно-сдаточных испытаний. В разработке технического задания участвуют как представители заказчика, так и представители исполнителя. В основе этого документа лежат исходные требования заказчика, анализ передовых достижений техники, результаты выполнения научно-исследовательских работ, предпроектных исследований, научного прогнозирования и т. п.
Устанавливают набор выполняемых функций, а также перечень и характеристики исходных данных. Определяют перечень результатов, их характеристики и способы представления. Уточняют среду функционирования программного обеспечения: конкретную комплектацию и параметры технических средств, версию используемой операционной системы и т.п. Регламентируют действия программы в случае сбоев оборудования и энергоснабжения, если разрабатываемое программное обеспечение собирает и хранит некоторую информацию или включается в управление каким-либо техническим процессом.
исходные данные и требуемые результаты, которые определяют функции программы или системы; среда функционирования (программная и аппаратная) - может быть задана, а может выбираться для обеспечения параметров, указанных в техническом задании; возможное взаимодействие с другим программным обеспечением и/или специальными техническими средствами - также может быть определено, а может выбираться исходя из набора выполняемых функций.
В рамках однопользовательской архитектуры различают: программы; пакеты программ; программные комплексы; программные системы.
Различают четыре типа пользовательских интерфейсов: примитивные - реализуют единственный сценарий работы, например, ввод данных - обработка - вывод результатов; меню - реализуют множество сценариев работы, операции которых организованы в иерархические структуры, например, «вставка»: «вставка файла», «вставка символа» и т. д.; со свободной навигацией - реализуют множество сценариев, операции которых не привязаны к уровням иерархии, и предполагают определение множества возможных операций на конкретном шаге работы; прямого манипулирования - реализуют множество сценариев, представленных в операциях над объектами, основные операции инициируются перемещением пиктограмм объектов мышью.
Различают две технологии: одно документная, которая предполагает однодокументный интерфейс (SDI – Single Document Interface); многодокументная, которая предполагает многодокументный интерфейс (MDI – Multiple Document Interface). Многодокументную технологию используют, если программное обеспечение должно работать с несколькими документами одновременно, например, с несколькими текстами или несколькими изображениями. Однодокументную - если одновременная работа с несколькими документами не обязательна. Трудоемкость реализации многодокументных интерфейсов с использованием современных библиотек примерно на % выше, чем первого.
Если выбран интерфейс со свободной навигацией или прямого манипулирования, то это предполагает использование событийного программирования и объектного подхода, так как современные среды визуального программирования, такие как Visual C++, Delphi, Builder C++ и им подобные, предоставляют интерфейсные компоненты именно в виде объектов библиотечных классов. При этом в зависимости от сложности предметной области программное обеспечение может реализовываться как с использованием объектов и, соответственно, классов, так и чисто процедурно.
Средой программирования называют программный комплекс, который включает специализированный текстовый редактор, встроенные компилятор, компоновщик, отладчик, справочную систему и другие программы, использование которых упрощает процесс написания и отладки программ. Последнее время широкое распространение получили упоминавшиеся выше среды визуального программирования, в которых программист получает возможность визуального подключения к программе некоторых кодов из специальных библиотек компонентов, что стало возможным с развитием объектно- ориентированного программирования.