Software Architecture with Python