This Article 
 Bibliographic References 
 Add to: 
Exploring Alternative Software Architecture Designs: A Planning Perspective
September/October 2008 (vol. 23 no. 5)
pp. 66-77
J. Andrés Díaz-Pace, Carnegie Mellon University
Marcelo R. Campo, UNICEN University
A software architecture is a blueprint that captures the main design decisions for a system. When designing an architecture, the architect normally evaluates multiple solutions, making a balance among architectural patterns that affect several quality attributes (for example, performance, modifiability, and so on). In this exploration of the design space, the architectural knowledge directs the search toward a good-enough solution. Although decision-making still relies on the architect's expertise, a novel architectural design theory has been recently developed to move more systematically from quality attributes to architectural decisions. In this content, we describe a framework called DesignBots to search for design alternatives, in which the concepts of that theory are mapped to a hierarchical and mixed-initiative planning model. Essentially, quality-attribute scenarios are considered as goals achievable by combinations of patterns that are instantiated by the planning engine. This approach fosters the development of proactive assistants to support architectural design activities.

1. L. Bass, P. Clements, and R. Kazman, Software Architecture in Practice, 2nd ed., Addison-Wesley, 2003.
2. F. Bachmann et al., "Designing Software Architectures to Achieve Quality Attribute Requirements," IEE Proc. Software, vol. 152, no. 4, 2005, pp. 153–165.
3. D. Nau et al., "SHOP2: An HTN Planning System," J. Artificial Intelligence Research, vol. 20, 2003, pp. 379–404.
4. F. Buschmann et al., Pattern-Oriented Software Architecture: A System of Patterns, John Wiley &Sons, 1996.
5. R. Kazman, M. Klein, and P. Clements, ATAM: Method for Architecture Evaluation, tech. report CMU/SEI-2000-TR-004, Software Eng. Inst., Carnegie Mellon Univ., 2002.
6. Q. Yang, Intelligent Planning: A Decomposition and Abstraction-Based Approach, Springer, 1997.
1. F. Bachmann et al., "Designing Software Architectures to Achieve Quality Attribute Requirements," IEE Proc. Software, vol. 152, no. 4, 2005, pp. 153–165.
2. L. Chung, B. Nixon, and E. Yu, "Using Non-Functional Requirements to Systematically Select among Alternatives in Architectural Design (1995)," Proc. 1st Int'l Workshop Architectures for Software Systems, 1995, pp. 31–43, .
3. B. Dellen and F. Maurer, "Integrating Planning and Execution in Software Development Processes," Proc. 5th Int'l Workshop Enabling Technologies on Infrastructure for Collaborative Enterprises (WET ICE 96), IEEE CS Press, 2006, pp. 170–176.
4. B. Srivastava, S. Kambhampati, and M. Do, "Planning the Project Management Way: Efficient Planning by Effective Integration of Causal and Resource Reasoning in RealPlan," Artificial Intelligence, vol. 131, nos. 1–2, 2001, pp. 73–134.
5. K. Xu and H. Muñoz-Avila, "CABMA: Case-Based Project Management Assistant," 16th Conf. Innovative Applications of Artificial Intelligence (IAAI 04), AAAI Press, 2004, pp. 931–936.
6. J. Clarke et al., "Reformulating Software Engineering as a Search Problem," IEE Proc. Software, Institution of Eng. and Technology, vol. 150, no. 3, 2003, pp. 161–175.
7. N. Arshad, D. Heimbigner, and A. Wolf, "Deployment and Dynamic Reconfiguration Planning for Distributed Software Systems," IEEE Int'l Conf. Tools with Artificial Intelligence (ICTaI 03), IEEE CS Press, 2003, pp. 39–46.
8. D. Garlan, S.-W. Cheng, and B. Schmerl, "Increasing System Dependability through Architecture-Based Self-Repair," Architecting Dependable Systems, LNCS 2677, R. de Lemos, C. Gacek, and A. Romanovsky, eds., Springer, 2003.

Index Terms:
architectural design framework, AI planning, tool support, quality attributes
J. Andrés Díaz-Pace, Marcelo R. Campo, "Exploring Alternative Software Architecture Designs: A Planning Perspective," IEEE Intelligent Systems, vol. 23, no. 5, pp. 66-77, Sept.-Oct. 2008, doi:10.1109/MIS.2008.78
Usage of this product signifies your acceptance of the Terms of Use.