160 likes | 301 Vues
This exploration of software design as an optimization problem highlights the complexities involved in decision-making processes. It addresses conflicts among stakeholders, differing utility connected to requirements, and prioritization of qualities. Key questions include how to integrate qualitative and quantitative attributes, guide the optimization process, and evaluate architectural decisions effectively. Techniques like Analytical Hierarchical Process, heuristics, and risk-based analysis provide a framework for navigating the optimization landscape, ensuring successful software outcomes while managing limitations.
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