среда, 5 августа 2009 г.

Движение от макета к сценарию.

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

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

Это - последовательность шагов или функциональных блоков (для тех, кто знаком с теорией управления), каждый из которых имеет входную, выходную последовательности, функцию (человеко-ориентированную). Более того, сценарий может и не иметь вида строгой линейной цепочки. Он может ветвиться на независимые во времени функции (как, например, в случае арифметических операций). Имея такие элементарные функциональные блоки, объединяя их в подсистемы, можно переходить собственно к архитектуре ПО, а далее уже к программной реализации.

Функции ПО: их роль.

Та или иная программа реализует некоторый набор функций. Это очевидно с позиции пользователя. С точки зрения программиста пользовательская функция представляется в виде структуры функций более мелких (вспомогательных), нередко обёрнутых в классы и интерфейсы. Для пользователя набор ему полезных функций растёт - таков уж он, подавай всего и сразу. Для программиста, который реализует все требования пользователя, расширение возможностей программы связано с увеличением числа его языковых функций (и, следовательно, числа классов и интерфейсов). Последние переплетаются под гнётом изобилия программного комбайна, делают проект запутанным, неповоротливым и мало пригодным для изменений.
Чтобы этого избежать нужно сделать следующее:

  1. Ограничить пользовательскую функциональность (заострить внимание на приоритетных вопросах, поскольку автоматизировать всё не имеет смысла; автоматизации подвергается лишь самое трудоёмкое).

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


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