software system analysis