• Разработка программного обеспечения — это прежде всего деятельность по принятию решений.
  • В любой момент времени должна существовать возможность объяснить происходящее в программе.
  • Любая граница в программном обеспечении произвольна.
  • В программном обеспечении не существует единого доминирующего представления (representation) чего бы то ни было.
  • Если человек считает какое-либо представление значимым, система должна предоставить и поддерживать такое представление
  • Архитектура программного обеспечения является эмерджентным свойством (то есть проявляется по ходу разработки и по мере накопления знаний о системе).
  • При программировании “чтение кода” предъявляет свои требования к коду и представлениям, а “написание кода” - свои.
  • Выбор среды разработки так же важен, как и любые другие решения, касающиеся системы.

Источник