Identifying "Good" Architectural Design Alternatives with Multi-Objective Optimization Strategies By Lars Grunske Presented by Robert Dannels
Introduction Increasing complexity in software systems Competing quality attributes Difficult to identify best combinations Simplify by applying mathematics
Problem Current practices focus on one quality attribute at a time Cycle repeats with new architectural description Time consuming (brute force) Risk of finding local minimum
How? Need numerical value for all quality attributes, constraints and architectural objects Use existing tools like COCOMO II, RMA Assign functions to non-functional items Apply weighting factors according to business requirements Apply mathematical methods
The method Using list of functions and starting values Calculate score If not done, apply evolutionary algorithm Repeat till max or min is reached Called Pareto-optimal Of course, the architect makes the final decision
Observations This method is designed to handle multiple objectives Only as good as the quality of weighting factors and object values May need a return to fix one factor, try again pattern Is good for identifying good choices
Example STAR satellite system (hardware?!) Constraints: weight (100kg) Maximize reliability, minimize cost Can add backup items
Results Start with one of each component Apply evolutionary algorithm Find Pareto-optimal solutions
Analysis Which is more important, cost or reliability? Obviously some components are more vital The one that communicates is most unreliable Sample is too simple Need better (Software!) example
Final Thoughts Needs more work Has potential, can be useful Can clearly be automated May be helpful in identifying requirements and priorities, system understanding