Higher-level software design ideas: