System design practice