160 likes | 291 Views
Software Design as an Optimisation Problem. Raffaela , Lucia, Catia , Assel , Anne, Bara, Heiko , Eitan , Carlo Dagstuhl October 2009. Source: pixelio.de. One optimisation problem. Certain aspects not covered. Results of the optimisation. Architectural candidates. response time.
E N D
Software Design as an Optimisation Problem Raffaela, Lucia, Catia, Assel, Anne, Bara, Heiko, Eitan, Carlo Dagstuhl October 2009 Source: pixelio.de
One optimisation problem • Certain aspects not covered Software Design as an Optimisation Problem
Results of the optimisation Architectural candidates response time responseTime(A) > responseTime(B) P(failure)(A) < P(failure)(B) reliability Software Design as an Optimisation Problem
Topic Areas • Decision making / Trade-off making • Conflicting stakeholders • Different utility, connected to requirements • Agree on the priorities of qualities • Optimisation of models • Possibly multicriteria • Objective functions • Constraints: • Some pieces already implemented • Cost limits • Few reconfiguration steps Software Design as an Optimisation Problem
Questions raised • Decision making • How to incorporate preferences of different stakeholders? • Is there something beyond weights? • Qualitative and quantitative attributes • How to quantify qualitative attributes? • How to integrate qualitative attributes in analyses? • How is this integration handles in other fields? • When in the design process? • High-level of abstraction vs. architecture based • How to optimise? • How to guide the optimisation process? Software Design as an Optimisation Problem
Decision making • Look at decision making theory • Analytical Hierarchical Process • Look at requirements engineering community • Integrating goals of different stakeholder • Formalising, finding conflicts, … • Mostly functional goals • Also security • How to integrate the quantitative measures here? Software Design as an Optimisation Problem
Qualitative attributes • Effect of measures on quantitative qualities can be quantified • You can create a partial order of the levels • E.g. for security based on several types of attacks, how many vulnerabilities • Look at other decision making theories, e.g. economics • Same theory for all domains? • Task of decision support: • Make decision makers aware of the problem Software Design as an Optimisation Problem
Decomposition in Design • Optimise at one abstraction level • Fix those decisions • Go one level down • Before and after architecture definition • Need ability to evaluate decisions • Heuristics can drive the process • Best practices • Antipatterns • In practice: Attribute-driven design • Possibly backtrack if other qualities become infeasible Software Design as an Optimisation Problem
Optimisation process • Search techniques • Incremental steps (local search) • Jump in the design space • Combination • Evaluation of candidates is costly • Reduce number of needed evaluations • Use heuristics to guide the search • Decompose • Create suitable cost function Software Design as an Optimisation Problem
Quantifying Security • Three possible quantification ideas • Observe attacks, historical data, mean time to security incident • Count vulnerabilities based on a number of attack scenarios • How many hours to break you security measures • Several approaches • How good security packages are, mutation testing • Risk-based analyses based on attack scenarios • Known vulnerabilities of frameworks Software Design as an Optimisation Problem
Objective functions • Predict values of the objective function • Too many parameters? Software Design as an Optimisation Problem
Power consumption • Measures to decrease power consumption • Example: Sensor networks • Calculation and communication costs energy • Define allocation problem for calculations Software Design as an Optimisation Problem
Constraints • In other domains, there are more constraints • The design space is more limited Software Design as an Optimisation Problem
How to improve a certain QA • Existing literature about improvement of a single objective Software Design as an Optimisation Problem
Define your design space • What are the things you can change in your architecture automatically Software Design as an Optimisation Problem
When in Design Process • Before High level of abstraction • Before architecture definition • Tree of decisions -> no combinatorial space • Optimisation required after you have taken a number of decisions • Need ability to evaluate decisions • Given an architecture • Deployment and configuration • Dynamic reconfiguration Software Design as an Optimisation Problem