1) аналитику сложно получить исчерпывающую информацию для оценки требований к системе с точки зрения заказчика;
2) заказчик, в свою очередь, не имеет достаточной информации о проблеме обработки данных, чтобы судить, что является выполнимым, а что — нет;
3) аналитик сталкивается с чрезмерным количеством подробных сведений о предметной области и о новой системе;
4) спецификация системы из-за объема и технических терминов непонятна для заказчика;
5) в случае понятности спецификации для заказчика, она будет недостаточной для разработчиков, создающих систему.
Итак, на данном этапе эволюционного развития ситуация в области проектирования АС выглядит следующим образом:
• имеется субъект — потенциальный заказчик, испытывающий дискомфорт, для преодоления которого необходимо решить ряд проблем, и поэтому этот субъект является источником деятельности;
• имеется перечень потребностей, которые необходимо удовлетворить;
• известны прототипы программных средств с механизмами, которые в совокупности могли бы удовлетворить имеющиеся потребности, но эти механизмы не связаны в единое целое так, чтобы удовлетворить все имеющиеся потребности.
Теперь необходимо сформулировать цели и определить ограничения на реализацию программного продукта.
Формулировка целей — первый и важнейший этап процесса проектирования. Именно на этом этапе закладываются основы успеха в решении всей задачи. Ошибки в выборе и формулировке цели не могут быть скомпенсированы на последующих этапах. Причина проста — все, что проделывается на последующих этапах разработки, идет от поставленных целей. Следовательно, такие ошибки никакими методами на последующих этапах невозможно скомпенсировать.
Как правило, все ошибки начальных этапов, выявленные на последующих этапах, имеют следующие причины:
1) постановка недостижимой цели;
2) стремление разработчика и постановщика задачи упростить задачу;
3) неумение разработчика выделить из формулировки постановщика отдельно описание проблемы и постановку задачи;
4) не выявленные ограничения.
Ситуации, когда возможна конкуренция целей, должны обязательно выявляться; необходимо согласовать цели так, чтобы наилучшим образом в рамках возможностей, определяемых ограничениями, достигались цели каждого из возможных субъектов (заказчиков). Хорошие цели всегда являются компромиссом между желанием наилучшим образом удовлетворить потребности и ограничениями, накладываемыми реализацией и средствами.
Можно сформулировать последовательность рекомендаций (контрольных вопросов):
Рекомендация 1. Не доверяйте имеющимся формулировкам задачи; решение начинайте с нуля, с выделения субъекта, выявления причин его дискомфорта и потребностей. Дело в том, что зачастую формулировка, предлагаемая заказчиком, неудачна или вовсе неприемлема, так как описывает на самом деле неудовлетворенную потребность, выдавая ее за задачу.
Рекомендация 2. Уточните требования к конечному результату:
1) какие функции и с какими показателями качества должен выполнять функции объект?
2) какой эффект будет получен в случае успешного решения задачи?
3) каковы допустимые затраты, как они связаны с показателями качества?
Может оказаться, что затраты существенно превысят эффект, поэтому либо следует отказаться от решения, либо искать более приемлемое.
Рекомендация 3. Уточните условия, в которых предполагается реализация найденного решения:
1) тщательно исследуйте связанные с этим ограничения и убедитесь, что все они действительно имеют место;
2) выявите особенности реализации, в частности, допустимую степень сложности, предполагаемые масштабы применения.
Рекомендация 4. Изучите задачу, используя следующую информацию:
1) как решаются задачи, близкие к рассматриваемой?
2) как решаются задачи, обратные рассматриваемой? (Особое внимание следует обратить при этом на области применения, для которых подобные задачи наиболее актуальны.)
Рекомендация 5. Мысленно измените условия задачи и исследуйте ее решение в новых условиях: изменяйте от нуля до бесконечности сложность объекта, время процесса, затраты, условия среды.
Рекомендация 6. Тщательно отработайте формулировку задачи, желательно с использованием наиболее общих понятий и терминов.
Рекомендация 7. Сформулируйте идеальный конечный результат и в процессе решения стремитесь получить его.
Анализ требований сосредоточен на интерфейсе системы человек — программа — машина и информационных потоках между ними. Здесь решается, что делает человек, а что делает машина и как она это делает. В ходе анализа решается вопрос о целесообразности применения ЭВМ.
В процессе анализа рассматриваются:
1) работа без ЭВМ и с ЭВМ с разной степенью автоматизации;
2) варианты использования существующих программ как без модификаций, так и с их модификациями;
3) варианты со специально созданными программами;
4) время обработки информации;
5) стоимость обработки информации;
6) вероятность ошибок, их последствия и качество обработки информации.
Анализ требований способствует лучшему пониманию системы и достижению наилучшего удовлетворения потребности.
В ходе проведения системного анализа анализируются надсистема, система и подсистема в виде составных частей проектируемой системы.
При проектировании необходимо учитывать следующие эффекты.
Эффект подмены целей. Процесс деятельности по достижению цели, как правило, связан с преодолением неких барьеров, зачастую непредвиденных трудностей. Пытаясь преодолеть их, человек вынужден менять первоначальный план действий, приспосабливая его к конкретным условиям. Естественным для человека является и стремление упростить свою задачу, действовать привычными, хорошо знакомыми способами и средствами. Это может привести чаще всего на заключительных этапах реализации или в процессе эксплуатации к подмене исходной цели. В результате достигнут совсем иной результат, нежели предполагалось вначале.
Поэтому четкая формулировка задачи, ее отслеживание на всех этапах — необходимое условие успешной деятельности.
Цели и средства. Следующий аспект, который не всегда оценивается должным образом, — учет ограничений, накладываемых условиями реализации, в частности свойствами реализующей системы и ограничениями ресурсов. Казалось бы, обеспечение наибольшей эффективности объекта проектирования с позиций надсистемы — главная задача, но парадокс в том, что нельзя формулировать цели, не имея представления о том, как, с помощью каких средств, какой системы они могут быть достигнуты. Далеко не всякая цель достижима, и объясняется это либо невозможностью или незнанием, как реализовать систему, обеспечивающую достижение цели, либо имеются ограничения, которые могут сорвать ее достижение, и т. д.
Повторим ранее высказанную мысль: "хорошие цели всегда являются компромиссом между желанием наилучшим образом удовлетворить потребности и ограничениями, накладываемыми реализацией и средствами". Практика показывает, что цели лучше всего формулируются людьми, знающими возможности их достижения (либо группой специалистов, владеющих различными аспектами проблемы).
Согласование целей. На практике при проектировании целей нередко приходится сталкиваться с ситуацией, когда функционирование одного объекта должно удовлетворить потребности ряда субъектов (надсистем). В этом случае по отношению к каждой надсистеме могут быть сформулированы свои цели, которые зачастую оказываются противоречивыми: более полное удовлетворение потребностей одного из субъектов может быть обеспечено только за счет другого. Если на этапе проектирования цели не согласованы, то, как правило, плохо удовлетворяются потребности как одной, так и другой надсистемы. Поэтому ситуации возможности конкуренции целей должны обязательно выявляться: необходимо согласовать цели так, чтобы наилучшим образом, в рамках возможностей, определяемых ограничениями, достигались цели каждой из надсистем.