1. СИТУАЦИЯ
Для изложения и попытки формализации некоторых приемов проектирования "идеальной программы" нам потребовался сквозной пример.
Пока мы сформулировали всего два требования к идеальной программе (с точки зрения разработчика):
1) Идеально - когда добавление новой функциональности в программу не потребует внесения изменений и/или добавлений в программный код (более того, в совершенно идеальной программе увеличение функциональности приводит к сокращению кода).
Перефразируя классическую формулировку ТРИЗ, идеально, когда программного кода нет, а функциональность растет без ущерба для любых параметров (например, быстродействия и т.д.);
2) Идеально - это когда программу сможет в отсутствие Автора не только сопровождать, но и развивать программист с меньшей квалификацией, чем Автор программы.
Приемы же, собственно, проектирования, с которыми мы экспериментируем, заключаются в следующем:
а) Сталкиваясь с задачей, опишем "идеальное решение". В ряде случаев его можно и реализовать.
в) "Идеальное решение" следует формулировать также и для каждой из возникающих в процессе решения подзадач.
с) Когда реализовать "идеальное решение" не получается, формулируем противоречие. Примеры формулировок даны в настоящем материале, а также здесь.
Для иллюстрации вышеизложенного мы выбрали программу "калькулятор". (Не потому, что это ново - калькуляторов пруд пруди: просто захотели сэкономить время на объяснении о том, "что за программа и зачем она нужна").
Далее...