Guest Editors' Introduction: Design decisions and design rationale in software architectures