Software Architecture Modeling by Reuse Composition and Customization