Design and Use of Software Architectures: Adopting and Evolving a Product-Line Approach