1. Предварительное замечание
Хотя объектом рассмотрения в настоящей работе являются сложные информационные и программные системы, описанный алгоритм может применяться для оценки функциональной полноты и других эксплуатационных характеристик любых сложных систем, имеющих десятки, сотни и тысячи функций (свойств, признаков, реализуемых услуг и т.п.). Так, компьютерная программа, базирующаяся на предложенном алгоритме, успешно использовалась не только по своему основному назначению, но и для формализованного анализа текстов (текстовых файлов).
Постановка задачи
В сегодняшних условиях рынок ИС, как правило, в состоянии предложить потенциальному покупателю множество систем одного назначения, отличающихся по составу и качеству выполняемых функций (эксплуатационных параметров, характеристик, предоставляемых услуг и др.). Поэтому перед покупателем-пользователем встает проблема выбора из перечня конкурирующих систем одной или нескольких, в наибольшей степени удовлетворяющих его требованиям, например, к функциональной полноте или другим технико-экономическим параметрам. Если речь идет о информационных и программных продуктах, то для реализации оптимального выбора необходимо, во-первых, располагать количественной оценкой того, насколько (в какой степени) программы-претенденты удовлетворяют конкретным требованиям покупателя-пользователя; кроме того, одновременно было бы полезно определить, какие из нужных пользователю функций не реализуются тем или иным ИП. Во-вторых, и для потребителя, и для конкурирующих фирм-разработчиков ИП важно выявить лучшие по критерию функциональной полноты системы. Желательно также определить перечень функций, реализуемых всеми представленными на рынке ИП.
Напомним, что в современных ПП количество выполняемых ими функций (функциональных операций) может достигать нескольких сотен. Очевидно, что в этих условиях вряд ли удастся традиционными методами (вручную) оценить степень соответствия того или иного ПП требованиям пользователя, сравнить ПП-претенденты по функциональной полноте. Поэтому для решения подобных задач предложен формализованный подход (см.: [Хубаев, 1988; 1989а]. Отметим, что методика подтвердила прикладную полезность и неоднократно использовалась при анализе реальных ИС. Описанный ниже алгоритм реализовывался с помощью разных инструментальных средств, в т.ч. В.Левиным (1992г.), В.Турчиным (1995г.), Н.Миглиевой и Е.Паяльниковой (1996г.). Здесь мы рассмотрим одну из программно реализованных его модификаций.
Алгоритм сравнения
Пусть (i=1,2,...,n) - множество сравниваемых ПП (ПП-претендентов); (j=1,2,...,m) - множество, составляющее словарь реализуемых программными продуктами функций.
Исходную информацию представим в виде таблицы , элементы которой определяются следующим образом:
Выделим ПП Zi и Zk (i,k=1,2,...,n) и введем следующие обозначения:
- число функций, выполняемых ПП Zk, но не реализуемых Zi,
т.е. - мощность разности множеств Zk и Zi;
- мощность объединения множеств Zi и Zk,
т.е.
Для оценки того, какая часть (доля) функций, выполняемых ПП Zi, реализуется также и ПП Zk, можно использовать величину
Взаимосвязь между ПП Zi и Zk оценивается по значениям Pik(11) и
где Gik - мера подобия Жаккарда.
Выбирая различные пороговые значения элементов матриц P, G и H, можно построить логические матрицы поглощения (включения) P0, G0 и H0. Например, элементы матрицы H0 получают следующим образом:
Граф, построенный по логическим матрицам P0, G0 и H0, дает наглядное представление о взаимосвязи между сравниваемыми ПП (по выполняемым функциям).
Строку с перечнем функций, которые интересуют пользователя (должны выполняться ПП-претендентом), обозначим через Ze.
Дополнив таблицу строкой , рассчитаем матрицы P(10) и P(11). Затем, выделив строки (ПП Zj), у которых
Pej(10)=0 либо
получим перечень ПП, полностью удовлетворяющих требованиям пользователя к функциональной полноте программного средства (или любой другой сложной системы).
Возможная последовательность шагов реализации алгоритма:
1) в справочнике функций, выполняемых сравниваемыми программными продуктами, отмечаются те функции (функциональные операции), которые должны выполняться условным (реально не существующим) ПП, и формируется новая строка Ze. Этой строкой дополняется исходная таблица , т.е. в таблице Zi= появляется строка Ze .
Строятся матрицы
2) в матрицах Pij или выделяются строки Pej и ;
3) из n элементов Zi, каждый из которых соответствует одному из рассматриваемых ПП, выбираются только те, у которых Pej(10)=0 или Hej=1 , т.е. те программные продукты, которые включают в качестве подмножества перечень функций, реализуемых условным ПП Ze.
Предположим, что число удовлетворяющих этому условию программных пакетов равно d, dсn;
4) формируется новая матрица Zi(1) ;
5) для подмножества Zi(1) строится матрица ;
6) по матрице Pij(01) последовательно для Pej(01)=1, Pej(01)=2 и т.д. строится таблица (см. табл. А), в которой перечисляются функции, не предусмотренные в условном пакете Ze, но реализуемые пакетом Zj .
Таблица А
Код (номер) программного продукта (ПП), Zi | Наименование ПП | Идентификатор и наименование выполняемой функции |
Zk | XXX | Rk, g |
… | ||
Rk,g+s | ||
… | ||
… | … | … |
Zt | Rt, p | |
… | … | … |
Из табл.А пользователь выбирает одну или несколько заинтересовавших его функций, и этими функциями дополняется строка Ze, после чего процесс повторяется, начиная с шага 2;
7) по матрице P(10) = Pij(10) последовательно для Pej(10)= 1, Pej(10) = 2 и т.д. строится таблица В, аналогичная табл. А, в которой перечисляются функции, предусмотренные в Ze, но не реализуемые пакетом Zj, а по матрицам P(11), H0 и G0 для выбранных пороговых значений их элементов можно выделить и представить в виде таблицы подмножества общих (или часто реализуемых) функций, оценить степень взаимосвязи между изучаемыми ПП по выполняемым функциям и т.д.
Пример реализации
Рассмотрим численный пример. Предположим, что в табл.2.1 представлены данные о выполняемых программными системами (Zi) функциях (Rj).
Таблица 2.1
Результаты оценки функциональной полноты программных систем Zi
Наиме-нова-ние | Наименование (код) выполняемой функции | |||||||||||||||
(иден-тифи-катор) про-грам-мной сис-темы | R1 | R2 | R3 | R4 | R5 | R6 | R7 | R8 | R9 | R10 | R11 | R12 | R13 | R14 | R15 | |
Z1 | ||||||||||||||||
Z2 | ||||||||||||||||
Z3 | ||||||||||||||||
Z4 | ||||||||||||||||
Z5 | ||||||||||||||||
Z6 | ||||||||||||||||
Как легко убедиться, даже в таком простейшем случае (n=6, m=15) сравнение и оптимальный выбор ПС по критерию функциональной полноты осуществить весьма не просто. Но ведь ситуации, когда n, m > 100, вполне обычны. Поэтому анализ будем проводить, следуя предложенному ранее алгоритму.
Сначала для табл.1 вычислим матрицы P(01), G и H, а затем построим логические матрицы поглощения P0(01), G0 и H0, выбрав следующие пороговые значения элементов:
Далее. Предположим теперь, что для потребителя-пользователя нужно, чтобы ПС-претендентом выполнялись функции R2, R5, R6 и R10. Обратившись к построенным матрицам, обнаружим, что интересующие пользователя функции реализуются тремя ПС: Z1, Z3, Z4 - см. четвертый столбец матрицы P (P0) или четвертую строку матрицы H (H0) (совпадает с Z4). Что касается ПС Z2, Z5, Z6, то в них нужные пользователю функции реализованы лишь частично, и т.д. Продолжая действовать в соответствии с описанным алгоритмом, легко ответить на все основные вопросы, возникающие при количественной сравнительной оценке информационных и программных систем по критерию функциональной полноты.