NASA’s "Power of 10" Rules: Lessons for Software Architects