Функционольные требования. Эксплуатационные требования. Выбор архитектуры программного обеспечения.

 

АНАЛИЗ ТРЕБОВАНИЙ И ОПРЕДЕЛЕНИЕ СПЕЦИФИКАЦИЙ ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ

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

 

3.1. Определение требований к программным продуктам

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

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

 

3.1.1. Функциональные требования

Функциональные требования описывают сервисы,  предоставляемые программной системой, ее поведение в определенных ситуациях, реакцию на те или иные входные данные и действия, которые система позволит выполнять пользователям. Иногда

сюда добавляются сведения о том, чего система делать не  должна [37, 61].

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

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

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

технического задания.

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

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

четких понятиях и утверждениях, однозначно понимаемых  разработчиками и заказчиками программного продукта.

 

Функциональная спецификация состоит из трех частей:

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

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

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

содержание каждой из этих функций.

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

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

 

3.1.2. Эксплуатационные требования

Эксплуатационные требования определяют характеристики разрабатываемого программного обеспечения, проявляемые в процессе его использования. К таким характеристикам  относят [1]:

правильность — функционирование в соответствии с  техническим заданием. Это требование является обязательным для всякого программного продукта, но поскольку никакое тестирование не дает гарантии 100%-ной правильности, речь может идти об определенной вероятности наличия ошибок. Вероятность сбоя системы управления 

космическими полетами должна быть близка к нулю;

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

универсальность программы невозможно, поэтому имеет смысл говорить о степени ее универсальности;

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

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

проверяемость — возможность проверки получаемых  результатов. Для этого необходимо документально  фиксировать исходные данные, установленные режимы и другую информацию, которая влияет на получаемые результаты. Особенно это сказывается, когда сигналы поступают  непосредственно от датчиков;

точность результатов — обеспечение погрешности  результатов не выше заданной. Величина погрешности зависит от точности исходных данных, степени адекватности 

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

(например, система стыковки космических аппаратов) и системы управления технологическими процессами;

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

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

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

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

некоторой другой программой. В этом случае точно  оговаривается формат передаваемых данных;

аппаратная совместимость — возможность совместного функционирования с некоторым оборудованием. Это  требование формулируют в виде минимально возможной 

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

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

объема внешней памяти, количества внешних устройств и др.).

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

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

практически невозможно. Можно только констатировать, что при разработке данного ПО использовались приемы, облегчающие его модернизацию;

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

резидентно загруженному в оперативную память (например,  драйверы);

реентерабельность — возможность «параллельного»  использования несколькими процессами. Чтобы  удовлетворить этому требованию, необходимо создавать копию 

данных, изменяемых программой, для каждого процесса.

 

Четко сформулировать спецификации требований к  разрабатываемому ПО, чтобы затем занести их в техническое  задание, — достаточно сложная и ответственная задача, которая 

требует проведения предпроектных исследований.

 

3.2. Выбор архитектуры программного обеспечения

 

В технологии программирования нет четкого определения архитектуры ПО. Приведем некоторые из встречающихся в  литературе.

Архитектурой программного обеспечения называют  совокупность базовых концепций (принципов) его построения [1].

Архитектура ПС — это его строение, как оно видно (или должно быть видно) извне его, т. е. представление ПС как  системы, состоящей из некоторой совокупности взаимодействующих подсистем [37].

Архитектура программы или компьютерной системы — это структура или структуры системы, которые включают элементы программы, видимые извне свойства этих элементов и связи  между ними [50].

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

которые взаимодействуют через интерфейсы, включают классы,  компоненты и подсистемы [51].

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

поддержки и обслуживания [52].

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

С точки зрения количества пользователей, работающих с  одной копией ПО, различают:

• однопользовательскую архитектуру;

• многопользовательскую (сетевую) архитектуру.

 

Кроме того, в рамках однопользовательской архитектуры различают [1]:

программы. Программа (program, routine) — упорядоченная последовательность формализованных инструкций для  решения задачи с помощью компьютера. Это самый простой вид архитектуры, который обычно используется при  решении небольших задач;

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

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

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

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

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

Программы комплекса могут компилироваться как  самостоятельные единицы или совместно. Программа-диспетчер может иметь примитивный интерфейс и простую 

справочную систему [1];

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

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

Многопользовательскую архитектуру реализуют системы,  построенные по принципу «клиент — сервер».