Design and Evaluation of Software Architectures Barbora Biihnová Faculty of Informatics, Masaryk University Brno, Czech Republic LaSArIS Seminar October 15, 2009 ,1/ Series of seminars on software architecture • Overview of Software Architecture (SA) Definition of SA, topics and concepts of SA, CBSE • Design and Evaluation of Software Architectures Architecture requirements, design process, evaluation of quality attributes • The PCM Design and Evaluation Framework Architecture design, performance prediction, reliability evaluation Notice: Some of the slides are inspired by Software Architecture lectures of Uni Karlsruhe, ©R. Reussner O Introduction Why software architectures? What is a software architecture? What should be part of architecture design? © Requirements Functional and extra-functional Q Design of S A Architectural models Developer roles Development process O Evaluation of SA Quality attributes of SA @ Conclusion ,1/ Evaluation of SA Why software architectures? • How to bridge the gap between requirements and code? Design and Evaluation of Software Architectures Evaluation of SA The role of software architecture • System-level abstractions • Coarse-grained structure of the system Design and Evaluation of Software Architectures Three core views that need to be described • Module view = system components i.e. computational software units, often concurrent (tasks, threads) • Connector view = communication styles e.g. pipe-and-filter, shared-data, publish-subscribe, client-server (synchronous vs. asynchronous) • Allocation view = mapping to hardware (or software) resources Three main activities in architecture design • Requirements specification Functional and extra-functional • Design of the architecture Architectural models Developer roles Development process • Evaluation of the architecture Quality attributes of SA ,1/ Why software architectures? What is a software architecture? What should be part of architecture design? Requirements Functional and extra-functional Architectural models Developer roles Development process ď\ Pw-.li )utes of SA Conclusion ,1/ rement. Functional requirements • Execution of serviceAO should not need more than 10 other components. • Each opened transaction needs to be closed before the component starts another one. • A component must not get blocked when executing a service. Extra-functional requirements • Guaranteed response time (in X% of cases) • Availability of X% within each month • Hardware or software compatibility \iu^ Why software architectures? What is a software architecture? What should be part of architecture design? Requirements Functional and extra-functional Design of S A Architectural models Developer roles Development process ď\ Pw-.li )utes of SA Conclusion ,1/ • Module view = system components 1. Static structure model • Connector view = communication styles 2. Dynamic process model • Allocation view = mapping to hardware/software resources 3. Deployment model What about the design of a single component, and information needed for the evaluation of the design? • Component developer Implementation and documentation of individual components • Software architect Static structure and dynamic proc. models of the architecture System deployer Deployment model • Domain expert Usage scenarios for the system • Quality manager Evaluation model of architecture quality ^SMrS^ A general architecture development process O Identify system components @ Identify component interfaces O Design connectors O Identify partitions that should be allocated to the same host © Validate/evaluate the architecture ,1/ Top-down approach • Levels of refinement - third-party components, coded components, model-driven refinement Bottom-up approach • Libraries of components - design for reusability, own vs. third party components Good practices • Architectural patterns • Measures of design quality • Correctness by construction /" Why software architectures? What is a software architecture? What should be part of architecture design? squirements Functional and extra-functional Architectural models Developer roles Development process O Evaluation of SA Quality attributes of SA @ Conclusion ,1/ Quality attributes of SA • Qualitative vs. quantitative attributes • Functional vs. extra-functional attributes Extra-functional quality attributes • Performance - throughput, response time, deadlines • Reliability - failure-free operation, HW and SW propagation • Availability - software and hardware • Security - authentication, authorization, encryption, integrity Scalability - request load, simultaneous connections, data size • Modifiability and maintainability /'" Methods of quality evaluation • Monitoring and testing - not exhaustive, better after implementation, possible also in model simulation • Quality prediction - good for quantitative attributes, for both design and run time • Formal verification - good for qualitative attributes, for both design and run time Limits of automated methods • Time and memory consuming • Need to be executed on system abstraction Why software architectures? What is a software architecture? What should be part of architecture design? squirements Functional and extra-functional esign of SA Architectural models Developer roles Development process ď\ Pw-.li )utes of SA Conclusion ,1/ What should be part of architecture design? • Requirements specification Functional and extra-functional • Design of the architecture Architectural models Developer roles Development process • Evaluation of the architecture Quality attributes of SA Thank you for your attention! Any questions? -£/