Software Architecture: How Are the Boundaries Defined?